• Stars
    star
    191
  • Rank 202,877 (Top 4 %)
  • Language
    TypeScript
  • License
    Apache License 2.0
  • Created over 5 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Grafana panel for visualizing a Service Dependency Graph.

Novatec Service Dependency Graph Panel

Downloads License

SDG_PRESENTATION

Version 4.0.0 is only compatible with Grafana from version 7.1.0!

The Service Dependency Graph Panel by Novatec provides you with many features such as monitoring your latencies, errors and requests of your desired service. This interactive panel for Grafana will help you visualize the processes of your application much better.

Updating the Service Dependency Graph Panel

The file structure for the icon mapping has changed for version 4.0.0. Icons are now located in the path 'plugins/novatec-sdg-panel/assets/icons/'. This also applies to custom icons!


Configuration of the Data Source

Using Static Dummy Data

If you want to get a first impression of this panel without having your own data source yet, the panels provides you some dummy data to play around with.

The dummy data is basically a snapshot of multiple query results in the table format. You'll find its source here, in the panel's GitHub repository.

Depending on the query result, the data provides the following tags:

  • service: The service (application) the data is related to.
  • namespace: The namespace of a service. Every literal divided by "." corresponds to one level of a namespace. For instance demo.infrastructure.
  • protocol: The communication type (e.g. HTTP, JMS, ...).
  • origin_service: In case of an incoming communication, this is the origin service.
  • target_service: In case of an outgoing communication, this is the target service.
  • origin_external: The origin of an incoming communication, which cannot be correlated to a known serive (e.g. HTTP request of a third party application).
  • target_external: The target of an outgoing communication, which cannot be correlated to a known serive (e.g. third party HTTP endpoint).

Depending on the query result, the data provides the following fields:

  • in_timesum: The total sum of all incoming request response times. (Prometheus style)
  • in_count: The total amount of incoming requests.
  • error_in: The amount of incoming requests which produced an error.
  • out_timesum: The total sum of all outgoing request response times. (Prometheus style)
  • out_count: The total amount of outgoing requests.
  • error_out: The amount of outgoing requests which produced an error.
  • threshold: The critical threshold in miliseconds for the response times of incoming requests.

In order to use this data you simply have to activate the Dummy Data Switch you can find in the General Settings. All necessary options will be applied. After activating the Dummy Data your Data Mapping should look like this:

key value
Response Time in_timesum
Request Rate in_count
Error Rate error_in
Response Time (Outgoing) out_timesum
Request Rate (Outgoing) out_count
Error Rate (Outgoing) error_out
Response Time Baseline (Upper) threshold

Note that you may have to refresh the dashboard or reload the page in order for it to work.

Live example dummy data

Downloading and launching the inspectIT Ocelot demo #1 will provide you with live dummy data rather than static one. Just open the docker images' Grafana and choose the dashboard Service Graph to see the fully functional Service Dependency Graph.


Use your own Data Source

If you now want to use your own data source you have make sure, that the data received is in the TABLE format and is structured as follows:

  • The table requires at least one column which specifies the connection's source or target. The settings Source Component Column and Target Component Column need to be set to the exact namings of the respective fields.

  • The data can contain multiple value columns. These columns have to be mapped on specifc attributes using the panel's Data Mappings options. Example: Assuming the data table contains a column named req_rate which values represents a request rate for the related connection in the current time window. In order to correctly visualize these values as a request rate, the Request Rate Column option has to be set to req_rate - the column's name.

Examples

Example 1

If the previously described requirements are respected, a minimal table can be as follows:

app target_app req_rate
service a service b 50
service a service c 75
service c service d 25

Assuming the panel's settings are specified as seen in the screenshot, the panel will visualize the data as following:

Visualization of the minimal data table.

Note: It is important to know that connections can only be generated if at least one request-rate column (incoming or outgoing) is defined.

Example 2

In this example, we extend the data table of example 1 by another column, representing the total sum of all request response times of a specific connection (e.g. sum of all HTTP request response times).

app target_app req_rate resp_time
service a service b 50 4000
service a service c 75 13650
service c service d 25 750

Now, the panel's Data Mappings option Response Time Column is set to resp_time. This specifies that the value in the resp_time column should be handled as the response time for a connection. By default, the values in this column will be handled as a sum of all response times - kind of a Prometheus style metric. This behavior can be changed by using the Handle Timings as Sums option. This table will result in the following visualization.

Visualization of a data table including request rate and response times.


Service Icons

The service dependency graph plugin allows you to display your own symbols in the drawn nodes. For this purpose the option 'Service Icon Mapping' can be used. Here you can specify an assignment of icons to certain name patterns. All nodes that match the specified pattern (regular expression) will get the icon.

Custom service icons in the graph.

Example

A sample assignment is included by default: Pattern: java // Icon: java. This means that all nodes which have java in their name get the java icon.

Custom Service Icons

You can add custom icons, by putting them into the plugin's /assets/icons/ directory. The file type has to be PNG and the icon itself and has to be square. In order to be able to use the icon, its name (without its ending) has to be put into the array contained in the icon_index.json file located in the /assets/icons/ directory.

Example

If the icon_index.json has the following content:

["java", "star_trek"]

it is assumed that the files java.png and star_trek.png is existing in the /assets/icons/ directory.


Tracing Drilldown

The service dependency graph plugin allows you to specify a backend URL for each drawn node. For this purpose the option 'Tracing Drilldown' can be used. Here you can specify a backend URL. An open and closed curly bracket {} is the placeholder for the selected node. Each node will get an arrow icon in the details view. This icon is a link to your backend, specified in the options. The curly brackets {} will be replaced with the selected node.

Example

http://{}/my/awesome/path will end up to http://customers-service/my/awesome/path when you select the customers-service.


Layering

From version 4.1.0, the Service Dependency Graph Panel supports layering service nodes by their respective namespace.

Setup

To use this feature, add a tag containing the namespace of your service to your data. Then set the corresponding option Namespace Column in the panel's options to the name of this tag. If you have more than one namespace layer you want to be represented by the panel, you can separate multiple namespaces within your namespace tag by a certain character. This character must be set as the Namespace Delimiter in the panel's options. The default delimiter is .. Hence, if the content of a namespace column would be my.awesome.namespace, the graph would be built with my as layer 0, awesome as layer 1, and namespace as layer 2. Your respective service would then be on layer 3.

Usage

You can control the layer of your panel by using the (+) and (-) buttons on the panel's top-right. (+) increases the layer currently displayed, (-) decreases the layer.


Create a Release

To create a release bundle, ensure release-it is installed:

npm install --global release-it

To build a release bundle:

release-it [--no-git.requireCleanWorkingDir]

Found a bug? Have a question? Wanting to contribute?

Feel free to open up an issue. We will take care of you and provide as much help as needed. Any suggestions/contributions are being very much appreciated.

More Repositories

1

FaceRecognition-in-ARKit

Detects faces using the Vision-API and runs the extracted face through a CoreML-model to identiy the specific persons.
Swift
832
star
2

JMeter-InfluxDB-Writer

Plugin for JMeter that allows to write load test data on-the-fly to influxDB.
Java
78
star
3

keycloak-user-storage

A custom user storage for Keycloak
Java
71
star
4

grafana-dashboard-synchronizer

A Grafana backend plugin for automatic synchronization of dashboard between multiple Grafana instances.
Go
39
star
5

fastlane-plugin-xcodegen

πŸš€ Fastlane plugin to generate the Xcode-Project with xcodegen
Ruby
32
star
6

BeanTest

Bean Testing for Java EE Applications
Java
25
star
7

grafana-ldap-sync-script

A script to get Grafana users, teams and their permissions from an LDAP server and keep it in sync.
Python
24
star
8

YATT

Kotlin
19
star
9

ca-apm-grafana-datasource

CA APM (fka Wily Introscope) Data Source Plugin for Grafana
TypeScript
17
star
10

blog-microservices-testing-nodejs-typescript

TypeScript
13
star
11

betting-game-frontend

CSS
13
star
12

fastlane-plugin-android_emulator

πŸš€ Fastlane plugin to create and start an Android Emulator
Ruby
12
star
13

blog-contract-testing-with-pact

Java
12
star
14

opentelemetry-training

Python
12
star
15

camunda-process-instance-migrator

Process Instance Migrator for Camunda Platform
Java
11
star
16

SemanticSegmentation-Examples

Jupyter Notebook
11
star
17

fastlane-plugin-android_sdk_update

πŸš€ Fastlane plugin to install and update required Android-SDK packages
Ruby
10
star
18

stereotype-check

If you don't check your architecture it doesn't really exists: Checkstyle plugin extension to verify imports and usage between classes
Java
10
star
19

fastlane-plugin-brew

πŸš€ Fastlane plugin to run Homebrew/Linuxbrew command
Ruby
10
star
20

developer-security-training

All Labs of the Security for Developers Training
Shell
10
star
21

ws-cloud-native-testing

Workshop Examples: Cloud Native Testing
Kotlin
9
star
22

novatec-grafana-discrete-panel

Extended version of the Grafana Discrete Panel Plugin
TypeScript
9
star
23

boomerang-opentelemetry-plugin

Boomerang Plugin for collecting spans and exporting them to an OpenTelemetry Collector
TypeScript
9
star
24

camunda-aws-s3-connector

A connector to interact with an AWS S3 bucket
Java
9
star
25

camunda-bpmn-documentation-generator

Kotlin
9
star
26

custom-camunda-history-application

Plugin to allow for object-specific configuration of Camunda BPM History on engine oder process-model level
Java
8
star
27

tc-kafka-service-mesh

Showcases different examples for Kafka proxies and an Istio service mesh.
Shell
8
star
28

betting-game-backend

Kotlin
8
star
29

camunda-voice-control

