使用 ClickStack 监控 EC2 主机日志
通过在实例上安装 OpenTelemetry Collector,使用 ClickStack 监控 EC2 系统日志。Collector 会自动为日志补充 EC2 元数据(实例 ID、区域、可用区、实例类型)。你将学习如何:
- 在 EC2 实例上安装并配置 OpenTelemetry Collector
- 自动使用 EC2 元数据丰富日志
- 通过 OTLP 将日志发送到 ClickStack
- 使用预构建的仪表板,在云环境上下文中可视化 EC2 主机日志
提供了一个包含示例日志和模拟 EC2 元数据的演示数据集,可用于测试。
预计耗时:10–15 分钟
与现有 EC2 实例集成
本节介绍如何在 EC2 实例上安装 OpenTelemetry Collector,用于收集系统日志并将其发送到 ClickStack,并自动补充 EC2 元数据。此分布式架构已准备好用于生产环境,并可扩展到多个实例。
如果 ClickStack 运行在与需要监控日志的同一台 EC2 实例上,可以使用与 通用主机日志指南 类似的一体化方案。将 /var/log 挂载到 ClickStack 容器中,并在自定义配置中添加 resourcedetection 处理器,即可自动捕获 EC2 元数据。本文主要关注在生产环境中更常见的分布式架构部署方式。
如果希望在为生产实例进行配置之前先测试 EC2 主机日志集成,可以在 "Demo dataset" 部分使用我们预配置的环境和示例数据进行测试。
前提条件
- 已有正在运行的 ClickStack 实例(可为本地数据中心部署、Cloud 或本地开发环境)
- 已有正在运行的 EC2 实例(Ubuntu、Amazon Linux 或其他 Linux 发行版)
- 从 EC2 实例到 ClickStack 的 OTLP 端点具备网络连通性(HTTP 使用端口 4318,gRPC 使用端口 4317)
- 可访问 EC2 实例元数据服务(默认启用)
验证 EC2 元数据是否可访问
从您的 EC2 实例验证元数据服务是否可访问:
您应该能看到实例 ID、区域和实例类型。如果这些命令失败,请检查:
- 实例元数据服务已启用
- IMDSv2 未被安全组或网络 ACL 阻止
- 这些命令需要在 EC2 实例上直接运行
EC2 元数据可在实例内通过 http://169.254.169.254 访问。OpenTelemetry resourcedetection 处理器使用此端点自动为日志增强云上下文信息。
创建采集器配置
在 /etc/otelcol-contrib/config.yaml 创建 OpenTelemetry Collector 的配置文件:
根据您的 Linux 发行版选择配置:
- 现代 Linux(Ubuntu 24.04+)
- 旧版 Linux(Amazon Linux 2、RHEL、旧版 Ubuntu)
在配置中将以下项替换为实际值:
YOUR_CLICKSTACK_HOST: 运行 ClickStack 的主机名或 IP 地址- 在本地进行测试时,您可以使用 SSH 隧道(参见故障排除部分)。
该配置:
- 从标准位置读取系统日志文件(Ubuntu 为
/var/log/syslog,Amazon Linux/RHEL 为/var/log/messages) - 解析 syslog 格式并提取结构化字段(时间戳、主机名、单元/服务、PID、消息)
- 通过
resourcedetection处理器自动检测并添加 EC2 元数据 - (如果存在)可选地包含 EC2 标签(Name、Environment、Team)
- 使用 OTLP over HTTP 将日志发送到 ClickStack
resourcedetection 处理器会自动将这些属性添加到每条日志中:
cloud.provider: "aws"cloud.platform: "aws_ec2"cloud.region: AWS 区域(例如 “us-east-1”)cloud.availability_zone: 可用区(AZ,例如 "us-east-1a")cloud.account.id: AWS 账户 IDhost.id: EC2 实例 ID(例如 "i-1234567890abcdef0")host.type: 实例类型(例如:"t3.medium")host.name: 实例的主机名
运行采集器
启动 OpenTelemetry Collector:
将采集器配置为 systemd 服务运行,使其能够在系统启动时自动启动,并在发生故障时自动重启。详情请参阅 OpenTelemetry Collector 文档。
在 HyperDX 中验证日志
收集器运行后,登录 HyperDX 并验证日志是否正常流入且包含 EC2 元数据:
- 进入搜索视图
- 将来源设置为
Logs - 按
source:ec2-host-logs进行过滤 - 单击某条日志记录以展开详情
- 验证是否能在资源属性中看到 EC2 元数据:
cloud.providercloud.regionhost.id(实例 ID)host.type(实例类型)cloud.availability_zone


