上线生产环境
在生产环境部署 ClickStack 时,还需要额外考虑一些事项,以确保安全性、稳定性和正确配置。
网络和端口安全
默认情况下,Docker Compose 会在主机上暴露端口,使其可以从容器外部访问——即使已启用 ufw(Uncomplicated Firewall,简单防火墙)等工具。之所以会这样,是因为 Docker 的网络栈机制在未进行显式配置时,可能会绕过主机层面的防火墙规则。
建议:
只暴露生产环境实际需要使用的端口,通常包括 OTLP 端点、API 服务器和前端。
例如,在 docker-compose.yml 文件中移除或注释掉不必要的端口映射:
如需了解如何隔离容器并加固访问安全的更多详细信息,请参阅 Docker 网络文档。
会话密钥配置
在生产环境中,必须为 EXPRESS_SESSION_SECRET 环境变量设置一个强且随机的值,以保护会话数据并防止被篡改。
以下是在应用服务的 docker-compose.yml 文件中添加该变量的方法:
你可以使用 openssl 生成一个高强度密钥:
避免将敏感信息(如密钥和凭证)提交到源代码管理系统。在生产环境中,可以考虑使用环境变量管理工具(例如 Docker Secrets、HashiCorp Vault,或针对不同环境的 CI/CD 配置)。
安全摄取
所有数据摄取操作都应通过 ClickStack 发行版中的 OpenTelemetry (OTel) collector 暴露的 OTLP 端口进行。默认情况下,这需要在启动时生成的安全摄取 API key。向 OTel 端口发送数据时必须提供此 key,可以在 HyperDX UI 的 Team Settings → API Keys 中找到。

此外,我们建议为 OTLP 端点启用 TLS,并为 ClickHouse 摄取创建专用用户。
ClickHouse
对于生产环境部署,我们建议使用 ClickHouse Cloud,其默认采用符合行业标准的安全实践,包括增强的加密、身份验证与连接性,以及托管的访问控制机制。请参阅「ClickHouse Cloud」,获取结合最佳实践使用 ClickHouse Cloud 的分步指南。
用户权限
HyperDX 用户
用于 HyperDX 的 ClickHouse 用户只需要是一个 readonly 用户,并且具有修改以下设置的权限:
max_rows_to_read(至少提高到 100 万)read_overflow_modecancel_http_readonly_queries_on_client_closewait_end_of_query
默认情况下,OSS 和 ClickHouse Cloud 中的 default 用户都具备这些权限,但我们建议你创建一个具有这些权限的新用户。
数据库和摄取用户
我们建议为 OTel collector 创建一个专用的摄取用户,并确保将摄取数据发送到特定的数据库,例如 otel。有关更多详细信息,请参阅《创建摄取用户》。
自管理安全性
如果你自行管理 ClickHouse 实例,务必要启用 TLS、强制身份验证,并遵循加固访问的最佳实践。有关实际环境中错误配置及其规避方法的背景信息,请参阅这篇博客文章。
ClickHouse OSS 默认提供了健壮的安全特性,但需要进行相应配置:
- 通过
tcp_port_secure和config.xml中的<openSSL>使用 TLS。参见 guides/sre/configuring-tls。 - 为
default用户设置强密码,或将其禁用。 - 避免将 ClickHouse 暴露到外部网络,除非是明确所需。默认情况下,ClickHouse 只绑定到
localhost,除非修改了listen_host。 - 使用身份验证方式,例如密码、证书、SSH 密钥或外部认证器。
- 使用 IP 过滤和
HOST子句限制访问。参见 sql-reference/statements/create/user#user-host。 - 启用基于角色的访问控制 (RBAC) 以授予细粒度权限。参见 operations/access-rights。
- 使用配额、设置配置文件和只读模式强制实施配额和限制。
- 对静态数据进行加密并使用安全的外部存储。参见 operations/storing-data 和 cloud/security/CMEK。
- **避免在代码中硬编码凭证。**使用命名集合或 ClickHouse Cloud 中的 IAM 角色。
- 使用系统日志和会话日志审计访问和查询。
另请参阅外部认证器和查询复杂度设置,以管理用户并确保查询/资源限制得到遵守。
配置生存时间 (TTL)
请确保已为 ClickStack 部署的生存时间 (TTL)进行了适当配置。这将控制数据的保留时长;默认的 3 天通常需要进行调整。
MongoDB 使用指南
请遵循 MongoDB 官方提供的安全检查清单。
ClickHouse Cloud
以下示例展示了使用 ClickHouse Cloud 部署 ClickStack 的一个简单方案,并符合最佳实践。
创建服务
按照 ClickHouse Cloud 快速入门指南 创建服务。
复制连接信息
要查找 HyperDX 的连接信息,请进入 ClickHouse Cloud 控制台并点击侧边栏中的 Connect 按钮,记录 HTTP 连接信息,尤其是 URL。
虽然您可以使用此步骤中显示的默认用户名和密码连接 HyperDX,但我们建议创建一个专用用户——见下文

部署 ClickStack
部署 ClickStack,推荐使用 Helm 或 Docker Compose(修改为不包含 ClickHouse)的部署模型。
如果您是高级用户,可以分别以独立部署模式部署 OTel collector 和 HyperDX。
关于在 Helm 图表中使用 ClickHouse Cloud 的说明见此处。Docker Compose 的对应说明见此处。
访问 HyperDX UI
访问 http://localhost:8080 打开 HyperDX UI。
创建一个用户,并提供满足要求的用户名和密码。

点击 Create 后,系统会提示您填写连接信息。
向 ClickStack 发送数据
要向 ClickStack 发送数据,请参阅「发送 OpenTelemetry 数据」。
