Apache Kafka

本文档介绍了如何配置 Google Kubernetes Engine 部署,以便使用 Google Cloud Managed Service for Prometheus 从 Apache Kafka 收集指标。本页面介绍如何完成以下任务:

  • 为 Kafka 设置导出器以报告指标。
  • 在 Cloud Monitoring 中访问预定义的信息中心以查看指标。
  • 配置提醒规则以监控指标。

以下说明仅在您将代管式收集功能与 Managed Service for Prometheus 搭配使用时适用。 如果您使用的是自行部署的收集功能,请参阅 Kafka 导出器的源代码库以了解安装信息。

这些说明仅作为示例提供,应该适用于大多数 Kubernetes 环境。如果您因为限制性安全或组织政策而无法安装应用或导出器,则我们建议您查阅开源文档以获取支持。

如需了解 Kafka,请参阅 Kafka

前提条件

要使用 Managed Service for Prometheus 和代管式收集功能从 Kafka 收集指标,您的部署必须满足以下要求:

  • 您的集群必须运行 Google Kubernetes Engine 1.28.15-gke.2475000 或更高版本。
  • 您必须运行 Managed Service for Prometheus,并启用代管式收集功能。如需了解详情,请参阅代管式收集功能使用入门

  • 如需使用 Cloud Monitoring 中提供的信息中心进行 Kafka 集成,您必须使用 kafka_exporter 1.6.0 版或更高版本。

    如需详细了解可用的信息中心,请参阅查看信息中心

安装 Kafka 导出器

我们建议您使用以下配置来安装 Kafka 导出器 kafka_exporter

# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # #     https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License.  apiVersion: apps/v1 kind: Deployment metadata:   name: kafka-exporter   labels:     app.kubernetes.io/name: kafka-exporter spec:   replicas: 1   selector:     matchLabels:       app.kubernetes.io/name: kafka-exporter   template:     metadata:       labels:         app.kubernetes.io/name: kafka-exporter     spec:       containers:       - name: exporter         image: danielqsj/kafka-exporter:v1.6.0         args:         - --kafka.server=kafka:9092         ports:         - containerPort: 9308           name: prometheus 
Kafka 导出器可以使用标志进行配置,而这些标志可以设置为容器参数。此示例假定 Kafka 作为端口 9092 上名为 kafka 的 ClusterIP 服务提供。

如需从本地文件应用配置更改,请运行以下命令:

 kubectl apply -n NAMESPACE_NAME -f FILE_NAME 

您还可以使用 Terraform 管理您的配置。

定义 PodMonitoring 资源

对于目标发现,Managed Service for Prometheus Operator 需要与同一命名空间中的 Kafka 导出器对应的 PodMonitoring 资源。

您可以使用以下 PodMonitoring 配置:

# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # #     https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License.  apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata:   name: kafka-exporter   labels:     app.kubernetes.io/name: kafka-exporter     app.kubernetes.io/part-of: google-cloud-managed-prometheus spec:   endpoints:   - port: prometheus     scheme: http     interval: 30s     path: /metrics   selector:     matchLabels:       app.kubernetes.io/name: kafka-exporter 

如需从本地文件应用配置更改,请运行以下命令:

 kubectl apply -n NAMESPACE_NAME -f FILE_NAME 

您还可以使用 Terraform 管理您的配置。

定义规则和提醒

您可以使用以下 Rules 配置来定义 Kafka 指标提醒:

# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # #     https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License.  apiVersion: monitoring.googleapis.com/v1 kind: Rules metadata:   name: kafka-rules   labels:     app.kubernetes.io/component: rules     app.kubernetes.io/name: kafka-rules     app.kubernetes.io/part-of: google-cloud-managed-prometheus spec:   groups:   - name: kafka     interval: 30s     rules:     - alert: KafkaChangeInNumberOfISRs       annotations:         description: |-           Kafka change in number of isrs             VALUE = {{ $value }}             LABELS: {{ $labels }}         summary: Kafka change in number of isrs (instance {{ $labels.instance }})       expr: kafka_topic_partition_in_sync_replica != 10       for: 5m       labels:         severity: critical     - alert: KafkaUnderReplicatedPartitions       annotations:         description: |-           Kafka under replicated partitions             VALUE = {{ $value }}             LABELS: {{ $labels }}         summary: Kafka under replicated partitions (instance {{ $labels.instance }})       expr: kafka_topic_partition_under_replicated_partition > 0       for: 1m       labels:         severity: warning 

如需从本地文件应用配置更改,请运行以下命令:

 kubectl apply -n NAMESPACE_NAME -f FILE_NAME 

您还可以使用 Terraform 管理您的配置。

如需详细了解如何将规则应用于您的集群,请参阅代管式规则评估和提醒

您可以根据您的应用调整提醒阈值。

验证配置

您可以使用 Metrics Explorer 验证您是否正确配置了 Kafka 导出器。Cloud Monitoring 可能需要一两分钟时间来注入您的指标。

要验证指标是否已注入,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 Metrics Explorer 页面:

    进入 Metrics Explorer

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 在查询构建器窗格的工具栏中,选择名为  MQL PromQL 的按钮。
  3. 验证已在语言 (Language) 切换开关中选择 PromQL。语言切换开关位于同一工具栏中,用于设置查询的格式。
  4. 输入并运行以下查询:
    up{job="kafka-exporter", cluster="CLUSTER_NAME", namespace="NAMESPACE_NAME"}

查看信息中心

Cloud Monitoring 集成包括 Kafka Prometheus 概览信息中心。当您配置集成时,系统会自动安装信息中心。您还可以在不安装集成的情况下查看信息中心的静态预览。

如需查看已安装的信息中心,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 信息中心页面:

    前往信息中心

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 选择信息中心列表标签页。
  3. 选择集成类别。
  4. 点击信息中心的名称,例如 Kafka Prometheus 概览

如需查看信息中心的静态预览,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 集成页面:

    前往集成

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 点击 Kubernetes Engine 部署平台过滤条件。
  3. 找到 Apache Kafka 集成,然后点击查看详情
  4. 选择信息中心标签页。

问题排查

如需了解如何排查指标注入问题,请参阅排查注入端问题中的从导出器收集的问题