监控 Kubernetes
本指南帮助你从 Kubernetes 系统中收集日志和指标,并将其发送到 ClickStack 进行可视化和分析。作为演示数据,我们可以选择使用 ClickStack 维护的官方 OpenTelemetry 演示应用的 fork。
前置条件
使用本指南前,您需要具备:
- 一个 Kubernetes 集群(建议 v1.20+),并在某个节点上为 ClickHouse 预留至少 32 GiB 内存和 100 GB 磁盘空间。
- Helm v3+
- 已正确配置、可与集群交互的
kubectl
部署选项
可以使用以下任一部署选项来完成本指南:
-
自托管:在 Kubernetes 集群中完整部署 ClickStack,包括:
- ClickHouse
- HyperDX
- MongoDB(用于仪表盘状态和配置)
-
云托管:使用 ClickHouse Cloud,并将 HyperDX 作为外部托管服务使用。这样就无需在集群内部运行 ClickHouse 或 HyperDX。
为了模拟应用程序流量,可以选择部署 ClickStack 分支版本的 OpenTelemetry Demo Application。这会生成包括日志、指标和追踪在内的遥测数据。如果集群中已经有工作负载在运行,可以跳过此步骤,直接监控现有的 Pod(容器组)、节点和容器。
部署 OpenTelemetry 演示(可选)
此步骤为可选项,适用于没有现有 Pod(容器组)需要监控的用户。虽然已在 Kubernetes 环境中部署了现有服务的用户可以跳过此步骤,但本演示包含已插桩的微服务,这些微服务会生成追踪和会话回放数据,让用户能够体验 ClickStack 的所有功能。
以下步骤将在 Kubernetes 集群中部署 ClickStack 分支版本的 OpenTelemetry Demo Application 堆栈,专为可观测性测试和仪表化演示而定制。该堆栈包含后端微服务、负载生成器、遥测管道、支撑基础设施(如 Kafka、Redis)以及与 ClickStack 的 SDK 集成。
所有服务均部署到 otel-demo 命名空间。每个部署包括:
- 使用 OTel 和 ClickStack SDKS 对链路追踪、指标和日志进行自动仪表化。
- 所有服务会将其遥测数据发送到
my-hyperdx-hdx-oss-v2-otel-collectorOpenTelemetry 收集器(尚未部署) - 将资源标签转发,以便通过环境变量
OTEL_RESOURCE_ATTRIBUTES关联日志、指标和追踪数据。
部署演示环境后,确认所有 Pod(容器组)已成功创建并处于 Running 状态:
演示架构
此演示由使用不同编程语言编写的微服务组成,这些微服务通过 gRPC 和 HTTP 相互通信,并包含一个使用 Locust 模拟用户流量的负载生成器。该演示的原始源代码已被修改为使用 ClickStack instrumentation。

致谢:https://opentelemetry.io/docs/demo/architecture/
有关该演示的更多详细信息,请参阅:
部署 ClickStack
安装 Helm 图表后,您可以将 ClickStack 部署到集群。您可以选择在 Kubernetes 环境中运行所有组件(包括 ClickHouse 和 HyperDX),也可以使用 ClickHouse Cloud,HyperDX 在其中同样以托管服务的形式提供。
自托管部署
以下命令会将 ClickStack 安装到 otel-demo 命名空间。该 Helm 图表会部署:
- 一个 ClickHouse 实例
- HyperDX
- ClickStack 版本的 OTel collector
- 用于存储 HyperDX 应用状态的 MongoDB
您可能需要根据 Kubernetes 集群的配置调整 storageClassName。
未部署 OTel 演示环境的用户可以修改此设置,选择合适的命名空间。
此 Chart 还会安装 ClickHouse 和 OTel collector。对于生产环境,建议使用 ClickHouse 和 OTel collector 的 Operator,和/或使用 ClickHouse Cloud。
要禁用 ClickHouse 和 OTel collector,请设置以下配置项:
使用 ClickHouse Cloud
如果你更希望使用 ClickHouse Cloud,可以部署 ClickStack 并禁用内置的 ClickHouse。
该 chart 当前始终会同时部署 HyperDX 和 MongoDB。虽然这些组件提供了一条替代访问路径,但它们并未与 ClickHouse Cloud 的身份验证机制集成。在此部署模型中,这些组件主要供管理员使用,用于获取安全摄取密钥,该密钥是通过已部署的 OTel collector 进行摄取所必需的,但不应向终端用户暴露。
要验证部署状态,请运行以下命令并确认所有组件均处于 Running 状态。注意:使用 ClickHouse Cloud 的用户在此列表中不会看到 ClickHouse 组件:
访问 HyperDX UI
即使使用 ClickHouse Cloud,仍需在 Kubernetes 集群中部署本地 HyperDX 实例。该实例提供由 HyperDX 内置的 OpAMP 服务器管理的摄取密钥,用于保护通过已部署的 OTel collector 进行的数据摄取——此功能目前在 ClickHouse Cloud 托管版本中尚不可用。
出于安全考虑,该服务使用 ClusterIP 类型,默认不对外暴露。
要访问 HyperDX UI,请将端口 3000 转发到本地端口 8080。
访问 http://localhost:8080 以访问 HyperDX UI。
创建用户,提供满足复杂度要求的用户名和密码。

