- ClickHouse
- HyperDX
- OpenTelemetry (OTel) collector (通过端口
4317和4318暴露 OTLP) - MongoDB (用于持久化应用状态)
适用于
- 演示
- 全栈本地测试
部署步骤
使用 Docker 部署
以下命令将启动 OpenTelemetry collector (监听 4317 和 4318 端口) 以及 HyperDX UI (监听 8080 端口) 。镜像名称更新ClickStack 镜像现已发布为
clickhouse/clickstack-* (此前为 docker.hyperdx.io/hyperdx/*) 。前往 HyperDX UI
访问 http://localhost:8080 进入 HyperDX UI。创建用户,并提供符合要求的用户名和密码。点击Create 后,系统会为集成的 ClickHouse 实例创建数据源。有关使用其他 ClickHouse 实例的示例,请参阅“Using ClickHouse Cloud”。摄取数据
要摄取数据,请参阅“Ingesting data”。持久化数据和设置
/data/db、/var/lib/clickhouse 和 /var/log/clickhouse-server 挂载出来。例如:
部署到生产环境
- 非持久化存储: 所有数据都存储在 Docker 原生的 overlay 文件系统中。这种设置无法支持大规模场景下的性能需求,而且如果容器被移除或重启,数据都会丢失——除非用户挂载所需的文件路径。
- 缺乏组件隔离: 所有组件都运行在单个 Docker 容器中。这会导致无法独立进行扩缩容和监控,并且任何
cgroup限制都会全局应用到所有进程。因此,各组件可能会争用 CPU 和内存。
自定义端口
docker run 命令,转发相应端口并设置一些环境变量。
自定义 OpenTelemetry 端口时,只需修改端口转发参数即可。例如,将 -p 4318:4318 替换为 -p 4999:4318,即可将 OpenTelemetry HTTP 端口改为 4999。
使用 ClickHouse Cloud
CLICKHOUSE_ENDPOINT、CLICKHOUSE_USER 和 CLICKHOUSE_PASSWORD,将 OTel collector 配置为使用 ClickHouse Cloud 实例。
例如:
CLICKHOUSE_ENDPOINT 应为 ClickHouse Cloud 的 HTTPS 端点,并包含端口 8443,例如 https://mxl4k3ul6a.us-east-2.aws.clickhouse.com:8443
连接到 HyperDX UI 后,前往 Team Settings,创建到你的 ClickHouse Cloud 服务的连接,然后添加所需的 source。
配置 OpenTelemetry collector
schema 选择:Map 与 JSON
Map(LowCardinality(String), String) 列。这是可观测性 workloads 推荐使用的 schema。结合 bucketed map serialization 以及针对 map 键和值的文本索引,它可以实现有针对性的 lookup,同时避免动态 JSON 子列逐键摄取带来的额外开销。
JSON 类型的 schema 也已提供,目前处于 Beta 阶段,适合在属性键集合较小且稳定的 workloads 上进行评估。不建议将其作为默认选项。有关完整对比以及启用 JSON 支持所需的环境变量,请参见 Map vs JSON type。