Megosztás:


Apache Kafka-metrikák gyűjtése a Prometheus felügyelt szolgáltatásával

Az Apache Kafka egy nyílt forráskódú, elosztott eseménystreamelési platform, amelyet nagy teljesítményű adatfolyamok, streamelemzések, adatintegráció és kritikus fontosságú alkalmazások használnak.

Ez a cikk ismerteti, hogyan konfigurálható az Azure Monitor Prometheus számára kezelt szolgáltatás az Azure Kubernetes Service (AKS) és az Azure Arc-kompatibilis Kubernetes használatával a Kafka-fürtök monitorozásához, a Prometheus-metrikák lekaparásával.

Előfeltételek

A Kafka-exportőr telepítése

Telepítse a Prometheus Kafka-exportőrt a Helm-diagram használatával:

helm install azmon-kafka-exporter --namespace=azmon-kafka-exporter --create-namespace --version 2.10.0 prometheus-community/prometheus-kafka-exporter --set kafkaServer="{kafka-server.namespace.svc:9092,.....}" --set prometheus.serviceMonitor.enabled=true --set prometheus.serviceMonitor.apiVersion=azmonitoring.coreos.com/v1

A Kafka Exporter Helm-diagramot értékekkel konfigurálhatja. Adja meg a megfelelő kiszolgálócímeket, ahol a Kafka-kiszolgálók elérhetők. Állítsa be a kiszolgálócímeket az argumentum kafkaServerhasználatával.

Feljegyzés

A Helm-diagram telepítésével rendelkező felügyelt Prometheus-szolgáltatás/podmonitor konfiguráció csak a Helm-diagram 2.10.0-s vagy újabb verziójával támogatott. Ha más szolgáltatás- vagy podmonitorokat szeretne konfigurálni, kövesse az alábbi utasításokat.

A Grafana-irányítópult importálása

Ha a Grafana-irányítópultot (7589-ös azonosítót) szeretné importálni a Kafka-exportőrben az azonosító vagy a JSON használatával, kövesse az Irányítópult importálása a Grafana Labsból című témakör utasításait.

Szabályok üzembe helyezése

  1. Töltse le a sablonfájlt és a paraméterfájlt a riasztási szabályokhoz.

  2. Szerkessze az alábbi értékeket a paraméterfájlban.

    Paraméter Érték
    azureMonitorWorkspace Az Azure Monitor-munkaterület erőforrás-azonosítója. Kérje le az Azure Monitor-munkaterület Áttekintés lapján található JSON-nézetből.
    location Az Azure Monitor-munkaterület helye. Kérje le az Azure Monitor-munkaterület Áttekintés lapján található JSON-nézetből.
    clusterName Az AKS vagy az Azure Arc-kompatibilis Kubernetes-fürt neve. A fürt Áttekintés oldalán lévő JSON-nézetből kérje le.
    actionGroupId A riasztási műveletcsoport erőforrás-azonosítója. Kérje le a műveletcsoport Áttekintés lapján található JSON-nézetből. További információ a műveletcsoportokról.
  3. Helyezze üzembe a sablont bármely standard módszerrel az Azure Resource Manager-sablonok telepítéséhez. Útmutatásért tekintse meg az Azure Monitor Resource Manager-sablonmintáit.

  4. A sablon üzembe helyezése után megtekintheti a szabályokat az Azure Portalon, a Prometheus-szabálycsoportok megtekintése című szakaszban leírtak szerint. Tekintse át a riasztási küszöbértékeket, és győződjön meg arról, hogy azok megfelelnek a fürtnek és a számítási feladatoknak. Ennek megfelelően frissítse a küszöbértékeket.

    Feljegyzés

    A szabályok hatóköre nem egy klaszterre terjed ki. Ha a szabályokat egy adott fürtre szeretné hatókörbe helyezni, tekintse meg a szabályok adott fürtre való korlátozásával kapcsolatos témakört.

További információ a Prometheus-riasztásokról. Ha bármilyen más nyílt forráskódú Prometheus riasztási/rögzítési szabályt szeretne használni, az az-prom-rules-converter használatával hozza létre az Azure-nak megfelelő Prometheus-szabályokat.

