安装 ELK Stack 并使用 Filebeat 设置 Spring Boot 日志
Source: Dev.to
请提供您希望翻译的完整文本(除代码块和 URL 之外的内容),我将把它翻译成简体中文并保持原有的 Markdown 格式。谢谢!
准备你的系统
sudo apt update && sudo apt upgrade -y
sudo apt install apt-transport-https wget curl gnupg -y
添加 Elastic 仓库
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | \
sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] \
https://artifacts.elastic.co/packages/8.x/apt stable main" | \
sudo tee /etc/apt/sources.list.d/elastic-8.x.list
sudo apt update
安装 ELK Stack
Elasticsearch
sudo apt install elasticsearch -y
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
检查它是否正在运行:
curl -k https://localhost:9200
Kibana
sudo apt install kibana -y
sudo systemctl enable kibana
sudo systemctl start kibana
编辑 Kibana 配置以允许外部访问:
sudo nano /etc/kibana/kibana.yml
# change (or add) the line:
# server.host: "0.0.0.0"
打开所需端口并访问 UI:
sudo ufw allow 5601
在浏览器中访问 http://YOUR_SERVER_IP:5601。
Kibana 与 Elasticsearch 配置
-
为 Kibana 生成注册令牌
sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana -
获取 Kibana 验证码
sudo /usr/share/kibana/bin/kibana-verification-code -
重置
elastic用户密码sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
Logstash
sudo apt install logstash -y
sudo systemctl enable logstash
sudo systemctl start logstash
如何将 Spring Boot 日志发送到 Logstash
工作流程
- Spring Boot 将日志写入文件(Logback)。
- Filebeat 读取日志文件。
- Filebeat 将日志转发到 Logstash(或直接转发到 Elasticsearch)。
- Logstash(可选)解析日志。
- Elasticsearch 存储日志。
- Kibana 可视化日志。
配置 Spring Boot Logback
在 src/main/resources/ 下创建 logback-spring.xml:
%d{HH:mm:ss} %-5level [%thread] %logger{36} - %msg%n
${LOG_DIR}/${APP_NAME}-app.log
${LOG_DIR}/${APP_NAME}.%d{yyyy-MM-dd}.gz
30
%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{36} - %msg%n
在开发机器和运行 JAR 的虚拟机上创建日志目录:
sudo mkdir -p /var/log/taxes-backend
sudo chmod 777 /var/log/taxes-backend # 根据需要调整权限
安装并配置 Filebeat
sudo apt install filebeat -y
编辑 Filebeat 配置文件:
sudo nano /etc/filebeat/filebeat.yml
添加(或修改)输入部分,使其指向你的 Spring Boot 日志文件:
# ============================== Filebeat inputs ===============================
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/taxes-backend/taxes-backend-app.log
(根据需要继续编辑 filebeat.yml 的其余部分,例如输出到 Logstash。)
下一步
- Configure Logstash pipelines 用于解析传入的日志(例如,使用 Grok)。
- Set up Filebeat output 指向 Logstash(
output.logstash:部分)。 - Create Kibana dashboards 用于可视化你的 Spring Boot 日志。
现在,你已经拥有一个功能完整的 ELK 堆栈,Spring Boot 日志通过 Filebeat → Logstash → Elasticsearch → Kibana 进行传输。祝日志记录愉快!
Source: …
Filebeat 与 Logstash 配置指南
1. Filebeat 配置 (filebeat.yml)
# Set to true to enable config reloading
reload.enabled: false
# ======================= Elasticsearch template setting =======================
setup.template.settings:
index.number_of_shards: 1
# =================================== Kibana ================================
setup.kibana:
# ------------------------------ Logstash Output ----------------------------
output.logstash:
hosts: ["localhost:5044"]
# ================================= Processors ==============================
processors:
- add_host_metadata:
when.not.contains.tags: forwarded
- add_cloud_metadata: ~
- add_docker_metadata: ~
- add_kubernetes_metadata: ~
localhost:5044条目告诉 Filebeat 将日志发送到哪里(Logstash 或 Elasticsearch)。
启动 Filebeat
sudo systemctl enable filebeat
sudo systemctl restart filebeat
sudo systemctl status filebeat
2. 配置 Logstash Pipeline
创建 Logstash 配置文件,例如 springboot-logstash.conf。
sudo nano /etc/logstash/conf.d/springboot.conf
编辑配置文件
input {
beats {
port => 5044
}
}
filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} \[%{DATA:thread}\] %{DATA:logger} - %{GREEDYDATA:msg}" }
}
date {
match => ["timestamp", "yyyy-MM-dd HH:mm:ss"]
timezone => "UTC"
}
mutate {
remove_field => ["timestamp"]
}
}
output {
elasticsearch {
hosts => ["https://localhost:9200"]
user => "elastic"
password => "ENTER_YOUR_ELASTIC_PASSWORD"
ssl_verification_mode => "none"
index => "springboot-%{+YYYY.MM.dd}"
}
}
测试 Logstash 配置语法
sudo /usr/share/logstash/bin/logstash --config.test_and_exit -f /etc/logstash/conf.d/springboot.conf
启动 Logstash
sudo systemctl restart logstash
验证索引是否创建
curl -k -u elastic:ENTER_YOUR_ELASTIC_PASSWORD "https://localhost:9200/_cat/indices?v"
3. 在 Kibana 中查看日志
- 打开 Kibana。
- 进入 Stack Management → Index Patterns。
- 创建与日志匹配的索引模式(例如
springboot-logs-*)。 - 前往 Discover 查看已导入的日志。
- 构建仪表板,以可视化日志级别、服务、错误等信息。
将 ENTER_YOUR_ELASTIC_PASSWORD 替换为您为 elastic 用户设置的密码。