• nginx日志


    查找日志存放地址
    find / -name nginx.conf


    根据你找出来的地址,尽心vi编辑,进入nginx.conf文件进行查找路径

    vi /usr/servers/nginx/conf/nginx.conf

    从而找到,我机子的两个日志存放地点:
    /var/logdata/nginx/access.log
    /var/logdata/nginx/error.log

    查看access访问日志
    vi /var/logdata/nginx/access.log

    访问日志分析
    摘出来一段部分结果:
    100.109.195.91 - - [17/Feb/2017:00:08:11 +0800] "GET /data/upload/shop/common/loading.gif HTTP/1.0" 200 134 "http://www.mall121.com/" "Mozilla/4.0 (compatible; MSIE 8.0; Trident/4.0; Windows NT 6.1; SLCC2 2.5.5231; .NET CLR 2.0.50727; .NET CLR 4.1.23457; .NET CLR 4.0.23457; Media Center PC 6.0; MS-WK 8)" "140.205.201.12"
    100.109.195.78 - - [17/Feb/2017:00:08:11 +0800] "GET /shop/templates/default/images/u-safe.png HTTP/1.0" 200 3675 "http://www.mall121.com/" "Mozilla/4.0 (compatible; MSIE 8.0; Trident/4.0; Windows NT 6.1; SLCC2 2.5.5231; .NET CLR 2.0.50727; .NET CLR 4.1.23457; .NET CLR 4.0.23457; Media Center PC 6.0; MS-WK 8)" "140.205.201.12"
    100.109.195.26 - - [17/Feb/2017:00:08:11 +0800] "GET /data/upload/shop/adv/05240495346955824.jpg HTTP/1.0" 404 564 "http://www.mall121.com/" "Mozilla/4.0 (compatible; MSIE 8.0; Trident/4.0; Windows NT 6.1; SLCC2 2.5.5231; .NET CLR 2.0.50727; .NET CLR 4.1.23457; .NET CLR 4.0.23457; Media Center PC 6.0; MS-WK 8)" "140.205.201.12"

    1.100.109.195.91 :
    $remote_addr : 客户端(用户)IP地址 
    2.[17/Feb/2017:00:08:11 +0800]:
    $time_local  :访问时间
    3."GET /data/upload/shop/common/loading.gif HTTP/1.0"  :
    "$request"get请求的url地址(目标url地址)的host
    4.200:
    '$status请求状态(状态码,200表示成功,404表示页面不存在,301表示永久重定向等,具体状态码可以在网上找相关文章,不再赘述)
    5. 134 :
    $body_bytes_sent :请求页面大小,默认为B(byte
    6."http://www.mall121.com/" :
    "$http_referer" : 来源页面,即从哪个页面转到本页,专业名称叫做“referer”
    7."Mozilla/4.0 (compatible; MSIE 8.0; Trident/4.0; Windows NT 6.1; SLCC2 2.5.5231; .NET CLR 2.0.50727; .NET CLR 4.1.23457; .NET CLR 4.0.23457; Media Center PC 6.0; MS-WK 8)":
    $http_user_agent:用户浏览器其他信息,浏览器版本、浏览器类型
    8. "140.205.201.12" :
    $http_x_forwarded_for"

    或者通过nginx配置文件里的配置,换一种格式:
    log_format main '$remote_addr - $remote_user [$time_local] '
    'fwf[$http_x_forwarded_for] tip[$http_true_client_ip] '
    '$upstream_addr $upstream_response_time $request_time '
    '$geoip_country_code '
    '$http_host $request '
    '"$status" $body_bytes_sent "$http_referer" '
    '"$http_accept_language" "$http_user_agent" ';

    1.客户端(用户)IP地址。
    2.访问时间。
    3.访问端口。
    4.响应时间。
    5.请求时间。
    6.用户地理位置代码(国家代码)。
    7.请求的url地址(目标url地址)的host。
    8.请求方式(GET或者POST等)。
    9.请求url地址(去除host部分)。
    10.请求状态(状态码,200表示成功)。
    11.请求页面大小,默认为B(byte)。
    12.来源页面,即从哪个页面转到本页,专业名称叫做“referer”。
    13.用户浏览器语言。如:上例中的 "es-ES,es;q=0.8"
    14.用户浏览器其他信息,浏览器版本、浏览器类型等。


    错误日志同理,
    vi /var/logdata/nginx/error.log

    关于错误日志的查看,这里就不多赘述。
    ————————————————

    原文链接:https://blog.csdn.net/ty_hf/java/article/details/55518070

    日志格式
    '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"'

    日志记录
    27.189.231.39 - - [09/Apr/2018:17:21:23 +0800] "GET /Public/index/images/icon_pre.png HTTP/1.1" 200 44668 "http://www.test.com/Public/index/css/global.css" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36" "-"

    1. 统计日志中访问最多的10个IP
    思路:对第一列进行去重,并输出出现的次数

    方法1:$ awk '{a[$1]++}END{for(i in a)print a[i],i|"sort -k1 -nr|head -n10"}' access.log
    方法2:$ awk '{print $1}' access.log |sort |uniq -c |sort -k1 -nr |head -n10

    说明:a[$1]++ 创建数组a,以第一列作为下标,使用运算符++作为数组元素,元素初始值为0。处理一个IP时,下标是IP,元素加1,处理第二个IP时,下标是IP,元素加1,如果这个IP已经存在,则元素再加1,也就是这个IP出现了两次,元素结果是2,以此类推。因此可以实现去重,统计出现次数。

    2. 统计日志中访问大于100次的IP
    方法1:$ awk '{a[$1]++}END{for(i in a){if(a[i]>100)print i,a[i]}}' access.log
    方法2:$ awk '{a[$1]++;if(a[$1]>100){b[$1]++}}END{for(i in b){print i,a[i]}}' access.log

    说明:方法1是将结果保存a数组后,输出时判断符合要求的IP。方法2是将结果保存a数组时,并判断符合要求的IP放到b数组,最后打印b数组的IP。

    3. 统计2018年4月9日一天内访问最多的10个IP
    思路:先过滤出这个时间段的日志,然后去重,统计出现次数

    方法1:$ awk '$4>="[9/Apr/2018:00:00:01" && $4<="[9/Apr/2018:23:59:59" {a[$1]++}END{for(i in a)print a[i],i|"sort -k1 -nr|head -n10"}' access.log
    方法2:$ sed -n '/[9/Apr/2016:00:00:01/,/[9/Apr/2016:23:59:59/p' access.log |sort |uniq -c |sort -k1 -nr |head -n10 #前提开始时间与结束时间日志中必须存在

    4. 统计当前时间前一分钟的访问数
    思路:先获取当前时间前一分钟对应日志格式的时间,再匹配统计

    $ date=$(date -d '-1 minute' +%d/%b/%Y:%H:%M);awk -vdate=$date '$0~date{c++}END{print c}' access.log

    说明:date +%d/%b/%Y:%H:%M-->09/Apr/2018:01:55,定义参数给AWK

    5. 统计访问最多的前10个页面($request)
    $ awk '{a[$7]++}END{for(i in a)print a[i],i|"sort -k1 -nr|head -n10"}' access.log

    6. 统计每个URL访问内容的总大小($body_bytes_sent)
    $ awk '{a[$7]++;size[$7]+=$10}END{for(i in a)print a[i],size[i],i}' access.log

    7. 统计每个IP访问状态码数量($status)
    $ awk '{a[$1" "$9]++}END{for(i in a)print i,a[i]}' access.log

    8. 统计访问状态码为404的IP及出现次数
    $ awk '{if($9~/404/)a[$1" "$9]++}END{for(i in a)print i,a[i]}' access.log

    ————————————————

    原文链接:https://blog.csdn.net/cheng1804/java/article/details/82979727

    1、日志简介

    nginx日志主要有两种:访问日志和错误日志。访问日志主要记录客户端访问nginx的每一个请求,格式可以自定义;错误日志主要记录客户端访问nginx出错时的日志,格式不支持自定义。两种日志都可以选择性关闭。

    通过访问日志,你可以得到用户地域来源、跳转来源、使用终端、某个URL访问量等相关信息;通过错误日志,你可以得到系统某个服务或server的性能瓶颈等。因此,将日志好好利用,你可以得到很多有价值的信息。

    2、访问日志

    [Access.log]

    log_format  main  '$remote_addr $remote_user [$time_local] "$request" $http_host '

                      '$status $upstream_status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" $ssl_protocol $ssl_cipher $upstream_addr '

                      '$request_time $upstream_response_time'; 

    变量名称

    变量描述

    举例说明

    $remote_addr

    客户端地址

    113.140.15.90

    $remote_user

    客户端用户名称

    -

    $time_local

    访问时间和时区

    18/Jul/2012:17:00:01 +0800

    $request

    请求的URI和HTTP协议

    "GET /pa/img/home/logo-alipay-t.png HTTP/1.1"

    $http_host

    请求地址,即浏览器中你输入的地址(IP或域名)

    img.alipay.com

    10.253.70.103

    $status

    HTTP请求状态

    200

    $upstream_status

    upstream状态

    200

    $body_bytes_sent

    发送给客户端文件内容大小

    547

    $http_referer

    跳转来源

     "https://cashier.alipay.com.../"

    $http_user_agent

    用户终端代理

    "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; GTB7.0; .NET4.0C;

    $ssl_protocol

    SSL协议版本

    TLSv1

    $ssl_cipher

    交换数据中的算法

    RC4-SHA

    $upstream_addr

    后台upstream的地址,即真正提供服务的主机地址

    10.228.35.247:80

    $request_time

    整个请求的总时间

    0.205

    $upstream_response_time

    请求过程中,upstream响应时间

    0.002

    线上实例:

    116.9.137.90 - [02/Aug/2012:14:47:12 +0800] "GET /images/XX/20100324752729.png HTTP/1.1"img.alipay.com 200 200 2038 https://cashier.alipay.com/XX/PaymentResult.htm?payNo=XX&outBizNo=2012XX "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; 360SE)" TLSv1 AES128-SHA 10.228.21.237:80 0.198 0.001

     

    线下测试($http_referer):

    10.14.21.197 - - [14/Aug/2012:17:28:22 +0800] "GET /spanner/watch/v1?--db=ztg-1&--mode=compare&--index=status&--option=&--cluster=whole&-F=2012%2F8%2F12-00%3A00%3A00&-T=%2B2880&-i=1&-n=0&_=1344936501292 HTTP/1.1" 200 94193 "http://spanner.alipay.net/optionFrame/history.html" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.60 Safari/537.1"

    clip_image001

    备注:$http_referer和重定向有关。

     

    线下测试($http_host):

    clip_image002

    备注:$http_host的值和你在浏览器里输入的值有关。

    3、错误日志

    错误信息

    错误说明

    "upstream prematurely(过早的) closed connection"

    请求uri的时候出现的异常,是由于upstream还未返回应答给用户时用户断掉连接造成的,对系统没有影响,可以忽略

    "recv() failed (104: Connection reset by peer)"

    1)服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉; 

    2)客户关掉了浏览器,而服务器还在给客户端发送数据; 

    3)浏览器端按了Stop

    "(111: Connection refused) while connecting to upstream"

    用户在连接时,若遇到后端upstream挂掉或者不通,会收到该错误

    "(111: Connection refused) while reading response header from upstream"

    用户在连接成功后读取数据时,若遇到后端upstream挂掉或者不通,会收到该错误

    "(111: Connection refused) while sending request to upstream"

    Nginx和upstream连接成功后发送数据时,若遇到后端upstream挂掉或者不通,会收到该错误

    "(110: Connection timed out) while connecting to upstream"

    nginx连接后面的upstream时超时

    "(110: Connection timed out) while reading upstream"

    nginx读取来自upstream的响应时超时

     

    "(110: Connection timed out) while reading response header from upstream"

    nginx读取来自upstream的响应头时超时

    "(110: Connection timed out) while reading upstream"

    nginx读取来自upstream的响应时超时

    "(104: Connection reset by peer) while connecting to upstream"

    upstream发送了RST,将连接重置

    "upstream sent invalid header while reading response header from upstream"

    upstream发送的响应头无效

    "upstream sent no valid HTTP/1.0 header while reading response header from upstream"

    upstream发送的响应头无效

    "client intended to send too large body"

    用于设置允许接受的客户端请求内容的最大值,默认值是1M,client发送的body超过了设置值

    "reopening logs"

    用户发送kill  -USR1命令

    "gracefully shutting down",

    用户发送kill  -WINCH命令

    "no servers are inside upstream"

    upstream下未配置server

    "no live upstreams while connecting to upstream"

    upstream下的server全都挂了

    "SSL_do_handshake() failed"

    SSL握手失败

    "SSL_write() failed (SSL:) while sending to client"

     

    "(13: Permission denied) while reading upstream"

     

    "(98: Address already in use) while connecting to upstream"

     

    "(99: Cannot assign requested address) while connecting to upstream"

     

    "ngx_slab_alloc() failed: no memory in SSL session shared cache"

    ssl_session_cache大小不够等原因造成

    "could not add new SSL session to the session cache while SSL handshaking"

    ssl_session_cache大小不够等原因造成

    "send() failed (111: Connection refused)"

     

     

    原文链接:https://www.cnblogs.com/aoniboy/p/4866395.html

  • 相关阅读:
    获取<input type="checkbox" >控件的checked值
    网站IIS部署及调试
    winform窗体全屏实现
    ComBox控件的使用
    在vs2005项目中,将.sln文件和.suo文件放在一个独立的文件夹内
    .NET面试题整理
    《url重写——更友好的网站url设计》
    char、varchar、nvarchar三者间的区别
    操作符"??"的用法
    Maven 学习笔记(三)
  • 原文地址:https://www.cnblogs.com/guantou1992/p/12777155.html
Copyright © 2020-2023  润新知