跳到主要内容
跳到主要内容

进入生产环境

When deploying ClickStack in production, there are several additional considerations to ensure security, stability, and correct configuration.

Network and Port Security

通过默认设置,Docker Compose 会在主机上暴露端口,使它们可以从容器外部访问 - 即使启用了像 ufw (Uncomplicated Firewall) 这样的工具。 此行为是由于 Docker 网络堆栈,在未明确配置的情况下可以绕过主机级防火墙规则。

建议:

仅暴露生产使用所需的端口。通常包括 OTLP 端点、API 服务器和前端。

例如,在 docker-compose.yml 文件中移除或注释掉不必要的端口映射:

有关隔离容器和加强访问控制的详细信息,请参阅 Docker networking documentation

Session Secret Configuration

在生产环境中,必须为 EXPRESS_SESSION_SECRET 环境变量设置一个强大且随机的值,以保护会话数据并防止篡改。

以下是如何将其添加到您的应用服务 docker-compose.yml 文件中的示例:

您可以使用 openssl 生成强密钥:

避免将密钥提交到源代码控制。 在生产中,考虑使用环境变量管理工具(例如 Docker Secrets、HashiCorp Vault 或特定于环境的 CI/CD 配置)。

Secure ingestion

所有数据摄取都应通过 ClickStack 的 OpenTelemetry (OTel) 收集器暴露的 OTLP 端口进行。默认情况下,这需要在启动时生成一个安全的摄取 API 密钥。此密钥在将数据发送到 OTel 端口时是必需的,可以在 HyperDX UI 下的 Team Settings → API Keys 找到。

此外,我们建议为 OTLP 端点启用 TLS 并创建一个 dedicated user for ClickHouse ingestion

ClickHouse

对于生产部署,我们建议使用 ClickHouse Cloud,它默认采用行业标准的 security practices - 包括 enhanced encryptionauthentication and connectivitymanaged access controls。请参阅 "ClickHouse Cloud" 获取使用 ClickHouse Cloud 和最佳实践的分步指南。

User Permissions

HyperDX user

HyperDX 的 ClickHouse 用户只需是一个 readonly 用户,并且能够更改以下设置:

  • max_rows_to_read(至少达到 100 万)
  • read_overflow_mode
  • cancel_http_readonly_queries_on_client_close
  • wait_end_of_query

在 OSS 和 ClickHouse Cloud 中,默认用户 default 将具备这些权限,但我们建议您创建一个具有这些权限的新用户。

Database and ingestion user

我们建议为 OTel 收集器创建一个专用用户,以便向 ClickHouse 进行摄取并确保数据发送到特定数据库,例如 otel。有关更多细节,请参阅 "Creating an ingestion user"

Self-managed security

如果您管理自己的 ClickHouse 实例,启用 SSL/TLS、强制身份验证,并遵循加强访问控制的最佳实践是至关重要的。请参阅 this blog post 了解有关实际错误配置及如何避免它们的背景信息。

ClickHouse OSS 提供了强大的安全功能,但需要配置:

另请参见 external authenticatorsquery complexity settings 以管理用户并确保查询/资源限制。

MongoDB Guidelines

遵循官方 MongoDB security checklist

ClickHouse Cloud

以下是使用 ClickHouse Cloud 的 ClickStack 简单部署,它符合最佳实践。

Create a service

遵循 getting started guide for ClickHouse Cloud 创建服务。

Copy connection details

要找到 HyperDX 的连接详细信息,请导航到 ClickHouse Cloud 控制台并单击侧边栏的 Connect 按钮,记录具体的 HTTP 连接详细信息,特别是 url。

虽然您可以使用此步骤中显示的默认用户名和密码来连接 HyperDX,但我们建议创建一个专用用户 - 请参见下文

Create a HyperDX user

我们建议您为 HyperDX 创建一个专用用户。在 Cloud SQL console 中运行以下 SQL 命令,提供符合复杂性要求的安全密码:

Prepare for ingestion user

为数据创建一个 otel 数据库,并创建一个具有有限权限的 hyperdx_ingest 用户进行数据摄取。

Deploy ClickStack

部署 ClickStack - 优选使用 HelmDocker Compose 部署模型(经过修改以排除 ClickHouse)。

Deploying components separately

高级用户可以将 OTel collectorHyperDX 以各自的独立部署模式单独部署。

有关使用 ClickHouse Cloud 的 Helm 图表的说明,请参见 这里。 Docker Compose 的等效说明可在 这里找到。

访问 http://localhost:8080 以访问 HyperDX UI。

创建用户,提供符合要求的用户名和密码。

单击 Create 时,系统将提示输入连接详细信息。

Connect to ClickHouse Cloud

使用之前创建的凭证,完成连接详细信息并单击 Create

Send data to ClickStack

要将数据发送到 ClickStack,请参阅 "Sending OpenTelemetry data"