使用ELK Stack(Elasticsearch、Logstash、Kibana、Beats)进行日志管理是一种流行的开源解决方案,用于集中式日志收集、存储、分析和可视化。ELK Stack可以从分布式系统中采集和聚合日志,帮助运维和开发人员更好地理解系统的运行状态、排查问题并监控关键业务指标。
本文将使用Filebeat、Logstash、Elasticsearch、Kibana搭建一个简单的日志分析平台,其中需要自行部署Filebeat和Logstash并且打通和天翼云云搜索Elasticsearch、Kibana实例之间的网络。
ELK Stack组件
Elasticsearch 是一个分布式搜索引擎,作为ELK堆栈的核心,它负责存储和索引日志数据。Elasticsearch提供强大的全文搜索、过滤和分析功能,可以快速处理大规模数据并允许实时查询。
Logstash 是一个数据处理管道工具,负责从各种输入源收集数据,进行过滤、处理并将其输出到 Elasticsearch。Logstash 支持多种数据源(如文件、数据库、消息队列),并且能够通过过滤器对数据进行处理,比如解析、格式转换等。
Kibana 是一个数据可视化和分析工具,允许用户在浏览器中直观地查询和展示Elasticsearch 中存储的日志数据。Kibana提供多种图表、仪表盘和地图,可以帮助用户监控系统、分析日志、生成报表等。
Beats是一组轻量级数据收集器,用于将各种类型的数据发送到Elasticsearch或Logstash进行索引和分析。其中Filebeat是 ELK Stack 中的一个轻量级日志数据收集器,用于收集日志文件数据。它监视指定的日志文件或位置,并将其发送到Elasticsearch或Logstash以进行存储和分析。
工作机制
首先使用轻量级的Filebeat采集日志、其次使用Logstash接收Filebeat的输出,并对日志进行解析、添加或删除字段等处理、最后将数据输出到天翼云Elasticsearch实例,通过Kibana实例在前端可视化展示。
前提条件
-
已经开通天翼云云搜索Elasticsearch和Kibana实例。
-
已经部署Filebeat和Logstash并且打通和天翼云云搜索实例之间的网络。(推荐使用Filebeat和Logstash 7.10.2版本)。
-
查看Kibana的终端可以访问到云搜索实例,设置好5601端口的网络安全策略。
操作步骤
配置Filebeat
Filebeat采集日志,配置具体的日志路径。
#采集日志
filebeat.inputs:
- type: log
# 采集的日志文件的路径。替换为自己日志的路径,可以使用通配符。
paths:
- /your_path/*.log
output.logstash:
hosts: ["{logstash_ip}:5044"]
配置Logstash
Logstash需要接收Filebeat的输出并进行处理,示例配置如下:
input {
beats {
port => 5044
}
}
# 对数据进行处理。
filter {
# mutate {
# remove_field => ["@version"]
# }
}
output{
elasticsearch{
# Elasticsearch实例的访问地址。
hosts => ["http://{ip}:{port}", "http://{ip}:{port}", "http://{ip}:{port}"]
# 访问Elasticsearch实例的用户名和密码,如无安全机制可不配置。
user => "********"
password => "********"
# 配置写入的索引名,示例如下。
index => "filebeat-logstash-es-%{+YYYY.MM.dd}"
}
}
使用Kibana进行可视化查询。
启动Filebeat和Logstash后,日志会不断被采集到Elasticsearch实例中。可以在浏览器中打开Kibana界面,http:{ip}:5601。
输入正确的用户名和密码,可以登录到系统中。
可以使用Dev tools进行查询。
GET {your_index}/_search
{
"query": {
"match": {
"{your_filed}": "XXXXXX"
}
}
}
OpenSearch和OpenSearch Dashboards也适用这套方案。在实际的使用过程中将Elasticsearch和Kibana替换为OpenSearch和OpenSearch Dashboards,同时修改Logstash配置输出到OpenSearch实例即可。