Nginx做爲最經常使用的反向代理和負載均衡服務器,被普遍的應用在衆多互聯網項目的前置服務中,不少互聯網項目直接將Nginx服務器做爲整個項目的流量入口。這就使得咱們能夠經過對Nginx服務器日誌的分析,就能夠分析出整個網站的訪問總量、PV、UV、VV等信息。實際上,企業的業務線衆多,很難使用一臺Nginx服務器來代理全部的線上服務,這就致使企業會在線上部署多臺Nginx服務器。而咱們若是想分析全部Nginx服務器的總流量信息時,若是分別對每一個Nginx服務器進行分析,再彙總全部的信息,一方面增長了分析的複雜度,另外一方面也很差維護這些日誌信息。因此,大部分企業會將這些日誌信息統一彙總到某個數據存儲集羣中,以方便的進行數據存儲、維護與分析統計。那麼如何對Nginx的日誌進行格式化並推送到遠程的服務器呢?今天,咱們就一塊兒來探討下這個問題。nginx
格式化Nginx日誌並推送到遠程服務器,其實很簡單,咱們只須要在Nginx服務器的配置文件nginx.conf中進行簡單的配置便可。例如,咱們能夠在nginx.conf文件中添加以下配置。bash
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日誌進行統一存儲、維護和分析。併發
好了,今天就聊到這兒吧!別忘了點個贊,給個在看和轉發,讓更多的人看到,一塊兒學習,一塊兒進步!!負載均衡
若是你以爲冰河寫的還不錯,請微信搜索並關注「 冰河技術 」微信公衆號,跟冰河學習高併發、分佈式、微服務、大數據、互聯網和雲原生技術,「 冰河技術 」微信公衆號更新了大量技術專題,每一篇技術文章乾貨滿滿!很多讀者已經經過閱讀「 冰河技術 」微信公衆號文章,成功跳槽到大廠;也有很多讀者實現了技術上的飛躍,成爲公司的技術骨幹!若是你也想像他們同樣提高本身的能力,實現技術能力的飛躍,進大廠,升職加薪,那就關注「 冰河技術 」微信公衆號吧,天天更新超硬核技術乾貨,讓你對如何提高技術能力再也不迷茫!分佈式