背景
Keep 可以通过环境变量高度配置。这允许您自定义后端和前端组件的各个方面,而无需修改代码。环境变量可以在您的部署环境中设置,例如在 Kubernetes 配置、Docker Compose 文件中或直接在主机系统上设置。
后端环境变量
常规
INFO
常规配置变量控制 Keep 服务器的核心行为。 这些设置决定基本方面,例如服务器的主机、端口, 以及是否启用某些组件(如调度器和消费者)。
| Env var | 用途 | 必填 | 默认值 | 有效选项 |
|---|---|---|---|---|
| KEEP_HOST | 指定 Keep 服务器的主机 | 否 | "0.0.0.0" | 有效主机名或 IP 地址 |
| PORT | 指定后端服务器运行的端口 | 否 | 8080 | 任何有效端口号 |
| SCHEDULER | 启用或禁用工作流调度器 | 否 | "true" | "true" 或 "false" |
| CONSUMER | 启用或禁用消费者 | 否 | "true" | "true" 或 "false" |
| KEEP_VERSION | 指定 Keep 版本 | 否 | "unknown" | 有效版本字符串 |
| KEEP_API_URL | 指定 Keep API URL | 否 | 根据 HOST 和 PORT 构建 | 有效 URL |
| KEEP_STORE_RAW_ALERTS | 启用存储原始告警 | 否 | "false" | "true" 或 "false" |
| TENANT_CONFIGURATION_RELOAD_TIME | 重新加载租户配置的时间(分钟) | 否 | 5 | 正整数 |
| KEEP_LIVE_DEMO_MODE | Keep 将模拟传入的告警和其他活动 | 否 | "false" | "true" 或 "false" |
日志记录和环境
INFO
日志记录和环境配置决定 Keep 如何生成和 格式化日志输出。这些设置对于调试、监控和 了解不同环境中 Keep 实例的行为至关重要。
| Env var | 用途 | 必填 | 默认值 | 有效选项 |
|---|---|---|---|---|
| LOG_LEVEL | 设置应用程序的日志级别 | 否 | "INFO" | "DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL" |
| ENVIRONMENT | 指定应用程序运行的环境 | 否 | "production" | "development", "staging", "production" |
| LOG_FORMAT | 指定日志格式 | 否 | "open_telemetry" | "open_telemetry", "dev_terminal" |
| LOG_AUTH_PAYLOAD | 启用认证负载的日志记录 | 否 | "false" | "true" 或 "false" |
数据库
INFO
数据库配置对于 Keep 的数据持久化至关重要。Keep 支持 通过 SQLAlchemy 使用各种数据库后端,允许灵活选择 和配置您首选的数据库系统。
| Env var | 用途 | 必填 | 默认值 | 有效选项 |
|---|---|---|---|---|
| DATABASE_CONNECTION_STRING | 指定数据库连接 URL | 是 | None | 有效的 SQLAlchemy 连接字符串 |
| DATABASE_POOL_SIZE | 设置数据库连接池大小 | 否 | 5 | 正整数 |
| DATABASE_MAX_OVERFLOW | 设置连接池的最大溢出 | 否 | 10 | 正整数 |
| DATABASE_ECHO | 启用 SQLAlchemy echo 模式进行调试 | 否 | False | Boolean (True/False) |
| DB_CONNECTION_NAME | 指定 Cloud SQL 连接名称 | 否 | "keephq-sandbox:us-central1:keep" | 有效的 Cloud SQL 连接字符串 |
| DB_NAME | 指定 Cloud SQL 数据库名称 | 否 | "keepdb" | 有效的 Cloud SQL 数据库名称 |
| DB_SERVICE_ACCOUNT | 数据库模拟的服务账户 | 否 | None | 有效的服务账户电子邮件 |
| DB_IP_TYPE | 指定 Cloud SQL IP 类型 | 否 | "public" | "public", "private" 或 "psc" |
| SKIP_DB_CREATION | 跳过数据库创建和迁移 | 否 | "false" | "true" 或 "false" |
资源调配
INFO
资源调配设置控制 Keep 如何设置初始资源。 此配置对于自动化设置过程特别重要, 并确保 Keep 启动时必要的资源可用。
TIP
要详细了解资源调配及其配置,请参阅 配置文档。
| Env var | 用途 | 必填 | 默认值 | 有效选项 |
|---|---|---|---|---|
| PROVISION_RESOURCES | 启用或禁用资源调配 | 否 | "true" | "true" 或 "false" |
认证
INFO
认证配置决定 Keep 如何验证用户身份和 管理访问控制。这些设置对于保护您的 Keep 实例并与各种认证提供商集成至关重要。
TIP
有关特定认证类型配置,请参阅 认证 文档。
| Env var | 用途 | 必填 | 默认值 | 有效选项 |
|---|---|---|---|---|
| AUTH_TYPE | 指定认证类型 | 否 | "NOAUTH" | "AUTH0", "KEYCLOAK", "DB", "NOAUTH", "OAUTH2PROXY", "OKTA", "ONELOGIN" |
| KEEP_JWT_SECRET | JWT 令牌生成和验证的密钥(仅 DB 认证) | 是 | None | 任何强密钥字符串 |
| KEEP_DEFAULT_USERNAME | 默认管理员用户名(仅 DB 认证) | 否 | "keep" | 任何有效的用户名字符串 |
| KEEP_DEFAULT_PASSWORD | 默认管理员密码(仅 DB 认证) | 否 | "keep" | 任何强密码字符串 |
| KEEP_FORCE_RESET_DEFAULT_PASSWORD | 强制重置默认用户密码 | 否 | "false" | "true" 或 "false" |
| KEEP_DEFAULT_API_KEYS | 要配置默认 API 密钥的逗号分隔列表 | 否 | "" | 格式:"name:role:secret,name:role:secret" |
服务网格(内部告警摄取)
INFO
这些设置允许同一 Kubernetes 集群内的受信任服务在 不需要 Keep API 密钥的情况下向 Keep POST 告警。这适用于 服务到服务的通信,其中网络级认证(例如 Istio mTLS 与 AuthorizationPolicy)确保只有授权的调用者可以 访问 Keep 的告警摄取端点。
| Env var | 用途 | 必填 | 默认值 | 有效选项 |
|---|---|---|---|---|
| KEEP_ALLOW_MESH_ALERT_INGESTION | 允许对 /alerts/event* 端点进行未认证的 POST 请求 | 否 | "false" | "true" 或 "false" |
当 KEEP_ALLOW_MESH_ALERT_INGESTION 设置为 "true" 时,不携带 API 密钥或 bearer 令牌的 /alerts/event* 请求将被接受,并作为具有 webhook 角色的内部服务进行认证。
调用服务可以选择设置 X-Service-Name HTTP 头,以在 Keep 的日志和审计跟踪中标识自己:
curl -X POST http://keep-backend:8080/alerts/event \
-H "Content-Type: application/json" \
-H "X-Service-Name: my-service" \
-d '[{"id":"alert-1","name":"Example Alert","severity":"info","status":"firing","source":["my-service"]}]'认证实体将具有:
- email:
service:<X-Service-Name 头值>(如果未设置头,则默认为service:unknown) - role:
webhook(授予write:alert和write:incident范围)
注意
此功能绕过告警摄取端点的 API 密钥认证。您必须将其与网络级访问控制(如 Istio AuthorizationPolicy)配对,以限制哪些服务可以访问这些 端点。如果没有网络级 enforcement,任何可以访问 Keep 后端的客户端都可以 POST 告警。
密钥管理
INFO
密钥管理配置指定 Keep 如何处理敏感 信息。这对于安全存储和访问机密 数据(如 API 密钥和集成凭证)至关重要。
| Env var | 用途 | 必填 | 默认值 | 有效选项 |
|---|---|---|---|---|
| SECRET_MANAGER_TYPE | 定义要使用的密钥管理器类型 | 是 | "FILE" | "FILE", "GCP", "K8S", "VAULT", "DB" |
| SECRET_MANAGER_DIRECTORY | 当使用基于文件的密钥管理时存储密钥的目录 | 否 | "/state" | 任何有效的目录路径 |
OpenTelemetry
INFO
OpenTelemetry 配置为 Keep 启用全面的可观测性。 这些设置允许您将 Keep 与各种监控和跟踪 系统集成,增强您调试和优化性能的能力。
| Env var | 用途 | 必填 | 默认值 | 有效选项 |
|---|---|---|---|---|
| OTEL_SERVICE_NAME | OpenTelemetry 服务名称 | 否 | "keep-api" | 有效的服务名称字符串 |
| SERVICE_NAME | OTEL_SERVICE_NAME 的替代方案 | 否 | "keep-api" | 有效的服务名称字符串 |
| OTEL_EXPORTER_OTLP_ENDPOINT | OpenTelemetry 收集器端点 | 否 | None | 有效 URL |
| OTLP_ENDPOINT | OTEL_EXPORTER_OTLP_ENDPOINT 的替代方案 | 否 | None | 有效 URL |
| OTEL_EXPORTER_OTLP_TRACES_ENDPOINT | OpenTelemetry traces 端点 | 否 | None | 有效 URL |
| OTEL_EXPORTER_OTLP_LOGS_ENDPOINT | OpenTelemetry 日志端点 | 否 | None | 有效 URL |
| OTEL_EXPORTER_OTLP_METRICS_ENDPOINT | OpenTelemetry 指标端点 | 否 | None | 有效 URL |
| CLOUD_TRACE_ENABLED | 启用 Google Cloud Trace 导出器 | 否 | "false" | "true" 或 "false" |
| METRIC_OTEL_ENABLED | 启用 OpenTelemetry 指标 | 否 | "" | "true" 或 "false" |
WebSocket 服务器 (Pusher/Soketi)
INFO
WebSocket 服务器配置控制 Keep 中的实时通信能力。 这些设置对于启用需要 即时更新和通知的功能很重要。
| Env var | 用途 | 必填 | 默认值 | 有效选项 |
|---|---|---|---|---|
| PUSHER_DISABLED | 禁用 Pusher 集成 | 否 | "false" | "true" 或 "false" |
| PUSHER_HOST | Pusher 服务器的主机名 | 否 | None | 有效主机名或 IP 地址 |
| PUSHER_PORT | Pusher 服务器端口 | 否 | None | 任何有效端口号 |
| PUSHER_APP_ID | Pusher 应用程序 ID | 是(如果使用 Pusher) | None | 有效的 Pusher App ID |
| PUSHER_APP_KEY | Pusher 应用程序密钥 | 是(如果使用 Pusher) | None | 有效的 Pusher App Key |
| PUSHER_APP_SECRET | Pusher 应用程序密钥 | 是(如果使用 Pusher) | None | 有效的 Pusher App Secret |
| PUSHER_USE_SSL | 启用 Pusher 连接的 SSL | 否 | False | Boolean (True/False) |
| PUSHER_CLUSTER | Pusher 集群 | 否 | None | 有效的 Pusher 集群名称 |
OpenAI
INFO
OpenAI 配置用于与 OpenAI 服务集成。这些 设置在您利用 Keep 内的 OpenAI 功能进行 自然语言处理或 AI 辅助操作时很重要。
| Env var | 用途 | 必填 | 默认值 | 有效选项 | 前后端 |
|---|---|---|---|---|---|
| OPENAI_API_KEY | OpenAI 服务的 API 密钥 | 否 | None | 有效的 OpenAI API 密钥 | 两者 |
| OPENAI_MODEL_NAME | 用于 OpenAI 请求的模型名称 | 否 | "gpt-4o-2024-08-06" | 有效的 OpenAI 模型名称(例如 "gpt-4o", "gpt-4o-mini", ...) | 两者 |
| OPEN_AI_ORGANIZATION_ID | OpenAI 服务的组织 ID | 否 | None | 有效的 OpenAI 组织 ID | 两者 |
| OPENAI_BASE_URL | OpenAI API 基础 URL(用于 LiteLLM 代理) | 否 | None | 有效 URL(例如 "http://localhost:4000") | 两者 |
TIP
对于各种不同的基于 LLM 的功能,我们还需要为 Keep 的前端设置这些 环境变量。
Posthog
INFO
Posthog 配置控制 Keep 与 Posthog 分析 平台的集成。这些设置对于跟踪使用模式和收集 关于 Keep 实例使用情况的见解很有用。
| Env var | 用途 | 必填 | 默认值 | 有效选项 |
|---|---|---|---|---|
| POSTHOG_API_KEY | PostHog 分析的 API 密钥 | 否 | "phc_muk9qE3TfZsX3SZ9XxX52kCGJBclrjhkP9JxAQcm1PZ" | 有效的 PostHog API 密钥 |
| POSTHOG_DISABLED | 禁用 PostHog 集成 | 否 | "false" | "true" 或 "false" |
Sentry
INFO
Sentry 配置控制 Keep 与 Sentry 的集成以进行错误 监控和报告。这些设置对于维护 Keep 实例的稳定性和可靠性很重要。
| Env var | 用途 | 必填 | 默认值 | 有效选项 |
|---|---|---|---|---|
| SENTRY_DISABLED | 禁用 Sentry 集成 | 否 | "false" | "true" 或 "false" |
Ngrok
INFO
Ngrok 配置启用到 Keep 实例的安全隧道。这些 设置在开发或需要安全地将 本地 Keep 实例暴露到互联网时特别有用。
| Env var | 用途 | 必填 | 默认值 | 有效选项 |
|---|---|---|---|---|
| USE_NGROK | 启用 ngrok 进行隧道传输 | 否 | "false" | "true" 或 "false" |
| NGROK_AUTH_TOKEN | ngrok 的认证令牌 | 否 | None | 有效的 ngrok 认证令牌 |
| NGROK_DOMAIN | ngrok 的自定义域名 | 否 | None | 有效域名 |
Elasticsearch
INFO
Elasticsearch 配置控制 Keep 与 Elasticsearch 的集成以实现 高级搜索功能。如果您使用 Elasticsearch 来增强 Keep 的搜索功能和性能,这些设置很重要。
| Env var | 用途 | 必填 | 默认值 | 有效选项 |
|---|---|---|---|---|
| ELASTIC_ENABLED | 启用 Elasticsearch 集成 | 否 | "false" | "true" 或 "false" |
| ELASTIC_API_KEY | Elasticsearch 的 API 密钥 | 是(如果使用 Elasticsearch) | None | 有效的 Elasticsearch API 密钥 |
| ELASTIC_HOSTS | Elasticsearch 主机逗号分隔列表 | 是(如果使用 Elasticsearch) | None | 有效的 Elasticsearch 主机 URL |
| ELASTIC_USER | Elasticsearch 基本认证的用户名 | 否 | None | 有效的用户名 |
| ELASTIC_PASSWORD | Elasticsearch 基本认证的密码 | 否 | None | 有效的密码 |
| ELASTIC_INDEX_SUFFIX | Elasticsearch 索引名称的后缀 | 是(对于单租户) | None | 任何有效字符串 |
Redis
INFO
Redis 配置指定 Keep 的 Redis 实例的连接详情。Redis 用于各种缓存和排队目的,使 这些设置对于优化 Keep 的性能和可扩展性很重要。
| Env var | 用途 | 必填 | 默认值 | 有效选项 |
|---|---|---|---|---|
| REDIS | Redis 启用 | 否 | false | true 或 false |
| REDIS_HOST | Redis 服务器主机名 | 否 | "localhost" | 有效主机名或 IP 地址 |
| REDIS_PORT | Redis 服务器端口 | 否 | 6379 | 有效端口号 |
| REDIS_USERNAME | Redis 用户名 | 否 | None | 有效的用户名字符串 |
| REDIS_PASSWORD | Redis 密码 | 否 | None | 有效的密码字符串 |
Redis Sentinel
INFO
Redis sentinel 配置指定 Keep 的 Redis sentinel 实例的连接详情。当您有 redis 集群时使用 Redis sentinel,它充当代理。
| Env var | 用途 | 必填 | 默认值 | 有效选项 |
|---|---|---|---|---|
| REDIS | Redis 启用 | 否 | false | true 或 false |
| REDIS_SENTINEL_HOSTS | Redis sentinel 服务器(s) | 否 | "localhost:26379" | "host1:port1,host2:port2"(逗号分隔) |
| REDIS_SENTINEL_SERVICE_NAME | Redis sentinel 服务名称 | 否 | "mymaster" | 有效的服务名称字符串 |
| REDIS_USERNAME | Redis 用户名 | 否 | None | 有效的用户名字符串 |
| REDIS_PASSWORD | Redis 密码 | 否 | None | 有效的密码字符串 |
ARQ
INFO
ARQ(异步任务队列)配置控制 Keep 的后台任务 处理。这些设置对于管理 Keep 如何处理 长时间运行或调度的任务至关重要,确保高效的资源利用和 响应能力。
| Env var | 用途 | 必填 | 默认值 | 有效选项 |
|---|---|---|---|---|
| ARQ_BACKGROUND_FUNCTIONS | 要运行的后台函数的逗号分隔列表 | 否 | None | 有效的函数名称 |
| ARQ_KEEP_RESULT | 保留作业结果的时间(秒) | 否 | 3600 | 正整数 |
| ARQ_EXPIRES | 默认作业过期时间(秒) | 否 | 3600 | 正整数 |
| ARQ_EXPIRES_AI | AI 作业过期时间(秒) | 否 | 3600000 | 正整数 |
速率限制
INFO
速率限制配置控制可以在指定时间范围内向 Keep's API 端点发出的请求数量。这有助于防止滥用并 确保系统稳定性。
| Env var | 用途 | 必填 | 默认值 | 有效选项 |
|---|---|---|---|---|
| KEEP_USE_LIMITER | 启用或禁用速率限制 | 否 | "false" | "true" 或 "false" |
| KEEP_LIMIT_CONCURRENCY | 设置 API 端点的速率限制 | 否 | "100/minute" | 格式:"{number}/{interval}",其中 interval 可以是 "second"、"minute"、"hour"、"day" |
::: note 目前,速率限制适用于以下端点:
- POST
/alerts/event- 通用事件摄取端点 - POST
/alerts/{provider_type}- 提供商特定的事件摄取端点
当启用 KEEP_USE_LIMITER 时,这些端点根据 KEEP_LIMIT_CONCURRENCY 设置进行速率限制。 :::
维护窗口
INFO
该策略启用在匹配维护窗口规则时管理告警处理方式的能力。
| Env var | 用途 | 必填 | 默认值 | 有效选项 |
|---|---|---|---|---|
| MAINTENANCE_WINDOW_STRATEGY | 选择策略 | 否 | "default" | "default" 或 "recover_previous_status" |
| WATCHER_LAPSED_TIME | 执行告警审查的时间(秒) | 否 | 60 | 有效的正整数 |
前端环境变量
INFO
前端配置变量控制 Keep's 用户界面的行为和功能。这些设置对于自定义前端的 外观、功能以及与后端服务的集成至关重要。
常规
| Env var | 用途 | 必填 | 默认值 | 有效选项 |
|---|---|---|---|---|
| API_URL | 指定 Keep 后端 API 的 URL | 是 | None | 有效 URL |
| AUTH_SESSION_TIMEOUT | 指定用户会话超时时间(秒)。默认值为 30 天。 | 否 | 2592000 | 秒值 |
| KEEP_HIDE_SENSITIVE_FIELDS | 隐藏敏感字段 | 否 | None | "true", "false" |
| HIDE_NAVBAR_CORRELATION | 在 UI 导航栏中隐藏关联页面 | 否 | None | "true" |
| HIDE_NAVBAR_WORKFLOWS | 在 UI 导航栏中隐藏工作流页面 | 否 | None | "true" |
| HIDE_NAVBAR_SERVICE_TOPOLOGY | 在 UI 导航栏中隐藏服务拓扑页面 | 否 | None | "true" |
| HIDE_NAVBAR_MAPPING | 在 UI 导航栏中隐藏映射页面 | 否 | None | "true" |
| HIDE_NAVBAR_EXTRACTION | 在 UI 导航栏中隐藏提取页面 | 否 | None | "true" |
| HIDE_NAVBAR_MAINTENANCE_WINDOW | 在 UI 导航栏中隐藏维护窗口页面 | 否 | None | "true" |
| HIDE_NAVBAR_AI_PLUGINS | 在 UI 导航栏中隐藏 AI 插件页面 | 否 | None | "true" |
| KEEP_WF_LIST_EXTENDED_INFO | 使用列表而不是按钮显示完整执行列表 | 否 | "true" | "true", "false" |
认证
INFO
认证配置决定 Keep 如何验证用户身份和 管理访问控制。这些设置对于保护您的 Keep 实例并与各种认证提供商集成至关重要。
| Env var | 用途 | 必填 | 默认值 | 有效选项 |
|---|---|---|---|---|
| AUTH_TYPE | 指定认证类型 | 否 | "NOAUTH" | "AUTH0", "KEYCLOAK", "DB", "NOAUTH", "OAUTH2PROXY", "OKTA", "ONELOGIN" |
| NEXTAUTH_URL | NextAuth 认证的 URL | 是 | None | 有效 URL |
| NEXTAUTH_SECRET | NextAuth 的密钥 | 是 | None | 强密钥字符串 |
Posthog
| Env var | 用途 | 必填 | 默认值 | 有效选项 |
|---|---|---|---|---|
| POSTHOG_KEY | 前端分析的 PostHog API 密钥 | 否 | None | 有效的 PostHog API 密钥 |
| POSTHOG_HOST | 前端分析的 PostHog 主机 | 否 | None | 有效的 PostHog 主机 |
Pusher
INFO
Pusher 配置对于在 Keep's 前端中启用实时更新和 通信至关重要。这些设置允许前端与 Pusher 服务器建立 WebSocket 连接,促进即时 更新和通知。
| Env var | 用途 | 必填 | 默认值 | 有效选项 |
|---|---|---|---|---|
| PUSHER_DISABLED | 禁用 Pusher 集成 | 否 | "false" | "true" 或 "false" |
| PUSHER_HOST | Pusher 服务器的主机名 | 否 | "localhost" | 有效主机名或 IP 地址 |
| PUSHER_PORT | Pusher 服务器端口 | 否 | 6001 | 有效端口号 |
| PUSHER_APP_KEY | Pusher 应用程序密钥 | 是(如果 Pusher 启用) | "keep-app-key" | 有效的 Pusher App Key |
| PUSHER_CLUSTER | Pusher 集群 | 否 | None | 有效的 Pusher 集群名称 |