Kubernetes monitor with Prometheus Operator

Ada beberapa tools untuk menginstall prometheus didalam kubernetes, tutorial ini gunakanĀ  prometheus-operator.

  • Clone Repository
git clone https://github.com/coreos/prometheus-operator.git
  • Install Prometheus Operator
kubectl create -f prometheus-operator/contrib/kube-prometheus/manifests/
  • Cek hasil deploy
kubectl get pods -n monitoring
kubectl get svc -n monitoring
  • Rubah service Grafana dan Prometheus jika diperlukan ke nodeport
kubectl --namespace monitoring edit svc grafana
kubectl --namespace monitoring edit svc prometheus-k8s

Storage

secara bawaan, prometheus tidak ada storage, jadi data akan hilang. maka dari itu diperlukan storage, tutorial ini menggunakan dynamic storage provisioning.

btech@zu-master:~$ kubectl -n monitoring get prometheus
NAME   AGE
k8s    1h

edit prometheus tersebut:

kubectl -n monitoring edit prometheus k8s

tambahkan storage provisioning

  storage:
    volumeClaimTemplate:
      spec:
        storageClassName: <STORAGE_CLASS>
        resources:
          requests:
            storage: <SIZE>

Additional Scrape Configuration

Secara default, prometheus akan menangkap semua pod didalam kubernetes dan menampilkannya digrafana, bagaimana jika kita mempunyai node diluar kubernetes ataupun port node-exporter yang tidak diexpose secara default? berikut adalah contohnya:

ubuntu@pod20-master:~$ kubectl get svc 
NAME                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
frontend-exporter-svc   ClusterIP   10.98.206.237   <none>        9117/TCP       16h

sebuah pod mengexpose exporter pada port 9117 dengan jenis apache exporter. buat file bernama prometheus-additional.yaml

- job_name: "apache2"
  static_configs:
  - targets: ["frontend-exporter-svc.default:9117"]

targetnya adalah nama service dan namespacenya, bisa juga dengan menggunakan cluster ipnya. Buat secret yamlnya

kubectl create secret generic additional-scrape-configs --from-file=prometheus-additional.yaml --dry-run -oyaml > additional-scrape-configs.yaml

buat secret

ubuntu@pod20-master:~/apache2$ kubectl create -f additional-scrape-configs.yaml -n monitoring
ubuntu@pod20-master:~/apache2$ kubectl get secret -n monitoring
NAME                              TYPE                                  DATA   AGE
additional-scrape-configs         Opaque                                1      10s

Update value

cd prometheus-operator/contrib/kube-prometheus/manifests/
nano prometheus-prometheus.yaml
spec:
  ...
  additionalScrapeConfigs:
    name: additional-scrape-configs
    key: prometheus-additional.yaml
  ...

Update prometheus

kubectl apply -f prometheus-prometheus.yaml

Cek dashboard prometheus

dengan grafana dashboard, berikut hasilnya

Comments are closed.