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'