从零搭建ELK日志分析系统
从零搭建ELK + filebeat 日志分析系统(以Windows为例)
1. 什么是ELK?
ELK 是elastic公司提供的一套完整的日志收集以及展示的解决方案,是三个产品的首字母缩写,分别是 ElasticSearch、Logstash 和 Kibana。
2. filebeat
Filebeat是用于转发和集中日志数据的轻量级传送工具。Filebeat监视您指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或 Logstash进行索引。
Filebeat的工作方式如下:启动Filebeat时,它将启动一个或多个输入,这些输入将在为日志数据指定的位置中查找。对于Filebeat所找到的每个日志,Filebeat都会启动收集器。每个收集器都读取单个日志以获取新内容,并将新日志数据发送到libbeat,libbeat将聚集事件,并将聚集的数据发送到为Filebeat配置的输出。
3. 安装ElasticSearch
3.1 ES 单节点搭建
首先在官网下载Windows版本的Elasticsearch压缩包, 在任意处解压。
解压后文件结构如下:
启动方式:
进入bin文件目录,在此处打开终端窗口,运行
elasticsearch.bat
文件即可待命令行窗口显示
started
即为启动成功.此时可以在浏览器访问http://localhost:9200, 可以看到浏览器返回如下信息
3.2 ES 集群搭建
创建
elasticsearch-cluster
文件夹, 将ES安装包解压出的内容物复制三份分别命名如下:配置各节点的配置文件(各节点config文件夹下的
elasticsearch.yml
文件)节点1配置文件配置:
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# 节点1的配置信息:
# 集群名称, 节点之间要保持一致
cluster.name: my-elasticsearch
#节点名称, 集群唯一
node.name: node-1
node.master: true
node.data: true
# ip地址
network.host: localhost
# http端口
http.port: 9201
# tcp监听端口
transport.tcp.port: 9301
discovery.seed_hosts: ["localhost:9301", "localhost:9302","localhost:9303"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
# 集群内可被选为主节点的节点列表
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
# 跨域配置
# action.destructive_requires_name: true
http.cors.enabled: true
http.cors.allow-origin: "*"节点2配置文件配置:
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# 节点 2 的配置信息:
# 集群名称,节点之间要保持一致
cluster.name: my-elasticsearch
# 节点名称,集群内唯一
node.name: node-2
node.master: true
node.data: true
#ip 地址
network.host: localhost
# http端口
http.port: 9202
#tcp监听端口
transport.tcp.port: 9302
discovery.seed_hosts: ["localhost:9301"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
# 集群内可被选为主节点的节点列表
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
# 跨域配置
# action.destructive_requires_name: true
http.cors.enabled: true
http.cors.allow-origin: "*"节点3配置文件配置:
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# 节点 3 的配置信息:
# 集群名称,节点之间要保持一致
cluster.name: my-elasticsearch
# 节点名称,集群内要唯一
node.name: node-3
node.master: true
node.data: true
#ip 地址
network.host: localhost
# http端口
http.port: 9203
#tcp监听端口
transport.tcp.port: 9303
discovery.seed_hosts: ["localhost:9301", "localhost:9302"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
# 集群内可被选为主节点的节点列表
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
# 跨域配置
# action.destructive_requires_name: true
http.cors.enabled: true
http.cors.allow-origin: "*"修改好各节点的配置文件之后, 依次启动各节点即可成功创建ES集群
Multi Elasticsearch Head 插件的安装
我们可以在如下链接下载此浏览器插件进行安装,浏览器插件安装方式请自行搜索有关资料
- Chrome应用商店直接安装https://chrome.google.com/webstore/detail/multi-elasticsearch-head/cpmmilfkofbeimbmgiclohpodggeheim
- Github仓库https://github.com/Mu-L/multi-elasticsearch-head-chrome
安装插件完成之后我们可以点击插件,进入监控 Elasticsearch 状态界面,
在此页面我们可以方便地对ES集群进行管理,可以查看到索引所有节点各个分片的健康度等信息,并且能够对索引进行增删改查操作
4. Kibana的安装及启动
在官网下载Kibana安装压缩包, 并解压
进入bin目录,双击
kibana.bat
即可启动成功访问http://localhost:5601, 查看kibana页面:
页面修改为中文需要在
config/kibana.yml
中添加i18n.locale: "zh-CN"
配置
5. Logstash 的安装与配置
首先从官网下载Logstash的zip压缩包, 随后解压:
修改
config/logstash.conf
文件如下, 为修改elasticsearch: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
43
44
45
46
47
48
49
50
51
52
53# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
input {
beats {
port => 5044
}
}
filter {
grok {
match => { "message" => "%{NGINXACCESS}" }
}
geoip {
source => "http_x_forwarded_for"
target => "geoip"
database => "C:\Software\nginx-1.22.0\GeoLiteCity.dat"
add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ]
}
mutate {
convert => [ "[geoip][coordinates]", "float" ]
convert => [ "response","integer" ]
convert => [ "bytes","integer" ]
replace => { "type" => "nginx_access" }
remove_field => "message"
}
date {
match => [ "timestamp","dd/MMM/yyyy:HH:mm:ss Z"]
}
mutate {
remove_field => "timestamp"
}
}
output {
elasticsearch {
hosts => ["http://localhost:9201"]
}
stdout {
codec => rubydebug
}
}启动命令
.\bin\logstash.bat -f <配置文件路径(config/logstash.conf)>
6. Filebeat 的安装与配置
从官网下载Filebeat压缩包, 并解压缩
随后以采集nginx产生的日志为例:
配置
filebeat.yml
:1
2
3output.logstash:
# The Logstash hosts
hosts: ["localhost:5044"]运行
.\filebeat.exe modules enable nginx
,随后更改modules.d\nginx.yml
设置nginx日志的输出路径.随后使用
.\filebeat.exe -e
运行filebeat即可也或可将filebeat注册到Windows服务启动
7. 启动整个日志系统
按顺序(ES(集群)=>logstash=>filebeat=>kibana)依次启动各项服务,随后启动nginx服务,并产生部分日志:
随后回到kibana界面, 使用logstash-* 新建索引模式
随后就可看见kibana收集来的nginx日志
更多使用方法可以查阅Kibana官网文档