ELK Stack简介
一、简介
ELK Stack即Elastic Stack,ELK是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash和Kibana。
Elasticsearch是一个搜索和分析引擎。Logstash是服务器端数据处理管道,能够同时从多个来源采集数据、转换数据,然后将数据发送到诸如Elasticsearch等存储库中。Kibana可以让用户在Elasticsearch中使用图形和图表将数据可视化。
备注:本文使用以windows为例。
二、Elasticsearch
1、简介
Elasticsearch是一个实时的分布式开源搜索和分析引擎。
2、安装与运行
三、Kibana
1、简介
Kibana是一个开源分析和可视化平台,设计用于Elasticsearch。可以使用Kibana搜索、查看并与存储在Elasticsearch索引中的数据进行交互;也可以轻松地执行高级数据分析,并将数据可视化为各种图表。
2、安装与运行
建议将Kibana安装在Elasticsearch的同一个服务器上,但这不是必须的。如果安装在不同的服务器上,在启动Kibana之前,需要更改Kibana配置文件Kibana.yml中Elasticsearch服务器的URL。
- 下载
下载Kibana并解压。
- 配置
修改config/kibana.yml
文件,配置Elasticsearch:
elasticsearch.hosts: ["http://localhost:9200"]
- 运行
解压后在命令行切换到bin目录,运行:
kibana.bat
之后访问http://127.0.0.1:5601/打开Kibana界面。
四、Beats
1、简介
Beats是一种开源数据传送器,可以将它作为代理程序安装在服务器上,然后将操作数据发送到Elasticsearch(或 Logstash)进一步处理和增强数据。
每个Beat是一个单独的可安装产品,例如:Auditbeat可以捕获审计数据,Filebeat可以捕获日志文件,Metrickbeat可以捕获系统和服务的指标和统计数据(衡量标准)等。
2、Filebeat
Filebeat是一个轻量级的、资源友好的工具,它从服务器上的文件中收集日志,并将这些日志转发到Elasticsearch或Logstash实例进行处理。
- 下载
下载Filebeat并解压。
- 配置
例如在filebeat.yml
文件中配置日志文件位置以及将日志发送到logstash:
filebeat.inputs:
- type: log
paths:
- G:\log\file.log
output.logstash:
hosts: ["localhost:5044"]
- 启动
切换到解压后的目录,执行:
filebeat -e -c filebeat.yml
3、Metricbeat
Metricbeat的安装与运行:
- 下载
下载Metricbeat并解压。
- 设置初始环境
切换到解压后的目录,执行:
metricbeat.exe setup -e
- 启动
执行:
metricbeat -e
访问http://localhost:5601/app/kibana#/dashboard/Metricbeat-system-overview-ecs即可看到可视化的系统指标:
五、Logstash
1、简介
Logstash可以汇总来自不同来源的数据并对其进行处理,然后将其发送到管道中,通常直接在Elasticsearch进行索引。
2、安装与运行
- 下载
下载Logstash
- 运行
解压后在命令行切换到bin目录,运行:
logstash -e "input { stdin { } } output { stdout {} }"
-e
参数可以直接从命令行指定配置而不用编辑配置文件。上面示例中的管道从标准输入stdin获取输入,并以结构化格式将输入移动到标准输出stdout。
Logstash启动后,在命令提示符处输入hello world
,Logstash会将时间戳和主机地址信息添加到消息中输出:
3、使用Logstash解析日志
- 配置Filebeat将日志行(Log Lines)发送到Logstash
- 启动Filebeat
filebeat -e -c filebeat.yml -d "publish"
- 配置Logstash
创建一个Logstash配置管道,该管道使用Beats输入插件接收来自Beats的事件,使用插件过滤器(例如geoip)增强数据后并将数据索引到Elasticsearch。
新建first-pipeline.conf
配置文件,内容如下:
input {
beats {
port => "5044"
}
}
filter {
geoip {
source => "clientip"
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
}
}
验证配置:
logstash -f ../first-pipeline.conf --config.test_and_exit
--config.test_and_exit
参数表示解析配置文件并报告任何错误。
-
启动Elasticsearch
-
启动Logstash
logstash -f ../first-pipeline.conf --config.reload.automatic
--config.reload.automatic
表示启用自动配置重新加载,当修改配置文件时会停止并重新启动Logstash。
- 验证
之后访问http://localhost:9200/_cat/indices?v可以看到创建出来的索引:
也可以使用搜索:
http://localhost:9200/filebeat-7.10.2-2021.01.31/_search?pretty&q=1612085856891
- 使用Kibana可视化数据