这几天业务需要,需要搭建一个日志分析平台,找了很多资料,发现 ELK 对海量日志处理非常不错,于是尝试搭建一下。

一、准备工作

请注意版本问题:

二、安装

如果你的不是 centos 7,这里 有其他系统安装教程

这里我选择本地安装,把安装包下载到本地本地。

对于 centos 7:

1、Elasticsearch 安装

1
$ sudo rpm -i elasticsearch-6.5.0.rpm

安装完成后,可以在 /etc/elasticsearch 找到配置文件,在 /usr/share/elasticsearch 找到程序目录,忘记可以使用以下命令:

1
$ whereis elasticsearch

2、Logstash 安装

1
$ sudo rpm -i  logstash-6.5.0.rpm

安装完成后,可以在 /etc/logstash 找到配置文件,在 /usr/share/logstash 找到程序目录,忘记可以使用以下命令:

1
$ whereis logstash

3、Kibana 安装

1
$ sudo rpm -i  kibana-6.5.0.rpm

安装完成后,可以在 /etc/kibana 找到配置文件,在 /usr/share/kibana 找到程序目录,忘记可以使用以下命令:

1
$ whereis kibana

三、配置

1、Elasticsearch 配置

打开 /etc/elasticsearch/elasticsearch.yml ,主要修改的地方:

1
2
3
cluster.name: nginx_log  # 可以自定义
node.name: node-1 # 可以自定义
network.host: 0.0.0.0 # 允许任何 ip 访问

如果内存不足会报错,可以修改 /etc/elasticsearch/jvm.options

2、Kibana 配置

打开 /etc/kibana/kibana.yml ,主要修改的地方:

1
2
server.host: "0.0.0.0"                      # 允许任何 ip 访问
elasticsearch.url: "http://localhost:9200" # Elasticsearch 的地址,带端口

3、Logstash 配置

/etc/logstash/conf.d 下新建文件,暂且为 test.conf ,把以下内容粘贴进去,

1
2
3
4
5
6
7
8
9
10
11
12
input {
file {
path => "/var/log/nginx/access_analyse.log" # 这个是本地文件,我的是 nginx 产生的日志
codec => json # 编码为 json
}
}
output {
elasticsearch {
hosts => "127.0.0.1:9200" # elasticsearch 的地址和端口
index => "nginx_access_analyse" # 索引的名称,可以自定义
}
}

如果内存不足会报错,可以修改 /etc/logstash/jvm.options

四、启动

1、Elasticsearch 启动

1
2
$ sudo systemctl restart elasticsearch.service  # 重启
$ sudo systemctl status elasticsearch.service # 查看状态

2、Logstash 启动

会花一些时间,要等等。

1
$ sudo /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/test.conf

2、Kibana 启动

会花一些时间,也要等等。

1
$ sudo /usr/share/kibana/bin/kibana

四、查看

打开 127.0.0.1:5061 查看 Kibana。
在这个图可以看到刚刚建立的索引(可能需要等待一定时间才能看到),到这里就算搭建完成了
图1