elasticsearch logstash kibana 研究第一篇

本文是目前最流行的elk的研究第一篇

一、安装

1. 首先安装jdk8

2. 下载elasticsearch 和 logstash 注意版本,下载最新的

3. 配置elasticsearch,进入conf目录

修改node,网络等信息

安装插件:

bin/plugin -install lmenezes/elasticsearch-kopf

4. 使用logstash测试

bin/logstash -e 'input { stdin { } } output { elasticsearch_http { host => “10.10.1.12” } }’  

此时访问:

curl 'http://localhost:9200/_search?pretty'

此时可以看到输入的数据

访问elas的插件

http://localhost:9200/_plugin/kopf/ 

可以看到图形化数据

5. 配置kibana

elasticsearch_url: " http://10.10.1.11:9200"   url一定要写正确

然后就启动kibana,简单配置即可试用

二、 logstash

1. grok

filter中grok是最常用的工具了

参考:https://github.com/chenryn/logstash-best-practice-cn/blob/master/filter/grok.md 

1.1  匹配单行

filter {

  grok { match =>

    {“message”=>"(?<level>(\w+)?) (?<request_time>\d+(?:\.\d+)?) (?<test>(\w+)?)”}

具体正则为:

(?<level>(\w+)?) (?<request_time>\d+(?:\.\d+)?) (?<test>(\w+)?)

logstash的正则和perl是一样的

\w 是匹配一个字符,+代表匹配前面一次或多次  ?代表匹配前面一次或0次

前面的?<level>是自定义的,可以任意写,后面的就不多解释了

运行效果如下: 

{

  "level": [

    [

      "abc"

    ]

  ],

  "request_time": [

    [

      "1.1"

    ]

  ],

  "test": [

    [

      "ed"

    ]

  ]

}

以上效果是使用grok 在线网站测试的:http://grokdebug.herokuapp.com/

1.2 匹配多行

filter {

  grok { match =>

    ["message" , "(?<level>(\w+)?) (?<request_time>\d+(?:\.\d+)?) (?<test>(\w+)?)",

     "message" , "(?<level>(\w+)?) (?<request_time>(\w+)?) (?<test>(\w+)?)"]

       }

}

匹配多行的格式如上;

当第一个message语句匹配不上的时候,会自动使用第二个message进行匹配

posted @ 2015-05-31 22:17  luyg24  阅读(551)  评论(0编辑  收藏  举报