Skip to content

关于本页

本页介绍更夫所基于的开源内核 Keep 的通用能力。更夫在其上提供国内化增强:钉钉/企业微信/飞书通知、国产大模型接入、LDAP 认证与值班管理。部署与上手请看快速上手。

Keep 中的服务拓扑功能提供了服务依赖关系的可视化表示,允许您快速了解系统中各个组件之间的关系。通过映射服务及其交互,您可以深入了解一个服务中的问题如何影响其他服务,从而实现更快的根本原因分析和更有效的事件解决。

关键概念 ​

  • 节点:代表单独的服务、应用程序或基础设施组件。
  • 边:显示节点之间的依赖关系和交互。

支持的提供者 ​

Datadog

Pagerduty

ArgoCD

Cilium

Service Now

功能 ​

可视化依赖关系 ​

服务拓扑图帮助您:

  • 识别服务之间的关键依赖关系。
  • 了解一个服务中的故障如何通过系统传播。
  • 突出显示单点故障或瓶颈。

实时健康指标 ​

节点和边通过从告警和指标派生出的健康指标进行富集。这允许您:

  • 快速发现架构中的问题。
  • 根据受影响的依赖关系优先处理事件解决。

过滤和聚焦 ​

使用过滤器聚焦于拓扑的特定部分,例如:

  • 特定环境(例如生产、预发布)。
  • 服务组(例如所有数据库相关服务)。
  • 特定严重程度或类型的告警。

事件集成 ​

服务拓扑与 Keep 的事件管理功能无缝集成。触发事件时,您可以:

  • 在拓扑图上直接查看受影响的节点及其依赖关系。
  • 分析与事件相关的告警如何通过系统传播。
  • 使用此信息指导修复工作。

手动添加拓扑 ​

此功能允许您创建和操作服务及其之间的依赖关系。

  • 点击 + 添加节点 以向地图添加新服务。
  • 服务和显示名称字段为必填字段,其余字段为可选。(注意:标签接受 CSV 格式)
  • 点击保存,这会向地图添加新服务。
  • 您可以添加多个这样的服务,并在它们之间添加连接/依赖关系。
  • 您可以选择一个或多个手动创建的服务(按住 Ctrl 选择多个服务),并使用删除服务选项一次性全部删除。
  • 您可以点击任何服务并使用更新服务按钮来更新服务。
  • 要添加依赖关系,请从任何服务的右侧手柄(源)拖动到另一个服务的左侧手柄(目标)。
  • 您可以通过将依赖关系从其目标手柄拖离来移除依赖关系。
  • 要向依赖关系添加协议:点击依赖关系 > 点击编辑依赖关系 > 在弹出窗口中填写协议 > 点击确定。

::: note

  • 您只能操作手动创建的服务。
  • 只能在两个手动创建的服务之间创建或更新依赖关系。 :::

导入和导出拓扑 ​

您可以使用此功能导入/导出拓扑数据:服务 + 应用程序 + 依赖关系到/从 keep。

  • 点击菜单项获取导入/导出选项。
  • 数据以 YAML 格式导入和导出。
  • 以下是示例 YAML:
yaml
applications:
- description: 'A sample application for monitoring and management'
  id: 398e7b9a-bc0f-487a-b6d7-049a16e500e4
  name: monitoring-app
  repository: 'https://github.com/sample-org/monitoring-app'
  services:
  - 556041
  - 556061
dependencies:
- depends_on_service_id: 556051
  id: 6219
  protocol: HTTP
  service_id: 556041
- depends_on_service_id: 556081
  id: 6220
  protocol: HTTPS
  service_id: 556051
- depends_on_service_id: 556041
  id: 6221
  protocol: GRPC
  service_id: 556061
- depends_on_service_id: 556071
  id: 6222
  protocol: TCP
  service_id: 556061
- depends_on_service_id: 556051
  id: 6223
  protocol: UDP
  service_id: 556071
services:
- id: 556041
  display_name: Auth Service
  service: PAH3VXB
  category: Backend
  description: 'Handles user authentication and session management'
  email: 'auth-team@example.com'
  environment: production
  ip_address: '192.168.1.10'
  is_manual: false
  mac_address: '00:1A:2B:3C:4D:5E'
  manufacturer: 'Dell'
  namespace: 'auth'
  repository: 'https://github.com/sample-org/auth-service'
  slack: '#auth-alerts'
  source_provider_id: ebe062c4814f483cb2c5d556fbb9395c
  tags: ['authentication', 'security']
  team: 'Auth Team'
- id: 556051
  display_name: Log Aggregator
  service: PFRKUOO
  category: Monitoring
  description: 'Main service responsible for collecting and aggregating logs'
  email: 'logs-team@example.com'
  environment: staging
  ip_address: '192.168.1.11'
  is_manual: false
  mac_address: '00:1A:2B:3C:4D:5F'
  manufacturer: 'HP'
  namespace: 'logs'
  repository: 'https://github.com/sample-org/log-aggregator'
  slack: '#logs-alerts'
  source_provider_id: ebe062c4814f483cb2c5d556fbb9395c
  tags: ['monitoring', 'logging']
  team: 'Logs Team'
- id: 556061
  display_name: Core API
  service: PWKXGRK
  category: API
  description: 'Main business logic service for processing user data'
  email: 'backend-team@example.com'
  environment: production
  ip_address: '192.168.1.12'
  is_manual: false
  mac_address: '00:1A:2B:3C:4D:60'
  manufacturer: 'Cisco'
  namespace: 'api'
  repository: 'https://github.com/sample-org/core-api'
  slack: '#backend-alerts'
  source_provider_id: ebe062c4814f483cb2c5d556fbb9395c
  tags: ['api', 'backend']
  team: 'Backend Team'
- id: 556071
  display_name: Database Service
  service: PFEIHAU
  category: Storage
  description: 'Handles database operations and caching'
  email: 'db-team@example.com'
  environment: production
  ip_address: '192.168.1.13'
  is_manual: false
  mac_address: '00:1A:2B:3C:4D:61'
  manufacturer: 'IBM'
  namespace: 'db'
  repository: 'https://github.com/sample-org/database-service'
  slack: '#db-alerts'
  source_provider_id: ebe062c4814f483cb2c5d556fbb9395c
  tags: ['database', 'storage']
  team: 'Database Team'
- id: 556081
  display_name: Service Mesh
  service: PC8HHE7
  category: Infrastructure
  description: 'Handles networking and service discovery'
  email: 'infra-team@example.com'
  environment: production
  ip_address: '192.168.1.14'
  is_manual: false
  mac_address: '00:1A:2B:3C:4D:62'
  manufacturer: 'Juniper'
  namespace: 'mesh'
  repository: 'https://github.com/sample-org/service-mesh'
  slack: '#infra-alerts'
  source_provider_id: ebe062c4814f483cb2c5d556fbb9395c
  tags: ['networking', 'mesh']
  team: 'Infra Team'

基于 MIT 协议开源的 Keep · 由更夫社区维护