天天看點

graylog2采集nginx日志 被動方式

graylog可以通過兩種方式采集nginx日志,一種是通過Graylog Collector Sidecar進行采集(主動方式),另外是通過修改nginx配置檔案的方式進行收集(被動方式)。

這次說一下修改nginx配置檔案(被動方式)。被動方式的好處就是nginx将定義好的日志字段以json格式直接發送到graylog的自定義端口中,graylog通過json解析直接将字段提取出來。優勢在于不用配置複雜的正則進行日志字段的解析,極大減少graylog對于cpu的資源占用。如果使用正則解析日志字段的話,你每次新增字段,相應的正則解析就要進行修改,非常不靈活。當然這種方式也有缺點,一是需要nginx 1.12.1以上版本,二是nginx配置發送到graylog的ip是固定的,如果graylog群集的這個節點挂了的話是無法轉移到其他節點上的,三是nginx直接将日志發送到graylog後,本地不會列印日志輸出了。

本文以graylog 2.5.2為例,向大家介紹一下如何以被動方式采集nginx日志。

1、前往graylog marketplace 下載下傳 content pack檔案并導入到graylog。

(1)content pack檔案下載下傳連結:

nginx content pack (2)菜單中選擇 System / Content Packs -> Content packs -> Import content pack 選擇檔案并上傳
graylog2采集nginx日志 被動方式
(3)菜單中選擇Select content packs -> Web Servers -> nginx 并點選 Apply content 按鈕
graylog2采集nginx日志 被動方式
(4)選擇導覽列 Streams 檢視,關于nginx的相關stream 已經自動建立完成
graylog2采集nginx日志 被動方式
(5)選擇導覽列 System / Inputs -> input 可以看到,nginx相關的input端口已經建立完成
graylog2采集nginx日志 被動方式

2、修改nginx相關配置,假設graylog日志伺服器的ip位址為192.168.251.3

(1)修改nginx log_format 相關配置

'"remote_addr": "$remote_addr", '
             '"remote_user": "$remote_user", '
             '"body_bytes_sent": $body_bytes_sent, '
             '"request_time": $request_time, '
             '"status": $status, '
             '"request": "$request", '
             '"request_method": "$request_method", '
             '"host": "$host",'
             '"source": "192.168.251.3",'
             '"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" }';
access_log syslog:server=192.168.251.3:12301 graylog2_json;
error_log syslog:server=192.168.251.3:12302;           
(2)帶ssl的nginx配置           
'"remote_addr": "$remote_addr", '
 '"remote_user": "$remote_user", '
 '"request_url": "$request_uri", '
 '"req_status": "$status", '
 '"response_size_B": "$bytes_sent", '
 '"req_protocol": "$server_protocol",'
 '"req_method": "$request_method",'
 '"req_srvname": "$server_name",'
 '"req_time": "$request_time",'
 '"connection-id": "$request_id",'
 '"ssl_prot_version": "$ssl_protocol",'
 '"ssl_cipher": "$ssl_cipher",'
 '"ssl_conn_reused": "$ssl_session_reused",'
 '"ssl_session_id": "$ssl_session_id",'
 '"http_referrer": "$http_referer", '
 '"http_user_agent": "$http_user_agent", '
 '"http_x_referer": "$http_x_referer" }';
 
access_log syslog:server=192.168.251.3:12301,facility=local0,tag=nginx,severity=info graylog2_json;
error_log  syslog:server=192.168.251.3:12302,facility=local0,tag=nginx,severity=error warn;           

(3)修改完畢後,執行nginx -t 檢視配置是否無誤,最後執行nginx -s reload 加載配置。選擇導覽列 Streams -> nginx 就能看到相關nginx日志已經收集并将各個字段解析完成了。

graylog2采集nginx日志 被動方式

繼續閱讀