Integrating Prometheus and Grafana

DevOps Assembly Line — Task 5

What is Prometheus?

Prometheus is an open-source tool; it is used to system monitoring and alerting.

What is Grafana?

Grafana supports querying Prometheus with beautiful personalized dashboards, graphs, and UI.

Task Overview-

Integrate Prometheus and Grafana and perform in the following way:

1. Deploy them as pods on top of Kubernetes by creating resources Deployment, Replica Set, Pods or Services

2. And make their data to remain persistent

3. And both of them should be exposed to the outside world.

Step 1

Service code for exposing the Prometheus-deployment

apiVersion: v1
kind: Service
metadata:
name: prometheus-service
labels:
app: prometheus1
spec:
ports:
- nodePort: 30851
port: 9090
targetPort: 9090
selector:
app: prometheus1
type: LoadBalancer

Step 2

Persistent volume claim (PVC)

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: prometheus-pv-claim
labels:
app: prometheus1
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi

Step 3

Config map code for scrapping and permanenting the prometheus.yml file.

kind:  ConfigMap
apiVersion: v1
metadata:
name: prometheus-script
data:
prometheus.yml: |
global:
scrap_interval: 15s
evaluation_interval: 15s
altering:
altermanagers:
- static_configs:
- targets:
rule_files:
scrap_configs:
- job_name: 'prometheus-node'
static_configs:
- targets: ['localhost:9090']
- job_name: 'testing_node'
static_configs:
- targets: ['192.168.99.103:9100']
labels:
app: 'prometheus'

Step 4

Deployment code of Prometheus.

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: prometheuspod
labels:
app: prometheus1
spec:
selector:
matchLabels:
app: prometheus1
strategy:
type: Recreate
template:
metadata:
labels:
app: prometheus1
spec:
containers:
- image: vish1234/prometheus:p2
name: prometheus1
ports:
- containerPort: 9090
name: prometheus1
volumeMounts:
- name: prom-script
mountPath: /etc/prometheus/prometheus.yml
subPath: prometheus.yml
- name: prometheus-persistent-storage
mountPath: /etc/prometheus
volumes:
- name: prometheus-persistent-storage
persistentVolumeClaim:
claimName: prometheus-pv-claim
- name: prom-script
configMap:
name: prometheus-script
defaultMode: 0744

Step 5

We will write a service code for Grafana.

apiVersion: v1
kind: Service
metadata:
name: grafana-service
labels:
app: grafana
spec:
ports:
- port: 3000
selector:
app: grafana
type: LoadBalancer

Step 6

PVC

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: grafana-pv-claim
labels:
app: grafana
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi

Step 7

Deployment of Grafana

apiVersion: apps/v1
kind: Deployment
metadata:
name: grafanapod
labels:
app: grafana
spec:
selector:
matchLabels:
app: grafana
strategy:
type: Recreate
template:
metadata:
labels:
app: grafana
spec:
containers:
- image: vimal13/grafana
name: grafana
ports:
- containerPort: 3000
name: grafana
volumeMounts:
- name: grafana-persistent-storage
mountPath: /var/lib/grafana
volumes:
- name: grafana-persistent-storage
persistentVolumeClaim:
claimName: grafana-pv-claim

Step 8

I have run the following commands for running both the files.

kubectl apply  -f  prometheus.yml 
kubectl apply -f grafana.yml

Snapshots.

Starting Prometheus
Deployment created.
Prometheus Querying.
login to Grafana
Grafan Interface — -UI
Graphana Dashboard.

--

--

--

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Basic calculator with Python and Tkinter

Klub Staking joins Sentinel Network

INDUSTRY USE CASES-KUBERNETES/OPENSHIFT

8584892730//7001340188//Reboxed customer Care number8584892730//7001340188//Reboxed customer Care…

Credit Checker: An efficient credit bureau connection API

Drinking tea and developing Minecraft server in golang

How technical are APIs?

Reasons Why Golang is Better Than Other Programming Languages

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Utkarsh Srivastava

Utkarsh Srivastava

More from Medium

Testing connectivity from a container

The .gitlab-ci.yml file Configuration Explained

Recipe OSS: How to use a custom domain name? (Alibaba Cloud)