
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无需额外开关。切换前需要准备什么文档列出的前置条件一个正在运行的 ClickHouse 实例安装方式参考 ClickHouse 官方安装文档项目文档未提供具体安装命令在 ClickHouse 中为审计日志创建一个数据库Infisical 后端到 ClickHouse 实例之间的网络连通性。另外注意一个前提启用 ClickHouse 是硬切换hard cutover。一旦生效所有审计日志读取立即路由到 ClickHouse应用不再查询 PostgreSQL 中的审计日志。尚未迁移到 ClickHouse 的历史数据在 UI 中将不可见——数据并没有从 PostgreSQL 删除只是启用 ClickHouse 期间应用不会读它。因此已有大量历史日志的部署必须先完成历史数据搬迁再切换。配置 CLICKHOUSE_URL 完成切换在 Infisical 后端配置中设置CLICKHOUSE_URL环境变量CLICKHOUSE_URLhttp(s)://username:passwordhost:port/database文档给出的示例CLICKHOUSE_URLhttp://infisical:mypasswordclickhouse.internal:8123/audit_logs其中username、password、host、port、database替换为你自己的 ClickHouse 凭据、地址和前置条件中创建的数据库名。http(s)表示协议按实际实例选择。设置该 URL 后ClickHouse 审计日志写入默认就是启用状态不需要再配置其他变量。首次启动时Infisical 会自动创建 ClickHouse 中的审计日志表默认表名audit_logs如果表已存在则跳过。可选调整表名、表引擎和插入参数如果默认值不满足需求可按 环境变量参考 中的 ClickHouse 章节调整以下变量CLICKHOUSE_AUDIT_LOG_ENABLED控制是否向 ClickHouse 写入审计日志设置CLICKHOUSE_URL后默认即为trueCLICKHOUSE_AUDIT_LOG_TABLE_NAME审计日志表名默认audit_logs。例如改为CLICKHOUSE_AUDIT_LOG_TABLE_NAMEcustom_audit_logsCLICKHOUSE_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 — 迁移历史数据推荐切换前先把 PostgreSQL 中已有的审计日志批量导入 ClickHouse避免切换后出现历史日志在 UI 中不可见的缺口。阶段 2 — 启用 ClickHouse设置CLICKHOUSE_URL。此后新审计日志写入 ClickHouse所有查询只从 ClickHouse 读取PostgreSQL 的审计日志写入自动停止。阶段 3 — 清理可选确认 ClickHouse 运行正常后再清理 PostgreSQL 中的旧审计日志数据。写入路径方面文档说明事件先进入 Redis stream 排队由后台 worker 每 5 秒批量插入一次 ClickHouse读取也自动路由到 ClickHouse。也就是说切换不需要改任何业务代码或路由配置配置生效即完成。验证切换是否生效按文档给出的验证方法在 Infisical 中执行一个会记录审计日志的操作例如读取一个 secret直接查询 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),仅供参考