天天看点

ELK日志分析系统-ELK搭建篇

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日志分析系统-ELK搭建篇

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日志分析系统-ELK搭建篇

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日志分析系统-ELK搭建篇
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 &
           
ELK日志分析系统-ELK搭建篇

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日志分析系统-ELK搭建篇

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日志分析系统-ELK搭建篇
chown isi:isi /u01/isi/messages
再次启动即可
./logstash -f ../config/elk.conf 
           
ELK日志分析系统-ELK搭建篇
ELK日志分析系统-ELK搭建篇
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日志分析系统-ELK搭建篇
ELK日志分析系统-ELK搭建篇

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日志分析系统-ELK搭建篇

5)创建索引

ELK日志分析系统-ELK搭建篇
ELK日志分析系统-ELK搭建篇
ELK日志分析系统-ELK搭建篇
ELK日志分析系统-ELK搭建篇

继续阅读