使用elk进行日志分析

Elasticsearch

##TODO

Kibana

下载完成后

  • 修改config文件

其实不修改也可以,默认访问localhost:9200

启动web服务

其实启动web服务很简单,使用python就可以 我在这里卡过一些时间,网上的资料总让你用apache来弄,结果整半天apache的环境

$ python -m SimpleHTTPServer 80

Logstash

logstash使用jruby写的日志分发,可以把日志分发给elasticsearch,它会与elasticsearch组成一个集群,并作为一个transport节点。

grok的匹配可以在http://grokconstructor.appspot.com/do/match#result进行测试,grok的匹配语法与正则一致

比如这样的日志类型: 2015-01-04 11:17:00 INFO - [“stat”,2,”sql”,”UPDATE cache Set changed=? WHERE list=? And k =?”,22,[“2015-01-04T03:17:00.115Z”,”object”,”homehot_118”]]

对应的配置文件如下:

input {
  file {
    path => "/Users/yangqing/project/baozi/baoz/log/access/access*"
    start_position => beginning
  }
}

filter {
    grok {
      match => {"message"=> '%{TIMESTAMP_ISO8601:timestamp}\s+%{LOGLEVEL:loglevel}\s+-\s+\["%{WORD:key1}",%{INT:version},"%{DATA:key2}","%{DATA:detail}",%{INT:runtime},%{GREEDYDATA:extension}\]'}
    } 
}

output {
  elasticsearch {
    host => localhost
  }
  stdout { codec => rubydebug }
}

然后使用 $ bin/logstash -f {my_conf_file}

logstash使用sincedb来记录上一次读取日志的位置。默认是在home目录下,可以使用 $ls -l .sincedb*

来查看所有的sincedb记录,也可以在配置中指定sicedb来继续上一次的读取记录。

Kibana

Kibana可以用来显示各个分布,把kibana里面用的组件做一个简要说明:

  • Kibana的配置是存在elasticsearch当中的,默认使用的es index名称是kibana-int(可配置)。
  • Kibana的DashBoard可对应1个或者多个index,在Dash Board的配置中进行设置。
  • DashBoard设置完成后,创建一个Row,这个Row不提供具体的功能,只是对应页面上的大小,宽度等。
  • 创建Row以后,可以创建Panel。每一个Panel对应一个特定的统计功能。
  • 如果需要查看Pv统计项,就是用histogram功能即可,进一步配置时间,值等。
  • map面板提供了一个地图,可以在地图上显示分布。

##TODO

Published: February 28 2015

blog comments powered by Disqus