Mengumpulkan metrik Apache Kafka dengan menggunakan layanan terkelola untuk Prometheus

Apache Kafka adalah platform streaming peristiwa terdistribusi sumber terbuka yang digunakan oleh alur data berkinerja tinggi, analitik streaming, integrasi data, dan aplikasi misi-penting.

Artikel ini menjelaskan cara mengonfigurasi layanan terkelola Azure Monitor untuk fitur Prometheus dengan Azure Kubernetes Service (AKS) dan Kubernetes dengan dukungan Azure Arc untuk memantau kluster Kafka dengan mengikis metrik Prometheus.

Prasyarat

Menginstal Pengekspor Kafka

Instal Prometheus Kafka Exporter dengan menggunakan bagan Helm:

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

Anda dapat mengonfigurasi bagan Kafka Exporter Helm dengan nilai. Tentukan alamat server yang tepat tempat server Kafka dapat dijangkau. Atur alamat server dengan menggunakan argumen kafkaServer.

Catatan

Konfigurasi layanan/pod monitor Prometheus yang terkelola dengan instalasi menggunakan bagan Helm hanya didukung pada versi bagan Helm 2.10.0 atau yang lebih baru. Jika Anda ingin mengonfigurasi layanan atau pemantau pod lainnya, ikuti instruksi ini.

Mengimpor dasbor Grafana

Untuk mengimpor dasbor Grafana (ID 7589) di Kafka Exporter dengan menggunakan ID atau JSON, ikuti instruksi di Mengimpor dasbor dari Grafana Labs.

Terapkan aturan

  1. Unduh file template dan file parameter untuk aturan peringatan.

  2. Edit nilai-nilai berikut dalam file parameter.

    Pengaturan Nilai
    azureMonitorWorkspace ID sumber daya untuk ruang kerja Azure Monitor. Dapatkan dari tampilan JSON di halaman Ikhtisar untuk ruang kerja Azure Monitor.
    location Lokasi ruang kerja Azure Monitor. Dapatkan dari tampilan JSON di halaman Ikhtisar untuk ruang kerja Azure Monitor.
    clusterName Nama kluster Kubernetes dengan dukungan AKS atau Azure Arc. Ambil dari tampilan JSON di halaman Ikhtisar untuk klaster tersebut.
    actionGroupId ID sumber daya untuk grup tindakan pemberitahuan. Ambil dari tampilan JSON pada halaman Ikhtisar untuk grup aksi. Pelajari lebih lanjut tentang grup tindakan.
  3. Sebarkan templat dengan menggunakan metode standar apa pun untuk menginstal templat Azure Resource Manager. Untuk panduan, lihat Resource Manager template samples for Azure Monitor.

  4. Setelah Anda menerapkan templat, Anda dapat melihat aturan di portal Azure, seperti yang dijelaskan dalam View Prometheus rule groups. Tinjau batas ambang peringatan untuk memastikan bahwa batas tersebut sesuai dengan cluster dan beban kerja Anda. Perbarui ambang batas sesuai kebutuhan.

    Catatan

    Aturan-aturan tersebut tidak dipetakan ke dalam sebuah klaster. Jika Anda ingin menerapkan aturan ke klaster tertentu, lihat Membatasi aturan ke klaster tertentu.

Anda dapat mempelajari lebih lanjut tentang peringatan Prometheus. Jika Anda ingin menggunakan aturan alerting/recording Prometheus open-source lainnya, gunakan az-prom-rules-converter untuk membuat aturan Prometheus setara Azure.

Dapatkan lebih banyak metrik JMX Exporter dengan menggunakan Strimzi

Jika Anda menggunakan operator Strimzi untuk menyebarkan kluster Kafka, sebarkan monitor pod untuk mendapatkan lebih banyak metrik JMX Exporter .

Metrik perlu diekspos oleh penyebaran kluster Kafka, seperti contoh di GitHub. Lihat file kafka-.*-metrics.yaml untuk mengonfigurasi metrik yang akan diekspos.

Pemantauan pod di sini juga mengasumsikan bahwa namespace di mana beban kerja Kafka dijalankan adalah kafka. Perbarui jika beban kerja disebarkan di namespace lain.

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

Mengonfigurasi pemberitahuan dengan menggunakan Strimzi

Anda dapat mengonfigurasi serangkaian pemberitahuan yang kaya berdasarkan metrik Strimzi dengan merujuk pada contoh-contoh ini.

Catatan

Jika Anda menggunakan cara lain untuk mengekspos JMX Exporter pada kluster Kafka Anda, ikuti petunjuk untuk mengonfigurasi pod atau monitor layanan yang sesuai.

Lihat dasbor Grafana untuk metrik JMX lainnya dengan menggunakan Strimzi

Untuk menampilkan dasbor untuk metrik yang diekspos oleh operator Strimzi, lihat lokasi GitHub dasbor Grafana untuk Strimzi.

Pemecahan Masalah

Ketika monitor layanan atau monitor pod berhasil diterapkan, jika Anda ingin memastikan bahwa add-on mendeteksi target monitor layanan, ikuti instruksi ini.