Nginx 日志改成 JSON 格式的方法
Nginx 日志默認(rèn)為普通文本的格式,例如,下面是 Nginx 的一行訪(fǎng)問(wèn)日志:
10.88.122.105 - - [02/Dec/2017:09:15:04 +0800] "GET /js/pagination.js HTTP/1.1" 304 0 "http://10.88.105.20:8063/stockrecommand.html" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)" "-" 0.000
為了便于利用 Elastic Stack 日志平臺(tái)收集展示 Nginx 的日志,可以將 Nginx 的日志改成 json 的格式。修改后的 json 日志格式如下所示:
{ "@timestamp": "12/Dec/2017:14:30:40 +0800", "remote_addr": "10.88.122.108", "referer": "-", "request": "GET / HTTP/1.1", "status": 304, "bytes":0, "agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36", "x_forwarded": "-", "up_addr": "-","up_host": "-","up_resp_time": "-","request_time": "0.000" }
為了修改 Nginx 的日志格式改成 json,需要修改 Nginx 的配置文件,筆者 Nginx 的配置文件為 /usr/local/nginx/conf/nginx.conf。
http { include mime.types; default_type application/octet-stream; charset utf-8; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" $request_time'; log_format log_json '{ "@timestamp": "$time_local", ' '"remote_addr": "$remote_addr", ' '"referer": "$http_referer", ' '"request": "$request", ' '"status": $status, ' '"bytes": $body_bytes_sent, ' '"agent": "$http_user_agent", ' '"x_forwarded": "$http_x_forwarded_for", ' '"up_addr": "$upstream_addr",' '"up_host": "$upstream_http_host",' '"up_resp_time": "$upstream_response_time",' '"request_time": "$request_time"' ' }'; access_log logs/access.log log_json; (省略?xún)?nèi)容) }
在 Nginx 的配置文件nginx.conf中,我們定義了兩種的日志格式:main和log_json,其中,main為普通的文本格式,log_json為 json 格式。log_json其實(shí)就是手工構(gòu)造一個(gè) json 字符串。定義了 json 的日志格式后,便可以指定 access log 為 json 格式:
access_log logs/access.log log_json;
修改 Nginx 的配置,重啟 Nginx ,便可以看到 json 格式的日志,重啟 Nginx:
nginx -s reload
以上這篇Nginx 日志改成 JSON 格式的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
安裝配置php-fpm來(lái)搭建Nginx+PHP的生產(chǎn)環(huán)境
這篇文章主要介紹了安裝配置php-fpm來(lái)搭建Nginx+PHP的生產(chǎn)環(huán)境的方法,php-fpm的作用是將FastCGI進(jìn)程管理整合進(jìn)PHP包,需要的朋友可以參考下2016-01-01nginx中一個(gè)請(qǐng)求的count計(jì)數(shù)跟蹤淺析
這篇文章主要給大家介紹了關(guān)于nginx中一個(gè)請(qǐng)求的count計(jì)數(shù)跟蹤的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01Nginx ssi合并頁(yè)面的具體實(shí)現(xiàn)
nginx的ssi模塊是一種類(lèi)似于ASP的基于服務(wù)器的網(wǎng)頁(yè)制作技術(shù),本文主要介紹了Nginx ssi合并頁(yè)面的具體實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05Windows安裝nginx1.10.1反向代理訪(fǎng)問(wèn)IIS網(wǎng)站
這篇文章主要為大家詳細(xì)介紹了Windows安裝nginx1.10.1反向代理訪(fǎng)問(wèn)IIS網(wǎng)站的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11Nginx定時(shí)切割日志實(shí)現(xiàn)詳解
這篇文章主要介紹了Nginx定時(shí)切割日志詳解,Nginx日志默認(rèn)情況下寫(xiě)入到一個(gè)文件中,為了區(qū)分各個(gè)域下的日志,我們一般會(huì)分開(kāi)存儲(chǔ)。即時(shí)這樣,文件也會(huì)變的越來(lái)越大,非常不方便查看分析。下面來(lái)聊聊以日期來(lái)分隔Nginx日志,需要的朋友可以參考下2019-07-07通過(guò)Nginx服務(wù)器獲取大文件MD5值的配置方法
這篇文章主要介紹了通過(guò)Nginx服務(wù)器獲取大文件MD5值的配置方法,同時(shí)文中也附帶了對(duì)大文件下載優(yōu)化的介紹,需要的朋友可以參考下2016-01-01