文/michaelgbw
好久没有blog了,因为去了帝都实习(以后就转正的那种),刚好最近回来了,工作那边偶然的机会见识到了ELK,今天好想试一把
ELK
E:Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
L:Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用
K:kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志具体的介绍我就不写了,想深入了解的同学可百度,Google
安装基本都是特简单的那种
- 首先有个java环境
- 再有个redis啥的
这三件套置办齐了以后,我们就可以开始了,网上大多数十nginx的在就是java的log4j的,这次我的ubantu上刚好只有apache,咱们就监控它吧
ELK里面的一般是先写L的配置文件,L是ruby开发,所以或多或少的可以看到ruby的影子,但是不要紧,且看我的conf
input{
file{
type => "apache"
path => [ "/var/log/apache2/access.log" ]
start_position => "end"
#start_position => "starting"
}
}
filter {
grok{
match =>{ "message" => "%{COMBINEDAPACHELOG}"} # 调用刚才找到的模块
remove_field => ["message","type","path","httpversion","bytes","agent","referrer","auth"]
}
date {
match => ["timestamp", "yyyy/mm/dd:HH:mm:ss"]
}
}
output{
elasticsearch{}
stdout {
codec => rubydebug
}
}
其实大概也都能一眼看懂吧,值得一提的是:
- {COMBINEDAPACHELOG}这个东西是logstash自己的官方插件,我们直接调用即可,其实logstash基本开发难度就是这里,自己编写插件
- stdout {codec => rubydebug}这个是把filter的日志也打印出来,logstash服务开启就能查看到
- 可能有人要问如果这个logstash程序kill了,日志文件是不是丢了呀。其实不是,logstash会保存一个.master的数据库来记录访问日志的行数,完全不用担心数据丢失。
开启Elasticsearch
Elasticsearch默认跑在9200du,具体配置请参考这里
(冒号两边一定要有空格,坑~)
开启kibana
kibana安装特别简单,tar zvxf后直接找个web 服务器扔进去,是纯js和HTML开发,什么依赖都不要哦~
默认访问地址是http://localhost:5601
第一次会出现这个画面:
kibana默认会认为日志来源是logstash,当然亦可以是hdfs,redis什么的,以后碰到再交流。
这里就直接创建create
点击discover
就是这么简单。
后记
其实ELK还有好多特别强大的特性,这篇文章只是入门,今后还要继续研究才是~