Grafana

SETTING UP GRAFANA DASHBOARD WITH PROMETHEUS DATA SOURCE

  • On Linked-In
3 min read
SETTING UP GRAFANA DASHBOARD WITH PROMETHEUS DATA SOURCE

WHAT IS GRAFANA?

Grafana is a multi-platform open-source visualization and monitoring tool that integrates with data from sources like Prometheus, InfluxDB, Graphite, and ElasticSearch. This software has been available since 2014. Grafana provides us a graph, the chart for a web connected to the data source. It can query or visualize your data source, and it doesn’t matter where they are stored.

WHAT IS PROMETHEUS?

Prometheus is an open-source system monitoring and alerting toolkit, which includes a rich, multidimensional data model, a concise and powerful query language called PromQL, and an efficient embedded time series database. The central Prometheus server scrapes and stores time series data. Most Prometheus components are written in Go, making them easy to build and deploy as static binaries.

PREREQUISITES

Ubuntu 18.04 server set, including a non-root user with Sudo privileges.

Install and Configure Docker.

Here, we’re setting up Grafana version 7 with Prometheus 2.17 version as a data source:

1. SETTING UP CONTAINER FOR GRAFANA-7.0

Pull the official image from the Docker hub and run the container: 

.fusion-syntax-highlighter-106 > .CodeMirror, .fusion-syntax-highlighter-106 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-106 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-106 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }Copy to ClipboardSyntax Highlighterdocker run -d -p 3000:3000 --name grafana grafana/grafana:### You can install the required plugins in a single step while running the container: .fusion-syntax-highlighter-107 > .CodeMirror, .fusion-syntax-highlighter-107 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-107 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-107 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }Copy to ClipboardSyntax Highlighterdocker run -d -p 3000:3000
--name=grafana
-e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource"
grafana/grafana### Once Grafana is up, it is accessible via http://HostIP:3000. The Default user and password is ‘admin.’

2. SETTING UP CONTAINER FOR PROMETHEUS

.fusion-syntax-highlighter-108 > .CodeMirror, .fusion-syntax-highlighter-108 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-108 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-108 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }Copy to ClipboardSyntax Highlighterdocker run –p 9090:9090 prom/prometheus config.file=/etc/prometheus/prometheus.yml### 3. ADDING PROMETHEUS AS A GRAFANA DATA SOURCE To make Prometheus the data source for Grafana, create a yaml file ‘datasource. yaml’  in the location ‘/etc/grafana/provisioning.’ A sample is given below:

.fusion-syntax-highlighter-109 > .CodeMirror, .fusion-syntax-highlighter-109 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-109 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-109 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }Copy to ClipboardSyntax HighlighterapiVersion: 1 data sources: - name: Prometheus type: prometheus access: proxy url: http://prometheus:9090We can set alert rules as a yaml file in the location ‘/etc/prometheus/’ of the Prometheus container. 

A sample alerting rule is given for reference:

.fusion-syntax-highlighter-110 > .CodeMirror, .fusion-syntax-highlighter-110 > .CodeMirror .CodeMirror-gutters {background-color:var(--awb-color1);}.fusion-syntax-highlighter-110 > .CodeMirror .CodeMirror-gutters { background-color: var(--awb-color2); }.fusion-syntax-highlighter-110 > .CodeMirror .CodeMirror-linenumber { color: var(--awb-color8); }Copy to ClipboardSyntax Highlightergroups: - name: Disk-usage rules: - alert: 'Low data disk space' expr: ceil(((node_filesystem_size_bytes{mountpoint!="/boot"} - node_filesystem_free_bytes{mountpoint!="/boot"}) / node_filesystem_size_bytes{mountpoint!="/boot"} * 100)) > 95 labels: severity: 'critical' annotations: title: "Disk Usage" description: 'Partition : {{$labels.mountpoint}}' summary: "Disk usage is {{humanize $value}}%" host: "{{$labels.instance}}"### RESOURCES https://prometheus.io/docs/prometheus/latest/installation

https://grafana.com/oss/prometheus

About the Author*### SREEDEVI J SSenior Cloud DevOps Engineer | Cloud Control

Cloud DevOps Engineer with more than five years of experience in supporting, automating, and optimizing deployments to hybrid cloud platforms using DevOps processes, tools, CI/CD, Docker containers and K8s in both Production and Development environments.

GRAFANA- * On Linked-In