您的位置:首页 > 其它

ELK 2 – 配置、实践

2018-01-12 09:17 183 查看

后台运行

elasticsearch: ./bin/elasticsearch –d

(如果失败,参考http://blog.csdn.net/lu_wei_wei/article/details/51205943)

logstash: nohup ./bin/logstash agent –f my.conf &

kibana: nohup ./bin/kibana &  (退出ssh会话时,不要直接关闭,要输入  exit 命令)

 

ELK中,主要关心logstash的配置,es只是作为存储容器。

logstash

2、rubydebug格式输出

./bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'  





3、配置文件 输出到elasticsearch

配置项

input、filter、output

命令

[elk@linux2 elasticsearch-2.3.5]$ ./bin/logstash agent -f my.conf

① my.conf 内容

input {

    file{

        path => "/export/servers/tomcat7/logs/ip.txt"

        start_position => "beginning"

    }

}

output {

    elasticsearch {

        hosts => "192.168.1.204:9200"

        }

    stdout{codec=>rubydebug}

}

#测试时,建议一直保留标准输出,这样可以直观看到变化

读取位置

start_position => "beginning"/"end"  每次从文件什么位置读取。默认为end。

beginning时,会把上次读取位置存在  /root/.sincedb_dbd93513aa1097729e1c1c9ac4b87310 这个文件中。要想每次从头读取,就要删除。

后台启动

nohup ./bin/logstash agent -f my.conf &

启动日志存在同级目录nohup.out这个文件里

 

实践一 elk互通

logstash的配置如①

es配置

path.data: /export/servers/elk/elasticsearch-2.3.5/data

path.logs: /export/servers/elk/elasticsearch-2.3.5/logs

network.host: 192.168.1.204

http.port: 9200

kibana配置

server.port: 5601

server.host: "192.168.1.204"

elasticsearch.url: http://192.168.1.204:9200

 

因为在logstash中配置了输出到es,所以要先启动es。

ip.txt内容





202.99.198.174 - - [25/Aug/2016:14:22:26 +0800] "GET / HTTP/1.1" 200 11217

202.99.198.174 - - [25/Aug/2016:14:22:27 +0800] "GET /tomcat.css HTTP/1.1" 200 5576

202.99.198.174 - - [25/Aug/2016:14:22:27 +0800] "GET /tomcat.png HTTP/1.1" 200 5103

es启动图

上部分信息是启动信息,下面是收到日志信息





LS图

同时设置了标准输出,所以窗口也会实时显示日志





kibana





实践二 自定义字段

准备

1、删除/root/.sincedb_xxx 文件

logstash的配置

grok过滤,指定一些字段

作用:为kibana的图表展示准备字段

建议看官网示例:https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html

input {

    file{

        path => "/export/servers/tomcat7/logs/ip1.txt"

        start_position => "beginning"

    }

}

filter{

    grok {

        match=>{ "message"=>"%{IP:client} (%{USERNAME:ident}|-) (%{USERNAME:auth}|-) \[%{HTTPDATE:timestamp}\] \"%{WORD:method} %{URIPATHPARAM:request} (HTTP/%{NUMBER:http_version}|-)\" %{NUMBER:response} %{NUMBER:bytes}" }

    }

}

output {

    elasticsearch {

        hosts => "192.168.1.204:9200"

        }

      stdout{codec=>rubydebug}

}

grok的正则不匹配,就不会出现自定义的字段。kibana的各种图表就没法做了。

正则工具

官方:http://grokdebug.herokuapp.com/(不好访问)

工具:http://tool.lu/regex/









实践三 制作图表

改filter,其他配置同二。

filter{

    grok {

        match=>{ "message"=>"%{IP:client} (%{USERNAME:ident}|-) (%{USERNAME:auth}|-) \[%{HTTPDATE:timestamp}\] \"%{WORD:method} %{URIPATHPARAM:request} (HTTP/%{NUMBER:http_version}|-)\" %{NUMBER:response} %{NUMBER:bytes}" }

    }

    geoip {

        source => "client"

    }

}

运行elk,因为加了geoip,kibana首页左边会多很多字段。





在图表中生成地理位置信息图

具体操作,参考:

简要:http://my.oschina.net/itblog/blog/547250#OSC_h4_8

丰富:http://www.cnblogs.com/yincheng/p/logstash.html?utm_source=tuicool&utm_medium=referral





如果是自定义的index,可能无法制作tile map,参考:Kibana的图形化——Tile Map

实践四 tomcat/logs/project.log

以时间分割日志

2016-08-25 18:03:25

[INFO]-[com.asin.module.industry.member.web.RecommendController.initRecommender()]: 推荐人信息==null

2016-08-25 18:03:25

[ERROR]-[com.asin.module.marketing.bidsale.support.AUpBidSale.update()]: 商家录入数据异常!!!

logstash配置

input {

    stdin{

   

        codec => multiline {

            pattern => "%{DATE} %{TIME}"

            negate => true

            what => "previous"

        }

    }

}

对于日志文件,logstash不是认行,多行可能被放在一个msg里面,叫做一个事件,所以我猜这就是设置codec作用。

实践五 只收集ERROR

input {

   file {

    path => "/export/servers/tomcat7/logs/catalina.out"

    start_position => "beginning"

    codec => multiline {

       pattern => "^20"

       negate => true

       what => "previous"

       charset => "GBK"  #若需要,指定编码

    }

   }

}

filter {

    grok {

        patterns_dir => "/export/servers/elk/logstash-2.3.4/patterns/java"

        match => { "message" => "%{LOGTIME:errtime}\n\[%{LOGLEVEL:level}\]-%{JAVALOGMESSAGE:logmessage}"}

    }

    if [level] != "ERROR" {

          drop {}

    }

}

自定义正则:

LOGTIME 20%{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{HOUR}:?%{MINUTE}(?::?%{SECOND})
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: