Grafana Chord Panel Plugin enables users to create Chord Diagram panel in Grafana Dashboards. It is used to visualize the network connections. Connections with NetworkPolicy enforced will be highlighted. We use green color to highlight the connection with "Allow" NetworkPolicy enforced, red color to highlight the connection with "Deny" NetworkPolicy enforced. Panels are the building blocks of Grafana. They allow you to visualize data in different ways. For more information about panels, refer to the documentation on Panels. An example of Chord Panel Plugin:
The Chord Plugin is created using D3.js.
Supported Databases:
- ClickHouse
Currently the Chord Plugin is created for restricted uses, only for visualizing network flows between the source and destination, with enforced NetworkPolicy metadata. For correct loading of the data for the Chord Plugin, the query is expected to return the following fields, in arbitrary order.
- field 1: value to group by with name or an alias of
srcPod
- field 2: value to group by with name or an alias of
srcPort
- field 3: value to group by with name or an alias of
dstSvc
- field 4: value to group by with name or an alias of
dstSvcPort
- field 5: value to group by with name or an alias of
dstPod
- field 6: value to group by with name or an alias of
dstPort
- field 7: value to group by with name or an alias of
dstIP
- field 8: the metric value field with an alias of
bytes
- field 9: the metric value field with an alias of
revBytes
- field 10: value to group by with name or an alias of
egressNetworkPolicyName
- field 11: value to group by with name or an alias of
egressNetworkPolicyRuleAction
- field 12: value to group by with name or an alias of
ingressNetworkPolicyName
- field 13: value to group by with name or an alias of
ingressNetworkPolicyRuleAction
Clickhouse query example:
SELECT sourcePodName as srcPod,
destinationPodName as dstPod,
sourceTransportPort as srcPort,
destinationTransportPort as dstPort,
destinationServicePort as dstSvcPort,
destinationServicePortName as dstSvc,
destinationIP as dstIP,
SUM(octetDeltaCount) as bytes,
SUM(reverseOctetDeltaCount) as revBytes,
egressNetworkPolicyName,
egressNetworkPolicyRuleAction,
ingressNetworkPolicyName,
ingressNetworkPolicyRuleAction
from flows
GROUP BY srcPod, dstPod, srcPort, dstPort, dstSvcPort, dstSvc, dstIP, egressNetworkPolicyName, egressNetworkPolicyRuleAction, ingressNetworkPolicyName, ingressNetworkPolicyRuleAction
Installing on a local Grafana:
For local instances, plugins are installed and updated via a simple CLI command. Use the grafana-cli tool to install chord-panel-plugin from the commandline:
grafana-cli --pluginUrl https://downloads.antrea.io/artifacts/grafana-custom-plugins/theia-grafana-chord-plugin-1.0.0.zip plugins install theia-grafana-chord-plugin
The plugin will be installed into your grafana plugins directory; the default is
/var/lib/grafana/plugins
. More information on the cli tool.
Alternatively, you can manually download the .zip file and unpack it into your grafana plugins directory.
Installing to a Grafana deployed on Kubernetes:
In Grafana deployment manifest, configure the environment variable GF_INSTALL_PLUGINS
as below:
env:
- name: GF_INSTALL_PLUGINS
value: "https://downloads.antrea.io/artifacts/grafana-custom-plugins/theia-grafana-chord-plugin-1.0.0.zip;theia-grafana-chord-plugin"
Installed panels are available immediately in the Dashboards section in your Grafana main menu, and can be added like any other core panel in Grafana. To see a list of installed panels, click the Plugins item in the main menu. Both core panels and installed panels will appear. For more information, visit the docs on Grafana plugin installation.
This plugin is built with @grafana/toolkit, which is a CLI that enables efficient development of Grafana plugins. To customize the plugin and do local testings:
-
Install dependencies
cd grafana-chord-plugin yarn install
-
Build plugin in development mode or run in watch mode
yarn dev
or
yarn watch
-
Build plugin in production mode
yarn build
- Build a panel plugin tutorial
- Grafana documentation
- Grafana Tutorials - Grafana Tutorials are step-by-step guides that help you make the most of Grafana
- Grafana UI Library - UI components to help you build interfaces using Grafana Design System