Legend builds and publishes Grafana dashboards for your services with prefilled metrics and alerts for your services.
The legendary tool which builds and manages grafana dashboards for your applications
Legend builds and publishes Grafana dashboards for your services with prefilled metrics and alerts for your services.
Say you got an EC2 to monitor, an S3 to monitor, a Kubernetes cronjob to monitor (or one of many other things); legend has got your back. It will do all the menial work of setting up grafana dashboards for you without you needing to setup grafana dashboards manually or write cloudwatch/prometheus/influxdb queries by hand.
This section describes on how to get started with using Legend.
For each component of your service, there has to be a respective metric files in
legend/metrics_library/metrics/which containes the metrics to be plotted for that component. If you are adding a new component(and a new metric library file) please refer to contributing-to-metric-library
Based on the component an additional step of enabling metrics for the component has to happen. The monitoring queries written are based on specific exporters userd to expose the metrics, mentioned in enabling metrics. If other exporters are used, the queries might have to be changed.
You can use
legendin one of the two ways:
The recommended way to use Legend is to deploy it in Kubernetes
You need to create an input file describing the components of your service writing-input-file
Legend installs as a CRD in Kubernetes
Required kubernetes >= 1.16
Installation Quick instructions Legend is installed via helm:
helm repo add legend https://grofers.github.io/legend
helm install legend legend/legend -f values.yaml
Legend Helm Chart is hosted here
Usage
To use legend via its CRD (Current version: v1beta1), create a spec file in the following format:
apiVersion: grofers.io/v1beta1 kind: GrafanaDashboard metadata: name: # Name of the object internally labels: app: # Add name for reference spec: apiVersion: grofers.io/v1beta1 kind: GrafanaDashboard grafana_dashboard_spec: # The core spec/configuration on the basis of which legend will build the dashboards #Dashboard Spec
Format for spec.grafanadashboardspec
To create/update/delete the dashboard, run:
kubectl apply -f kubectl delete -f
Legend can also be installed as a CLI and used to create dashboards.
At the current stage, Legend can only create dashboards but not delete them becuase it does not record the state of dashboards it created anywhere
Installation
Legend requires python3. It is recommended to install legend in a virtual env
brew install jsonnet mkvirtualenv -p `which python3` legend pip install git+https://github.com/grofers/legend legend configure
Configuration
LEGEND_HOMErepresents the home directory of Legend, by default it is the home directory of the user. You can override by setting the
LEGEND_HOMEenv variable while running legend
Legend needs a configuration file to talk to Grafana, by default it searches for it in
LEGEND_HOME/.legend/legend.cfg, you can over-ride this with passing
-coption while runing the commands.
The format for legend.cfg:
This is pre-requisite to run legend as a CLI.
[grafana] api_key = # Grafana key with write permission if you are using Legend to create a dashboard, if not read permissions to get the alerting id protocol = [https|http] # ex: https host = # Grafana host url
To configure legend
legend configure
Running legend
Usage: legend [OPTIONS] COMMAND [ARGS]...Options: --help Show this message and exit.
Commands: apply build configure publish
You can contribute to legend in two ways:
Developing/improving legend's functionality
Improve the metrics legend creates for a service * This is one of the biggest offerings of Legend - pre configured metrics for a wide variety of components. * If you are contibuting to the existing metrics or writing new ones please follow the giude contributing-to-metric-library * To Run e2e tests locally follow the guide testing on legend.