获取摄取 API 密钥
通过 ClickStack collector 部署的 OTel collector 的数据摄取由摄取密钥进行保护。
导航至 Team Settings 并从 API Keys 部分复制 Ingestion API Key。此 API key 可确保通过 OpenTelemetry collector 摄取的数据是安全的。

创建 API 密钥 Kubernetes Secret
创建一个新的 Kubernetes secret,其中包含摄取 API key,以及一个 config map,用于存储通过 ClickStack Helm 图表部署的 OTel collector 的位置信息。后续组件将使用这些配置,以便将数据摄取到通过 ClickStack Helm 图表部署的 collector 中:
重启 OpenTelemetry Demo Application 的 Pod(容器组)以应用摄取 API key。
演示服务的追踪和日志数据现在应开始流入 HyperDX。

添加 OpenTelemetry Helm 仓库
为了收集 Kubernetes 指标,我们将部署一个标准的 OTel collector,并配置其使用上述摄取 API key 将数据安全地发送到我们的 ClickStack collector。
这需要我们安装 OpenTelemetry Helm 仓库:
部署 Kubernetes 采集器组件
要从集群本身和各个节点收集日志和指标,需要部署两个独立的 OpenTelemetry 收集器,每个收集器使用各自的清单文件。所提供的两个清单文件 k8s_deployment.yaml 和 k8s_daemonset.yaml 协同工作,从 Kubernetes 集群中收集全面的遥测数据。
-
k8s_deployment.yaml会部署一个 OpenTelemetry Collector 单实例,负责采集整个集群范围内的事件和元数据。它会收集 Kubernetes 事件、集群指标,并使用 pod(容器组)标签和注解来丰富遥测数据。该收集器作为一个独立的部署运行,仅启用一个副本,以避免产生重复数据。 -
k8s_daemonset.yaml部署了一个基于 DaemonSet 的采集器,会在集群中的每个节点上运行。它使用kubeletstats、hostmetrics和 Kubernetes Attribute Processor 等组件,收集节点级和 pod(容器组)级指标以及容器日志。这些采集器为日志附加元数据,并通过 OTLP exporter 将其发送到 HyperDX。
这些清单共同实现了集群的全栈可观测性,涵盖从基础设施到应用级别的遥测数据,并将增强后的数据发送到 ClickStack 进行集中分析。
首先,将收集器安装为 Deployment:
k8s_deployment.yaml
接下来,将收集器部署为 DaemonSet 守护进程集,用于收集节点和 pod(容器组)级别的指标和日志:
k8s_daemonset.yaml
k8s_daemonset.yaml在 HyperDX 中探索 Kubernetes 数据
访问您的 HyperDX UI——可以使用 Kubernetes 部署的实例,或通过 ClickHouse Cloud 访问。
如果使用 ClickHouse Cloud,只需登录到你的 ClickHouse Cloud 服务,然后在左侧菜单中选择 “HyperDX”。你会被自动完成身份验证,无需创建用户。 当系统提示你创建数据源时,保留创建数据源对话框中的所有默认值,仅将 Table 字段填写为 你还需要为 traces 和 metrics 创建数据源。 例如,要为 traces 和 OTel metrics 创建数据源,用户可以从顶部菜单中选择 在这里,选择所需的数据源类型,然后选择相应的表,例如对于 traces,选择表 请注意,ClickStack 中的不同数据源——例如日志和 traces——可以彼此关联。要启用这一点,需要在每个数据源上进行额外配置。例如,在日志数据源中,你可以指定对应的 trace 数据源,反之亦然,在 traces 数据源中指定日志数据源。有关更多详细信息,请参阅 “关联来源”。 要访问本地部署的 HyperDX,可以在本地执行端口转发命令,然后通过 http://localhost:8080 访问 HyperDX。 在生产环境中,如果未在 ClickHouse Cloud 中使用 HyperDX,建议使用启用了 TLS 的入口(Ingress)。例如:使用 ClickHouse Cloud
otel_logs,以创建一个日志数据源。其他所有设置应会被自动检测,你可以直接点击 Save New Source。
Create New Source。
otel_traces。所有设置应会被自动检测。
使用自托管部署
要浏览 Kubernetes 数据,请导航至专用仪表板 /kubernetes,例如 http://localhost:8080/kubernetes。
每个选项卡(Pod(容器组)、节点和命名空间)都应显示相应数据。
