Apache Kafka 是高效能數據管線、串流分析、數據整合和任務關鍵性應用程式的開放原始碼分散式事件串流平臺。
本文說明如何使用 Azure Kubernetes Service (AKS) 和已啟用 Azure Arc 的 Kubernetes 來設定 適用於 Prometheus 功能的 Azure 監視器受控服務,以透過擷取 Prometheus 計量來監視 Kafka 叢集。
必要條件
- 在 AKS 或已啟用 Azure Arc 的 Kubernetes 上執行的 Kafka 叢集 - 部署在 AKS 上執行的 Kafka 叢集
- 在叢集上已啟用 Azure 受控 Prometheus - 在 AKS 上啟用 Azure 受控 Prometheus
安裝 Kafka 匯出工具
使用 Helm 圖表安裝 Prometheus Kafka 匯出工具 :
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 匯出工具 Helm 圖表。 指定可連線到 Kafka 伺服器的正確伺服器位址。 使用 自變數 kafkaServer來設定伺服器位址。
注意事項
只有 Helm 圖表版本 2.10.0 或更新版本才支援使用 Helm 圖表安裝的受控 Prometheus 服務/Pod 監視設定。 如果您想要設定任何其他服務或 Pod 監視器,請遵循 這些指示。
匯入 Grafana 儀錶板
若要使用標識碼或 JSON 在 Kafka 匯出工具中匯入 Grafana 儀錶板(標識碼 7589), 請遵循 從 Grafana Labs 匯入儀錶板中的指示。
部署規則
在參數檔案中編輯下列值。
參數 值 azureMonitorWorkspaceAzure 監視器工作區的資源識別碼。 在 Azure Monitor 工作區的 概覽 頁面上,從 JSON 檢視 擷取它。 locationAzure 監視器工作區的位置。 在 Azure Monitor 工作區的 概覽 頁面上,從 JSON 檢視 擷取它。 clusterNameAKS 叢集或啟用 Azure Arc 功能的 Kubernetes 叢集名稱。 在叢集概觀頁面上的 JSON 檢視中擷取它。 actionGroupId警示動作群組的資源識別碼。 從概觀頁面上的動作群組JSON 檢視擷取資料。 深入瞭解動作群組。 使用任何標準方法部署 Azure Resource Manager 範本。 如需指引,請參閱 Azure 監視器的 Resource Manager 範例。
部署範本之後,您可以在 Azure 入口網站中檢視規則,如 檢視 Prometheus 規則群組中所述。 檢閱警示閾值,以確定它們符合您的叢集和工作負載。 請相應地更新門檻值。
注意事項
規則的範圍不限於叢集。 如果您想要將規則範圍設定為特定叢集,請參閱 將規則限製為特定叢集。
您可以 深入瞭解 Prometheus 警示。 如果您想要使用任何其他開放原始碼 Prometheus 警示/錄製規則,請使用 az-prom-rules-converter 來建立 Azure 對等的 Prometheus 規則。
使用 Strimzi 取得更多 JMX Exporter 計量
如果您使用 Strimzi 運算符 來部署 Kafka 叢集,請部署 Pod 監視器以取得更多 JMX 匯出 工具計量。
Kafka 叢集部署需要公開計量,例如 GitHub 中的範例。 請參閱 kafka-.*-metrics.yaml 檔案來設定要公開的計量。
這裡的 Pod 監視器也假設部署 Kafka 工作負載的命名空間是 kafka。 如果工作負載部署在另一個命名空間中,請據以更新。
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 設定警示
您可以參考 這些範例,根據 Strimzi 計量來設定一組豐富的警示。
注意事項
如果您使用任何其他方式在 Kafka 叢集上公開 JMX 匯出工具,請遵循相關 指示來設定 Pod 或服務監視器 。
使用 Strimzi 檢視 Grafana 儀錶板以取得更多 JMX 計量
若要檢視 Strimzi 操作員所公開的計量儀錶板,請參閱 Strimzi 的 Grafana 儀錶板的 GitHub 位置。
疑難排解
成功套用服務監視器或 Pod 監視器時,如果您要確保附加元件會挑選服務監視器目標,請遵循這些指示 (部分機器翻譯)。