JavaScript
7
star
30

blog-contract-testing-with-spring-cloud-contract

Java
7
star
31

it-tage-ffm-2023-devops

HTML
7
star
32

camunda-platform-7-cinema

BPMN process to book seats for a movie in a cinema. If the booking goes through, a QR Code with the process id is generated. This showcase is used to show different techniques in BPMN.
Java
7
star
33

apm-performance-regression

Python
6
star
34

MarioAI

MarioAI Challenge
TypeScript
6
star
35

intelligent-process-automation-showcase

As an Intelligent Process Automation showcase. We combined Business Process Management with Artificial Intelligence, and the result was awesome! Find out more: https://www.novatec-gmbh.de/en/blog/ipa-camunda-comprehend/
Python
6
star
36

react-workshop

CSS
5
star
37

influx-baselining

Java
5
star
38

kapacitor-ms-teams-handler

Python
5
star
39

technologyconsulting-containerexerciseapp

HTML
4
star
40

hack21-language-is-a-powerful-tool

TypeScript
4
star
41

cbdg-maven-test

Maven test project for camunda-bpmn-documentation-generator
Shell
4
star
42

opencensus-influx-exporter

Exporter for directly pushing metrics to InfluxDB via OpenCensus.
Java
3
star
43

tc-showcase-apicurio

Showcase to evaluate the usage of Apicurio Registry and AsyncAPI.
Java
3
star
44

boomerang-spa-xhr-navigation

Boomerang plugin which enables SPA-Navigation detection based on XHR-Requests
JavaScript
3
star
45

technologyconsulting-showcase-infrastructure

HCL
3
star
46

novatec-grafana-text-panel

Customized text panel
TypeScript
3
star
47

POD

Plattform for Orchestation and Deployment - A modern Cloud Plattform based on Open Source technology
3
star
48

camunda-platform-8-cinema

Showcase for Camunda Cloud where a person can reserve seats for a movie.
Java
2
star
49

technologyconsulting-simpleweb

Java
2
star
50

marketing-metrics-collector

Java
2
star
51

novatec-k8s-panel

TypeScript
2
star
52

old-aqe-blogposts

Kotlin
2
star
53

angular-workshop

Angular Workshop for Business
TypeScript
2
star
54

novatec-avatar-generator

Novatec Avatar Generator idea for Hackathon 12.02.2021
JavaScript
2
star
55

camunda-best-practices-showcases

In this repository we showcase best practices relating to doing BPM with Camunda Platform or Camunda Cloud
2
star
56

tc-showcase-rabbitmq

RabbitMQ showcase implementing messaging patterns using different AMQP 1.0 and AMQP 0.9.1 clients
Java
2
star
57

boomerang-sbom

Repository containing software bill of materials of boomerang releases.
2
star
58

mqtt-meets-web-blog

TypeScript
2
star
59

influxdb-dwh-exporter

Tool for providing an HTTP endpoint to retrieve predefined aggregations on metrics of an InfluxDB.
Java
2
star
60

react-workshop-reactive-business-application

Possible Solution for the react Workshop ToDo Application
TypeScript
2
star
61

flowable-process-modeler

Spring boot project to run the Flowable Process Modeler
Java
2
star
62

tc-asyncapi-directory

Angular application to display AsyncAPI specifications that were pulled from Kafka using Kafka Spring
Java
2
star
63

tc-paia-examples

Useful examples for every day use
Mustache
1
star
64

kapacitor-jira-handler

Python
1
star
65

technologyconsulting-showcase-orderdomain

Java
1
star
66

technologyconsulting-showcase-supplierdomain

Java
1
star
67

understanding-coroutines

Kotlin
1
star
68

technologyconsulting-showcase-manufacturedomain

Java
1
star
69

camunda-platform-8-cinema-micronaut

Example application of a ticket reservation process to show how a zeebe worker can be implemented with the micronaut zeebe integration
Java
1
star
70

cop-frontend-coding-challenge

1
star
71

marketing-metrics-dashboard

Dashboard for Marketing Metrics
HTML
1
star
72

cbdg-maven-plugin

A Maven Plugin for CBDG
Shell
1
star
73

tc-paia-kafka-examples

Examples for Kafka and Kafka Streams usage
Java
1
star
74

quarkus-library-app

Kotlin
1
star
75

micronaut-library-app

A Micronaut-based version of the Library App (nt-ca-aqe/library-app)
Kotlin
1
star
76

technologyconsulting-cpj-infrastructure

Shell
1
star
77

bpm-interviews

Collection of projects for interviewing applicants for the BPM PA
Java
1
star
78

tc-apicurio-quickstart

Quick setup to test Apicurio and AsyncAPI
Shell
1
star
79

playground-kafka-integration

Shell
1
star
80

hello-world-in-90-languages

C
1
star
81

showcase-spring-http

Demonstrate different approaches for HTTP based communication in Spring
Java
1
star
82

blog-junit5-parameter-resolver

Java
1
star