Infisical 审计日志达到数亿行导致查询变慢时,如何切换 ClickHouse 存储?
2026/9/12 6:22:36 网站建设 项目流程

Infisical 审计日志达到数亿行导致查询变慢时,如何切换 ClickHouse 存储?

【免费下载链接】infisicalInfisical is the open-source platform for secrets, certificates, and privileged access management.项目地址: https://gitcode.com/GitHub_Trending/in/infisical

自托管 Infisical 部署运行一段时间后,默认存储在 PostgreSQL 中的审计日志表可能增长到数亿行,查询性能随之下降。Infisical 文档明确说明:当审计日志表增长到上亿行(hundreds of millions of rows)时,应考虑配置 ClickHouse 作为审计日志的存储后端。官方建议这条路径仅适用于审计日志达到 3 亿行以上的部署,并且只针对自托管(self-hosted)环境。

按 ClickHouse setup 指南 操作,配置完成后审计日志的写入和读取都会从 PostgreSQL 切换到 ClickHouse,无需额外开关。

切换前需要准备什么

文档列出的前置条件:

  1. 一个正在运行的 ClickHouse 实例(安装方式参考 ClickHouse 官方安装文档,项目文档未提供具体安装命令);
  2. 在 ClickHouse 中为审计日志创建一个数据库;
  3. Infisical 后端到 ClickHouse 实例之间的网络连通性。

另外注意一个前提:启用 ClickHouse 是硬切换(hard cutover)。一旦生效,所有审计日志读取立即路由到 ClickHouse,应用不再查询 PostgreSQL 中的审计日志。尚未迁移到 ClickHouse 的历史数据在 UI 中将不可见——数据并没有从 PostgreSQL 删除,只是启用 ClickHouse 期间应用不会读它。因此已有大量历史日志的部署,必须先完成历史数据搬迁再切换。

配置 CLICKHOUSE_URL 完成切换

在 Infisical 后端配置中设置CLICKHOUSE_URL环境变量:

CLICKHOUSE_URL=http(s)://username:password@host:port/database

文档给出的示例:

CLICKHOUSE_URL=http://infisical:mypassword@clickhouse.internal:8123/audit_logs

其中usernamepasswordhostportdatabase替换为你自己的 ClickHouse 凭据、地址和前置条件中创建的数据库名。http(s)表示协议按实际实例选择。

设置该 URL 后,ClickHouse 审计日志写入默认就是启用状态,不需要再配置其他变量。首次启动时,Infisical 会自动创建 ClickHouse 中的审计日志表(默认表名audit_logs),如果表已存在则跳过。

可选:调整表名、表引擎和插入参数

如果默认值不满足需求,可按 环境变量参考 中的 ClickHouse 章节调整以下变量:

  • CLICKHOUSE_AUDIT_LOG_ENABLED:控制是否向 ClickHouse 写入审计日志,设置CLICKHOUSE_URL后默认即为true

  • CLICKHOUSE_AUDIT_LOG_TABLE_NAME:审计日志表名,默认audit_logs。例如改为:

    CLICKHOUSE_AUDIT_LOG_TABLE_NAME=custom_audit_logs
  • CLICKHOUSE_AUDIT_LOG_ENGINE:建表时使用的 ClickHouse 引擎,默认ReplacingMergeTree。文档示例中还给出了 Replicated 集群场景的写法:SharedReplacingMergeTree('/clickhouse/tables/{uuid}/{shard}', '{replica}')

  • CLICKHOUSE_AUDIT_LOG_INSERT_SETTINGS:以 JSON 字符串形式的插入设置,默认为{"async_insert":1,"wait_for_async_insert":0,"date_time_input_format":"best_effort"}

  • DISABLE_POSTGRES_AUDIT_LOG_STORAGE:默认false。设为true后审计日志不再写入 PostgreSQL,但仍会写入已配置的 ClickHouse 和审计日志流(audit log streams)。

已有部署的迁移步骤

文档给出三阶段迁移策略:

  1. 阶段 1 — 迁移历史数据(推荐):切换前,先把 PostgreSQL 中已有的审计日志批量导入 ClickHouse,避免切换后出现历史日志在 UI 中不可见的缺口。
  2. 阶段 2 — 启用 ClickHouse:设置CLICKHOUSE_URL。此后新审计日志写入 ClickHouse,所有查询只从 ClickHouse 读取,PostgreSQL 的审计日志写入自动停止。
  3. 阶段 3 — 清理(可选):确认 ClickHouse 运行正常后,再清理 PostgreSQL 中的旧审计日志数据。

写入路径方面,文档说明:事件先进入 Redis stream 排队,由后台 worker 每 5 秒批量插入一次 ClickHouse;读取也自动路由到 ClickHouse。也就是说切换不需要改任何业务代码或路由配置,配置生效即完成。

验证切换是否生效

按文档给出的验证方法:

  1. 在 Infisical 中执行一个会记录审计日志的操作,例如读取一个 secret;
  2. 直接查询 ClickHouse,确认对应表中正在插入新行。

如果 ClickHouse 中能看到新写入的行,说明集成工作正常。注意文档没有给出固定的验证 SQL 或预期行数,用你常用的查询方式检查表中新增行即可。

限制与边界

  • 该方案面向自托管、审计日志量级达到 3 亿行以上的部署;文档没有承诺对更小规模部署的性能收益,不建议为小规模部署引入额外组件。
  • 切换是硬切换:未先迁移的历史数据在 UI 中不可见(数据仍保留在 PostgreSQL,应用只是不读它),这是文档中最需要提前规划的点。
  • 审计日志本身是付费功能,自托管使用需要企业许可,详见 审计日志概述。
  • 完整变量清单(插入设置、表引擎、禁用 PostgreSQL 存储等)以 环境变量的 ClickHouse (optional) 章节 为准。

【免费下载链接】infisicalInfisical is the open-source platform for secrets, certificates, and privileged access management.项目地址: https://gitcode.com/GitHub_Trending/in/infisical

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询