使用 ClickStack 监控 EC2 主机日志
使用 OpenTelemetry Collector 并自动补充 EC2 元数据 (实例 ID、区域、可用区、实例类型) ,在 ClickStack 中收集并可视化 EC2 系统日志。包含演示数据集和预置仪表板。
与现有 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 元数据属性(区域、实例类型、实例 ID)进行过滤,以监控特定资源
- 将 EC2 主机日志与应用日志进行关联分析,以便更全面地进行故障排除
- 创建用于安全监控的自定义仪表板(SSH 登录尝试、sudo 使用情况、防火墙拦截)
用于生产环境
本指南将 OpenTelemetry Collector 直接安装在 EC2 实例上,这是主机级监控推荐采用的生产部署模式。若需在大量实例间统一管理 collector,可考虑使用配置管理工具 (Ansible、Chef、Puppet) ,或在 Kubernetes 环境中使用 OpenTelemetry Operator。有关生产环境配置,请参阅发送 OpenTelemetry 数据。