直接使用logstash web运行最简单,不用配置别的东西。logstash会占用2个端口,默认的是9200,elasticsearch会占用,其次是9292logstash的web会占用(其实就是kibana)。

注 elasticsearch是一个搜索的api,不同于logstash。即使内嵌使用也是2个程序,所以使用的是2个端口。如果想只使用1个端口的话,需要自定义安装elasticsearch,并且kibana以elasticsearch插件形势安装。

logstash

logstash 1.4.0中彻底拆分了agent模式和web模式。这是合理的,因为logstash的web模式相当于提供的数据展示界面,而agent提供数据分析与存储,还包括查询接口。

下载logstash解压

curl -O https://download.elasticsearch.org/logstash/logstash/logstash-1.4.0.tar.gz
tar -zxvf logstash-1.4.0.tar.gz

给出一个常用的nginx-access配置

input { 
    file {
        type => "nginx-access"
        path => ["/usr/local/nginx/logs/nginx-access.log"]
        codec => plain {
                  charset => "UTF-8"
          }
    }
}
filter {
    if [type] == "nginx-access" { 
        grok { 
            patterns_dir => ["/usr/local/loganalysis/patterns"]
            match => [ 
                "message", 
                "%{NGINXACCESSLOG}"
            ] 
        }
        useragent {
            source => "agent"
            target => "useragent_"
        }
    }

}
output { 
   elasticsearch { embedded => true }
}

自定义的patterns如下

# NGINX log fields.
NGINX_DATE %{YEAR}[/-]%{MONTHNUM}[/-]%{MONTHDAY} %{TIME}
NGINX_MESSAGE [^,]*

NGINXACCESSLOG    %{IPORHOST:client_ip} - (%{USER:ident}) \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} (?<request>([\w\W]+)|-) (?:HTTP/%{NUMBER:http_version})?|-)\" (%{NUMBER:response_status}|-) (?:%{NUMBER:bytes}|-) \"(%{NOTSPACE:referrer}|-)\" \"(?<agent>([\w\W]+?)|-)\"
NGINXERRORLOG    %{NGINX_DATE:timestamp} \[%{LOGLEVEL:severity}\] %{POSINT:pid}#%{NUMBER}: %{NGINX_MESSAGE:message}(?:, client: %{IPORHOST:client})?(?:, server: %{IPORHOST:server})?(?:, request: %{QS:request})?(?:, host: %{QS:host})?

新版本可以如下运行

bin/logstash agent -f logstash.conf

然后需例外的一个控制台运行

bin/logstash web

访问http://localhost:9292就会得到数据展示页面

参考文档