首页 > Web开发 > 详细

logstash分析httpd_log

时间:2015-03-26 13:02:20      阅读:328      评论:0      收藏:0      [点我收藏+]

logstash分析httpd_log

httpd或者nginx格式

logstash内置支持的格式有两种,兼容httpd的common 和 combined.

COMMONAPACHELOG %{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{NUMBER:bytes}|-)

COMBINEDAPACHELOG %{COMMONAPACHELOG} %{QS:referrer} %{QS:agent}

相当于apache httpd的:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

LogFormat "%h %l %u %t \"%r\" %>s %b" common

相当于nginx上面的main 去掉”$http_x_forwarded_for” :

  log_format combined $remote_addr - $remote_user [$time_local] ‘
                    ‘"$request" $status $body_bytes_sent
                    ‘"$http_referer" "$http_user_agent"‘;

被采集机器上配置logstash,输出到elasticsearch机器的redis上去。

input {
        file {
                type => "apache_log"
                path => ["/var/log/httpd/access_log"]
        }
}
output {
        redis {
                host => "xx.xx.xx.xx"
                data_type => "list"
                key => "logstash:redis"

        }
    stdout { codec => rubydebug }
}

这里确保机器能正确连接到redis的端口。
telnet IP 6397

elasticsearch机器将redis队列里面的内容读取到elasticsearch上去:

input
{
 redis {
    host => "127.0.0.1"
    data_type => "list"
    key => "logstash:redis"
  }
}
filter
{
    grok {
        match => { "message" => "%{COMMONAPACHELOG:apachelog}" }
        add_field => [ "response", "%{NUMBER:response}" ]
    }
}
output {
  elasticsearch { host => localhost }
  stdout { codec => rubydebug }

}

之后就是kibana显示了。

logstash分析httpd_log

原文:http://blog.csdn.net/aca_jingru/article/details/44647519

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!