寫在前面

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日誌進行統一存儲、維護和分析。

好了,今天就聊到這兒吧!別忘了點個贊,給個在看和轉發,讓更多的人看到,一起學習,一起進步!!

寫在最後

如果你覺得冰河寫的還不錯,請微信搜索並關注「 冰河技術 」微信公衆號,跟冰河學習高併發、分佈式、微服務、大數據、互聯網和雲原生技術,「 冰河技術 」微信公衆號更新了大量技術專題,每一篇技術文章乾貨滿滿!不少讀者已經通過閱讀「 冰河技術 」微信公衆號文章,吊打面試官,成功跳槽到大廠;也有不少讀者實現了技術上的飛躍,成爲公司的技術骨幹!如果你也想像他們一樣提升自己的能力,實現技術能力的飛躍,進大廠,升職加薪,那就關注「 冰河技術 」微信公衆號吧,每天更新超硬核技術乾貨,讓你對如何提升技術能力不再迷茫!

相關文章