今回読み込もうとするNginxのアクセスログは以下の形式。
1 2 3 4 5 |
xxx.xxx.xxx.xxx - - [24/Feb/2016:22:46:17 -0800] "GET /images/sample.jpg HTTP/1.1" 200 29160 "http://www.example.com/index.php" "Mozilla/5.0 (Linux; U; Android 4.2.2; zh-CN; GT-I9205 Build/JDQ39) AppleWebKit/ 534.30 (KHTML, like Gecko) Version/4.0 UCBrowser/10.9.4.728 U3/0.8.0 Mobile Safa ri/534.30" |
設定ファイル
ngnix-import.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
input { stdin { } } filter { grok { match => [ "message" , "%{COMBINEDAPACHELOG}+%{GREEDYDATA:extra_fields}"] overwrite => [ "message" ] } mutate { convert => ["response", "integer"] convert => ["bytes", "integer"] convert => ["responsetime", "float"] } geoip { source => "clientip" target => "geoip" add_tag => [ "nginx-geoip" ] } date { match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ] remove_field => [ "timestamp" ] } useragent { source => "agent" } } output { # stdout { codec => rubydebug } elasticsearch { hosts => '127.0.0.1:9200' } } |
1 2 |
$ /opt/logstash/bin/logstash -f nginx-import.conf --configtest Configuration OK |
アクセスログの読み込み
1 |
$ /opt/logstash/bin/logstash -f nginx-import.conf < access.log |
実際に試してみたら、大きなアクセスログファイルではLogstashが途中終了してしまった。5万行ずつ分割したら、それぞれ最後まで正常に読み込めた。分割すればいいのならそうしようと調べず仕舞いだけど、もしかすると何か設定があるのかもしれない。
参考サイト
NGINX Log Analysis with Elasticsearch, Logstash, and Kibana
http://logz.io/blog/nginx-log-analysis/
Setting up Logstash 1.4.2 to forward Nginx logs to Elasticsearch | Bravo Kernel
http://www.bravo-kernel.com/2014/12/setting-up-logstash-1-4-2-to-forward-nginx-logs-to-elasticsearch/