How to Setup Prometheus and Grafana (Kubernetes Data) in Kubernetes 2021



At first create namespace, add helm repo and then insatll

kubectl create ns prometheus

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

helm install prometheus prometheus-community/kube-prometheus-stack --namespace prometheus 

 

Access using NodePorts

Note the services name of prometheus-metrics and grafana

kubectl get svc -n prometheus

You have to edit the service of prometheus and grafana using

kubectl edit svc/prometheus-kube-prometheus-prometheus -n prometheus
kubectl edit svc/prometheus-grafana -n prometheus

Change the type ClusterIP to NodePort  and save

Check the nodeports

kubectl get svc -n prometheus

You can simply access the grafana and prometheus dashboard by master ip of your kubernetes cluster and nodeport of prometheus-server and grafana. 

http://master-ip:nodeport

 

Access using ClusterIP and Nginx Ingress

Next, create the ingress for prometheus and grafana to access. If you have not setup metal lb and nginx ingress in your bare metal server then you can check the tutorial here https://www.shawonruet.com/2021/09/how-to-setup-metal-lb-for-nginx-ingress.html

If you are using eks or aks then just setup the nginx ingress only

promtheus-ingress.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/configuration-snippet: |
more_set_headers "X-Frame-Options: Deny";
more_set_headers "X-Xss-Protection: 1; mode=block";
more_set_headers "X-Content-Type-Options: nosniff";
name: prometheus-dashboard
namespace: prometheus
spec:
rules:
- host: prometheus.devops.com
http:
paths:
- backend:
service:
name: prometheus-kube-prometheus-prometheus
port:
number: 9090
path: /
pathType: ImplementationSpecific


grafana-ingress.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/configuration-snippet: |
more_set_headers "X-Frame-Options: Deny";
more_set_headers "X-Xss-Protection: 1; mode=block";
more_set_headers "X-Content-Type-Options: nosniff";
name: grafana-monitor
namespace: prometheus
spec:
rules:
- host: grafana.devops.com
http:
paths:
- backend:
service:
name: prometheus-grafana
port:
number: 3000
path: /
pathType: ImplementationSpecific


If you are using bare metal and want to use local dns then give the loadbalancer ip and prometheus and grafana host domain name entry in /etc/hosts file.





Share on Google Plus

About Ashadullah Shawon

I am Ashadullah Shawon. I am a Software Engineer. I studied Computer Science and Engineering (CSE) at RUET. I Like To Share Knowledge. Learn More: Click Here
    Blogger Comment
    Facebook Comment

0 comments:

Post a Comment