.ELK
ELK由ElasticSearch(ES)、Logstash和Kiabana三个开源工具组成。
ES是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash是一个完全开源的工具,可以对日志进行收集、分析、并将其存储供以后使用。
kibana也是一个开源和免费的工具,他Kibana可以为Logstash和ES提供的日志分析友好的Web界面,可以帮助您汇总、分析和搜索重要数据日志。
可以在ELK官网 https://www.elastic.co/下载最新版本的工具安装包,Windows环境选择后缀为zip格式的下载。如遇下载速度慢或下载中途停止,可以采用VPN代理下载或者云服务器下载。
windows环境搭建时参考了这篇微博:http://blog.csdn.net/pilihaotian/article/details/52452010
后因为公司需要,选择在linux环境下搭建ELK
一、准备
查看linux服务器的jdk版本,ELK支持1.8以上版本
java -version 命令查看
tips:如linux自带的openjdk为1.7,可在官网上下载最新版的jdk安装http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
1.选择合适的版本
2.选择要安装java的位置
3.解压文件 如:tar -xzvf 文件名.tar.gz
4.配置环境变量,打开 /etc/profile vim /etc/profile,键盘i键切换insert模式
在文件末尾添加以下内容
按“ESC"退出insert模式,":wq"退出并保存
命令:source /etc/profile,保存刚设置的环境变量
5.查看jdk版本:java -version
二.下载所需的ELK版本
elasticsearch和logstash版本最好一致,kibana和es的版本也需对应起来
我用的版本
elasticsearch:2.3.5
logstash:2.3.4
kibana:4.5.4
下载地址:http://pan.baidu.com/s/1jIdrxrS
三.安装
三个软件的安装都很简单
1. 以elasticsearch为例
我下载的是zip
unzip 文件名.zip
解压文件后进入bin文件夹,命令:./elasticsearch 即可运行elasticsearch服务
在浏览器输入http://localhost:9200,出现以下结果,则表示安装成功
命令:crtl+c,关闭es服务
2.head插件
在plugins文件夹下新建一个文件夹,名为head
将解压缩后的文件夹放在head文件夹下
重新启动es服务,输入网址 http://localhost:9200/_plugin/head/
一般会想要以ip地址访问,只要改个配置文件就好啦
修改config下面的elasticsearch.yml
networkhost:0.0.0.0
即可以同时以ip地址和localhost访问
tips:检测elasticsearch的连通性
打开另一个终端,输入 curl -X GET http://localhost:9200
3.安装logstash
同上,解压后运行即可
不同的是logstash需要配置conf文件
如:
input {
stdin{} } output { elasticsearch { action => "index" # 在ES上操作index hosts => "localhost:9200" # ES地址 index => "logstash--%{+YYYY-MM}" # 索引名 }
input中可以指定不同的输入端,如通过file{}将采集的日志输出到elasticsearch中。
命令:
bin/logstash -f logstash_agent.conf启动成功后,可在浏览器看到采集的日志信息。
四.搭建时碰到的问题和解决方法
1.logstash安装比较顺利
在安装elasticsearch时,不能以root用户启动服务,只能给非root用户赋权限后再启动服务。
2.版本选择
一开始安装时,下载的是官网的最新版本5.2.2,jdk也安装的是官网要求的1.8.0121
然而启动时一直报错 error,Exception in thread "main" java.lang.UnsupportedClassVersionError: org/elasticsearch/bootstrap/Elasticsearch : Unsupported major.minor version 52.0
版本更换到5.2.0也未解决问题
建议安装时,不要选取最新版本,因为你永远不知道它下一步会给你带来什么样的大坑~~~
elk的更新很频繁,建议使用较稳定的版本。
3.logstash默认的读取file方式是单行数据,但服务器的日常日志信息通常是一大段
可以修改.conf文件
如:codec => multiline {
pattern => "^\["
negate => true
what => "previous"
}
在pattern中写好符合的正则表达式,就能看到符合预期的日志信息展示。
写给自己,小白一枚,在搭建ELK环境时对linux命令一问三不知
在尝试搭建的过程中,一步步百度尝试,虽然费时间,但结果是令人满意的。