How to Set Up Prometheus, AlertManager and Grafana in Kubernetes Using Helm

helm kubernetes prometheus alertmanager grafana

3 min read | by Jordi Prats

We can use the Kube Prometheus Stack Helm chart to deploy a full monitoring stack in Kubernetes. It's going to install Prometheus, AlertManager and Grafana with minumum configuration.

Add the Prometheus Helm Repository

The first step is to add the Prometheus community Helm chart repository, which contains the necessary charts for setting it up:

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update

Install the Kube Prometheus Stack

Next, we'll create a dedicated namespace for the Prometheus stack and install the Kube Prometheus Stack Helm chart into it:

kubectl create ns promstack
helm install promstack --namespace promstack prometheus-community/kube-prometheus-stack

Verify Installation

Once the installation is complete, we can check the status of the pods to ensure everything is running:

$ kubectl get pods -n promstack
NAME                                                  READY   STATUS              RESTARTS   AGE
promstack-grafana-574c64cbd9-dnd4m                    0/3     ContainerCreating   0          18s
promstack-kube-prometheus-operator-79dc776f85-6cwnd   0/1     ContainerCreating   0          18s
promstack-kube-state-metrics-5cbfd64574-rw574         0/1     ContainerCreating   0          18s
promstack-prometheus-node-exporter-wbfn4              0/1     ContainerCreating   0          18s

We might get a ContainerCreating status for a few minutes until all the containers are up and running. After a while, we should see the pods in a Running state:

$ kubectl get pods -n promstack
NAME                                                    READY   STATUS    RESTARTS   AGE
alertmanager-promstack-kube-prometheus-alertmanager-0   2/2     Running   0          39s
prometheus-promstack-kube-prometheus-prometheus-0       1/2     Running   0          39s
promstack-grafana-574c64cbd9-dnd4m                      3/3     Running   0          119s
promstack-kube-prometheus-operator-79dc776f85-6cwnd     1/1     Running   0          119s
promstack-kube-state-metrics-5cbfd64574-rw574           1/1     Running   0          119s
promstack-prometheus-node-exporter-wbfn4                1/1     Running   0          119s

At this point, all components (Prometheus, Grafana, AlertManager, etc.) should be running.

Accessing the services

The monitoring stack exposes several services, such as Prometheus, AlertManager, and Grafana, within your Kubernetes cluster. To check their details, run the following command:

$ kubectl get svc -n promstack
NAME                                     TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
alertmanager-operated                    ClusterIP   None            <none>        9093/TCP,9094/TCP,9094/UDP   83s
prometheus-operated                      ClusterIP   None            <none>        9090/TCP                     83s
promstack-grafana                        ClusterIP   10.96.2.187     <none>        80/TCP                       2m43s
promstack-kube-prometheus-alertmanager   ClusterIP   10.96.180.24    <none>        9093/TCP,8080/TCP            2m43s
promstack-kube-prometheus-operator       ClusterIP   10.96.68.245    <none>        443/TCP                      2m43s
promstack-kube-prometheus-prometheus     ClusterIP   10.96.106.156   <none>        9090/TCP,8080/TCP            2m43s
promstack-kube-state-metrics             ClusterIP   10.96.35.139    <none>        8080/TCP                     2m43s
promstack-prometheus-node-exporter       ClusterIP   10.96.92.218    <none>        9100/TCP                     2m43s

Since we haven't configured any Ingress or LoadBalancer, we can access the services using port-forwarding.

Prometheus

To access Prometheus, we can run:

kubectl port-forward svc/prometheus-operated 9090:9090 -n promstack

And then open a browser and navigate to http://localhost:9090 to access the Prometheus UI.

AlertManager

To access AlertManager, we can run:

kubectl port-forward svc/alertmanager-operated 9093:9093 -n promstack

This is going to use the local port 9093 to forward the traffic to the AlertManager service. We can then open a browser and navigate to http://localhost:9093 to access the AlertManager UI.

Grafana

In the case of Grafana, we can run:

kubectl port-forward svc/promstack-grafana 9080:80 -n promstack

Notice that we are using the local port 9080 to forward the traffic to the Grafana service. We can then open a browser and navigate to http://localhost:9080 to access the Grafana UI.


Posted on 09/09/2024