目的:通過filebeat擷取nginx日志,發送給ElasticSearch,filebeat可以解析json格式日志,是以設定nginx日志為json格式。
1、配置nginx配置檔案
<code> </code><code>log_format jsonTest </code><code>'{"@timestamp":"$time_iso8601",'</code>
<code> </code><code>'"host":"$server_addr",'</code>
<code> </code><code>'"service":"nginxTest",'</code>
<code> </code><code>'"trace":"$upstream_http_ctx_transaction_id",'</code>
<code> </code><code>'"log":"log",'</code>
<code> </code><code>'"clientip":"$remote_addr",'</code>
<code> </code><code>'"remote_user":"$remote_user",'</code>
<code> </code><code>'"request":"$request",'</code>
<code> </code><code>'"http_user_agent":"$http_user_agent",'</code>
<code> </code><code>'"size":$body_bytes_sent,'</code>
<code> </code><code>'"responsetime":$request_time,'</code>
<code> </code><code>'"upstreamtime":"$upstream_response_time",'</code>
<code> </code><code>'"upstreamhost":"$upstream_addr",'</code>
<code> </code><code>'"http_host":"$host",'</code>
<code> </code><code>'"url":"$uri",'</code>
<code> </code><code>'"domain":"$host",'</code>
<code> </code><code>'"xff":"$http_x_forwarded_for",'</code>
<code> </code><code>'"referer":"$http_referer",'</code>
<code> </code><code>'"status":"$status"}'</code><code>;</code>
<code> </code><code>access_log /</code><code>var</code><code>/log/nginx/access.log jsonTest;</code>
定義jsonTest的json格式,其中trace是頁面response headers的值 ctx-transaction-id,通過upstream_http_ctx_transaction_id可以擷取頭檔案屬性。
将日志輸出到/var/log/nginx/access.log
2、配置filebeat配置檔案
<code>filebeat.prospectors:</code>
<code>- type: log</code>
<code> </code><code>paths:</code>
<code> </code><code>- </code><code>'/root/front/logs/*.log'</code>
<code> </code><code>json.message_key: log</code>
<code> </code><code>json.keys_under_root: </code><code>true</code>
<code>output.elasticsearch:</code>
<code> </code><code>hosts: [</code><code>"*.*.*.*:9200"</code><code>]</code>
将日志傳輸給ElasticSearch
本文轉自gaofeng36599 51CTO部落格,原文連結:http://blog.51cto.com/786678398/1980222