利用ngxtop工具對nginx日誌實時分析

參考:經過ngxtop實時監控webserver的訪問狀況html


1、部署python

  1. 準備:python2.7.3+、SQLite(不然會報錯)linux

  2. 編譯安裝SQLitenginx

    1. cd /usr/local/src && wget http://www.sqlite.org/2018/sqlite-autoconf-3230100.tar.gz   #下載安裝包,最新安裝包請參考
    2. tar xf sqlite-autoconf-3230100.tar.gz && cd sqlite-autoconf-3230100  #解壓安裝包
    3. ./configure --prefix=/usr/local/sqlite && make && make install  #自定義路徑編譯安裝
  3. 從新編譯安裝pythongit

    1. cd /usr/local/src &&wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz  #下載安裝包,最新包請參考
    2. tar xf Python-2.7.14.tgz && cd Python-2.7.14  #解壓安裝
    3. 配置setup.py中sqlite路徑
      
      qlite_inc_paths = [ '/usr/include',
      		    '/usr/include/sqlite',
      		    '/usr/include/sqlite3',
      			'/usr/local/include',
      			'/usr/local/include/sqlite',
      			'/usr/local/include/sqlite3',
      			'/usr/local/sqlite/include',
      		    ]
    4. ./configure --prefix=/usr/local/python2.7 && make && make install #自定義路徑編譯安裝


  4. 安裝ngxtopgithub

    1. pip install ngxtop
    2. 源碼編譯安裝
      wget https://github.com/lebinh/ngxtop/archive/1c200d51fbae7824a30159714669146d6b214210.zip
      unzip ngxtop-1c200d51fbae7824a30159714669146d6b214210.zip
      cd ngxtop-1c200d51fbae7824a30159714669146d6b214210
      python setup.py install

2、使用web

  1. 幫助helpsql

    1. # ngxtop --help
      
      ngxtop - ad-hoc query for nginx access log.
      
      Usage:
      
      ngxtop [options]
      
      ngxtop [options] (print|top|avg|sum) <var> ...
      
      ngxtop info
      
      ngxtop [options] query <query> ...
      
      Options:
      
      -l <file>, --access-log <file>  須要分析的訪問日誌
      
      -f <format>, --log-format <format>  log_format指令指定的日誌格式 [默認: combined]
      
      --no-follow  ngxtop default behavior is to ignore current lines in log
      
      and only watch for new lines as they are written to the access log.
      
      Use this flag to tell ngxtop to process the current content of the access log instead.
      
      -t <seconds>, --interval <seconds>  report interval when running in follow mode [default: 2.0]
      
      -g <var>, --group-by <var>  根據變量分組 [默認: request_path]
      
      -w <var>, --having <expr>  having clause [default: 1]
      
      -o <var>, --order-by <var>  排序 [默認: count]
      
      -n <number>, --limit <number>  顯示的條數 [default: 10]
      
      -a <exp> ..., --a <exp> ...  add exp (must be aggregation exp: sum, avg, min, max, etc.) into output
      
      -v, --verbose  更多的輸出
      
      -d, --debug  print every line and parsed record
      
      -h, --help  當前幫助信息.
      
      --version  輸出版本信息.
      
      高級選項:
      
      -c <file>, --config <file>  運行ngxtop解析nginx配置文件
      
      -i <filter-expression>, --filter <filter-expression>  filter in, records satisfied given expression are processed.
      
      -p <filter-expression>, --pre-filter <filter-expression> in-filter expression to check in pre-parsing phase
  2. 示例:express

    1. ngxtop -c /usr/local/nginx/conf/nginx.conf -l /usr/local/nginx/logs/access.log top remote_addr request #默認2秒統計一次,默認顯示前十的訪問IP地址和請求 -l 指定日誌文件路徑
    2. ngxtop -c /usr/local/nginx/conf/nginx.conf -t 10 -l /usr/local/nginx/logs/access.log top remote_addr request #-t 10 指定10秒鐘統計一次
    3. ngxtop -c /usr/local/nginx/conf/nginx.conf  -l /usr/local/nginx/logs/access.log -i 'status == 400' print request status #-i 指定過濾條件
    4. ngxtop -c /usr/local/nginx/conf/nginx.conf  -l /usr/local/nginx/logs/access.log top remote_addr request -n 20 #-n 20 指定顯示20行
    5. 使用普通格式從遠程服務器解析apache日誌
      
      ssh user@remote_server tail -f /var/log/apache2/access.log | ngxtop -f common

  3. ngxtop單條命令沒法執行:apache

報錯意思是說ngxin執行文件要加到PATH路徑中,加軟連接
ln -s /usr/local/nginx/sbin/nginx /sbin
#修改環境變量
# vim /etc/profile
    export PATH=$PATH:/usr/local/nginx/sbin

source /etc/profile

        參考:https://www.linuxprobe.com/real-analyse-nginx-ngxtop.html 

相關文章
相關標籤/搜索