Keep 0.54.3 配置参数详解
Keep(keephq/keep)0.54.3 全量配置参数:后端/前端环境变量按官方文档逐类整理并标注默认值,KEEP_PROVIDERS、KEEP_WORKFLOWS_DIRECTORY 预置与 workflow YAML 字段逐项实测验证。
Keep 0.54.3 配置参数详解
目标:系统梳理 Keep(keephq/keep,开源 AIOps 告警管理平台)0.54.3 的全部配置入口——后端/前端环境变量按官方文档逐类整理并标注默认值,providers 预置(KEEP_PROVIDERS)、workflow 预置(KEEP_WORKFLOWS_DIRECTORY)与 workflow YAML 各字段均以实测验证。参数清单溯源官方配置文档(查询日期 2026-10-23),实测结论出自 0.54.3 版本真实服务器(部署过程见 《Keep Docker Compose 部署指南》)。
一、环境信息
| 项目 | 值 | 说明 |
|---|---|---|
| Keep 版本 | v0.54.3(2026-09-09 发布) | GitHub Releases 实查的最新稳定版 |
| 参数清单来源 | docs.keephq.dev/deployment/configuration | 官方配置文档,2026-10-23 查询 |
| 实测环境 | Ubuntu 22.04 + Docker Compose 三服务栈 | 后端 keep-api(8148 端口)/ 前端 keep-ui(8150)/ 推送 Soketi(8146) |
| 实测口径 | docker compose restart 后逐一验证参数效果 | 预置 provider/workflow、API Key、interval 调度、/metrics 均有实测回显 |
阅读约定:标注「实测」的参数在 0.54.3 版本上真实跑通并给出回显/证据;其余参数的默认值与取值范围照录官方文档,未做破坏性验证的会在小节内说明。
二、前置条件
- 已按 《Keep Docker Compose 部署指南》 完成 0.54.3 三服务栈部署,
curl -s http://localhost:8148/healthcheck返回{}。 - 已预置可用的 API Key(
KEEP_DEFAULT_API_KEYS),能通过curl -H "x-api-key: ..."调用后端 API。 - 实验产物目录统一约束在
/opt/data/quzuo/tmp/keep-alerts/(compose 文件与state/持久化目录都在其中)。
三、参数查看与修改方式
Keep 没有集中式配置文件,配置入口有三类:
- 环境变量(最主要):后端与前端各自的容器环境变量。Compose 部署写在
docker-compose.yml的environment段;docker run部署用-e传入;K8s 部署写 ConfigMap/Deployment env。修改后需重启对应服务生效:docker compose restart keep-backend # 后端参数 docker compose restart keep-frontend # 前端参数 - 页面与 API:provider 连接、workflow、规则类(关联/映射/提取/维护窗口)配置存在数据库中,通过 UI 设置页或 REST API 增删改(这类不属于环境变量,重启即持久保留)。
- CLI 本地配置:
keep config new生成的~/.keep.yaml只保存 CLI 自己的连接参数(api_key / keep_api_url),是「客户端配置」,与服务端参数无关。
查看当前生效配置的实用手段(均在实测栈验证):
# 查看容器实际注入的环境变量(排障第一手资料)
docker exec keep-0543-backend env | grep -E 'KEEP_|AUTH_|DATABASE_'
# 查看后端当前运行的完整请求日志(JSON 格式,LOG_FORMAT=open_telemetry 默认样式)
docker compose logs --tail 5 keep-backend
# API 层验证参数效果:已安装 provider / 已注册 workflow / 自身指标
curl -s -H "x-api-key: q1w2e3r4-keep-demo-key" http://localhost:8148/providers | head -c 200
curl -s -H "x-api-key: q1w2e3r4-keep-demo-key" http://localhost:8148/workflows
curl -s -H "x-api-key: q1w2e3r4-keep-demo-key" http://localhost:8148/metrics | head -3
四、参数总览
0.54.3 官方文档的后端参数按功能分为 15 类、前端参数 4 类。总览如下(✅ = 本文有实测验证):
| 分类 | 代表参数 | 作用一句话 |
|---|---|---|
| 通用 | KEEP_HOST / PORT / SCHEDULER / CONSUMER | 服务监听地址与调度器开关 ✅ |
| 日志与环境 | LOG_LEVEL / LOG_FORMAT / ENVIRONMENT | 日志级别与输出格式 |
| 数据库 | DATABASE_CONNECTION_STRING / DATABASE_POOL_SIZE | 存储后端(默认 SQLite)✅ |
| 认证 | AUTH_TYPE / KEEP_JWT_SECRET / KEEP_DEFAULT_API_KEYS | 登录方式与 API Key 预置 ✅ |
| 密钥管理 | SECRET_MANAGER_TYPE / SECRET_MANAGER_DIRECTORY | provider 凭据存哪里 ✅ |
| 资源预置 | KEEP_PROVIDERS / KEEP_WORKFLOWS_DIRECTORY / PROVISION_RESOURCES | 启动时自动预置 provider 与 workflow ✅ |
| 服务网格 | KEEP_ALLOW_MESH_ALERT_INGESTION | 集群内免 Key 上报告警(慎用) |
| 推送 | PUSHER_APP_ID/KEY/SECRET / PUSHER_HOST / PUSHER_PORT | 前后端实时刷新 ✅ |
| AI | OPENAI_API_KEY / OPENAI_BASE_URL / OPENAI_MODEL_NAME | AI 关联与辅助(零 Key 可运行)✅ |
| 可观测 | KEEP_METRICS / OTEL_* / PROMETHEUS_MULTIPROC_DIR | 自身指标与链路追踪 ✅(KEEP_METRICS) |
| 缓存队列 | REDIS / REDIS_SENTINEL_* / ARQ_* | 分布式缓存与异步任务 |
| 限流 | KEEP_USE_LIMITER / KEEP_LIMIT_CONCURRENCY | 告警上报接口限速 |
| 维护窗口 | MAINTENANCE_WINDOW_STRATEGY / WATCHER_LAPSED_TIME | 计划内停机的告警策略 |
| 前端通用 | API_URL / NEXTAUTH_URL / NEXTAUTH_SECRET / NEXT_PUBLIC_API_URL | 前端连接后端与浏览器侧地址 ✅ |
| 前端显示 | HIDE_NAVBAR_* / ALERT_SIDEBAR_FIELDS / AUTH_SESSION_TIMEOUT | 界面栏目裁剪与会话时长 |
五、核心参数分类详解
5.1 通用参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| KEEP_HOST | 0.0.0.0 | 后端监听地址 |
| PORT | 8080 | 后端监听端口(实测容器内 8080 映射宿主 8148) |
| SCHEDULER | true | workflow 定时调度器开关。实测:interval 触发器工作正常即依赖此开关(见 5.12 实测) |
| CONSUMER | true | 告警消费者开关(关闭后停止消费上报队列) |
| KEEP_VERSION | unknown | 版本标注,可自行写入便于对齐镜像版本 |
| KEEP_API_URL | 由 HOST/PORT 拼装 | 后端自感知的 API 地址 |
| KEEP_STORE_RAW_ALERTS | false | 是否保存原始告警报文(排障时可开,占存储) |
| TENANT_CONFIGURATION_RELOAD_TIME | 5 | 租户配置热加载间隔(分钟) |
| KEEP_LIVE_DEMO_MODE | false | 演示模式:自动模拟告警流入(评估演示用,生产禁开) |
SCHEDULER=false + CONSUMER=true 的拆分场景:多副本部署时只让一个实例跑定时调度,其余实例专职消费告警,避免 interval workflow 重复执行。单机默认全开即可(实测单机全开无异常)。
5.2 数据库参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| DATABASE_CONNECTION_STRING | (无默认,官方标 Required) | SQLAlchemy 连接串。实测:sqlite:////state/db.sqlite3?check_same_thread=False(Compose 官方模板值,SQLite 时等效默认) |
| DATABASE_POOL_SIZE | 5 | 连接池常驻连接数 |
| DATABASE_MAX_OVERFLOW | 10 | 连接池峰值溢出连接数 |
| DATABASE_ECHO | false | 打印 SQL 语句(排障用) |
| SKIP_DB_CREATION | false | 跳过建库与迁移(特殊运维场景) |
| DB_CONNECTION_NAME / DB_NAME / DB_SERVICE_ACCOUNT / DB_IP_TYPE | (Cloud SQL 组) | GCP Cloud SQL 专用,自托管可忽略 |
MySQL/PostgreSQL 切换示例(应用层无差别,历史数据不自动迁移):
mysql+pymysql://keep:StrongPass@mysql:3306/keep
postgresql+psycopg2://keep:StrongPass@postgres:5432/keep
实测持久化证据:默认 SQLite 下运行后 state/db.sqlite3 实测 794624 字节,全部告警/workflow/凭据都在该单文件中。
5.3 认证参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| AUTH_TYPE | NOAUTH | 取值:NOAUTH / DB / OAUTH2PROXY / OKTA / ONELOGIN(开源);AUTH0 / KEYCLOAK / AZUREAD 属企业版。前后端必须一致 ✅ |
| KEEP_JWT_SECRET | (DB 模式必填) | JWT 签名密钥,生产务必换强随机值 |
| KEEP_DEFAULT_USERNAME / KEEP_DEFAULT_PASSWORD | keep / keep | DB 模式首个管理员账号(生产必改) |
| KEEP_FORCE_RESET_DEFAULT_PASSWORD | false | 首登强制改密 |
| KEEP_DEFAULT_API_KEYS | (空) | 启动预置 API Key,格式 名称:角色:密钥,逗号分隔多个。实测:cli-demo:admin:q1w2e3r4-keep-demo-key 启动即生效 ✅ |
| KEEP_ALLOW_MESH_ALERT_INGESTION | false | 允许无 Key POST /alerts/event*(以 webhook 角色受理,需配网络层访问控制,慎用) |
实测要点:NO_AUTH 模式 ≠ 免 API Key。页面浏览不需要登录,但 API 调用(含告警上报)必须带 x-api-key,否则 401 Missing API Key——这是实测中踩到的第一个配置坑(解法见部署篇 11.3 节)。预置 Key 与角色 RBAC 的关系:admin 角色拥有全部 scope,webhook 角色仅有 write:alert / write:incident。
5.4 密钥管理参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| SECRET_MANAGER_TYPE | FILE | 取值 FILE / GCP / K8S / VAULT / DB。实测 FILE 模式 |
| SECRET_MANAGER_DIRECTORY | /state | FILE 模式落盘目录。实测:/state(bind mount 宿主 state/) |
FILE 模式实测落盘形态(每条凭据一个小文件,内容为连接参数 JSON):
keep-cli-demo # KEEP_DEFAULT_API_KEYS 预置的 API Key
keep_console_09f66d0f96634ec8... # CLI 手工连接的 console provider
keep_console_03092072a8ab409b... # KEEP_PROVIDERS 预置的 console provider
keep_bash_f92d7d3a4d754024b3c... # KEEP_PROVIDERS 预置的 bash provider
要点:凭据文件与 SQLite 库分离存放,备份 state/ 目录时两者一起带走;切到 DB 模式则凭据入库(备份更简单,但需保证数据库安全)。
5.5 资源预置参数(KEEP_PROVIDERS / KEEP_WORKFLOWS_DIRECTORY)
这组参数让 Keep 在启动时自动「开通」资源,替代手工在 UI 上逐个连接,是配置即代码(IaC)的关键入口。
KEEP_PROVIDERS:JSON 数组/对象声明预置连接,格式为 {"连接名": {"type": "provider类型", "authentication": {凭据字段}}}。实测值:
- KEEP_PROVIDERS={"console-yaml-prov":{"type":"console","authentication":{}},"bash-local":{"type":"bash","authentication":{}}}
实测验证(keep provider list,CLI 用法见《Keep 0.54.3 常用 CLI 命令与工具详解》):
+----------------------------------+---------+-------------------+--------------+----------------------------+
| ID | Type | Name | Installed by | Installation time |
+----------------------------------+---------+-------------------+--------------+----------------------------+
| f92d7d3a4d754024b3c289db4b1eb43d | bash | bash-local | system | 2026-10-23T01:32:42.603161 |
| 09f66d0f96634ec8b9bd3c575d427ce4 | console | console-demo | admin@keephq | 2026-10-23T01:24:16.787161 |
| 03092072a8ab409ba41974670f4e7040 | console | console-yaml-prov | system | 2026-10-23T01:32:42.597398 |
+----------------------------------+---------+-------------------+--------------+----------------------------+
Installed by: system 即 KEEP_PROVIDERS 预置的连接(console-yaml-prov、bash-local),与 admin@keephq 手工连接的 console-demo 并列共存;且在 docker compose restart keep-backend 重启后依然存在(预置有幂等性,不会重复建)。
KEEP_WORKFLOWS_DIRECTORY:指向容器内目录,其中的 workflow YAML 启动时批量注册。实测 KEEP_WORKFLOWS_DIRECTORY=/state/workflows,目录内放 disk-critical-handler.yml 与 interval-logger.yml 两个文件,重启后端后 GET /workflows 返回 3 条(2 个预置 + 1 个此前 API 注册的)。配合 PROVISION_RESOURCES(默认 true):设为 false 则关闭启动预置流程。
Compose 里写 JSON 环境变量的注意点:JSON 内层的双引号在 YAML 流式标量里可直接写;若值中含 $ 符号需写成 $$ 防止 Compose 变量插值。
5.6 实时推送参数(Pusher/Soketi 三方对齐)
| 参数 | 位置 | 默认值 | 说明 |
|---|---|---|---|
| PUSHER_APP_ID / PUSHER_APP_KEY / PUSHER_APP_SECRET | 后端 | 无(用 Pusher 时必填) | 后端作为推送客户端的凭据 ✅ 实测 1/keepappkey/keepappsecret |
| PUSHER_HOST / PUSHER_PORT | 后端 | 无 | 后端连 Soketi 的容器网络地址(实测 keep-websocket-server:6001) |
| PUSHER_DISABLED | 后端/前端 | false | 完全关闭实时推送 |
| PUSHER_USE_SSL / PUSHER_CLUSTER | 后端 | false / 无 | 对接商业 Pusher 云时使用 |
| PUSHER_HOST / PUSHER_PORT / PUSHER_APP_KEY | 前端 | localhost / 6001 / keepappkey | 浏览器连 Soketi 的地址(要用宿主可达地址,实测 localhost:8146) |
| SOKETI_DEFAULT_APP_ID / KEY / SECRET | Soketi 容器 | 无 | 推送服务端三元组 ✅ 实测 1/keepappkey/keepappsecret |
对齐规则(实测排查心得):后端 PUSHER_APP_ID/KEY/SECRET ≡ SOKETI_DEFAULT_APP_*;前端 PUSHER_APP_KEY ≡ SOKETI_DEFAULT_APP_KEY。前端 HOST/PORT 是给浏览器用的(填宿主地址),后端 HOST/PORT 是容器网络内的(填服务名)——同一个变量名在两端含义不同,是配置错误的最高发点。
5.7 AI 参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| OPENAI_API_KEY | 无 | OpenAI Key。实测:留空时核心功能全部可用(本栈零 AI Key 跑通告警/工作流全链路) |
| OPENAI_MODEL_NAME | gpt-4o-2024-08-06 | 模型名,可换 gpt-4o-mini 等 |
| OPENAI_BASE_URL | 无 | 兼容 OpenAI 协议的自建网关(LiteLLM 等),国内环境常用 |
| OPEN_AI_ORGANIZATION_ID | 无 | OpenAI 组织 ID |
| KEEP_AI_DISABLE_TEMPERATURE | false | 推理类模型不接受 temperature 参数时置 true |
注意 AI 功能还要求前端也配置同名 OPENAI_* 变量(官方文档 TIP 明确说明),AI 辅助写 workflow 等界面能力才能用。
5.8 日志与可观测参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| LOG_LEVEL | INFO | DEBUG/INFO/WARNING/ERROR/CRITICAL |
| LOG_FORMAT | open_telemetry | open_telemetry(JSON 结构化)或 dev_terminal(人类可读)。实测日志为 JSON 行 |
| ENVIRONMENT | production | development/staging/production |
| KEEP_METRICS | false | 开启 Prometheus 指标端点。实测 true 后 curl -H "x-api-key: ..." /metrics 返回 alerts_total、open_incidents_total 等指标 |
| PROMETHEUS_MULTIPROC_DIR | 无 | 多进程指标共享目录(Compose 模板设为 /tmp/prometheus) |
| OTEL_SERVICE_NAME | keep-api | OTel 服务名 |
| OTEL_EXPORTER_OTLP_ENDPOINT | 无 | OTLP 上报地址(traces/logs/metrics 可分别用 OTEL_EXPORTER_OTLP_TRACES/LOGS/METRICS_ENDPOINT 细分) |
| CLOUD_TRACE_ENABLED | false | GCP Cloud Trace 专用 |
5.9 缓存、队列与限流参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| REDIS | false | 开启 Redis(缓存与任务队列,多副本建议开启) |
| REDIS_HOST / REDIS_PORT / REDIS_DB | localhost / 6379 / 0 | Redis 连接 |
| REDIS_USERNAME / REDIS_PASSWORD | 无 | Redis 认证 |
| REDIS_SENTINEL_HOSTS / REDIS_SENTINEL_SERVICE_NAME | localhost:26379 / mymaster | 哨兵模式连接 |
| ARQ_BACKGROUND_FUNCTIONS | 无 | ARQ 异步任务函数清单 |
| ARQ_KEEP_RESULT / ARQ_EXPIRES / ARQ_EXPIRES_AI | 3600 / 3600 / 3600000 | 任务结果保留与过期(秒) |
| KEEP_USE_LIMITER | false | 限流开关。作用面:仅 POST /alerts/event 与 POST /alerts/{provider_type} 两类上报端点 |
| KEEP_LIMIT_CONCURRENCY | 100/minute | 限流表达式 `{数字}/{second |
5.10 维护窗口参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| MAINTENANCE_WINDOW_STRATEGY | default | default:窗口内压住告警;recover_previous_status:窗口结束恢复原状态 |
| WATCHER_LAPSED_TIME | 60 | 告警复查巡检间隔(秒) |
5.11 前端参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| API_URL | (必填) | 前端服务端转发请求的后端地址(Compose 网络内服务名,实测 http://keep-backend:8080) |
| NEXT_PUBLIC_API_URL | 无 | 浏览器直连后端地址(填宿主可达地址,实测 http://localhost:8148) |
| NEXTAUTH_URL / NEXTAUTH_SECRET | (必填) | NextAuth 回调地址与会话密钥(实测 http://localhost:8150) |
| AUTH_SESSION_TIMEOUT | 2592000 | 会话时长(秒,默认 30 天) |
| KEEP_HIDE_SENSITIVE_FIELDS | 无 | 隐藏告警中的敏感字段 |
| HIDE_NAVBAR_CORRELATION / WORKFLOWS / SERVICE_TOPOLOGY / MAPPING / EXTRACTION / MAINTENANCE_WINDOW / AI_PLUGINS | 无 | 设 true 隐藏对应导航页(精简界面、按角色裁剪) |
| ALERT_SIDEBAR_FIELDS | service,source,description,message,fingerprint,url,incidents,timeline,relatedServices | 告警详情侧栏展示字段 |
| KEEP_WF_LIST_EXTENDED_INFO | true | workflow 执行列表样式开关 |
| POSTHOG_KEY / POSTHOG_HOST | 无 | 前端产品分析埋点(内网可留空) |
5.12 workflow YAML 参数逐项(实测)
workflow 是 YAML 文件,顶层只有一个 workflow: 键,字段如下(✅ = 本文实测验证):
| 字段 | 层级 | 说明 |
|---|---|---|
| id | workflow | 必填,全局唯一标识( CEL 里用 workflow.id 引用)✅ |
| name / description | workflow | 展示名与描述 ✅ |
| disabled | workflow | 置 true 停用 |
| triggers | workflow | 触发器列表,四种类型见下 ✅ |
| steps | workflow | 查询/取数步骤列表(可被后续动作引用 steps.名字.results)✅ |
| actions | workflow | 动作列表 ✅ |
| conditions / functions / foreach / inputs | workflow | 高级语法:条件块、可复用函数、循环、入参(官方文档支持;本文未实测,不展开) |
| name / provider / if / foreach | step/action 内 | 步骤名、provider 定义、执行条件、循环 |
| type / config / with | provider 内 | provider 类型、连接引用({{ providers.连接名 }})、参数 |
triggers 四种类型:
triggers:
- type: manual # 手动触发(UI 点 Run / CLI workflow run)✅ 实测通过
- type: interval # 定时触发 ✅ 实测通过
value: 10 # 秒数
- type: alert # 告警触发 ✅ 实测通过
cel: source.contains("demo") && severity == "critical" # CEL 过滤表达式 ✅ 实测通过
filters: # 旧式过滤(官方已标记 deprecated,不推荐)
- key: severity
value: critical
- type: incident # 事故创建/更新/解决时触发(本文未实测)
on: [create, update]
实测 workflow 全文(interval + console 动作,文件置于 KEEP_WORKFLOWS_DIRECTORY 后重启后端加载):
workflow:
id: interval-logger
name: Interval Logger
description: Print a heartbeat log every 10 seconds to verify the scheduler.
triggers:
- type: interval
value: 10
actions:
- name: heartbeat
provider:
type: console
with:
logger: true
message: "Heartbeat from interval-logger workflow"
实测回显(docker logs keep-0543-backend 中每 10 秒一条,JSON 关键字段摘录):
{"message": "Heartbeat from interval-logger workflow", "levelname": "INFO", "name": "console",
"threadName": "WorkflowScheduler_1", "workflow_id": "ecc524d1-a07e-4a93-a2d9-daeec421cc69",
"workflow_execution_id": "bf765e01-1481-48b9-acc6-a495b031d5b4", "tenant_id": "keep",
"context": {"step_id": "heartbeat"}}
间隔精确(01:52:26 → 01:52:36 → 01:52:46 → …),WorkflowScheduler_1 线程名证明 SCHEDULER 默认开启生效。
实测 alert 触发 workflow(告警触发 + CEL 过滤 + console 动作 + mock 富化):
workflow:
id: disk-critical-handler
name: Disk Critical Handler
description: Handle critical disk alerts, log via console and enrich with owner and runbook.
triggers:
- type: alert
cel: source.contains("demo") && severity == "critical"
actions:
- name: log-alert
provider:
type: console
with:
logger: true
message: "Critical disk alert {{ alert.name }} on {{ alert.fingerprint }}"
- name: enrich-alert
provider:
type: mock
with:
enrich_alert:
- key: owner
value: sre-team
- key: runbook
value: https://runbooks.example.com/disk
注入 source=["demo"]、severity="critical" 的告警后,workflow 自动执行:console 动作落日志、enrich_alert 将 owner=sre-team、runbook=https://runbooks.example.com/disk 写入告警对象(API 中该告警 enriched_fields 实测变为 ['owner','runbook'])。enrich_alert 的 disposable: true 表示临时富化(新告警到达即丢弃),实测未启用。
bash provider 实测(steps 执行宿主命令,stdout 回填 steps.步骤名.results.stdout):
steps:
- name: df-step
provider:
type: bash
with:
command: uptime
实测执行结果中 stdout 为标准 uptime 输出({"stdout": " 01:34:46 up 3 days, 9:46, ...", "stderr": "", "return_code": 0})。bash provider 仅限自托管环境使用。
六、生产配置模板
场景一:小团队评估(2C4G,单机)——默认栈即可:SQLite + NO_AUTH/DB 认证 + 零 AI。磁盘预留 10GB(镜像 4GB + 数据与日志)。核心仅三行:
- AUTH_TYPE=NO_AUTH
- KEEP_DEFAULT_API_KEYS=ci-bot:admin:<强随机密钥>
- DATABASE_CONNECTION_STRING=sqlite:////state/db.sqlite3?check_same_thread=False
场景二:多人团队生产(4C8G 起,MySQL + Redis)——数据落外部库、开启缓存、收紧认证:
- AUTH_TYPE=DB
- KEEP_JWT_SECRET=<64 位强随机>
- KEEP_DEFAULT_USERNAME=admin
- KEEP_DEFAULT_PASSWORD=<强密码>
- KEEP_FORCE_RESET_DEFAULT_PASSWORD=true
- DATABASE_CONNECTION_STRING=mysql+pymysql://keep:<密码>@mysql:3306/keep
- DATABASE_POOL_SIZE=10
- REDIS=true
- REDIS_HOST=redis
- SECRET_MANAGER_TYPE=DB
- KEEP_USE_LIMITER=true
- KEEP_LIMIT_CONCURRENCY=200/minute
- KEEP_STORE_RAW_ALERTS=false
- KEEP_METRICS=true
- LOG_LEVEL=INFO
磁盘:MySQL 独立规划(告警表增长与保留策略相关);state/ 仍需持久化(workflow 与密钥)。
场景三:内网断网环境——在场景二基础上:镜像离线导入(docker save/docker load),关闭一切外联:前端 POSTHOG_KEY/NEXT_PUBLIC_SENTRY_DSN 留空,后端 POSTHOG_DISABLED=true、SENTRY_DISABLED=true、不配 OPENAI_API_KEY(或 OPENAI_BASE_URL 指向内网 LLM 网关)。
七、常见问题(实测排障实录)
7.1 NO_AUTH 下 API 仍 401:NOAUTH 只免「登录」,不免「API Key」。用 KEEP_DEFAULT_API_KEYS 预置后带 x-api-key 调用(详见部署篇 11.3 节实测)。
7.2 KEEP_PROVIDERS 的 JSON 写错导致后端起不来:JSON 必须合法且外层不带多余引号。实测稳妥写法是 Compose environment 列表项直接写 JSON(见 5.5 实测值);若从 shell 注入,注意 $ 转义为 $$。写错时的典型表现为后端启动阶段抛 JSON 解析异常退出,docker compose logs keep-backend 可定位。
7.3 每次执行 compose 命令都提示 OPENAI_API_KEY not set:compose 里 - OPENAI_API_KEY=$OPENAI_API_KEY 从宿主环境取值所致,warning 无害(实测零 Key 全功能可用)。删除该行或配置 .env 即可消除。
7.4 改了 workflow YAML 不生效:预置目录中的文件在后端启动时加载,修改后需 docker compose restart keep-backend。UI 编辑器内保存的 workflow 入库 SQLite,与文件预置是两条路径,不要对同一 id 混用。
7.5 interval workflow 的执行记录查不到:实测 0.54.3 中 GET /workflows/executions 返回的列表未包含 interval 触发的执行(只查到 alert 触发的历史记录),但 interval workflow 确实在跑(容器日志每 10 秒输出心跳,见 5.12 实测)。结论:验证 interval workflow 以容器日志为准;这也是 CLI keep workflow runs list 同样查不到 interval 执行的原因(CLI 走同一 API)。
7.6 前端实时刷新失灵:按 5.6 对齐规则核对三方三元组;尤其区分前端 PUSHER_HOST(浏览器视角,填宿主地址)与后端 PUSHER_HOST(容器网络,填服务名)。
八、参考链接
- 官方配置文档(本文参数清单来源):https://docs.keephq.dev/deployment/configuration
- 认证方式详解:https://docs.keephq.dev/deployment/authentication
- 资源预置文档:https://docs.keephq.dev/deployment/provision/overview
- Workflow 语法(triggers/enrichment 等):https://docs.keephq.dev/workflows/overview
- 部署实测篇:《Keep Docker Compose 部署指南》
- 选型与架构:《Keep 介绍与选型指南》
- CLI 命令实测:《Keep 0.54.3 常用 CLI 命令与工具详解》