The Service Topology feature in Keep provides a visual representation of your service dependencies, allowing you to quickly understand the relationships between various components in your system. By mapping services and their interactions, you can gain insights into how issues in one service may impact others, enabling faster root-cause analysis and more effective incident resolution.
Key Concepts
- Nodes: Represent individual services, applications, or infrastructure components.
- Edges: Show the dependencies and interactions between nodes.
Supported Providers
Features
Visualizing Dependencies
The service topology graph helps you:
- Identify critical dependencies between services.
- Understand how failures in one service propagate through the system.
- Highlight single points of failure or bottlenecks.
Real-Time Health Indicators
Nodes and edges are enriched with health indicators derived from alerts and metrics. This allows you to:
- Quickly spot issues in your architecture.
- Prioritize incident resolution based on affected dependencies.
Filter and Focus
Use filters to focus on specific parts of the topology, such as:
- A particular environment (e.g., production, staging).
- A service group (e.g., all database-related services).
- Alerts of a specific severity or type.
Incident Integration
Service topology integrates seamlessly with Keep’s incident management features. When an incident is triggered, you can:
- View the affected nodes and their dependencies directly on the topology graph.
- Analyze how alerts related to the incident are propagating through the system.
- Use this information to guide remediation efforts.
Manually adding Topology
This features allows you to create and manipulate your services and the dependencies between them.
- Click on
+ Add Node
to add a new service to your map.
- Field
Service
and Display Name
are mandatory fields and rest of the fields are optional. (Note: Tags
accepts CSV)
- Click
Save
, this adds a new service to your map.
- You can add multiple such services and add connections/dependencies between them.
- You can select on or more manually created services (holding Ctrl select multiple services), and delete them all at once using the
Delete Services
option.
- You can click any service and use
Update Service
button to update a service.
- To add a dependency drag from any service’s right handle (source) to another service’s left handle (target).
- You can remove a dependency by dragging away a dependency from it’s target handle and leave it.
- To add a protocol to your dependency: click the dependency > Click
Edit Dependency
> Fill in the protocol in the popup > Click OK
.
- You can only manipulate the services that are created manually.
- Creating or updating a dependency is only possible between two manually created services.
Importing and Exporting topology
You can Import/Export topology data: services + applications + dependencies to/from keep using this feature.
- Click the menu item to get the Import/Export option.
- Data is Imported and Exported in YAML Format.
- Below is a sample 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: '[email protected]'
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: '[email protected]'
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: '[email protected]'
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: '[email protected]'
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: '[email protected]'
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'
Responses are generated using AI and may contain mistakes.