ELK安装以及配置
ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件,但并非全部。
关于这三者的具体介绍可以移步官方网站查看详情,此文介绍如何安装ELK
一、部署环境
- CentOS-6.x
- Java-1.8
- ELK-7.4.0
- 系统部署如下图
二、ELK安装 - 使用yum方式
ps:此方式安装请使用centos6以上版本
下载并安装公共签名密钥
1
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
在
/etc/yum.repos.d/
目录新建elastic.repo
文件并添加以下内容1
2
3
4
5
6
7
8[elastic-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md执行yum命令,安装elasticsearch、logstash、kibana、filebeat
1
2
3
4sudo yum install elasticsearch
sudo yum install logstash
sudo yum install kibana
sudo yum install filebeat其他安装方式(详见官方文档)
三、安装 kafka(QuickStart)
下载安装
1
2
3
4
5
6
7
8
9
10# 版本更新换代,最新版本见官网
wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.3.0/kafka_2.12-2.3.0.tgz
# 解压
tar -xzf kafka_2.12-2.3.0.tgz
cd kafka_2.12-2.3.0
# 配置[vim config/server.properties](该配置不能是0.0.0.0或127.0.0.1或localhost,需为具体地址)
############################# Socket Server Settings #############################
listeners=PLAINTEXT://192.168.0.102:9092启动、停止服务
1
2
3
4
5
6
7
8
9
10
11
12
13# kafka需要依赖Zookeeper,所以必须先启动一个zookeeper服务。
# 如果你没有安装ZK,那么kafka自带了一个,你只需要执行以下命令启动一个ZK实例
bin/zookeeper-server-start.sh config/zookeeper.properties
# 如果你有自己的ZK的话,那么你需要修改`config/server.properties`文件中如下内容
############################# Zookeeper #############################
zookeeper.connect=localhost:2181
# 以下命令守护进程方式启动kafka
bin/kafka-server-start.sh -daemon config/server.properties
# 停止kafka
bin/kafka-server-stop.sh版本(kafka_2.12-2.3.0)需要jdk-1.8,所以如果本地jdk版本小于1.8,启动会出现如下错误
1
Unsupported major.minor version 52.0
如果你不想(能)更换默认的jdk版本,那么你只需要下载另一个jdk,然后修改启动配置文件
此时要修改文件bin/kafka-run-class.sh
并添加上JAVA_HOME=your_path_here
1
2
3
4
5
6
7# Which java to use
if [ -z "$JAVA_HOME" ]; then
JAVA="java"
else
JAVA_HOME="/usr/local/java/jdk1.8.0_191-x64" #此处换成另一个jdk路径
JAVA="$JAVA_HOME/bin/java"
fi
四、配置\启动 Filebeat
配置。众所周知,filebeat需要配置一个input跟output,编辑文件
/etc/filebeat/filebeat.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21#=========================== Filebeat inputs =============================
filebeat.inputs:
- type: log
enabled: true
paths:
- /usr/logs/test/*.log
fields:
topic: test-log
- type: log
enabled: true
paths:
- /opt/tomcat/logs/catalina.out
fields:
topic: tomcat-log
#================================ Outputs =====================================
#----------------------------- Kafka output --------------------------------
output.kafka:
hosts: ["192.168.0.102:9092"] # kafka listeners address
topic: '%{[fields][topic]}'启动
1
service filebeat start
五、配置\启动 Logstash
众所周知,配置logstash是最麻烦的,我们先说它的启动方式。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20# 虽然同样是用yum方式安装的,但是logstash并没有被安装成一个服务。
# 我目前也不知道为什么,可能是因为它的启动方式有关?
# 所以这里我只能到它的安装目录去启动
cd /usr/share/logstash
# Logstash启动方式有两种,个人建议使用B方式,把不同的日志处理放在不同配置里
# A. 单文件启动方式
bin/logstash -f /etc/logstash/conf.d/logstash.conf --path.settings /etc/logstash/
# B. 多配置文件的启动
bin/logstash -f /etc/logstash/conf.d/ --path.settings /etc/logstash/
# logstash的停止没有提供相关的命令,目前发现只能 kill -9
# 所以logstash配置文件自动加载这个功能我觉得还是开启比较方便,省了很多事
vim /etc/logstash/logstash.yml
# 如下配置,配置文件就会每隔5秒重新加载,这样修改了配置文件就不用重启logstash了
# ------------ Pipeline Configuration Settings --------------
config.reload.automatic: true
config.reload.interval: 5s配置,同样logstash也是有input跟output的配置项,同时还有个filter用来过滤日志
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42# 新建一个配置文件,如 test-log.conf 用来处理 filebeat 中的 test-log
vim /etc/logstash/conf.d/test-log.conf
# test-log.conf 中配置内容如下:
input {
kafka {
bootstrap_servers => "192.168.0.102:9092"
client_id => "logstash-test-log"
topics => ["test-log"]
type => "test-log"
}
}
filter {
if [type] == "test-log" {
grok {
match => {"message" => "\"message\":\"(?<message>.*?[^\\])\""}
overwrite => ["message"]
}
grok {
match => ["message", "%{TIMESTAMP_ISO8601:logdate}"]
}
date {
match => ["logdate", "ISO8601"]
target => "@timestamp"
}
mutate {
remove_field => ["@version", "logdate"]
}
}
}
output {
if [type] == "test-log" {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "test-log-%{+YYYY.MM.dd}"
#user => "${ES_USER}"
#password => "${ES_PWD}"
}
}
}同理,可以创建
tomcat-log.conf
来处理tomcat的日志信息使用
if [type] == "test-log"
可以很好的区分不同的日志,针对不同的日志使用不同的处理方式,或输出到不同的index里
六、启动 Elasticsearch
1 | service elasticsearch start |
七、配置\启动 Kibana
- 配置
1 | vim /etc/kibana/kibana.yml |
- 启动
1
service kibana start
八、如何使用日志处理工具
- 访问 Kibana
1
http://localhost:5601
- 创建 Index Pattern
1
访问kibana >>> Management >>> Index Patterns >>> Create Index Pattern
- 查询日志
1
访问kibana >>> Discover >>> Search