寫在前面
Nginx作為最常用的反向代理和負載均衡服務器,被廣泛的應用在眾多互聯網項目的前置服務中,很多互聯網項目直接將Nginx服務器作為整個項目的流量入口。這就使得我們可以通過對Nginx服務器日志的分析,就可以分析出整個網站的訪問總量、PV、UV、VV等信息。實際上,企業的業務線眾多,很難使用一台Nginx服務器來代理所有的線上服務,這就導致企業會在線上部署多台Nginx服務器。而我們如果想分析所有Nginx服務器的總流量信息時,如果分別對每個Nginx服務器進行分析,再匯總所有的信息,一方面增加了分析的復雜度,另一方面也不好維護這些日志信息。所以,大部分企業會將這些日志信息統一匯總到某個數據存儲集群中,以方便的進行數據存儲、維護與分析統計。那么如何對Nginx的日志進行格式化並推送到遠程的服務器呢?今天,我們就一起來探討下這個問題。
配置Nginx
格式化Nginx日志並推送到遠程服務器,其實很簡單,我們只需要在Nginx服務器的配置文件nginx.conf中進行簡單的配置即可。例如,我們可以在nginx.conf文件中添加如下配置。
log_format common "$remote_addr,$http_ip,$http_mac,$time_local,$status,$request_length,$bytes_sent,$body_bytes_sent,$http_user_agent,$http_referer,$request_method,$request_time,$request_uri,$server_protocol,$request_body,$http_token";
log_format main "$remote_addr,$http_ip,$http_mac,$time_local,$status,$request_length,$bytes_sent,$body_bytes_sent,$http_user_agent,$http_referer,$request_method,$request_time,$request_uri,$server_protocol,$request_body,$http_token";
access_log logs/access.log common;
access_log syslog:server=192.168.1.100:9999,facility=local7,tag=nginx,severity=info main;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
上述配置是將Nginx的日志各項參數以逗號分隔的形式進行輸出,同時將Nginx日志實時推送到192.168.1.100:9999上。
此時,我們只需要在192.168.1.100服務器上部署一個TCP或UDP服務,監聽端口為9999,並在192.168.1.100服務器的防火牆開放9999端口。我們寫的TCP或UDP服務就會實時接收到Nginx服務器發送過來的日志。
通過這種方式,我們就可以將Nginx日志實時收集到某個存儲集群中,對Nginx日志進行統一存儲、維護和分析。
好了,今天就聊到這兒吧!別忘了點個贊,給個在看和轉發,讓更多的人看到,一起學習,一起進步!!
寫在最后
如果你覺得冰河寫的還不錯,請微信搜索並關注「 冰河技術 」微信公眾號,跟冰河學習高並發、分布式、微服務、大數據、互聯網和雲原生技術,「 冰河技術 」微信公眾號更新了大量技術專題,每一篇技術文章干貨滿滿!不少讀者已經通過閱讀「 冰河技術 」微信公眾號文章,吊打面試官,成功跳槽到大廠;也有不少讀者實現了技術上的飛躍,成為公司的技術骨干!如果你也想像他們一樣提升自己的能力,實現技術能力的飛躍,進大廠,升職加薪,那就關注「 冰河技術 」微信公眾號吧,每天更新超硬核技術干貨,讓你對如何提升技術能力不再迷茫!