Prometheus için yönetilen hizmet kullanarak Apache Kafka metriklerini toplayın

Apache Kafka, yüksek performanslı veri hatları, akış analizleri, veri entegrasyonu ve kritik görev uygulamaları tarafından kullanılan açık kaynaklı, dağıtık bir olay akışı platformudur.

Bu makale, Azure Monitor Prometheus için yönetilen hizmet özelliğinin, Azure Kubernetes Service (AKS) ve Azure Arc özellikli Kubernetes ile Kafka kümelerini Prometheus metriklerini toplayarak izlemek için nasıl yapılandırılacağını açıklar.

Önkoşullar

Kafka Exporter'ı Yükleyin

Prometheus Kafka Exporter'ı Helm chart kullanarak kurun:

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

Kafka Exporter Helm chart'ını values ile yapılandırabilirsiniz. Kafka sunucularına erişilebilecek doğru sunucu adreslerini belirleyin. Sunucu adreslerini kafkaServer argümanını kullanarak ayarlayın.

Uyarı

Helm chart sürümü 2.10.0 veya üzeri ile gerçekleştirilen Helm chart kurulumu, yönetilen Prometheus hizmeti/pod monitör yapılandırmasını destekler. Başka bir hizmet veya pod izleyicisi yapılandırmak istiyorsanız, bu talimatları izleyin.

Grafana panosunu içe aktar

Kafka Exporter'da Grafana panosunu (ID 7589) ID veya JSON kullanarak içe aktarmak için Grafana Labs'tan bir panoyu içe aktarma talimatlarını izleyin.

Kuralları dağıt

  1. Uyarı kuralları için şablon dosyasını ve parametre dosyasını indirin.

  2. Parametre dosyasında aşağıdaki değerleri düzenleyin.

    Parametre Değer
    azureMonitorWorkspace Azure Monitor çalışma alanı için Kaynak Kimliği. Azure İzleme çalışma alanının Genel Bakış sayfasındaki JSON görünümü bölümünden alın.
    location Azure İzleme çalışma alanının konumu. Azure İzleme çalışma alanının Genel Bakış sayfasındaki JSON görünümü bölümünden alın.
    clusterName AKS veya Azure Arc özellikli Kubernetes kümesinin adı. Cluster için JSON görünümü üzerinde olan Genel Bakış sayfasından al.
    actionGroupId Uyarı eylem grubu için kaynak kimliği. İşlem grubu için Genel Bakış sayfasındaki JSON görünümü bölümünden alın. Eylem grupları hakkında daha fazla bilgi edinin.
  3. Azure Resource Manager şablonlarını yüklemek için herhangi bir standart yöntemi kullanarak şablonu dağıtın. Rehberlik için Azure Monitor için Resource Manager şablon örneklerine bakın.

  4. Şablonu dağıttıktan sonra, Prometheus kural gruplarını görüntüleme kısmında açıklandığı gibi, kuralları Azure portalında görüntüleyebilirsiniz. Uyarı eşiklerinin kümenize ve iş yüklerinize uygun olduğundan emin olmak için gözden geçirin. Eşik değerlerini uygun şekilde güncelleyin.

    Uyarı

    Kurallar bir küme ile sınırlı değil. Kuralları belirli bir kümeyle sınırlamak istiyorsanız, Belirli bir kümeye kuralları sınırlama bölümüne bakın.

Prometheus uyarıları hakkında daha fazla bilgi edinebilirsiniz. Eğer başka bir açık kaynaklı Prometheus uyarı/kayıt kuralları kullanmak istiyorsanız, Azure eşdeğeri Prometheus kuralları oluşturmak için az-prom-rules-converter kullanın.

Daha fazla JMX Exporter metriği almak için Strimzi kullanın

Kafka kümelerini dağıtmak için Strimzi operatörünü kullanıyorsanız, daha fazla JMX Exporter metriği elde etmek için pod monitörlerini dağıtın.

Kafka küme dağıtımları tarafından GitHub'daki örnekler gibi metriklerin gün yüzüne çıkarılması gerekiyor. kafka-.*-metrics.yaml dosyalarına başvurarak, açığa çıkarılacak metrikleri yapılandırın.

Pod izleme bileşenleri burada, Kafka iş yükünün konuşlandırıldığı ad alanının kafka olduğunu varsayar. Gerekirse iş yükleri başka bir namespace içinde dağıtıldığında bunu uygun şekilde güncelleyin.

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

Strimzi kullanarak uyarıları yapılandırın

Strimzi metriklerine dayalı olarak çeşitli uyarılar yapılandırabilirsiniz; örnekler için bu örneklere göz atabilirsiniz.

Uyarı

Kafka kümenizde, JMX Exporter'ı ortaya çıkarmanın başka bir yolunu kullanıyorsanız, pod veya hizmet monitörlerini yapılandırma talimatlarını uygun şekilde takip edin.

Strimzi kullanarak daha fazla JMX metriği için Grafana panolarını görüntüleyin.

Strimzi operatörünün sağladığı metrikler için gösterge panolarını görüntülemek için, Strimzi için Grafana panolarının GitHub konumuna bakın.

Sorun giderme

Servis izleyicileri veya pod izleyicileri başarıyla uygulandığında, eklentinin servis izleyici hedeflerini algıladığından emin olmak istiyorsanız, bu talimatları izleyin.