Dela via


Samla in Apache Kafka-metrik med hjälp av hanterad tjänst för Prometheus

Apache Kafka är en öppen källkod-baserad, distribuerad händelseströmmande plattform som används av högpresterande datapipelines, strömmande analys, dataintegration och kritiska applikationer.

Denna artikel beskriver hur man konfigurerar funktionen hanterad tjänst för Prometheus i Azure Monitor tillsammans med Azure Kubernetes Service (AKS) och Azure Arc-aktiverade Kubernetes för att övervaka Kafka-kluster genom att samla in Prometheus-metriker.

Förutsättningar

Installera Kafka Exporter

Installera Prometheus Kafka Exporter med hjälp av Helm-diagrammet:

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

Du kan konfigurera Kafka Exporter Helm-diagrammet med värden. Ange de rätta serveradresserna där Kafka-servrarna kan nås. Ställ in serveradresserna genom att använda argumentet kafkaServer.

Anteckning

En hanterad Prometheus-tjänst/pod-övervakningskonfiguration med Helm-diagraminstallation stöds endast med Helm-diagramversion 2.10.0 eller senare. Om du vill konfigurera någon annan tjänst eller podövervakning, följ dessa instruktioner.

Importera Grafana-instrumentpanelen

För att importera Grafana-instrumentpanelen (ID 7589) i Kafka Exporter genom att använda ID eller JSON, följ instruktionerna i Importera en instrumentpanel från Grafana Labs.

Distribuera regler

  1. Ladda ner mallfilen och parameterfilen för varningsregler.

  2. Redigera följande värden i parameterfilen.

    Parameter Värde
    azureMonitorWorkspace Resurs-ID för arbetsytan i Azure Monitor. Hämta det från JSON-vynÖversikt-sidan för Azure Monitor-arbetsytan.
    location Plats för Azure Monitor-arbetsyta. Hämta det från JSON-vynÖversikt-sidan för Azure Monitor-arbetsytan.
    clusterName Namn på AKS- eller Azure Arc-aktiverad Kubernetes-kluster. Hämta den från JSON-vynÖversikt sidan för klustret.
    actionGroupId Resurs-ID för varningsaktivitetsgruppen. Hämta den från JSON-vynÖversikt-sidan för åtgärdsgruppen. Läs mer om åtgärdsgrupper.
  3. Distribuera mallen genom att använda en valfri standardmetod för att installera Azure Resource Manager-mallar. För vägledning, se Resource Manager-mallprover för Azure Monitor.

  4. Efter att du har distribuerat mallen kan du se reglerna i Azure-portalen, enligt beskrivningen i View Prometheus rule groups. Granska varningsgränserna för att säkerställa att de passar till din kluster och arbetsbelastningar. Uppdatera tröskelvärdena därefter.

    Anteckning

    Reglerna omfattar inte ett kluster. Om du vill begränsa reglerna till en specifik kluster, se Begränsa regler till en specifik kluster.

Du kan lära dig mer om Prometheus-varningar. Om du vill använda några andra open-source Prometheus varnings-/registreringsregler, använd az-prom-rules-converter för att skapa Azure-ekvivalenta Prometheus regler.

Få fler JMX Exporter-metriker genom att använda Strimzi

Om du använder Strimzi-operatören för att distribuera Kafka-kluster, distribuera podmonitorerna för att få fler JMX Exporter-statistik.

MetriKer behöver exponeras av Kafka-klusterutbyggnader, som exempel på GitHub. Referera till kafka-.*-metrics.yaml-filerna för att konfigurera de metrics som ska exponeras.

Pod-övervakningarna här antar också att den namnrymd där Kafka-arbetsbelastningen distribueras är kafka. Uppdatera den därefter om arbetsbelastningar är distribuerade i ett annat namnområde.

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

Konfigurera larm genom att använda Strimzi

Du kan konfigurera ett omfattande antal varningar baserat på Strimzi-mätvärden genom att hänvisa till dessa exempel.

Anteckning

Om du använder något annat sätt att exponera JMX Exporter på din Kafka-kluster, följ instruktionerna för att konfigurera pod- eller servicemonitorerna i enlighet med detta.

Visa Grafana-instrumentpaneler för fler JMX-metriker med hjälp av Strimzi

För att visa instrumentpaneler för mätvärden som Strimzi-operatören exponerar, se GitHub-platsen för Grafana-instrumentpaneler för Strimzi.

Felsökning

När servicemonitorerna eller podmonitorerna har tillämpats framgångsrikt, om du vill försäkra dig om att tilläggsmodulen tar upp målen för servicemonitorerna, följ dessa instruktioner.