从概念验证到生产环境Keep开源告警管理平台的完整实战部署指南【免费下载链接】keepThe open-source AIOps and alert management platform项目地址: https://gitcode.com/GitHub_Trending/kee/keep在当今复杂的云原生环境中告警管理已成为运维团队面临的核心挑战。告警风暴、重复告警、缺乏上下文信息等问题严重影响了团队的响应效率。Keep作为一款开源的AIOps和告警管理平台提供了从Docker快速体验到Kubernetes生产部署的完整解决方案帮助企业构建高效的告警管理生态系统。一、Keep平台的核心价值与架构解析Keep是一个功能强大的开源告警管理和自动化平台专为开发者和运维团队设计。它通过AI驱动的告警处理、智能关联分析和自动化工作流帮助企业从被动响应转向主动运维。1.1 核心功能特性功能模块核心能力业务价值统一告警视图集中管理所有监控工具的告警消除告警孤岛提升可视化能力智能去重与关联基于AI的告警去重和关联分析减少告警噪音识别根本原因自动化工作流可视化工作流编排引擎自动化响应减少人工干预双向集成与100监控工具的深度集成统一告警处理流程服务拓扑动态服务依赖关系映射快速定位故障传播路径1.2 技术架构概览Keep采用现代化的微服务架构设计主要包含以下核心组件Frontend: 基于Next.js构建的现代化Web界面Backend: FastAPI后端服务处理所有业务逻辑WebSocket Server: 实时通知服务基于Soketi实现Database: 支持多种数据库PostgreSQL、MySQL、SQLite图1Keep平台AI工作流助手界面展示AI驱动的告警处理流程二、环境准备与前置条件2.1 系统要求在部署Keep之前确保您的环境满足以下要求开发/测试环境Docker Engine 20.10Docker Compose 2.04GB可用内存10GB可用磁盘空间生产环境Kubernetes 1.24Helm 3.8持久化存储如NFS、Ceph、云存储监控和日志收集系统Prometheus、Loki等2.2 网络与安全考虑端口服务用途生产环境建议3000FrontendWeb界面访问通过Ingress暴露8080Backend APIAPI服务端口内部访问通过Ingress代理6001WebSocket实时通知服务通过Ingress暴露三、Docker快速概念验证部署3.1 一键部署方案对于想要快速体验Keep功能的团队Docker Compose是最佳选择。以下命令将在5分钟内完成部署# 克隆项目仓库 git clone https://gitcode.com/GitHub_Trending/kee/keep cd keep # 使用官方安装脚本 curl https://raw.githubusercontent.com/keephq/keep/main/start.sh | sh3.2 启动后验证服务启动后您可以通过以下方式验证部署状态# 查看容器运行状态 docker-compose ps # 查看服务日志 docker-compose logs -f # 访问Web界面 # 浏览器打开 http://localhost:3000 # 默认用户名/密码keep/keep3.3 基础配置调整修改docker-compose.yml文件以调整基础配置services: keep-backend: environment: # 数据库配置 DATABASE_CONNECTION_STRING: postgresql://user:passworddb:5432/keep # JWT密钥配置 KEEP_JWT_SECRET: your-secure-jwt-secret-key # 时区设置 TZ: Asia/Shanghai keep-frontend: environment: # API端点配置 NEXT_PUBLIC_API_URL: http://localhost:8080 # WebSocket端点 NEXT_PUBLIC_WS_URL: ws://localhost:6001四、Kubernetes生产环境深度部署4.1 Helm Chart安装对于生产环境强烈建议使用Helm进行部署以获得更好的可维护性和扩展性。# 添加Helm仓库 helm repo add keep https://keephq.github.io/helm-charts helm repo update # 创建命名空间 kubectl create namespace keep # 安装Keep helm install keep keep/keep -n keep4.2 生产级values.yaml配置创建自定义的values.yaml配置文件global: ingress: enabled: true className: nginx annotations: cert-manager.io/cluster-issuer: letsencrypt-prod hosts: - host: keep.yourdomain.com paths: - path: / pathType: Prefix - path: /v2 pathType: Prefix - path: /websocket pathType: Prefix tls: - secretName: keep-tls hosts: - keep.yourdomain.com backend: replicaCount: 2 resources: requests: memory: 512Mi cpu: 250m limits: memory: 2Gi cpu: 1000m env: - name: DATABASE_CONNECTION_STRING value: postgresql://keep:passwordkeep-postgresql:5432/keep - name: KEEP_JWT_SECRET valueFrom: secretKeyRef: name: keep-secrets key: jwt-secret - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://otel-collector:4317 frontend: replicaCount: 2 resources: requests: memory: 256Mi cpu: 100m limits: memory: 512Mi cpu: 500m database: enabled: true type: postgresql persistence: enabled: true size: 20Gi storageClass: standard4.3 高可用架构设计图2Keep服务拓扑架构展示服务间的关联关系Keep在Kubernetes中的高可用架构包含以下关键组件核心服务副本策略backend: replicaCount: 3 podDisruptionBudget: minAvailable: 2 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 0 frontend: replicaCount: 2 podDisruptionBudget: minAvailable: 1数据库高可用配置database: enabled: true architecture: replication primary: persistence: size: 50Gi readReplicas: replicaCount: 2 persistence: size: 20Gi五、关键配置与自定义最佳实践5.1 数据库选择与优化Keep支持多种数据库后端生产环境建议选择数据库适用场景配置示例PostgreSQL生产环境首选postgresql://user:passhost:5432/dbMySQL已有MySQL环境mysql://user:passhost:3306/dbSQLite开发/测试sqlite:///data/keep.dbPostgreSQL优化配置-- 创建专用数据库和用户 CREATE DATABASE keep; CREATE USER keep WITH ENCRYPTED PASSWORD secure_password; GRANT ALL PRIVILEGES ON DATABASE keep TO keep; -- 性能优化参数 ALTER DATABASE keep SET shared_preload_libraries pg_stat_statements; ALTER DATABASE keep SET max_connections 200; ALTER DATABASE keep SET work_mem 16MB;5.2 身份认证与安全配置JWT密钥管理# 生成安全的JWT密钥 openssl rand -base64 32 # 在Kubernetes中存储为Secret kubectl create secret generic keep-secrets \ --from-literaljwt-secret$(openssl rand -base64 32) \ --namespace keepOAuth2集成配置backend: env: - name: AUTH_TYPE value: oauth2 - name: OAUTH2_CLIENT_ID valueFrom: secretKeyRef: name: oauth2-secrets key: client-id - name: OAUTH2_CLIENT_SECRET valueFrom: secretKeyRef: name: oauth2-secrets key: client-secret5.3 监控与告警配置集成OpenTelemetry实现全面监控backend: env: - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://otel-collector:4317 - name: OTEL_SERVICE_NAME value: keep-backend - name: OTEL_RESOURCE_ATTRIBUTES value: service.namespacekeep,service.version1.0.0 frontend: env: - name: NEXT_PUBLIC_OTEL_ENABLED value: true - name: NEXT_PUBLIC_OTEL_EXPORTER value: otlp六、监控、运维与故障排除6.1 健康检查配置为所有服务配置完善的健康检查backend: livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 30 periodSeconds: 10 timeoutSeconds: 5 failureThreshold: 3 readinessProbe: httpGet: path: /ready port: 8080 initialDelaySeconds: 5 periodSeconds: 5 timeoutSeconds: 36.2 日志收集策略配置结构化日志收集# 日志格式配置 backend: env: - name: LOG_LEVEL value: INFO - name: LOG_FORMAT value: json - name: LOG_JSON_INDENT value: 0 # Fluentd/Fluent Bit配置示例 logging: enabled: true fluentbit: enabled: true config: inputs: | [INPUT] Name tail Path /var/log/containers/*keep*.log Parser docker Tag kube.* Mem_Buf_Limit 5MB Skip_Long_Lines On6.3 常见故障排除数据库连接问题# 检查数据库连接 kubectl exec -it deploy/keep-backend -n keep -- \ python -c import psycopg2; psycopg2.connect(postgresql://keep:passwordkeep-postgresql:5432/keep) # 查看数据库状态 kubectl logs -f statefulset/keep-postgresql -n keepWebSocket连接失败# 测试WebSocket连接 kubectl port-forward svc/keep-websocket 6001:6001 -n keep wscat -c ws://localhost:6001七、高级功能与集成实战7.1 AI驱动的告警关联Keep的AI功能可以自动关联相关告警减少告警噪音# AI关联配置示例 ai: enabled: true provider: openai model: gpt-4 correlation: enabled: true similarity_threshold: 0.8 max_cluster_size: 10图3Keep服务拓扑视图展示服务间依赖关系7.2 自动化工作流编排使用YAML定义复杂的告警处理工作流workflow: id: kubernetes-pod-restart name: 自动重启故障Kubernetes Pod triggers: - type: interval value: 300 # 每5分钟检查一次 steps: - name: 获取故障Pod provider: type: kubernetes config: {{ providers.kubernetes }} with: action: get_pods namespace: production label_selector: appcritical - name: 检查Pod状态 foreach: {{ steps.获取故障Pod.results }} if: {{ item.status.phase Failed and item.status.containerStatuses[0].restartCount 3 }} provider: type: kubernetes with: action: delete_pod name: {{ item.metadata.name }} namespace: {{ item.metadata.namespace }} - name: 发送通知 provider: type: slack config: {{ providers.slack }} with: channel: #alerts message: 已自动重启故障Pod: {{ steps.检查Pod状态.results | length }}个7.3 多监控平台集成Keep支持与主流监控平台的深度集成监控平台集成方式配置示例Prometheus直接拉取prometheus.yml配置DatadogWebhook接收API密钥配置GrafanaAlertmanager集成Webhook配置New Relic事件API事件发送配置Prometheus集成配置# Prometheus Alertmanager配置 alerting: alertmanagers: - static_configs: - targets: - keep-backend:8080 scheme: http path_prefix: /alerts # Keep中的Prometheus Provider配置 providers: prometheus: type: prometheus config: url: http://prometheus:9090 auth: type: bearer token: {{ secrets.PROMETHEUS_TOKEN }}八、性能优化与扩展策略8.1 水平扩展配置根据负载情况动态调整副本数backend: autoscaling: enabled: true minReplicas: 2 maxReplicas: 10 targetCPUUtilizationPercentage: 70 targetMemoryUtilizationPercentage: 80 frontend: autoscaling: enabled: true minReplicas: 2 maxReplicas: 5 targetCPUUtilizationPercentage: 608.2 缓存与性能优化# Redis缓存配置 backend: env: - name: REDIS_URL value: redis://keep-redis:6379/0 - name: CACHE_TTL value: 300 # 5分钟缓存 - name: ALERT_CACHE_SIZE value: 10000 # 告警缓存大小 # 数据库连接池配置 database: connectionPool: maxSize: 20 minSize: 5 idleTimeout: 300000 # 5分钟8.3 数据保留策略# 告警数据保留策略 retention: alerts: enabled: true days: 90 # 保留90天 archive: true # 归档旧数据 incidents: enabled: true days: 365 # 保留1年 workflowExecutions: enabled: true days: 30 # 保留30天九、安全加固与合规性9.1 网络安全配置# 网络策略配置 networkPolicy: enabled: true ingress: - from: - namespaceSelector: matchLabels: name: monitoring ports: - port: 8080 protocol: TCP egress: - to: - ipBlock: cidr: 0.0.0.0/0 except: - 10.0.0.0/8 - 172.16.0.0/12 - 192.168.0.0/169.2 数据加密配置# 数据传输加密 backend: env: - name: ENCRYPTION_KEY valueFrom: secretKeyRef: name: keep-encryption key: encryption-key # 数据库加密 database: encryption: enabled: true key: {{ secrets.DB_ENCRYPTION_KEY }}十、总结与后续步骤通过本文的完整指南您已经掌握了从Docker快速体验到Kubernetes生产环境部署Keep的全过程。Keep作为开源告警管理平台提供了强大的AIOps能力和灵活的部署选项。10.1 部署路径总结概念验证阶段使用Docker Compose快速启动验证基本功能开发环境配置持久化存储和基础集成预生产环境部署到Kubernetes配置监控和备份生产环境实现高可用、安全加固和性能优化10.2 后续优化建议图4Keep告警管理界面展示告警过滤和分派功能短期优化1-2周配置告警通知渠道Slack、Teams、邮件等设置基础工作流自动化集成现有监控工具中期优化1-3个月实施AI驱动的告警关联建立服务拓扑映射配置复杂的工作流规则长期优化3-6个月实现跨团队告警协同建立告警知识库优化告警响应SLA10.3 资源与支持官方文档docs/deployment/configuration.mdx示例配置examples/workflows/ 目录社区支持通过GitHub Issues获取技术支持企业支持考虑商业支持选项以获得专业指导通过遵循本指南中的最佳实践您可以构建一个稳定、高效且可扩展的告警管理平台显著提升团队的运维效率和响应能力。Keep的开源特性确保了透明度和可定制性使其成为现代云原生环境中的理想选择。【免费下载链接】keepThe open-source AIOps and alert management platform项目地址: https://gitcode.com/GitHub_Trending/kee/keep创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考