演示数据集
对于希望在配置生产实例之前先测试 EC2 主机日志集成的用户,我们提供一个包含模拟 EC2 元数据的样本数据集。
下载示例数据集
下载示例日志文件:
数据集包括:
- 系统启动顺序
- SSH 登录活动(成功和失败的登录尝试)
- 安全事件(暴力破解攻击以及 fail2ban 的响应)
- 计划维护(cron 定时任务、anacron)
- 重启服务(rsyslog)
- 内核日志和防火墙活动
- 正常操作与重要事件的混合
创建测试采集器配置
创建名为 ec2-host-logs-demo.yaml 的文件,包含以下配置:
出于演示目的,我们使用 resource 处理器手动添加 EC2 元数据。在生产环境中使用真实 EC2 实例时,应使用 resourcedetection 处理器,该处理器会自动查询 EC2 元数据 API。
在 HyperDX 中验证日志
收集器运行后:
- 打开 HyperDX,并登录到您的账户(如有需要,请先创建一个账户)。
- 进入搜索视图,将来源设置为
Logs - 将时间范围设置为 2025-11-10 00:00:00 - 2025-11-13 00:00:00
- 按
source:ec2-demo筛选 - 展开某条日志记录,在资源属性中查看 EC2 元数据


HyperDX 以您浏览器的本地时区显示时间戳。演示数据的时间跨度为 2025-11-11 00:00:00 - 2025-11-12 00:00:00 (UTC)。较宽的时间范围可确保您无论身处何地都能查看到演示日志。查看日志后,您可以将时间范围缩小至 24 小时,以获得更清晰的可视化效果。
您应该能看到包含模拟 EC2 上下文的日志,包括:
- 实例 ID:
i-0abc123def456789 - 区域:
us-east-1 - 可用区:
us-east-1a - 实例类型:
t3.medium
仪表盘与可视化
为了帮助你开始使用 ClickStack 监控 EC2 主机日志,我们提供了带有云环境上下文的基础可视化视图。
导入预构建的仪表盘
- 打开 HyperDX 并进入 Dashboards 页面
- 点击右上角省略号下的 Import Dashboard

- 上传
host-logs-dashboard.json文件并点击 Finish Import

查看仪表盘
系统会创建一个仪表盘,其中所有可视化视图都已预先配置:

你可以按 EC2 上下文筛选仪表盘中的可视化视图:
cloud.region:us-east-1- 显示来自特定区域的日志host.type:t3.medium- 按实例类型筛选host.id:i-0abc123def456- 来自特定实例的日志
对于演示数据集,将时间范围设置为 2025-11-11 00:00:00 - 2025-11-12 00:00:00 (UTC)(根据你的本地时区进行调整)。导入的仪表盘默认不会指定时间范围。
故障排除
日志中未出现 EC2 元数据
确认 EC2 元数据服务可访问:
如果这一步失败,请确认:
- 实例元数据服务已启用
- IMDSv2 未被安全组阻止
- 您是在 EC2 实例本机上运行 collector
在 collector 日志中检查元数据相关错误:
HyperDX 中未显示任何日志
确认 syslog 文件存在并且正在写入:
检查 collector 是否能读取日志文件:
检查与 ClickStack 的网络连接:
检查 collector 日志是否有错误:
日志解析异常
验证 syslog 格式:
对于 Ubuntu 24.04 及更高版本:
对于 Amazon Linux 2 / Ubuntu 20.04:
如果你的格式不匹配,请根据所使用的发行版,在创建采集器配置部分选择相应的配置选项卡。
Collector 作为 systemd 服务未启动
检查服务状态:
查看详细日志:
常见问题:
- 环境中未正确设置 API 密钥
- 配置文件语法错误
- 读取日志文件时的权限问题
后续步骤
在完成 EC2 主机日志监控配置之后:
- 为关键系统事件(服务故障、身份验证失败、磁盘告警)设置告警
- 按 EC2 元数据属性(区域、实例类型、实例 ID)进行过滤,以监控特定资源
- 将 EC2 主机日志与应用日志进行关联分析,以便更全面地进行故障排查
- 创建用于安全监控的自定义仪表盘(SSH 登录尝试、sudo 使用情况、防火墙拦截)