ELK日志解决方案安装配置与使用

官方网站:https://www.elastic.co/products/elasticsearch

logstash,elasticsearch,kibana作用如下:

logstash:分布在每一台需要采集数据的节点上,需要一个配置文件来获取数据,输入主要支持file,输出支持gangalia,nagios,kafka,elasticsearch.

而且可以简单地配置,就可以把数据结构化,过滤等。功能和flume类似。

elasticsearch:基于lucene的一个数据存储,索引工具,高可用,全文检索,全开源。有自己的api可以方便调用。

kibana是前端展现工具,使用nodejs开发。可以创建index,然后绘图,检索,根据标签进行过滤等功能。

安装非常简单,下载解压后执行相应的命令即可。

logstash -e 'input { stdin { } } output { stdout {} }'

/bin/elasticsearch

bin/kibana

以下是我使用elk来搭建一个环境,用来捕获取hadoop的主要进程日志的过程。

input {
  file {
    type =>"hadoop"
     path => ["/app/cdh26550/logs/hadoop-student-namenode-nn1.log" ]
 #    path=>"/app/elk/logstash-2.1.1/test.log"
     start_position => "beginning"
  }
}
filter {
  multiline {
    pattern => "^\d{4}-\d{2}-\d{2}"
    negate => true 
    what => "previous"
  }
  grok {
    match => { "message" => "(?<Date>\d{4}-\d{2}-\d{2}\s+\d{2}.\d{2}.\d{2}.\d{3})\s+(?<Level>\S+)\s+(?<ClassName>\S+)\s+(?<Text>.*)"}
  }
  date {
    match => [ "Date", "yyyy-MM-dd HH:mm:ss,SSS" ]
  }
}
output {
  elasticsearch {
     hosts => "localhost"
     index =>"hadoop-%{+YYYY.MM.DD}" 
  }
  stdout { codec => rubydebug }
}

关于插件的使用,建议去官网查看相关的文档,非常详细,非常不错。

logstash配置文件中有一点需要注意,在向elasticsearch传送数据的过程中,指定了一个index,这个名字可以理解为一个表,存储在elasticsearch中。配置成了按天生成,可以理解成按天划分的分区表。

这个对后面kibana创建索引是对应的,理解了这个,在创建kibana的index时就容易多了。kibana创建index需要和这个保持一致,才能正确的收到数据,否则会有问题。

kibana应该是根据前台过滤的条件,生成query 发送到elasticsearch,然后根据返回的值重绘页面。

logstash的状态文件默认存储在用户的home目录,存储了扫描文件的offset等信息,

sincedb_eaee9f121b74fda7013e1e9fee2e0a01是以.开头的隐藏文件,如下

.sincedb_eaee9f121b74fda7013e1e9fee2e0a01

posted on 2015-12-25 16:55  tneduts  阅读(815)  评论(0编辑  收藏  举报

导航