CodeBlanks Logo Icon CodeBlanks

ServiceMonitor

ServiceMonitor ile scrape hedeflerini öğrenirsin.

ServiceMonitor

Prometheus Operator ile hedefler elle yapılandırılmaz; ServiceMonitor adlı özel kaynak, hangi Service'lerin hangi port ve yoldan okunacağını tanımlar. Operator bunu Prometheus yapılandırmasına çevirir:

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: api
  namespace: izleme
  labels:
    release: izleme
spec:
  namespaceSelector:
    matchNames: [magaza]
  selector:
    matchLabels:
      app: api
  endpoints:
    - port: http
      path: /metrics
      interval: 30s

Neden release etiketi?

Prometheus nesnesi yalnızca belirli etiketleri taşıyan ServiceMonitor'ları seçer; kube-prometheus-stack'te varsayılan seçici release: <release-adı>'dır. Etiket eksikse ServiceMonitor görmezden gelinir ve hedef Prometheus'un Targets sayfasında görünmez:

$ kubectl get prometheus -n izleme -o jsonpath='{.items[0].spec.serviceMonitorSelector}'
{"matchLabels":{"release":"izleme"}}
kubectl get servicemonitors -A

Uygulama ServiceMonitor yaz

Bir ServiceMonitor YAML'ı yaz: monitoring.coreos.com/v1; adı api, namespace'i izleme, etiketi release: izleme; selector.matchLabels app: api; tek uç nokta: port: http, path: /metrics, interval: 30s.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: api
  namespace: izleme
  labels:
    release: izleme
spec:
  selector:
    matchLabels:
      app: api
  endpoints:
    - port: http
      path: /metrics
      interval: 30s

Beklenen çıktı

servicemonitor.monitoring.coreos.com/api created

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 ServiceMonitor'daki port: http neye başvurur?

  • NodePort'a
  • Hedef Service'teki adlandırılmış port'a Doğru cevap
  • Container numarasına
  • Prometheus'un portuna

Açıklama: Service'te ports[].name: http tanımlı olmalıdır.

2 Okunacak uç nokta listesini yaz.

Soru
spec:
  selector:
    matchLabels:
      app: api
  ____:
    - port: http
      path: /metrics
Cevap
spec:
  selector:
    matchLabels:
      app: api
  endpoints:
    - port: http
      path: /metrics

Açıklama: endpoints port, path ve interval içerir.

3 Eşleştir.

Kavram Anlamı
ServiceMonitor Hedef tanımı
namespaceSelector Hangi namespace'ler
selector Hangi Service'ler
release etiketi Prometheus'un seçimi

İleri seviye bölümündeki tüm dersler