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的日志,整理架构如图:

elk kql 加起来_大数据

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
再次启动即可

elk kql 加起来_大数据_02

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

elk kql 加起来_大数据_03

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 &
netstat -antp |grep 9200                       #检查9200端口是否起来
curl http://127.0.0.1:9200/                    #浏览器访问测试是否正常(以下为正常)
curl -i -XGET 'localhost:9200/_count?pretty'   #利用API 和elasticsearch交互查看状态

elk kql 加起来_elasticsearch_04

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/            #浏览器访问测试是否正常

elk kql 加起来_elk kql 加起来_05

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

elk kql 加起来_数据_06

chown isi:isi /u01/isi/messages
再次启动即可
./logstash -f ../config/elk.conf

elk kql 加起来_vim_07


elk kql 加起来_elk kql 加起来_08

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

elk kql 加起来_elk kql 加起来_09


elk kql 加起来_elasticsearch_10

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

elk kql 加起来_大数据_11

5)创建索引

elk kql 加起来_大数据_12


elk kql 加起来_大数据_13


elk kql 加起来_大数据_14


elk kql 加起来_elasticsearch_15