將 Nginx log 記錄傳到 Graylog
如果要看每個台服務的 log 檔都要到該台設備去查看記錄,這樣子太麻煩了因為有架設 graylog 服務,可以將這些服務上的記錄都傳到這一台 log 服務器上記錄並且察看
2024.02.27 修改為 Graylog 新版本可以正常收集資料
Nginx
的服務版本最起要在 1.11.8 以上版本才會有支援 escape=json。
- 在
Nginx
全域設定檔做設定vim /etc/nginx/nginx.conf
並且填入以下的內容
log_format graylog_json escape=json '{ "nginx_timestamp": "$time_iso8601", '
'"remote_addr": "$remote_addr", '
'"connection": "$connection", '
'"connection_requests": $connection_requests, '
'"pipe": "$pipe", '
'"body_bytes_sent": $body_bytes_sent, '
'"request_length": $request_length, '
'"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", '
'"http_version": "$server_protocol", '
'"remote_user": "$remote_user", '
'"http_x_forwarded_proto": "$http_x_forwarded_proto", '
'"upstream_response_time": "$upstream_response_time", '
'"nginx_access": true }';
# 將 syslog:server=這裡填入 graylog ip or hostname
# replace the hostnames with the IP or hostname of your Graylog server
access_log syslog:server=graylog.server.org:12304 graylog_json;
error_log syslog:server=graylog.server.org:12305;
- 再到 graylog 套件庫裡面下載給 graylog 服務使用,NGINX Syslog for Graylog裡面,選擇 View on Github
- 建立新的
.json
檔在將內容貼到您剛剛建立的記事本,在另存成.json
檔後再匯入,System -> Content Packs
- 上傳檔案,按下
Upload
選擇檔案,剛剛下載好的 .json
檔,然後按下 Upload
上傳成功會在下面看到剛剛上傳的 .json
檔,檔名是 nginx-syslog
然後按下安裝 Install
顯示幫你安裝有關於 Nginx
服務的規則,按下 Install
-
如果您有自己設定
Inputs
的話需要再新增加設定,如果沒有正常來說會自己幫您新增Inputs
-
以下是您自己新增後還有需要在設定的參數
-
新增加
static field
- 在填入以下的參數,這樣子在
streams
裡面有個項目是NGINX Access Logs
裡面可以看到目前所收集到Nginx
資訊