跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

如何为WorkBuddy安装配置独立的日志服务器?ELK接入指南

需将WorkBuddy日志接入ELK服务器,三种互斥路径:一、Filebeat采集本地日志文件;二、API推送至Logstash HTTP接口;三、Web界面导出后定时归档注入ELK。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 如果您希望为WorkBuddy构建集中化、可长期留存且支持全文检索与可视化分析的日志能力,则需将其日志输出接入独立的ELK日志服务器。以下是实现该目标的三种互斥且可并行部署的技术路径: 一、通过Logstash Filebeat双通道采集WorkBuddy本地日志文件 该方式适用于WorkBuddy已部署在Linux服务器上且日志以标准文本格式落盘的场景,利用轻量级Filebeat替代Logstash直接读取文件,降低资源开销并提升采集稳定性。 1、确认WorkBuddy日志目录权限:执行
ls -ld /opt/workbuddy/logs
,确保
filebeat
用户对该目录具有读取权限;若无,执行
sudo usermod -a -G workbuddy filebeat
并重启filebeat服务。 2、在Filebeat配置文件
/etc/filebeat/filebeat.yml
中添加WorkBuddy输入模块: 3、在
filebeat.inputs
下新增如下配置块: 4、
- type: filestream
5、
  enabled: true
6、
  paths:
7、
    - "/opt/workbuddy/logs/*.log"
8、
  fields:
9、
    service: workbuddy
10、
  fields_under_root: true
11、启用Filebeat内置Elasticsearch输出或转发至Logstash: 12、若直连ES,在
output.elasticsearch
中配置
hosts: ["https://es-cluster.example.com:9200"]
及TLS证书路径; 13、若经Logstash中转,在
output.logstash
中配置
hosts: ["logstash-server.example.com:5044"]
,并确保Logstash启用了
beats
输入插件。 14、执行
sudo filebeat modules enable system
(可选,用于补充系统上下文),随后运行
sudo filebeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["https://es-cluster.example.com:9200"]'
初始化索引模板。 15、启动服务:
sudo systemctl daemon-reload && sudo systemctl enable filebeat && sudo systemctl start filebeat
。 二、配置WorkBuddy API日志推送至Logstash HTTP接口 该方式适用于WorkBuddy已启用RESTful日志查询API且具备主动推送能力的版本,通过将日志事件实时POST至Logstash的HTTP端点,实现结构化日志的零解析转发。 1、在Logstash配置目录
/etc/logstash/conf.d/workbuddy-http.conf
中定义HTTP输入: 2、
input {
3、
  http {
4、
    port => 8081
5、
    codec => "json"
6、
    response_headers => { "Access-Control-Allow-Origin" => "*" }
7、
  }
8、
}
9、在
filter
段增强字段语义: 10、
filter {
11、
  if [module] and [level] {
12、
    mutate { add_field => { "[@metadata][index]" => "workbuddy-%{+YYYY.MM.dd}" } }
13、
    date { match => ["timestamp", "ISO8601"] }
14、
  }
15、
}
16、配置输出至Elasticsearch: 17、
output {
18、
  elasticsearch {
19、
    hosts => ["http://localhost:9200"]
20、
    index => "%{[@metadata][index]}"
21、
    ssl_enabled => false
22、
  }
23、
}
24、验证配置语法:
sudo -u logstash /usr/share/logstash/bin/logstash -t -f /etc/logstash/conf.d/workbuddy-http.conf
。 25、启动Logstash服务:
sudo systemctl start logstash
。 26、修改WorkBuddy服务配置,在
application.yml
或环境变量中设置日志推送地址为
http://logstash-server.example.com:8081
,并启用
log.push.enabled=true
。 三、对接WorkBuddy Web管理界面日志中心的导出能力构建定时归档管道 该方式适用于无法修改WorkBuddy服务端配置、仅具备Web访问权限的受限环境,通过周期性调用其日志中心导出接口获取CSV/JSON快照,并注入ELK进行离线分析。 1、使用curl或Python requests模拟登录WorkBuddy Web管理界面,提取会话Cookie与CSRF Token: 2、
curl -X POST "https://wb-admin.example.com/login" -d "username=admin" -d "password=***" -c cookies.txt
。 3、从响应头或HTML中提取
X-CSRF-TOKEN
值,保存至变量
TOKEN
。 4、构造导出请求URL,例如: 5、
https://wb-admin.example.com/api/v1/logs/export?service=task-engine&level=ERROR&since=2026-04-10T00:00:00Z&until=2026-04-10T23:59:59Z&format=json
。 6、执行带认证的导出请求: 7、
curl -b cookies.txt -H "X-CSRF-TOKEN: $TOKEN" -o /tmp/workbuddy-daily-20260410.json "$EXPORT_URL"
。 8、编写Logstash配置
/etc/logstash/conf.d/workbuddy-csv-import.conf
,使用
file
输入插件监听
/tmp/
目录下的新JSON文件: 9、
input {
10、
  file {
11、
    path => "/tmp/workbuddy-daily-*.json"
12、
    start_position => "beginning"
13、
    sincedb_path => "/var/lib/logstash/sincedb_workbuddy_import"
14、
    codec => "json"
15、
  }
16、
}
17、在
filter
中统一时间戳字段并标记来源: 18、
filter {
19、
  date { match => ["log_time", "ISO8601"] target => "@timestamp" }
20、
  mutate { add_field => { "source" => "web-export" } }
21、
}
22、配置输出至Elasticsearch并指定索引前缀: 23、
output {
24、
  elasticsearch {
25、
    hosts => ["http://localhost:9200"]
26、
    index => "workbuddy-web-archive-%{+YYYY.MM.dd}"
27、
  }
28、
}
29、设置crontab每日凌晨执行导出脚本并触发Logstash文件监听: 30、
0 2 * * * /usr/local/bin/export-workbuddy-logs.sh && sleep 10 && touch /tmp/workbuddy-daily-$(date +\%Y\%m\%d).json
。

相关文章