User-Profile-Image
hankin
  • 5
  • centos7
  • docker
  • mysql
  • PostgreSQL
  • git/gitlab
  • ELK
  • python
    • python-Tornado
    • python-django
  • redis
  • nginx
  • kvm
  • proxmox
  • mongo
  • kubernetes
  • prometheus
  • GlusterFs
  • nfs
  • freeswitch
  • httpd
  • shell脚本
  • linux
  • fastdfs
  • nextcloud
  • openssl
  • openvpn
  • rabbitmq
  • sqlite
  • svn
  • java
  • ubuntu
  • vue2
  • wordpress
  • php
  • IOT物联网
  • 项目
  • 故障处理
  • 树莓派
  • 博客存档
  • 未分类
  • 杂项
  • #1742(无标题)
  • 新视野
  • 分类
    • 项目
    • 树莓派
    • 杂项
    • 未分类
    • 新视野
    • 故障处理
    • 博客存档
    • wordpress
    • vue2
    • ubuntu
    • svn
    • sqlite
    • shell脚本
    • redis
    • rabbitmq
    • python-django
    • python
    • proxmox
    • prometheus
    • PostgreSQL
    • php
    • openvpn
    • openssl
    • nginx
    • nfs
    • nextcloud
    • mysql
    • mongo
    • linux
    • kvm
    • kubernetes
    • java
    • IOT物联网
    • httpd
    • GlusterFs
    • git/gitlab
    • freeswitch
    • fastdfs
    • ELK
    • docker
    • centos7
  • 页面
    • #1742(无标题)
  • 友链
      请到[后台->主题设置->友情链接]中设置。
Help?

Please contact us on our email for need any support

Support
    首页   ›   nginx   ›   正文
nginx

nginx日志

2022-11-07 23:25:41
1183  0 0
日志默认位置
/usr/local/nginx/logs                   
配置文件的log_format配置变量(常用的)
$request        请求的URI和HTTP协议           
$http_host      请求地址,即浏览器中你输入的地址(IP或域名)         
$status     HTTP请求状态            
$upstream_status        upstream状态          
$body_bytes_sent        发送给客户端文件内容大小            
$http_referer       url跳转来源         
$http_user_agent        用户终端浏览器等信息          
$ssl_protocol       SSL协议版本         
$ssl_cipher     交换数据中的算法            
$upstream_addr      后台upstream的地址,即真正提供服务的主机地址          
$request_time       整个请求的总时间            
$upstream_response_time     请求过程中,upstream响应时间          
$time_local     请求本地时间          
$time_iso8601       请求时间iso8601         
$http_x_real_ip                 
$remote_addr        代表客户端的IP,但它的值不是由客户端提供的,而是服务端根据客户端的ip指定的         
设置日志格式
设置日志格式为json                 
    log_format  log_json  '{"@timestamp": "$time_local","user_ip":"$http_x_real_ip","lan_ip":"$remote_addr",                
                          "log_time":"$time_iso8601","user_req":"$request","http_code":"$status",               
                          "body_bytes_sents":"$body_bytes_sent","req_time":"$request_time","user_ua":"$http_user_agent"}';              

    log_format  log_json  '{"@time": "$time_iso8601",'  #时间             
                          '"http_code":"$status",'      #状态             
                          '"method":"$request_method",' #请求方法               
                          '"req_time":"$request_time",' #请求时间               
                          '"user_ip":"$http_x_real_ip",'#ip客户               
                          '"lan_ip":"$remote_addr",'    #ip代理               
                          '"user_req":"$request",'      #请求uri及方法               
                          '"body_bytes_sents":"$body_bytes_sent",' #用户请求字节数             
                          '"send_b":"$bytes_sent",'     # 响应数据大小                
                          '"ua":"$http_user_agent"}';   #浏览器标识              

设置格式为filebeat预定义的                   
    log_format  oo    '$time_iso8601 '  #时间                 
                          '$status '      #状态               
                          '$request_method ' #请求方法                  
                          '$request_time ' #请求时间                
                          '$http_x_real_ip ' #ip客户                  
                          '$remote_addr '    #ip代理                  
                          '"$request" '      #请求uri及方法                  
                          '$body_bytes_sent ' #用户请求字节数                  
                          '$bytes_sent '     # 响应数据大小                   
                          '"$http_user_agent" ';   #浏览器标识               
日志定时切割
计划任务                    
    * * * * * sh /nginx.sh >> /root/nginxcron.log 2>&1              

切割脚本                    
    #!/bin/bash             
    #rotate nginx logs              

    if [ ! -d /usr/local/nginx/logs/log_old  ];then             
      mkdir /usr/local/nginx/logs/log_old               
    #else               
    #  echo dir exist               
    fi              

    PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin                

    logs_path=/usr/local/nginx/logs             

    #t=$(date -d "-1 day" +%F)              
    t=$(date -d "-1 day" +%Y%m%d)               

    cd ${logs_path}             

    for logs in <code>ls *.log</code>             
        do              
            mv $logs log_old/$logs-$t               
    done                

    #向nginx主进程发送USR1信号重新打开日志文件也可以:/bin/kill -HUP <code>cat $nginx_pid</code>                

    kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)               
syslog发送日志到远程
通过修改配置文件,将日志通过网络发送到本地或远程                        

配置示例                    
    access_log syslog:server=192.168.1.137:88     main;    //访问日志               
    access_log syslog:server=unix:/var/log/nginx.sock,nohostname;               
    access_log syslog:server=[2001:db8::1]:12345,facility=local7,tag=nginx,severity=info combined;              

    error_log   syslog:server=192.168.1.137:88;   main //错误日志               
    error_log syslog:server=192.168.1.1 debug;              

rsyslog监听的时514端口如果再配置  syslog:server的时候没有指定port那么将会通过514的udp端口进行发送数据                    

远程接收到的内容示例                  
    <190>Aug 28 16:32:32 desktop-2bg6llp nginx: {"@time": "2020-08-28T16:32:32+08:00","http_code":"404","method":"GET","req_time":"0.000",              
    user_ip:"-","lan_ip":"192.168.0.137","user_req":"GET /ff HTTP/1.1","body_bytes_sents":"555","send_b":"705","ua":"Mozilla/5.0                
    (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"}               
日志分析工具
yum install -y epel-release                 
yum install -y python-pip                   

pip install ngxtop                  
日志特征分析 (个人测试出来的无参考意义)
win远程桌面连接   
    {"A": "2020-09-01T12:17:32+08:00","B":"400","C":"-","D":"0.308","E":"-","F":"5.188.206.18","G":"\x03\x00\x00/*\xE0\x00\x00\x00\x00\x00Cookie: mstshash=Administr","H":"150","I":"295"}

ssh 连接  
    {"A": "2020-09-01T18:10:31+08:00","B":"400","C":"-","D":"0.001","E":"-","F":"192.186.12.175","G":"SSH-2.0-OpenSSH_7.4","H":"150","I":"295"}
评论 (0)

点击这里取消回复。

欢迎您 游客  

Copyright © 2025 网站备案号 : 蜀ICP备2022017747号
smarty_hankin 主题. Designed by hankin
主页
页面
  • #1742(无标题)
博主
tang.show
tang.show 管理员
linux、centos、docker 、k8s、mysql等技术相关的总结文档
210 文章 2 评论 200962 浏览
测试
测试