前提と仕様
今回はひとまず、同一サーバ上のApacheのログを収集し検索することを目標とする。環境はCentOS 5.5。
logstashのインストール
logstash - open source log managementからlogstash-1.1.1-monolithic.jarをダウンロードし、インストールする。といっても、適当なとこにjarを置くだけ。ディレクトリは/opt/logstashにしてみた。$ cd /opt/logstash/ $ ls logstash-1.1.1-monolithic.jar |
Step 6 - real world example + search
にあるapache-elasticsearch.confを参考にして、設定ファイルmylogstash.confを作成。
上記サイトの例は、ncコマンドでapacheのログを食わせる形になっていたが、今回はひとまずスタンドアローンで試せればよいので、ログファイルを直接指定した。また、私の環境では日付のパースがうまくいかなかった(エラーになった)のでコメントアウトした。
$ vi mylogstash.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 | input { file { type => "apache" path => "/var/log/httpd/access_log" } #tcp { # type => "apache" # port => 3333 #} } filter { grok { type => "apache" pattern => "%{COMBINEDAPACHELOG}" } # 2012.09.11 dsp74118 comment-out due to parse error # date { # type => "apache" # timestamp => "dd/MMM/yyyy:HH:mm:ss Z" # } } output { stdout { debug => true debug_format => "json" } elasticsearch { embedded => true } } |
$ vi start.sh |
1 | java -jar logstash-1.1.1-monolithic.jar agent -f mylogstash.conf -- web --backend elasticsearch: /// ? local |
$ . /start .sh parse logfile thread remaining log4j:WARN No appenders could be found for logger (org.elasticsearch.node). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http: //logging .apache.org /log4j/1 .2 /faq .html #noconfig for more info. |
1 2 3 4 5 6 | log4j.rootLogger=INFO,rolling log4j.appender.rolling=org.apache.log4j.DailyRollingFileAppender log4j.appender.rolling.layout=org.apache.log4j.PatternLayout log4j.appender.rolling.layout.ConversionPattern=%5p [%t] %d{ISO8601} %F (line %L) %m%n log4j.appender.rolling.File=logs/logstash.log log4j.appender.rolling.DatePattern=.yyyy-MM-dd.HH-mm-ss |
$ jar -uf logstash-1.1.1-monolithic.jar log4j.properties |
$ . /start .sh parse logfile thread remaining |
ログが収集できるか試す
試しに、その辺のPCのブラウザでApacheにアクセスする。… {"@source":"file://server/var/log/httpd/access_log","@type":"apa che","@tags":[],"@fields":{"clientip":["xx.xx.xx.xx"],"ident":[" -"],"auth":["-"],"timestamp":["11/Sep/2012:13:14:56 +0900"],"ZON E":["+0900"],"verb":["GET"],"request":["/javascripts/effects.js? 1290948531"],"httpversion":["1.1"],"response":["304"],"referrer" :["http://server/issues/252"],"agent":["\"Mozilla/5.0 (Windows N T 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1\""]},"@time stamp":"2012-09-11T04:25:27.121000Z","@source_host":"server","@s ource_path":"/var/log/httpd/access_log","@message":"xx.xx.xx.xxx - - [11/Sep/2012:13:14:56 +0900] \"GET /javascripts/effects.js? 1290948531 HTTP/1.1\" 304 - \"http://server/issues/252\" \"Mozil la/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/1 5.0.1\""} … |
Web GUIでログを検索してみる
次にGUIで見てみる。ブラウザでhttp://server:9292/にアクセス。
![]() |
Figure.1 logstashの検索画面 |
![]() |
Figure.2 検索結果画面 |
時刻の範囲指定をしてみる。下記のような感じ。
<検索キーワード> @timestamp:[YYYY-MM-DDTHH:MI:SS TO YYYY-MM-DDTHH:MI:SS]
![]() |
Figure.3 時刻で絞り込んでみたところ |
次回は他サーバのApacheログも集めてみたい。
0 コメント:
コメントを投稿