日志收集与分析系统-ELK Stack 简单搭建

前言

ELK Stack 是 Elasticsearch、Logstash、Kibana 三个开源软件的组合。在实时数据检索和分析场合,三者通常是配合共用,而且又都先后归于 Elastic.co 公司名下,故有此简称。

ELK Stack 在最近两年迅速崛起,成为机器数据分析,或者说实时日志处理领域,开源界的第一选择。和传统的日志处理方案相比,ELK Stack 具有如下几个优点:

  • 处理方式灵活。Elasticsearch 是实时全文索引,不需要像 storm 那样预先编程才能使用;
  • 配置简易上手。Elasticsearch 全部采用 JSON 接口,Logstash 是 Ruby DSL 设计,都是目前业界最通用的配置语法设计;
  • 检索性能高效。虽然每次查询都是实时计算,但是优秀的设计和实现基本可以达到全天数据查询的秒级响应;
  • 集群线性扩展。不管是 Elasticsearch 集群还是 Logstash 集群都是可以线性扩展的;
  • 前端操作炫丽。Kibana 界面上,只需要点击鼠标,就可以完成搜索、聚合功能,生成炫丽的仪表板。

想了解更多有关ELK的知识,可查看ELKstack 中文指南


结构拓扑

本篇文章就简单的介绍下ELK与Redis结合的使用方法。有关更加深入的知识会在之后的文章中写入。

ELK Stack


操作步骤

一、首先安装Nginx与Logstash-Agent

安装并启动Nginx

[root@node5 ~]# yum install nginx -y
[root@node5 ~]# systemctl start nginx.service
[root@node5 ~]# systemctl enable nginx.service

安装JDK(Logstash是用Java研发的所以需要安装jdk)

[root@node5 ~]# yum install jdk-8u92-linux-x64.rpm -y

设置环境变量

1
2
3
[root@node5 ~]# echo "export JAVA_HOME=/usr/java/latest" > /etc/profile.d/java.sh
[root@node5 ~]# echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile.d/java.sh
[root@node5 ~]# . /etc/profile.d/java.sh

安装Logstash-Agent

[root@node5 ~]# yum install logstash-2.3.2-1.noarch.rpm -y

配置环境变量

[root@node5 ~]# vim /etc/logstash/conf.d/nginx.conf
[root@node5 ~]# echo “export PATH=/opt/logstash/bin:$PATH” > /etc/profile.d/logstash.sh
[root@node5 ~]# . /etc/profile.d/logstash.sh

创建配置文件

[root@node5 ~]# vim /etc/logstash/conf.d/nginx.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
input {
file {
path => ["/var/log/nginx/access.log"]
type => "nginxlog"
start_position => "beginning"
}
}

filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
output {
redis {
port => "6379"
host => ["172.16.100.6"]
data_type => "list"
key => "logstash-%{type}"
}
}

修改运行程序的用户

[root@node5 ~]# vim /etc/sysconfig/logstash

1
LS_USER=root

启动Logstash服务

[root@node5 ~]# systemctl start logstash
[root@node5 ~]# systemctl enable logstash

二、然后来安装Redis (epel源有提供)

安装Redis

[root@node6 ~]# yum install redis -y

编辑配置文件

[root@node6 ~]# vim /etc/redis.conf

1
2
3
4
5

bind 127.0.0.1

修改为
bind 0.0.0.0

启动服务

[root@node6 ~]# systemctl start redis
[root@node6 ~]# systemctl enable redis

三、安装Logstash-Server

安装JDK

[root@node7 ~]# yum install jdk-8u92-linux-x64.rpm -y

设置环境变量

1
2
3
[root@node7 ~]# echo "export JAVA_HOME=/usr/java/latest" > /etc/profile.d/java.sh
[root@node7 ~]# echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile.d/java.sh
[root@node7 ~]# . /etc/profile.d/java.sh

创建配置文件

[root@node7 ~]# vim /etc/logstash/conf.d/server.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
input {
redis {
port => "6379"
host => "172.16.100.6"
data_type => "list"
key => "logstash-nginxlog"
}
}
output {
elasticsearch {
hosts => "172.16.100.8"
index => "logstash-%{+YYYY.MM.dd}"
}
}

修改运行程序的用户

[root@node7 ~]# vim /etc/sysconfig/logstash

1
LS_USER=root

启动Logstash服务

[root@node7 ~]# systemctl start logstash
[root@node7 ~]# systemctl enable logstash

四、安装并配置Elasticsearch和Kibana

安装JDK

[root@node8 ~]# yum install jdk-8u92-linux-x64.rpm -y

设置环境变量

1
2
3
[root@node8 ~]# echo "export JAVA_HOME=/usr/java/latest" > /etc/profile.d/java.sh
[root@node8 ~]# echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile.d/java.sh
[root@node8 ~]# . /etc/profile.d/java.sh

安装Elasticsearch和Kibana

[root@node8 ~]# yum install elasticsearch-2.3.3.rpm kibana-4.5.1-1.x86_64.rpm -y

编辑Elasticsearch的配置文件

[root@node8 ~]# vim /etc/elasticsearch/elasticsearch.yml

1
2
node.name: myel
network.host: 0.0.0.0

启动Elasticsearch

[root@node8 ~]# systemctl start elasticsearch
[root@node8 ~]# systemctl enable elasticsearch

编辑Kibana的配置文件

[root@node8 ~]# vim /opt/kibana/config/kibana.yml

1
elasticsearch.url: "http://172.16.100.8:9200"

启动kibana

[root@node8 ~]# systemctl start kibana
[root@node8 ~]# systemctl enable kibana

打开浏览器输入http://172.16.100.8:5601

ELK Stack

勾选下图中箭头指定的选项

ELK Stack

之后选择”Discover”

ELK Stack

最后就可以进入筛选分析界面了

ELK Stack

分享到 评论