The dependency graph allows you to visualize all of the connections between your services and resources. You can access the graph under Tools in the navigation bar.
By default, the dependency graph will display all of your services and resources, unless you have over 100. If you have over 100 services and resources, the graph will initially be blank, and you’ll need to select a service or resource to display dependencies.
Within the graph, service nodes appear in dark purple, while resource nodes appear in blue, so it’s easy to distinguish between them. The resource type also appears in brackets before the name of the resource.
You can click and drag the plane to adjust your view, and you can zoom in or out. You can also drag and reposition services within the graph to manually modify its layout.
Select a service or resource
You can select a service or a resource by clicking within the graph or by using the Filters on the left-hand side.
When you select a service or resource, the graph will display one degree of dependencies in and out. The service or resource you selected will be highlighted and listed under Resource Details or Service Details, above the list of its dependencies.
In this example, we’ve selected Eats Billing Db resource. At a glance, we can see that Eats Billing Db is an Amazon RDS database that depends on eight services. We can also easily see that the Kafka Topic named Orders Data Event Stream depends on Eats Billing Db.
If you click on any of the services or resources listed on the left-hand side, you’ll be taken to that entity’s home page. If you click on a service or resource within the graph, the view and details on the will update accordingly. In this example, we’ve clicked on Credits Service from Eats Billing Db.
Within the graph filters, you can determine how many Degrees In and Degrees Out you want to display, or you can select All to display all dependencies.
Note: Secondary dependencies will not appear within the list, even if they display in the graph. For example, Credits Service does not directly depend on Store Item Picker or Vendor Payments, so these services appear only in the graph.
Direct dependencies will be represented by a darker line, while lower-level dependencies will be connected with lighter lines.
Filtering and syncing
You can filter the data in the graph by Group and Source.
This makes it easy to visualize specific types of services and resources to see how they interact. If you’re using service groups to describe product areas or domains, filtering by service group will be particularly useful.
Scorecard data
You can also overlay scorecard data to determine if there are any bottlenecks. With this view, you can also easily distinguish services and resource by their performance. Select a scorecard from the dropdown list within Filters.
If any entities do not have scorecard scores, they will appear with no color.
When you select an entity with scorecard view enabled, you can gain more insight into its performance. In the example below, the service 50cent depends on a number of services that aren’t achieving standards, which may explain its poor performance.
On the other hand, if a service is not meeting standards, but depends on a number of services that are performing well, you can deduce that the problem is more specific to that service alone.
Overlaying scorecard data can help you find critical points of failure and potential risk areas. Focus in on your most critical services to ensure that their dependencies are performing well.
Display options
To make the graph less noisy, you can Hide nodes without dependencies. When scorecard overlay is enabled, you also have the option to Hide nodes without scores.
The dependency graph comes with seven pre-configured layouts. The default view is klay, but you can experiment with any of the options by selecting from Graph Layout.
Adding dependencies
There are three main ways to get dependencies into the graph. Within Cortex, you can manually define dependencies by hardcoding them into service and resource YAML files]. If you have an internal request tracing tool, you can import that data into Cortex via an API. If you’ve established an integration with an APM, like Datadog, Cortex will automatically import those dependencies — as long as the service name is equivalent in Cortex and your APM, dependencies will sync automatically.
Check out our docs to learn more about adding dependencies.
Comments
0 comments
Article is closed for comments.