Kubernetes : Prometheus तैनात करें2024/06/07 |
|
Kubernetes क्लस्टर में मेट्रिक्स की निगरानी के लिए Prometheus को तैनात करें। यह उदाहरण निम्न प्रकार के वातावरण पर आधारित है।
+----------------------+ +----------------------+
| [ ctrl.srv.world ] | | [ dlp.srv.world ] |
| Manager Node | | Control Plane |
+-----------+----------+ +-----------+----------+
eth0|10.0.0.25 eth0|10.0.0.30
| |
------------+--------------------------+-----------
| |
eth0|10.0.0.51 eth0|10.0.0.52
+-----------+----------+ +-----------+----------+
| [ node01.srv.world ] | | [ node02.srv.world ] |
| Worker Node#1 | | Worker Node#2 |
+----------------------+ +----------------------+
|
| [1] |
Prometheus के लिए स्थायी भंडारण की आवश्यकता है।
इस उदाहरण पर, NFS सर्वर पर [nfs.srv.world:/home/nfsshare] निर्देशिका को बाहरी संग्रहण के रूप में कॉन्फ़िगर करें, और NFS प्लगइन के साथ डायनेमिक वॉल्यूम प्रोविज़निंग को भी कॉन्फ़िगर करें जैसे कि यहाँ का उदाहरण [1] - [4]। |
| [2] | Prometheus चार्ट स्थापित करें। |
|
# आउटपुट कॉन्फ़िगरेशन और कुछ सेटिंग्स बदलें root@ctrl:~# helm inspect values bitnami/kube-prometheus > prometheus.yaml
root@ctrl:~#
vi prometheus.yaml
.....
.....
पंक्ति 21 : उपयोग करने के लिए [storageClass] निर्दिष्ट करें
storageClass: "nfs-client"
.....
.....
.....
पंक्ति 1249 : उपयोग करने के लिए [storageClass] निर्दिष्ट करें
storageClass: "nfs-client"
.....
.....
.....
पंक्ति 2327 : उपयोग करने के लिए [storageClass] निर्दिष्ट करें
storageClass: "nfs-client"
# Prometheus के लिए नामस्थान बनाएँ root@ctrl:~# kubectl create namespace monitoring namespace/monitoring created helm install prometheus --namespace monitoring -f prometheus.yaml bitnami/kube-prometheus
NAME: prometheus
LAST DEPLOYED: Fri Jun 7 05:04:00 2024
NAMESPACE: monitoring
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: kube-prometheus
CHART VERSION: 9.4.1
APP VERSION: 0.74.0
** Please be patient while the chart is being deployed **
Watch the Prometheus Operator Deployment status using the command:
kubectl get deploy -w --namespace monitoring -l app.kubernetes.io/name=kube-prometheus-operator,app.kubernetes.io/instance=prometheus
Watch the Prometheus StatefulSet status using the command:
kubectl get sts -w --namespace monitoring -l app.kubernetes.io/name=kube-prometheus-prometheus,app.kubernetes.io/instance=prometheus
Prometheus can be accessed via port "9090" on the following DNS name from within your cluster:
prometheus-kube-prometheus-prometheus.monitoring.svc.cluster.local
To access Prometheus from outside the cluster execute the following commands:
echo "Prometheus URL: http://127.0.0.1:9090/"
kubectl port-forward --namespace monitoring svc/prometheus-kube-prometheus-prometheus 9090:9090
Watch the Alertmanager StatefulSet status using the command:
kubectl get sts -w --namespace monitoring -l app.kubernetes.io/name=kube-prometheus-alertmanager,app.kubernetes.io/instance=prometheus
Alertmanager can be accessed via port "9093" on the following DNS name from within your cluster:
prometheus-kube-prometheus-alertmanager.monitoring.svc.cluster.local
To access Alertmanager from outside the cluster execute the following commands:
echo "Alertmanager URL: http://127.0.0.1:9093/"
kubectl port-forward --namespace monitoring svc/prometheus-kube-prometheus-alertmanager 9093:9093
WARNING: There are "resources" sections in the chart not set. Using "resourcesPreset" is not recommended for production. For production installations, please set the following values according to your workload needs:
- alertmanager.resources
- blackboxExporter.resources
- operator.resources
- prometheus.resources
- prometheus.thanos.resources
+info https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
root@ctrl:~# kubectl get pods -n monitoring NAME READY STATUS RESTARTS AGE alertmanager-prometheus-kube-prometheus-alertmanager-0 2/2 Running 0 66s prometheus-kube-prometheus-blackbox-exporter-7f9487fc-45vwl 1/1 Running 0 88s prometheus-kube-prometheus-operator-6d88786cf8-kmwdx 1/1 Running 0 88s prometheus-kube-state-metrics-5bfdb58c6d-9jzrk 1/1 Running 0 88s prometheus-node-exporter-bzswr 1/1 Running 0 88s prometheus-node-exporter-tdn7z 1/1 Running 0 88s prometheus-prometheus-kube-prometheus-prometheus-0 2/2 Running 0 66s # यदि क्लस्टर के बाहर से एक्सेस हो, तो पोर्ट-फ़ॉरवर्डिंग सेट करें root@ctrl:~# kubectl port-forward -n monitoring service/prometheus-kube-prometheus-prometheus --address 0.0.0.0 9090:9090 & |
| [3] | यदि आप ग्राफाना को भी तैनात करते हैं, तो यह निम्नानुसार संभव है। |
|
# आउटपुट कॉन्फ़िगरेशन और कुछ सेटिंग्स बदलें root@ctrl:~# helm inspect values bitnami/grafana > grafana.yaml
root@ctrl:~#
vi grafana.yaml # पंक्ति 612 : अपने [storageClass] में बदलें persistence: enabled: true ## If defined, storageClassName: <storageClass> ## If set to "-", storageClassName: "", which disables dynamic provisioning ## If undefined (the default) or set to null, no storageClassName spec is ## set, choosing the default provisioner. (gp2 on AWS, standard on ## GKE, AWS & OpenStack) ## storageClass: "nfs-client"root@ctrl:~# helm install grafana --namespace monitoring -f grafana.yaml bitnami/grafana
NAME: grafana
LAST DEPLOYED: Fri Jun 7 05:07:29 2024
NAMESPACE: monitoring
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: grafana
CHART VERSION: 11.3.3
APP VERSION: 11.0.0
** Please be patient while the chart is being deployed **
1. Get the application URL by running these commands:
echo "Browse to http://127.0.0.1:8080"
kubectl port-forward svc/grafana 8080:3000 &
2. Get the admin credentials:
echo "User: admin"
echo "Password: $(kubectl get secret grafana-admin --namespace monitoring -o jsonpath="{.data.GF_SECURITY_ADMIN_PASSWORD}" | base64 -d)"
# Note: Do not include grafana.validateValues.database here. See https://github.com/bitnami/charts/issues/20629
WARNING: There are "resources" sections in the chart not set. Using "resourcesPreset" is not recommended for production. For production installations, please set the following values according to your workload needs:
- grafana.resources
+info https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
root@ctrl:~# kubectl get pods -n monitoring NAME READY STATUS RESTARTS AGE alertmanager-prometheus-kube-prometheus-alertmanager-0 2/2 Running 0 4m10s grafana-66b58c8f46-kcgjq 1/1 Running 0 64s prometheus-kube-prometheus-blackbox-exporter-7f9487fc-45vwl 1/1 Running 0 4m32s prometheus-kube-prometheus-operator-6d88786cf8-kmwdx 1/1 Running 0 4m32s prometheus-kube-state-metrics-5bfdb58c6d-9jzrk 1/1 Running 0 4m32s prometheus-node-exporter-bzswr 1/1 Running 0 4m32s prometheus-node-exporter-tdn7z 1/1 Running 0 4m32s prometheus-prometheus-kube-prometheus-prometheus-0 2/2 Running 0 4m10s # यदि क्लस्टर के बाहर से एक्सेस हो, तो पोर्ट-फ़ॉरवर्डिंग सेट करें root@ctrl:~# kubectl port-forward -n monitoring service/grafana --address 0.0.0.0 3000:3000 & |
| [4] |
यदि आप क्लस्टर में किसी होस्ट से Prometheus UI तक पहुँचते हैं, तो वेब ब्राउज़र के साथ नीचे दिए गए URL तक पहुँचें।
⇒ http://prometheus-kube-prometheus-prometheus.monitoring.svc.cluster.local
यदि आप पोर्ट-फ़ॉरवर्डिंग सेट करते हैं, तो अपने स्थानीय नेटवर्क में क्लाइंट कंप्यूटर पर नीचे दिए गए URL तक पहुंचें।
⇒ http://(प्रबंधक नोड होस्टनाम या आईपी पता):(सेटिंग पोर्ट)/
यदि निम्नलिखित प्रोमेथियस यूआई प्रदर्शित होता है तो यह ठीक है।
|
|
|
| [5] |
यदि आप क्लस्टर में किसी होस्ट से ग्राफाना तक पहुँचते हैं, तो वेब ब्राउज़र के साथ नीचे दिए गए URL तक पहुँचें।
⇒ http://grafana.monitoring.svc.cluster.local
यदि आप पोर्ट-फ़ॉरवर्डिंग सेट करते हैं, तो अपने स्थानीय नेटवर्क में क्लाइंट कंप्यूटर पर नीचे दिए गए URL तक पहुंचें।
⇒ http://(प्रबंधक नोड होस्टनाम या आईपी पता):(सेटिंग पोर्ट)/
यदि निम्नलिखित ग्राफाना यूआई प्रदर्शित होता है तो यह ठीक है।
[admin] पासवर्ड के लिए, नीचे दिए गए कमांड से पुष्टि करना संभव है।⇒ echo "Password: $(kubectl get secret grafana-admin --namespace monitoring -o jsonpath="{.data.GF_SECURITY_ADMIN_PASSWORD}" | base64 -d)" |
|
|
|
|
|
| Sponsored Link |
|
|