elk日志配置
步骤 1: 安装 Filebeat
-
在您的日志服务器(应用运行的服务器)上,下载适合您操作系统的 Filebeat 版本。
-
以 Linux 为例,下载并解压:
Bash
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.14.0-linux-x86_64.tar.gz tar -zxvf filebeat-8.14.0-linux-x86_64.tar.gz cd filebeat-8.14.0-linux-x86_64/
步骤 2: 配置 Filebeat
Filebeat 的主要配置文件是 filebeat.yml。您需要对其进行修改以匹配您的日志和 ELK 架构。
YAML
# ======================== Filebeat inputs =========================
filebeat.inputs:
- type: filestream
enabled: true
# 指定要采集的日志文件路径,支持通配符
paths:
- /path/to/your/app/logs/*.log
# 比如您的日志文件路径:
# - /home/yzt/logs/test/saas-goods.log
# - /home/yzt/logs/prod/saas-goods.log
# 您也可以使用通配符采集所有应用日志:
# - /home/yzt/logs/*/*.log
# ======================= Elasticsearch output =========================
# Filebeat 可以直接发送到 Elasticsearch,但通常推荐通过 Logstash 进行预处理
# output.elasticsearch:
# hosts: ["localhost:9200"]
# username: "elastic"
# password: "changeme"
# =========================== Logstash output ============================
output.logstash:
# Logstash 服务的地址,通常是集群中的一个或多个节点
hosts: ["your.logstash.server:5044"]
# 设置一个唯一的管道ID,以便在Logstash中识别数据来源
pipeline: "your-app-pipeline"
# =============================== Processors ===============================
# processors:
# - add_host_metadata: ~
# - add_cloud_metadata: ~
# - add_docker_metadata: ~
# - add_kubernetes_metadata: ~
# ================================= Kibana =================================
# setup.kibana:
# host: "localhost:5601"
配置详解:
filebeat.inputs:type: filestream:这是新版本 Filebeat 的输入类型,它取代了老版本的log类型。paths:这里填写您要监控的日志文件绝对路径。由于您使用的是logback-spring.xml中的相对路径./logs,请确保您转换为绝对路径。
output.logstash:hosts:这是您的 Logstash 服务器的 IP 地址和端口。默认的 Beats 输入端口是5044。pipeline:这是一个可选但非常好的实践。您可以在 Filebeat 端指定一个pipeline名称,然后在 Logstash 的配置中,可以根据这个名称来选择不同的处理管道,实现不同日志的定制化处理。
步骤 3: 启动 Logstash (如果您使用 Logstash)
如果您的 Filebeat 将数据发送到 Logstash,您需要在 Logstash 服务器上配置并启动它。
logstash.conf 示例:
代码段
input {
beats {
port => 5044
}
}
filter {
# 由于您的日志已经是LogstashEncoder生成的JSON格式,
# Logstash的beats输入插件默认会将其解析,
# 所以这里通常不需要复杂的filter,除非你想做一些额外的处理
# 例如,根据Filebeat传过来的pipeline名称进行条件过滤
# if [pipeline] == "your-app-pipeline" {
# ...
# }
}
output {
elasticsearch {
hosts => ["your.elasticsearch.server:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
# 或者自定义索引名称,例如:
# index => "your-app-logs-%{+YYYY.MM.dd}"
}
}
input { beats { ... } }: Logstash 监听5044端口,接收来自 Filebeat 的数据。output { elasticsearch { ... } }: 将数据发送到 Elasticsearch 集群。
步骤 4: 运行 Filebeat
在您的日志服务器上,进入 Filebeat 目录,运行以下命令:
-
前台运行(用于测试和调试):
Bash
./filebeat -e -c filebeat.yml-e:将日志输出到标准错误,方便在终端查看。-c:指定配置文件。
-
后台运行(用于生产环境):
Bash
nohup ./filebeat -e -c filebeat.yml > /dev/null 2>&1 &- 推荐使用
nohup命令,让 Filebeat 在终端关闭后继续运行。 > /dev/null 2>&1将所有输出重定向到/dev/null,避免生成日志文件。
- 推荐使用
步骤 5: 在 Kibana 中查看日志
- 登录 Kibana,进入 "Stack Management" -> "Index Patterns"。
- 创建一个新的索引模式,名称与您的 Logstash 配置中的
index名称匹配(例如your-app-logs-*)。 - 在 "Discover" 页面,选择新创建的索引模式,您就可以看到您的日志了。

浙公网安备 33010602011771号