简而言之使用 OTel
filelog 接收器在 ClickStack 中采集并可视化 Nginx 访问日志 (JSON 格式) 。包含演示数据集和预构建仪表盘。与现有 Nginx 集成
前置条件
- 正在运行的 ClickStack 实例
- 已安装 Nginx
- 具有修改 Nginx 配置文件的权限
1
配置 Nginx 日志格式
首先,将 Nginx 配置为以 JSON 格式输出日志,以便更轻松地进行解析。将以下日志格式定义添加到你的 nginx.conf 中:nginx.conf 文件通常位于:- Linux (apt/yum):
/etc/nginx/nginx.conf - macOS (Homebrew):
/usr/local/etc/nginx/nginx.conf或/opt/homebrew/etc/nginx/nginx.conf - Docker:配置通常以卷的形式挂载
http 块中:2
创建自定义 OTel collector 配置
ClickStack 支持通过挂载自定义配置文件并设置环境变量来扩展基础 OpenTelemetry Collector 配置。自定义配置会与 HyperDX 通过 OpAMP 管理的基础配置合并。创建一个名为 nginx-monitoring.yaml 的文件,内容如下:- 从 Nginx 的标准位置读取日志
- 解析 JSON 日志记录
- 提取并保留原始日志时间戳
- 添加
source: Nginx属性,以便在 HyperDX 中进行过滤 - 通过专用管道将日志发送到 ClickHouse exporter
- 您只需在自定义配置中定义新的接收器和管道
- 处理器 (memory_limiter、transform、batch) 和导出器 (clickhouse) 已在基础 ClickStack 配置中定义,您只需按名称引用它们
- time_parser operator 会从 Nginx 的 time_local 字段中提取时间戳,以保留原始日志时间
- 这些管道会通过现有处理器将数据从您的接收器路由到 ClickHouse exporter
3
配置 ClickStack 以加载自定义配置
如需在现有的 ClickStack 部署中启用自定义 collector 配置,您必须:- 将自定义配置文件挂载到 /etc/otelcol-contrib/custom.config.yaml
- 设置环境变量 CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml
- 挂载 Nginx 日志目录,以便 collector 能够读取这些日志
选项 1:Docker Compose
更新您的 ClickStack 部署配置:选项 2:Docker Run (All-in-One 镜像)
如果使用 all-in-one 镜像并通过docker run 运行:确保 ClickStack collector 具备读取 nginx 日志文件所需的适当权限。在生产环境中,请使用只读挂载 (:ro) ,并遵循最小权限原则。
4
在 HyperDX 中验证日志
配置完成后,登录 HyperDX,确认日志已正常流入:- 进入搜索视图
- 将 source 设为日志,并确认你能看到包含
request、request_time、upstream_response_time等字段的日志条目。
演示数据集
1
2
3
4
在 HyperDX 中验证日志
ClickStack 运行后:- 打开 HyperDX 并登录你的账户 (你可能需要先创建账户)
- 进入搜索视图,并将数据源设置为
Logs - 将时间范围设置为 2025-10-19 11:00:00 - 2025-10-22 11:00:00
时区显示HyperDX 会按浏览器的本地时区显示时间戳。演示数据的时间范围为 2025-10-20 11:00:00 - 2025-10-21 11:00:00 UTC。较大的时间范围可确保无论你位于何处都能看到这些演示日志。看到日志后,你可以将范围缩小到 24 小时,以获得更清晰的可视化效果。
仪表盘与可视化
1
仪表盘配置
2
导入预构建仪表盘
- 打开 HyperDX,进入 Dashboards 部分。
- 点击右上角省略号菜单下的“Import Dashboard”。
- 上传 nginx-logs-dashboard.json 文件,然后点击完成导入。
3
系统将创建一个已预先配置好所有可视化内容的仪表盘
对于演示数据集,请将时间范围设置为 2025-10-20 11:00:00 - 2025-10-21 11:00:00 (UTC) (请根据你的本地时区调整) 。导入的仪表盘默认不会预设时间范围。
故障排查
自定义配置未加载
- 验证环境变量 CUSTOM_OTELCOL_CONFIG_FILE 是否已正确设置
- 检查自定义配置文件是否已挂载到
/etc/otelcol-contrib/custom.config.yaml
- 查看自定义 config 的内容,确认其可正常读取
HyperDX 中未显示日志
- 确保 nginx 正在输出 JSON 日志
- 检查 collector 是否能读取日志
- 验证当前生效的配置中包含 filelog receiver
- 检查 collector 日志中是否有错误