További JMX-exportőri metrikák lekérése a Strimzi használatával

Ha a Strimzi operátort használja a Kafka-fürtök üzembe helyezéséhez, telepítse a pod-monitorokat, hogy több JMX Exporter metrikát szerezzen meg.

A metrikákat a Kafka-fürtök üzembe helyezései során kell közzétenni, például a példák alapján a GitHubon. Tekintse meg a kafka-.*-metrics.yaml fájlokat a metrikák nyilvánosságra hozásához.

Az itt található podmonitorok feltételezik, hogy a Kafka számítási feladat üzembe helyezésének névtere kafka. Ennek megfelelően frissítse, ha a számítási feladatok egy másik névtérben vannak üzembe helyezve.

apiVersion: azmonitoring.coreos.com/v1
kind: PodMonitor
metadata:
  name: azmon-cluster-operator-metrics
  labels:
    app: strimzi
spec:
  selector:
    matchLabels:
      strimzi.io/kind: cluster-operator
  namespaceSelector:
    matchNames:
      - kafka
  podMetricsEndpoints:
  - path: /metrics
    port: http
---
apiVersion: azmonitoring.coreos.com/v1
kind: PodMonitor
metadata:
  name: azmon-entity-operator-metrics
  labels:
    app: strimzi
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: entity-operator
  namespaceSelector:
    matchNames:
      - kafka
  podMetricsEndpoints:
  - path: /metrics
    port: healthcheck
---
apiVersion: azmonitoring.coreos.com/v1
kind: PodMonitor
metadata:
  name: azmon-bridge-metrics
  labels:
    app: strimzi
spec:
  selector:
    matchLabels:
      strimzi.io/kind: KafkaBridge
  namespaceSelector:
    matchNames:
      - kafka
  podMetricsEndpoints:
  - path: /metrics
    port: rest-api
---
apiVersion: azmonitoring.coreos.com/v1
kind: PodMonitor
metadata:
  name: azmon-kafka-resources-metrics
  labels:
    app: strimzi
spec:
  selector:
    matchExpressions:
      - key: "strimzi.io/kind"
        operator: In
        values: ["Kafka", "KafkaConnect", "KafkaMirrorMaker", "KafkaMirrorMaker2"]
  namespaceSelector:
    matchNames:
      - kafka
  podMetricsEndpoints:
  - path: /metrics
    port: tcp-prometheus
    relabelings:
    - separator: ;
      regex: __meta_kubernetes_pod_label_(strimzi_io_.+)
      replacement: $1
      action: labelmap
    - sourceLabels: [__meta_kubernetes_namespace]
      separator: ;
      regex: (.*)
      targetLabel: namespace
      replacement: $1
      action: replace
    - sourceLabels: [__meta_kubernetes_pod_name]
      separator: ;
      regex: (.*)
      targetLabel: kubernetes_pod_name
      replacement: $1
      action: replace
    - sourceLabels: [__meta_kubernetes_pod_node_name]
      separator: ;
      regex: (.*)
      targetLabel: node_name
      replacement: $1
      action: replace
    - sourceLabels: [__meta_kubernetes_pod_host_ip]
      separator: ;
      regex: (.*)
      targetLabel: node_ip
      replacement: $1
      action: replace

Riasztások konfigurálása a Strimzi használatával

Ezekre a példákra hivatkozva számos, Strimzi-metrikán alapuló riasztást konfigurálhat.

Feljegyzés

Ha más módot használ a JMX exporter kiengedésére a Kafka-fürtön, kövesse a pod- vagy szolgáltatásmonitorok megfelelő konfigurálására vonatkozó utasításokat.

Grafana-irányítópultok megtekintése további JMX-metrikákhoz a Strimzi használatával

A Strimzi operátor által megjelenített metrikák irányítópultjainak megtekintéséhez tekintse meg a Strimzi Grafana-irányítópultjainak GitHub-helyét.

Hibaelhárítás

A szolgáltatásfigyelők vagy podmonitorok sikeres alkalmazásakor, ha meg szeretné győződni arról, hogy a bővítmény felveszi a szolgáltatásfigyelő céljait, kövesse az alábbi utasításokat.