All Projects → grofers → Legend

grofers / Legend

Licence: gpl-3.0
Legend builds and publishes Grafana dashboards for your services with prefilled metrics and alerts for your services.

Projects that are alternatives of or similar to Legend

Netdata
Real-time performance monitoring, done right! https://www.netdata.cloud
Stars: ✭ 57,056 (+38192.62%)
Mutual labels:  monitoring, grafana, observability
Grafana Dashboards
Grafana Dashboards
Stars: ✭ 228 (+53.02%)
Mutual labels:  monitoring, grafana, grafana-dashboard
Appmetrics
App Metrics is an open-source and cross-platform .NET library used to record and report metrics within an application.
Stars: ✭ 1,986 (+1232.89%)
Mutual labels:  monitoring, grafana, grafana-dashboard
Swagger Stats
API Observability. Trace API calls and Monitor API performance, health and usage statistics in Node.js Microservices.
Stars: ✭ 559 (+275.17%)
Mutual labels:  monitoring, grafana, observability
Grafana Influx Dashboard
Grafana InfluxDB scripted dashboard
Stars: ✭ 130 (-12.75%)
Mutual labels:  monitoring, grafana, grafana-dashboard
kafka-consumer-lag-monitoring
Client tool that exports the consumer lag of Kafka consumer groups to Prometheus or your terminal
Stars: ✭ 45 (-69.8%)
Mutual labels:  grafana, grafana-dashboard, monitoring-tool
Myperf4j
High performance Java APM. Powered by ASM. Try it. Test it. If you feel its better, use it.
Stars: ✭ 2,281 (+1430.87%)
Mutual labels:  monitoring, observability, monitoring-tool
victoriametrics-ru-links
Список постов и видеозаписей об VictoriaMetrics на русском языке
Stars: ✭ 1 (-99.33%)
Mutual labels:  grafana, grafana-dashboard, observability
Hastic Server
Hastic data management server for analyzing patterns and anomalies from Grafana
Stars: ✭ 292 (+95.97%)
Mutual labels:  monitoring, grafana, monitoring-tool
Cloudprober
An active monitoring software to detect failures before your customers do.
Stars: ✭ 1,269 (+751.68%)
Mutual labels:  monitoring, grafana, observability
Snowflake
Graphical SFTP client and terminal emulator with helpful utilities
Stars: ✭ 1,676 (+1024.83%)
Mutual labels:  monitoring, monitoring-tool
Pingprom
Prometheus uptime monitoring quickstart
Stars: ✭ 107 (-28.19%)
Mutual labels:  monitoring, grafana
Stackdriver Prometheus Sidecar
A sidecar for the Prometheus server that can send metrics to Stackdriver.
Stars: ✭ 91 (-38.93%)
Mutual labels:  monitoring, observability
Grafana Sync
Keep your Grafana dashboards in sync
Stars: ✭ 88 (-40.94%)
Mutual labels:  grafana, grafana-dashboard
Openitcockpit
openITCOCKPIT is an Open Source system monitoring tool built for different monitoring engines like Nagios, Naemon and Prometheus.
Stars: ✭ 108 (-27.52%)
Mutual labels:  monitoring, monitoring-tool
Grafana
The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
Stars: ✭ 45,930 (+30725.5%)
Mutual labels:  monitoring, grafana
Heplify Server
HEP Capture Server
Stars: ✭ 110 (-26.17%)
Mutual labels:  monitoring, grafana
Tcpdog
eBPF based TCP observability.
Stars: ✭ 119 (-20.13%)
Mutual labels:  monitoring, observability
Nload
Real-time network traffic monitor
Stars: ✭ 121 (-18.79%)
Mutual labels:  monitoring, monitoring-tool
Influxgraph
Graphite InfluxDB backend. InfluxDB storage finder / plugin for Graphite API.
Stars: ✭ 87 (-41.61%)
Mutual labels:  monitoring, grafana

Legend

The legendary tool which builds and manages grafana dashboards for your applications

License Release Artifact HUB

Grofers Engineering

What is Legend

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.

Table of contents

Features

  • Build dashboards for your services with prefilled metrics
  • Customizable alerts and panels
  • Automatic setup of basic alerts with priority and service mapping
  • Beautiful outlay of the dashboard to enable uniformity.
  • Currently, here are the following types of components which legend can plot for you:
    • Airflow
    • Amazon ALB
    • Celery
    • Consul
    • CouchDB
    • Django
    • Flask
    • Amazon ELB
    • Go
    • HAProxy
    • JMX
    • Loki
    • MySQL - RDS
    • MySQL - EC2
    • NGINX (Log-based metrics)
    • NodeJS
    • PostgreSQL
    • PgBouncer
    • Phoenix
    • EC2 Platform level metrics
    • Kubernetes CronJob
    • Kubernetes Deployment
    • Kubernetes Horizontal Pod Autoscaler
    • Kubernetes Ingress
    • Playframework
    • Promtail
    • RabbitMQ
    • Redis
    • S3
    • Sprintboot
    • SQS
    • Starlette
    • Hashicorp Vault
  • Legend currently has the capability to further have support for any other component, provided that component's log generation is backed by one of the following metric/log stores:
    • Cloudwatch
    • InfluxDB
    • Loki
    • Prometheus

Getting started

This section describes on how to get started with using Legend.

Pre-requisites

  • 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.

Using Legend

You can use legend in 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

Use legend in kubernetes

Legend installs as a CRD in Kubernetes

Required kubernetes >= 1.16

Installation Quick instructions Legend is installed via helm:

  • Add the helm repo: helm repo add legend https://grofers.github.io/legend
  • Configure Legend, make a local copy of values.yaml and edit the values as necessary
  • Deploy the chart: 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.grafana_dashboard_spec

To create/update/delete the dashboard, run:

kubectl apply -f <input-file.yaml>
kubectl delete -f <input-file.yaml>

Use Legend CLI

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_HOME represents the home directory of Legend, by default it is the home directory of the user. You can override by setting the LEGEND_HOME env 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 -c option 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

Contribution

You can contribute to legend in two ways:

Developing/improving legend's functionality

  • You can pick up the existing issues in the github repo of legend and work on the fixes.
  • Or, you can raise an issue (bug-report or feature-request).
  • Fork this repo and setup up a branch on your forked repo to work on the contribution.
  • Follow the guide developing on legend for getting a detailed idea about the rightful way of developing and testing over legend.
  • Raise the PR containing the reference to the issue it intends to solve.

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.

  • Raise a PR

Legend internals

Legend internals

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].