简而言之使用 OpenTelemetry Collector 的 journald receiver 在 ClickStack 中采集并可视化 systemd journal 中的日志。包含演示数据集和预置仪表板。
与现有系统集成
前置条件
- 正在运行的 ClickStack 实例
- 使用 systemd 的 Linux 系统 (Ubuntu 16.04+、CentOS 7+、Debian 8+)
- 在受监控系统上安装了 Docker 或 Docker Compose
1
获取 ClickStack API key
OpenTelemetry Collector 会将数据发送到 ClickStack 的 OTLP 端点,而该端点需要进行身份验证。- 在你的 ClickStack URL 中打开 HyperDX (例如 http://localhost:8080)
- 创建账户,或按需登录
- 进入 Team Settings → API Keys
- 复制你的 摄取 API key
- 将其设置为环境变量:
2
3
4
5
在 HyperDX 中验证日志
配置完成后,登录 HyperDX 并确认日志已开始流入:- 进入搜索视图
- 将 source 设置为 Logs
- 按
service.name:systemd-logs进行过滤 - 你应该能看到结构化日志条目,其中包含
unit、priority、MESSAGE、_HOSTNAME等字段
演示数据集
1
2
3
使用演示数据运行 ClickStack
使用演示日志启动 ClickStack:该演示使用
filelog receiver 处理文本日志,而不是使用 journald,从而避免容器中需要 journalctl。仪表盘与可视化
1
仪表盘配置
2
3
查看仪表盘
该仪表盘包含以下可视化内容:- 日志量随时间变化趋势
- 按日志数量排名靠前的 systemd 单元
- SSH 身份验证事件
- 服务故障
- 错误率
对于演示数据集,请将时间范围设置为 2025-11-15 00:00:00 - 2025-11-16 00:00:00 (UTC) (可根据你的本地时区调整) 。
故障排查
HyperDX 中没有显示日志
找不到 journalctl 错误
exec: "journalctl": executable file not found in $PATH:
otel/opentelemetry-collector-contrib 镜像不包含 journalctl。你可以选择:
- 在主机上安装 collector:
- 使用文本导出方式 (如演示所示) ,让
filelogreceiver 读取 journald 导出的内容
后续步骤
- 为关键系统事件设置告警 (如服务故障、身份验证失败、OOM kill)
- 针对特定用例创建更多仪表盘 (如 SSH 安全监控、服务健康)
- 按特定 systemd 单元进行过滤,以减少噪声,并将重点放在重要服务上
投入生产环境
- 在 Kubernetes 中将 collector 部署为 DaemonSet 守护进程集
- 在每台主机上将 collector 作为 systemd 服务运行
- 使用 OpenTelemetry Operator 进行自动化部署