简介
ELK 框架是一套开源的日志管理和分析工具,由 Elasticsearch、Logstash 和 Kibana 三个主要组件组成,现在新增了Filebeat组件,可以更高效的收集数据。
- Elasticsearch:是一个分布式、高可扩展的开源搜索引擎,能快速准确地从大量日志数据中检索出所需信息。
- Logstash:是一个数据收集和处理引擎,用于从各种数据源收集日志数据,如文件、网络接口、数据库等,然后对数据进行过滤、转换和格式化等处理。
- Kibana:是一个开源的数据分析和可视化平台,可视化方式对 Elasticsearch 中的数据进行分析和展示,无需编写复杂的查询语句,即可快速了解数据的分布、趋势和关联关系。
- Filebeat :Filebeat 是一个轻量级的日志文件收集器,专为转发和集中日志数据而设计,用于监控指定的日志文件或目录,一旦有新的日志产生,Filebeat 就会读取并将其发送。
ELK 框架的工作流程是,Filebeat收集各种来源的日志数据,发送到Logstash处理过滤后将其发送到 Elasticsearch 进行存储和索引,然后 Kibana 从 Elasticsearch 中获取数据并进行可视化展示,为用户提供直观的日志分析结果。
ELK运行流程图
(我搭建的只是一个简易版本的,如需专业版的请查找其他文件或视频资料)
我是在虚拟机的Docker中搭建的ES和Kabana,首先需要新建一个网络用于ELK
docker network create elk
docker安装elasticsearch
docker run -d \
--name=elasticsearch \
-v es-data:/usr/share/elasticsearch/data \
-e ES_JAVA_OPTS="-Xms256m -Xmx512m" \
-e "discovery.type=single-node" \
-e "xpack.security.enabled=false" \
--net elk \
-p 9200:9200 -p 9300:9300 \
docker.elastic.co/elasticsearch/elasticsearch:8.6.2
安装kibana
docker run -d \
--name=kibana \
-e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \
-e I18N_LOCALE=zh-CN \
--net elk \
-p 5601:5601 \
docker.elastic.co/kibana/kibana:8.6.2
测试ES
curl 1ocalhost:9200/_cat/health
测试Kabana,直接访问5601端口就可以,http://192.168.178.78:5601/app/home#/,记得把ip换成自己的。
然后我的Logstash和Filebeat 是安装在客户端的,直接安装在了Windows上。需要再官网下载https://www.elastic.co/,进入后可以先改成中文
然后往下滑,就可以看到下载本地部署的链接了
进去后选择应用和版本
选择需要下载的软件和版本 ,我下载的8.6.2的
进去之后记得下载Windows版本的。
安装Logstash和Filebeat
Filebeat: 解压前面下载好的filebeat压缩包,打开filebeat.yml文件
打开之后把里边原本的文件注销了 ,然后输入以下配置
filebeat.inputs: #这个是获取日志
- type: filestream
id: your_unique_input_id # 在这里添加一个唯一的 ID
enabled: true
paths:
- D:\IDER\project\a\vehicle\logs\vehicle-system\*.log # 请替换为实际的日志路径
setup.ilim.enabled: false
setup.template.name: "logstash"
setup.template.pattern: "logstash-*"
output.logstash: #这个是把日志发送到logstash
hosts: ["127.0.0.1:5044"] #这个logstash的ip以及接口,设置成自己的
index: "logstash-%{+yyyy.MM.dd}" #发送过去的数据名字,前缀加时间戳
保存后在当前文件夹路径哪里输入cmd,打开黑窗口,然后输入启动命令
.\filebeat.exe -c filebeat.yml -e
如果一切配置正确,Filebeat将开始读取配置文件中指定的日志文件,并根据你的输出配置将日志数据发送到目标位置(比如Logstash)。你应该能在命令提示符窗口看到Filebeat的运行日志,显示数据正在被处理和发送。
Logstash:解压Logstash压缩包文件,在config文件夹下有一个文件:logstash-sample.conf,复制一份,并重命名为logstash.conf,输入以下配置。
input {
beats {
port => 5044 #这个监测端口
}
}
output {
elasticsearch {
hosts => ["http://192.168.178.78:9200"] #输出到ES中
index => "task-service-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
然后进入到bin目录,然后地址栏cmd打开黑窗口,输入启动命令
logstash.bat -f D:\tools\logstash-7.15.2\config\logstash.conf
启动之后打开Kibana,滑到最后点击Stack Management
然后点击索引,就可以看到,如果没有看到,可以在数据流那里看看有没有。
有了索引或者数据流后,点击 数据视图,然后创建数据视图
创建时名称可以随便填,但是索引模式一般都是前缀加上*号做通配符
创建保存视图后在左上角点击,然后点击Discover
然后显示出来日志记录