Ubuntu 22.04
Sponsored Link

Kubernetes : Prometheus तैनात करें2023/09/04

 
Kubernetes क्लस्टर में मेट्रिक्स की निगरानी के लिए Prometheus को तैनात करें।
यह उदाहरण निम्न प्रकार से पर्यावरण पर आधारित है।
-----------+---------------------------+--------------------------+------------
           |                           |                          |
       eth0|10.0.0.25              eth0|10.0.0.71             eth0|10.0.0.72
+----------+-----------+   +-----------+-----------+   +-----------+-----------+
|  [ ctrl.srv.world ]  |   |  [snode01.srv.world]  |   |  [snode02.srv.world]  |
|     Control Plane    |   |      Worker Node      |   |      Worker Node      |
+----------------------+   +-----------------------+   +-----------------------+

[1]
Prometheus के लिए एक सतत भंडारण की आवश्यकता है।
इस उदाहरण पर, कंट्रोल प्लेन नोड पर एनएफएस सर्वर स्थापित करें और [/home/nfsshare] निर्देशिका को एनएफएस शेयर के रूप में बाहरी लगातार स्टोरेज के रूप में कॉन्फ़िगर करें, और एनएफएस प्लगइन के साथ डायनेमिक वॉल्यूम प्रोविजनिंग को भी कॉन्फ़िगर करें जैसे कि [1], [2], [3]
[2] Helm के साथ Prometheus चार्ट स्थापित करें।
# आउटपुट कॉन्फ़िगरेशन और कुछ सेटिंग्स बदलें

root@ctrl:~#
helm inspect values bitnami/kube-prometheus > prometheus.yaml

root@ctrl:~#
vi prometheus.yaml
.....
.....
    पंक्ति 18: उपयोग करने के लिए [storageClass] निर्दिष्ट करें
    storageClass: "nfs-client"
.....
.....
.....
    पंक्ति 995: उपयोग करने के लिए [storageClass] निर्दिष्ट करें
    storageClass: "nfs-client"
.....
.....
.....
    पंक्ति 1840: उपयोग करने के लिए [storageClass] निर्दिष्ट करें
    storageClass: "nfs-client"

# प्रोमेथियस के लिए एक नामस्थान बनाएँ

root@ctrl:~#
kubectl create namespace monitoring

namespace/monitoring created
root@ctrl:~#
helm install prometheus --namespace monitoring -f prometheus.yaml bitnami/kube-prometheus

NAME: prometheus
LAST DEPLOYED: Thu Nov  3 07:23:48 2022
NAMESPACE: monitoring
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: kube-prometheus
CHART VERSION: 8.1.11
APP VERSION: 0.60.1

** 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

root@ctrl:~#
kubectl get pods -n monitoring -o wide

NAME                                                           READY   STATUS    RESTARTS      AGE     IP                NODE                NOMINATED NODE   READINESS GATES
alertmanager-prometheus-kube-prometheus-alertmanager-0         2/2     Running   1 (96s ago)   106s    192.168.211.131   snode02.srv.world   <none>           <none>
prometheus-kube-prometheus-blackbox-exporter-ff46dc456-ft2z2   1/1     Running   0             2m11s   192.168.211.130   snode02.srv.world   <none>           <none>
prometheus-kube-prometheus-operator-6b75d4f48b-vf95h           1/1     Running   0             2m11s   192.168.186.67    snode01.srv.world   <none>           <none>
prometheus-kube-state-metrics-85647b4c64-r58qp                 1/1     Running   0             2m11s   192.168.186.68    snode01.srv.world   <none>           <none>
prometheus-node-exporter-lmww4                                 1/1     Running   0             2m11s   10.0.0.72         snode02.srv.world   <none>           <none>
prometheus-node-exporter-zt5dp                                 1/1     Running   0             2m11s   10.0.0.71         snode01.srv.world   <none>           <none>
prometheus-prometheus-kube-prometheus-prometheus-0             2/2     Running   0             106s    192.168.186.69    snode01.srv.world   <none>           <none>

# यदि क्लस्टर के बाहर से पहुंच है, तो पोर्ट-फ़ॉरवर्डिंग सेट करें

root@ctrl:~#
kubectl port-forward -n monitoring service/prometheus-kube-prometheus-prometheus --address 0.0.0.0 9090:9090

[3] यदि आप Grafana भी तैनात करते हैं, तो यह निम्नानुसार संभव है।
# आउटपुट कॉन्फ़िगरेशन और कुछ सेटिंग्स बदलें

root@ctrl:~#
helm inspect values bitnami/grafana > grafana.yaml

root@ctrl:~#
vi grafana.yaml
# पंक्ति 552 : अपने [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: Thu Nov  3 07:40:10 2022
NAMESPACE: monitoring
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: grafana
CHART VERSION: 8.2.15
APP VERSION: 9.2.3

** 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)"

root@ctrl:~#
kubectl get pods -n monitoring

NAME                                                           READY   STATUS    RESTARTS      AGE
grafana-57dc4598d9-zhwvg                                       1/1     Running   0             68s
.....
.....

# यदि क्लस्टर के बाहर से पहुंच है, तो पोर्ट-फ़ॉरवर्डिंग सेट करें

root@ctrl:~#
kubectl port-forward -n monitoring service/grafana --address 0.0.0.0 3000:3000

[4]
यदि आप क्लस्टर में होस्ट से Prometheus यूआई तक पहुंचते हैं, तो वेब ब्राउज़र के साथ नीचे दिए गए यूआरएल तक पहुंचें।
⇒ http://prometheus-kube-prometheus-prometheus.monitoring.svc.cluster.local
यदि आप पोर्ट-फ़ॉरवर्डिंग सेट करते हैं, तो अपने स्थानीय नेटवर्क में क्लाइंट कंप्यूटर पर नीचे दिए गए यूआरएल तक पहुंचें।
⇒ http://(Control Plane नोड होस्टनाम या आईपी पता):(सेटिंग पोर्ट)/
यदि निम्नलिखित Prometheus UI प्रदर्शित होता है तो यह ठीक है।
[5]
यदि आप क्लस्टर में होस्ट से Grafana तक पहुंचते हैं, तो वेब ब्राउज़र के साथ नीचे दिए गए URL तक पहुंचें।
⇒ http://grafana.monitoring.svc.cluster.local
यदि आप पोर्ट-फ़ॉरवर्डिंग सेट करते हैं, तो अपने स्थानीय नेटवर्क में क्लाइंट कंप्यूटर पर नीचे दिए गए यूआरएल तक पहुंचें।
⇒ http://(Control Plane नोड होस्टनाम या आईपी पता):(सेटिंग पोर्ट)/
यदि निम्नलिखित ग्राफाना यूआई प्रदर्शित होता है तो यह ठीक है।
[admin] पासवर्ड के लिए, नीचे दिए गए आदेश से पुष्टि करना संभव है।
⇒ echo "Password: $(kubectl get secret grafana-admin --namespace monitoring -o jsonpath="{.data.GF_SECURITY_ADMIN_PASSWORD}" | base64 -d)"
मिलान सामग्री