KeepHQ:開源 AIOps 平臺,簡化 DevOps 報警管理
Keep 是第一個開源 AIOps 平臺,填補了現有監控工具(如 Grafana 和 Prometheus)在 AIOps 能力上的空白。它特別適合小型團隊,因為傳統企業工具成本高、維護復雜,而 Keep 提供企業級功能(如擴展性、SSO)的同時,保持對小型團隊的友好性。它利用大型語言模型(LLM)時代的進步,將 AI 無縫集成到運維中。
部署靈活性是 Keep 的亮點,支持本地、Kubernetes、AWS ECS 和 OpenShift 等多種環境。用戶可以通過 helm install 或 docker-compose 一鍵啟動,快速探索其功能,適合初學者和經驗豐富的團隊。
關鍵功能和能力
Keep 的設計理念是易于開始、易于擴展、易于協作,具體功能包括:
- 易于開始:提供一鍵安裝選項,如 helm install 和 docker-compose,支持本地或 Kubernetes 部署,降低入門門檻。
- 易于擴展:其架構基于 Python 實現,易于增強和定制,支持添加新集成,目前已有 110 多個提供者,涵蓋工具如 Prometheus、CloudWatch 和 Datadog。
- 易于部署:作為代碼提供,支持 CI/CD 管道集成,適合云、內部部署或隔離環境,滿足不同安全和合規需求。
- 易于協作:作為開源項目,GitHub 上已有 9200 顆星,700 名社區成員活躍參與,通過 Slack 社區(Slack 社區)提供支持,鼓勵用戶反饋融入開發。
此外,Keep 提供沙盒環境如 Playground,用戶可以在此探索功能、配置和 AIOps 技術;Platform 則用于租戶配置,確保團隊能測試和優化策略。
使用案例和集成
Keep 解決多個 IT 操作挑戰,具體如下表所示:
- 集中警報管理:將多個 Prometheus 實例和按地區/賬戶的 CloudWatch 設置的警報集中到一個儀表板,供審查、節流和微調。
- 警報豐富:通過觀測工具、數據庫和工單系統(如 Jira、ServiceNow)提供上下文,包括企業特定觸發器和客戶影響細節,便于決策。
- 自動化警報響應:自動化常見警報響應,如確認端點 502 錯誤或檢查低優先級客戶影響前不升級。
- 多環境監控:跨 staging、生產和測試環境集中警報,設置環境特定規則,提供統一系統健康視圖。
- 噪音減少:通過去重、節流和靜音減少噪音,確保團隊只關注關鍵問題。
- SLA 合規性:跟蹤警報解決時間,確保 SLA 合規性,配備自動化和報告功能。
- 事件關聯:使用工作流和映射規則關聯相關警報,快速識別根本原因,提供分組可操作見解。
- 工單系統集成:與 Jira 和 ServiceNow 等工單工具同步,自動化工單創建和更新,確保無縫工作流。
集成方面,Keep 支持超過 110 個提供者,通過 Webhook、路由策略或 API 與工具如 Zabbix、Nagios 連接。2023 年 Grafana 調查顯示,52% 的公司使用 6 種以上觀測工具,Keep 的多工具集成能力尤為重要(Grafana 調查:https://grafana.com/observability-survey-2023/)。
開發者友好
Keep 強調開發者優先,提供現代 REST API、本地 SDK 和全面文檔,便于與現有堆棧集成。其 API 優先設計確保所有 UI 操作均可通過 API 完成,支持警報補救和豐富的自動化。企業安全功能包括完整身份驗證支持(如 SSO、SAML、OIDC、LDAP),以及細粒度的訪問控制(RBAC、ABAC)和團隊管理,適合生產規模工作負載,支持高可用性和水平擴展。
用戶反饋顯示,Keep 被比作監控領域的 n8n.io,與 StackStorm 相比,Keep 提供更簡單的 UI 和更緊密的監控工具 API 集成。社區還建議添加功能如抖動檢測(flap detection)和自動補救,目前節流策略已可用,抖動檢測計劃中。
工作流
Keep 是監控工具的 GitHub Actions。
Keep 工作流是一個聲明式的 YAML 文件,用于自動化您的警報和事件管理。每個工作流包含:
- 觸發器 - 啟動工作流的條件(警報、事件、計劃或手動)
- 步驟 - 讀取或獲取數據(豐富、上下文)
- 操作 - 執行操作(更新工單、發送通知、重啟服務器)
以下是一個簡單的工作流示例,它為來自 Sentry 的支付和 API 服務的關鍵警報創建 Jira 工單。
workflow:
id:sentry-alerts
description:createticketalertsforcriticalalertsfromsentry
triggers:
-type:alert
# customize the filter to run only on critical alert from sentry
filters:
-key:source
value:sentry
-key:severity
value:critical
# regex to match specific services
-key:service
value:r"(payments|ftp)"
actions:
-name:send-slack-message-team-payments
# if the alert is on the payments service, slack the payments team
if:"'{{ alert.service }}' == 'payments'"
provider:
type:slack
# control which Slack configuration you want to use
config:" {{ providers.team-payments-slack }} "
# customize the alert message with context from {{ alert }} or any other {{ step }}
with:
message:|
"A new alert from Sentry: Alert: {{ alert.name }} - {{ alert.description }}
{{ alert}}"
-name:create-jira-ticket-oncall-board
# control the workflow flow with "if" and "foreach" statements
if:"'{{ alert.service }}' == 'ftp' and not '{{ alert.ticket_id }}'"
provider:
type:jira
config:" {{ providers.jira }} "
with:
board_name:"Oncall Board"
custom_fields:
customfield_10201:"Critical"
issuetype:"Task"
# customize the summary
summary:"{{ alert.name }} - {{ alert.description }} (created by Keep)"
description:|
"This ticket was created by Keep.
Please check the alert details below:
{code:json} {{ alert }} {code}"
# enrich the alerts with more context. from now on, the alert will be assigned with the ticket id, type and url
enrich_alert:
-key:ticket_type
value:jira
-key:ticket_id
value:results.issue.key
-key:ticket_url
value:results.ticket_url
總結
KeepHQ 是一個變革性的開源 AIOps 平臺,為 DevOps 和 SRE 團隊民主化了高級警報管理和自動化。通過減少噪音、豐富警報和自動化響應,Keep 幫助組織將數據轉化為可操作的見解,促進協作和可擴展性,適合各種環境。無論是希望采用 AIOps 實踐的小型團隊,還是尋求強大可擴展解決方案的企業,Keep 提供了一個引人注目的、社區支持的平臺來簡化 IT 操作。
Github 倉庫地址:https://github.com/keephq/keep