將 Nginx log 記錄傳到 Graylog 3

如果要看每個台服務的 log 檔都要到該台設備去查看記錄,這樣子太麻煩了因為有架設 graylog 服務,可以將這些服務上的記錄都傳到這一台 log 服務器上記錄並且察看

Nginx 的服務版本最起要在 1.11.8 以上版本才會有支援 escape=json。

vim /etc/nginx/nginx.conf 

填入以下的內容

log_format graylog_json escape=json '{ "timestamp": "$time_iso8601", '
                     '"remote_addr": "$remote_addr", '
                     '"body_bytes_sent": $body_bytes_sent, '
                     '"request_time": $request_time, '
                     '"response_status": $status, '
                     '"request": "$request", '
                     '"request_method": "$request_method", '
                     '"host": "$host",'
                     '"upstream_cache_status": "$upstream_cache_status",'
                     '"upstream_addr": "$upstream_addr",'
                     '"http_x_forwarded_for": "$http_x_forwarded_for",'
                     '"http_referrer": "$http_referer", '
                     '"http_user_agent": "$http_user_agent" }';

將 syslog:server=這裡填入 graylog ip or hostname 

# replace the hostnames with the IP or hostname of your Graylog2 server
access_log syslog:server=graylog.server.org:12304 graylog_json;
error_log syslog:server=graylog.server.org:12305;

 

再到 graylog 套件庫裡面下載給 graylog 服務使用,graylog3-content-pack-nginx-json 裡面,選擇 View on Github 

log-1.png

下載好解壓縮後會有檔是 .json 檔要把匯入到 graylog 服務裡面,在匯入之前要先做一個設定,不然資料會無法接收回來

vim /etc/rsyslog.conf

最下面新增二行,可以讓 Nginx 服務的 log 檔接收
*.* @127.0.0.1:12304;RSYSLOG_SyslogProtocol23Format
*.* @127.0.0.1:12305;RSYSLOG_SyslogProtocol23Format

存檔後重啟 rsyslog 服務
systemctl restart rsyslog

將剛剛解壓好的 .json 檔匯入,System -> Content Packs

graylog.png

上傳檔案,按下 Upload

graylog-1.png

選擇檔案,剛剛下載好的 .json 檔,然後按下 Upload 

graylog-2.png

上傳成功會在下面看到剛剛上傳的 .json 檔,檔名是 nginx_json_graylog3 然後按下安裝 Install 

graylog-3.png

顯示幫你安裝有關於 Nginx 服務的規則,按下 Install

graylog-4.png

安裝成功到 System --> Inputs 去啟用剛剛套件設定好的 nginx 的服務 

 

 

參考相關網頁: