1、介绍
ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件,但并非全部。
Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。
Logstash是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。
Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据。
2、整体架构
在ELK搭建片中,先给129上搭建es,logstash,kibana单节点,然后通过在logstash服务中添加配置从而获取129服务器中的/var/log/messages,kafka,zk的日志,整理架构如图:
3、环境
1)CentOS 7.4 两台
192.168.171.129 安装:elasticsearch、logstash、Kibana、Nginx、Http、Redis
192.168.171.139 安装:logstash
2)安装java
参考java环境(jdk1.8)安装-linux&windows
3)下载软件
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.16.tar.gz
https://artifacts.elastic.co/downloads/logstash/logstash-5.6.16.tar.gz
https://artifacts.elastic.co/downloads/kibana/kibana-5.6.16-linux-x86_64.tar.gz
4、安装es
1)解压
cd /root/elk/
tar -xf elasticsearch-5.6.16.tar.gz -C /u01/isi/application/
2)修改elasticsearch的配置文件
cd /u01/isi/application/elasticsearch-5.6.16/config
vim config/elasticsearch.yml
cluster.name: elk #配置并设置集群名称
node.name: 192.168.171.129 #配置并设置节点名称
path.data: /u01/isi/application/elasticsearch-5.6.16/data #修改data存放的路径
path.logs: /u01/isi/application/elasticsearch-5.6.16/logs #修改logs日志的路径
#bootstrap.memory_lock: true #配置内存使用用交换分区(不建议使用)
network.host: 0.0.0.0 #监听的网络地址
http.port: 9200 #开启监听的端口
#下面两行配置是增加新的参数,这样head插件可以访问es (5.x版本,如果没有可以自己手动加)
http.cors.enabled: true
http.cors.allow-origin: "*"
3)创建es 数据的存放目录,调整目录的属主属组
mkdir -p /u01/isi/application/elasticsearch-5.6.16/{data,logs} #自定义用于存放data数据的目录
chown -R isi:isi /u01/isi/application/elasticsearch-5.6.16/#修改elasticsearch的日志属主属组
4)启动elasticsearch服务
su isi
cd /u01/isi/application/elasticsearch-5.6.16/
nohup ./bin/elasticsearch &
有可能服务起不来,原因是本测试机器的内存不够,可以修改es启动是加载的内存参数
修改参数:
vim /etc/elasticsearch/jvm.options
-Xms512m
-Xmx512m
再次启动即可
5)注意事项
1> 需要修改几个参数,不然启动会报错
vim /etc/security/limits.conf
在末尾追加以下内容(elk为启动用户,当然也可以指定为*)
isi soft nofile 65536
isi hard nofile 65536
isi soft nproc 2048
isi hard nproc 2048
isi soft memlock unlimited
isi hard memlock unlimited
2> 再修改一个参数(非必要)
vim /etc/security/limits.d/90-nproc.conf
将里面的1024改为2048(ES最少要求为2048)
* soft nproc 2048
3> 另外还需注意一个问题
[2017-06-14T19:19:01,641][INFO ][o.e.b.BootstrapChecks ] [elk-1] bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checks
[2017-06-14T19:19:01,658][ERROR][o.e.b.Bootstrap ] [elk-1] node validation exception
[1] bootstrap checks failed
[1]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
解决:修改配置文件,在配置文件添加一项参数(目前还没明白此参数的作用)
vim /etc/elasticsearch/elasticsearch.yml
bootstrap.system_call_filter: false
重新启动服务即可
cd /u01/isi/application/elasticsearch-5.6.16/
nohup ./bin/elasticsearch &
6)安装elasticsearch-head插件
安装docker镜像或者通过github下载elasticsearch-head项目都是可以的,1或者2两种方式选择一种安装使用即可
1> 使用docker的集成好的elasticsearch-head
docker run -p 9100:9100 mobz/elasticsearch-head:5
docker容器下载成功并启动以后,运行浏览器打开http://localhost:9100/
2> 使用git安装elasticsearch-head(需要node,自行安装即可或参考指导书)
yum install -y git
cd /u01/isi/application/elasticsearch-5.6.16
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start
netstat -antp |grep 9100 #head默认是9100,检查端口是否起来
http://IP:9100/ #浏览器访问测试是否正常
5、安装LogStash
1)解压
cd /root/elk/
tar -xf logstash-5.6.16.tar.gz -C /u01/isi/application/
2)权限调整
chown -R isi:isi /u01/isi/application/logstash-5.6.16/
3)logstash配置文件的使用
1> file插件的使用
cd /u01/isi/application/logstash-5.6.16/
vim config/elk.conf
添加如下配置
input {
file {
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => ["192.168.171.129:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}
启动服务
su isi
因为isi用户没有权限读取/var/log/messages,所以可以建立软连接,改变软连接的权限,从而达到获取系统日志
ln -s /var/log/messages /u01/isi/messages
chown isi:isi /u01/isi/messages
再次启动即可
./logstash -f ../config/elk.conf
2> 配置安全日志的并且把日志的索引按类型做存放,继续编辑elk.conf文件
vim /etc/logstash/conf.d/elk.conf
input {
file {
path => "/u01/isi/messages"
type => "system"
start_position => "beginning"
}
file {
path => "/var/log/secure"
type => "secure"
start_position => "beginning"
}
file {
path => "/u01/isi/application/kafka_2.11/logs/server.log"
type => "kafka"
start_position => "beginning"
}
file {
path => "/u01/isi/application/zookeeper-3.4.10/zookeeper.out"
type => "zookeeper"
start_position => "beginning"
}
}
output {
if [type] == "system" {
elasticsearch {
hosts => ["192.168.171.129:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}
if [type] == "secure" {
elasticsearch {
hosts => ["192.168.171.129:9200"]
index => "secure-%{+YYYY.MM.dd}"
}
}
if [type] == "kafka" {
elasticsearch {
hosts => ["192.168.171.129:9200"]
index => "kafka-%{+YYYY.MM.dd}"
}
}
if [type] == "zookeeper" {
elasticsearch {
hosts => ["192.168.171.129:9200"]
index => "secure-%{+YYYY.MM.dd}"
}
}
}
启动服务
ln -s /var/log/secure /u01/isi/secure
chown isi:isi /u01/isi/secure
./logstash -f ../config/elk.conf
6、安装Kibana
1)解压
cd /root/elk/
tar -xf kibana-5.6.16-linux-x86_64.tar.gz -C /u01/isi/application/
2)权限调整
chown -R isi:isi /u01/isi/application/kibana-5.6.16-linux-x86_64
3)配置文件的修改
cd /u01/isi/application/kibana-5.6.16-linux-x86_64
vim config/kibana.yml
修改配置文件如下,开启以下的配置
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://192.168.171.129:9200"
kibana.index: ".kibana"
4)启动服务
su isi
cd /u01/isi/application/kibana-5.6.16-linux-x86_64
./bin/kibana