nginx stream 日志設置(Version 1.9.0 +)


nginx自1.9.0開始提供tcp/udp的反向代理功能,直到1.11.4才開始提供session日志功能。

啟用stream日志配置文件

主配置文件/etc/nginx/nginx.conf增加內容:

stream {


    log_format proxy '$remote_addr [$time_local] '
                 '$protocol $status $bytes_sent $bytes_received '
                 '$session_time "$upstream_addr" '
                 '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';

    access_log /var/log/nginx/tcp-access.log proxy ;
    open_log_file_cache off;
    include /etc/nginx/conf.d/*.stream;
}

具體的tcp.stream配置文件

 upstream TCP59001 {
        hash $remote_addr consistent;
        server 192.168.1.176:59001;
    }
        server {
        listen 59001;
        proxy_connect_timeout 5s;
        proxy_timeout 30s;
        proxy_pass TCP59001;
    }

nginx重讀配置並檢查tcp session日志的生成

nginx重讀配置

nginx -s reload

檢查日志

tail /var/log/nginx/tcp-access.log

192.168.3.218 [25/Apr/2017:17:55:57 +0800] TCP 200 103 122 10.671 "192.168.1.176:59001" "122" "103" "0.000"
192.168.3.218 [25/Apr/2017:17:55:57 +0800] TCP 200 55 74 4.714 "192.168.1.176:59001" "74" "55" "0.000"
192.168.3.218 [25/Apr/2017:17:55:57 +0800] TCP 200 71 90 6.171 "192.168.1.176:59001" "90" "71" "0.000"
192.168.3.218 [25/Apr/2017:17:55:57 +0800] TCP 200 55 74 4.707 "192.168.1.176:59001" "74" "55" "0.000"
192.168.9.1 [25/Apr/2017:18:49:20 +0800] TCP 200 3423 3438 3375.851 "192.168.1.176:59003" "3438" "3423" "0.000"
192.168.9.1 [25/Apr/2017:18:54:55 +0800] TCP 200 359 374 334.827 "192.168.1.176:59001" "374" "359" "0.001"

至此配置已經完成,upstream的日志已經順利記錄到文件。

配置經驗

  • 測試發現nginx會等待session結束才會記錄到日志文件;
  • session日志只是tcp層面的記錄,包括session時間,發送接收字節數等等;
  • session內部發送日志(比如一個socket連接建立起來以后,多次發送心跳數據)需要在應用層面才能記錄;

參考

How nginx processes a TCP/UDP session

Module ngxstreamcore_module

Module ngxstreamlog_module

http://nginx.org/en/docs/varindex.html   log_format 能取到的變量可從此查詢 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM