CentOS7部署ELK
最近因为业务需要监控nginx和apache的日志,所以粗略研究了下ELK。这三个字母分别代表了Elasticsearch, Logstash, Kibana。他们组成了一个基础的日志统计系统,L负责日志信息获取,E负责创建日志缓存,K负责最终的视图呈现。
安装
推荐使用tar包,rpm看似方便,但在实际的使用中会有些麻烦,后面会再进行说明。
环境准备
Java环境,我使用的是1.8(java安装方式,应该不用再说了吧)
过程
由于都是使用的tar包,所以直接解压出来就好
tar -zxvf xxxxxxx.tar.gz
说明
这里说明一下为什么要选择用tar包而不是rpm,目的是方便目录管理。tar包解压后所有的文件都在一起,而如果使用的是rpm包,安装完成后你会发现目录非常散乱,这里拿Logstash举个例子来看看安装完成后都有哪些目录就明白了。(当然看各自喜好,也会有人觉得能接受rpm安装后的路径,so自己选择吧)
tar解压后
rpm安装后
配置
Logstash
配置文件在解压路径下的config文件夹中,包含了四个文件
- jvm.options
- log4j2.properties
- logstash.yml (logstash的主配置包括服务地址、进程数等)
- startup.options
在config文件夹中创建一个test.config文件规定logstash数据从哪里来,怎么过滤,怎么输出,所以这个文件包含了三个部分 input,filter,output
input {
# 从console输入
stdin {}
}
filter {
}
output {
stdout {
# 从console输出
codec => rubydebug
}
}
- 可支持从文件读取数据
- 过滤器官方提供了很多可配置的插件,用的比较多的是grok,geoip,kv等
- 结果可输出到控制台和文件,也可以输出给elasticsearch
Elasticsearch
配置文件同样也在解压路径下的config文件夹中,包含了三个文件
- jvm.options
- log4j2.properties
- elasticsearch.yml (主配置文件)
主配置文件中一些重要的配置
- path.data和path.logs
- cluster.name(集群名称)
- node.name(节点名称)
- bootsrap.memory_lock
- network.host
- discovery.zen.ping.unicast.hosts
- discovery.zen.minimum_master_nodes
Kibana
解压后的主路径下的config文件夹中,有一个叫kibana.yml的文件,这个就是主配置文件了。配置文件中可配置的属性很多,大家可以参考官方文档进行修改。这里主要说一下和elasticsearch对接的基础配置
- server.port,server.host,server.name
- elasticsearch.url
当然,kibana对接elasticsearch远不止这么简单,这么写的目的只是为了说明这样配置kibana能看到e上的数据,至于更高级的配置,比如https协议,用户配置等等,在实际应用中再做相应的调整。
运行
Logstash
进入解压目录运行 ./bin/logstash -f config/xxxx.config
为了确保配置文件书写正确可以使用 ./bin/logstash -f config/xxx.config -t
进行测试
Elasticsearch
进入解压目录运行 ./bin/elasticsearch
这里需要注意一下的是,如果当前为root去启动e,会报错
没有去深究其原因,解决办法是切换一个非root账户进行启动就ok了。
Kibana
进入解压目录运行 ./bin/kibana
传送门
Logstash官方文档
Kibana官方文档
Elasticsearch官方文档