亲爱的读者们👋
欢迎加入【30天精通Prometheus】专栏!📚 在这里,我们将探索Prometheus的强大功能,并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。🚀
Prometheus是云原生和DevOps的核心监控工具,我们将从基础概念开始,逐步涵盖配置、查询、告警和可视化。💪
在接下来的30天里,我们将解锁Prometheus的实战技巧,通过案例和分享,助你深入理解其工作原理。📆
目标:30天后,你将熟练掌握Prometheus,为未来的项目挑战做好准备!💯
这是一段精彩旅程,期待你的加入!🎉
- 【30天精通Prometheus:一站式监控实战指南】第1天:深入探索Prometheus:30天一站式监控实战指南的开篇之旅
- 【30天精通Prometheus:一站式监控实战指南】第2天:Prometheus从入门到实战:安装、配置详解与生产环境搭建指南
- 【30天精通Prometheus:一站式监控实战指南】第3天:Alertmanager从入门到实战:安装、配置详解与生产环境搭建指南
- 【30天精通Prometheus:一站式监控实战指南】第4天:node_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细
- 【30天精通Prometheus:一站式监控实战指南】第5天:kafka_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细
- 【30天精通Prometheus:一站式监控实战指南】第6天:mysqld_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细
- 【30天精通Prometheus:一站式监控实战指南】第7天:postgres_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细
- 【30天精通Prometheus:一站式监控实战指南】第8天:redis_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细
- 【30天精通Prometheus:一站式监控实战指南】第9天:elasticsearch_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细
- 【30天精通Prometheus:一站式监控实战指南】第10天:blackbox_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细
- 【30天精通Prometheus:一站式监控实战指南】第11天:consul_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细
- 【30天精通Prometheus:一站式监控实战指南】第12天:windows_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细
- 【30天精通Prometheus:一站式监控实战指南】第13天:graphite_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细
- 【30天精通Prometheus:一站式监控实战指南】第14天:jmx_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细
- 【30天精通Prometheus:一站式监控实战指南】第15天:ipmi_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细
- 【30天精通Prometheus:一站式监控实战指南】第16天:snmp_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细
- 【30天精通Prometheus:一站式监控实战指南】第17天:nginx-prometheus-exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细
- 【30天精通Prometheus:一站式监控实战指南】第18天:apache_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细
- 【30天精通Prometheus:一站式监控实战指南】第19天:haproxy_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细
- 【30天精通Prometheus:一站式监控实战指南】第20天:dcgm-exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细
- 【30天精通Prometheus:一站式监控实战指南】第21天:深入解析PromQL(Prometheus Query Language)的高级用法,解锁监控数据的无限可能,释放监控数据潜能
- 【30天精通Prometheus:一站式监控实战指南】第22天:如何将Prometheus与Grafana集成,通过可视化的方式展示监控数据,提高监控效率
- 【30天精通Prometheus:一站式监控实战指南】第23天:如何搭建高可用的Prometheus集群,以应对大规模监控场景和单点故障问题,确保监控服务的稳定性
- 【30天精通Prometheus:一站式监控实战指南】第24天:Prometheus数据存储与性能调优攻略,通过优化存储和查询性能来提升监控系统的整体效率
- 【30天精通Prometheus:一站式监控实战指南】第25天:微服务架构下的Prometheus实战,Kubernetes与Prometheus集成:集群监控实战
- 【30天精通Prometheus:一站式监控实战指南】第26天:构建健壮的高可用Prometheus集群,以应对大规模监控挑战与单点故障风险
- 【30天精通Prometheus:一站式监控实战指南】第27天:Prometheus与第三方工具集成:提升监控能力
- 【30天精通Prometheus:一站式监控实战指南】第28天:故障排查与告警分析实战案例分享
- 【30天精通Prometheus:一站式监控实战指南】第29天:Prometheus监控策略与最佳实践指南
- 【30天精通Prometheus:一站式监控实战指南】第30天:Prometheus监控技术回顾与未来展望
一、kafka_exporter概述📘
定义
kafka_exporter是一个开源工具,用于将Apache Kafka集群的监控指标暴露给Prometheus监控系统。它由Prometheus社区维护,可以帮助用户实时监控和诊断Kafka集群的性能和健康状态。
功能
- 指标收集:通过执行JMX查询等方式,收集关于Kafka集群的各种指标,如生产者和消费者的吞吐量、分区和副本的状态等。
- Prometheus兼容:输出的指标符合Prometheus的格式,可直接由Prometheus收集和存储。
- 灵活配置:用户可通过配置文件或命令行参数配置kafka_exporter,如指定监控的Kafka集群地址、JMX连接参数等。
- 多版本支持:可与多个版本的Apache Kafka兼容,并可选择性启用或禁用特定版本的指标收集。
- 安全性:支持通过SSL/TLS进行安全连接,确保监控数据的机密性和完整性。
应用场景
- 实时监控:适用于需要实时监控Kafka集群性能、健康状态和资源使用情况的场景。
- 故障排查:当Kafka集群出现问题时,可利用kafka_exporter提供的详细指标进行故障排查和定位。
- 容量规划:通过监控数据,可以帮助进行Kafka集群的容量规划和优化。
优势
- 易于部署:可作为一个独立的二进制文件部署,支持Docker容器等多种部署方式。
- 高效性:相比于通过Kafka内置脚本收集指标,kafka_exporter无需每次启动JVM,从而降低了指标收集的时间成本。
- 生态丰富:与Prometheus和Grafana无缝对接,提供了丰富的可视化和告警功能。
局限性
- 依赖Prometheus:需要配合Prometheus使用,如果未部署Prometheus,则需要额外搭建。
- 虽然配置灵活,但对于初学者来说可能存在一定的配置难度。
二、安装kafka_exporter💾
注意事项和常见问题
1.权限问题:在安装kafka_exporter之前,应确保当前用户具有足够的权限来执行相关的安装命令。在Linux或UNIX系统中,可能需要使用sudo命令来以管理员权限运行安装脚本,否则可能会遇到权限拒绝的错误。
2.防火墙和安全组设置:kafka_exporter默认会监听某个端口(如9308)以供Prometheus抓取metrics。请确保服务器的防火墙或安全组策略允许该端口的流量。如果你的Kafka集群和kafka_exporter部署在不同的网络环境中,请确保网络之间的通信是畅通的。
如果是在云服务提供商处托管的服务器,还需要在云平台的安全组或网络ACL中配置相应的入站规则。
3.配置文件和服务管理:如果使用systemd等服务管理器来管理kafka_exporter,需确保服务配置文件(例如/etc/systemd/system/kafka_exporter.service)设置正确,并且服务能够正常启动、停止和重启。
4.日志和错误排查:定期查看kafka_exporter的日志,以便及时发现并解决问题。可以使用如journalctl -u kafka_exporter的命令来查看日志(如果使用systemd管理)。
5.版本兼容性:在安装前,请检查kafka_exporter的版本是否与你的Kafka集群和Prometheus版本兼容。
6.安装路径和权限:虽然kafka_exporter可能不需要复杂的配置文件,但如果有配置文件,请确保配置正确无误,特别是Kafka集群的连接信息。
7.启动参数:熟悉并正确设置kafka_exporter的启动参数,如Kafka集群的地址、端口以及需要监控的Kafka指标等。
2.1 访问kafka_exporter官方网站 🌐
- 访问GitHub上的kafka_exporter发布页面,找到适合Linux系统的kafka_exporter版本进行下载:https://github.com/danielqsj/kafka_exporter/releases
2.2 选择适合的版本🔍
- 在下载页面,你将看到不同操作系统的kafka_exporter二进制包。根据你的操作系统选择适合的版本。例如,如果你使用的是Linux 64位系统,就选择kafka_exporter-x.x.x.linux-amd64.tar.gz(其中x.x.x是版本号)。
2.3 下载kafka_exporter⬇️
- 点击所选版本的下载链接,将kafka_exporter的二进制包下载到你的本地计算机。
2.4 解压安装包📂
- 将下载的kafka_exporter压缩包解压到你想要安装的目录。你可以使用命令行工具(如tar)来完成这个步骤。解压后,你将看到一个名为kafka_exporter-x.x.x.linux-amd64的目录,其中包含kafka_exporter的二进制文件和其他相关文件。
tar -xzf kafka_exporter-x.x.x.linux-amd64.tar.gz
2.5 运行kafka_exporter🚀
- 进入解压后的目录,并运行kafka_exporter服务器。在Linux下,你可以使用如下命令。这样就使用默认的配置启动kafka_exporter服务器。如果一切正常,你应该能在终端看到kafka_exporter的启动日志。
cd kafka_exporter-x.x.x.linux-amd64
./kafka_exporter --kafka.server=127.0.0.1:9092 --web.listen-address=:9308
三、kafka_exporter指标和配置详解📖
- 黑色:作为默认文本颜色。
- 绿色:表示常规配置项
- 橙色:表示具有互斥参数的配置项 / 建议开启(根据自己的场景确定需求)
- 蓝色:不重要的配置项 / 建议不开启
- 红色:表示关键信息和警告 / 最好开启
注意:
- 1.相关参数配置建议仅供参考,具体要以自己生产的实际需要自行配置。
- 2.以下配置参数介绍是基于kafka_exporter 1.6.0版本说明的,其它版本会有不同。
3.1 kafka_exporter.service
Kafka 连接与配置类
- - -kafka.server=kafka:9092
用于设置 Kafka 服务器的地址和端口。kafka 是服务器的主机名,9092 是 Kafka 服务的默认端口。如果有多个 Kafka 服务器,您可以多次使用这个参数来指定它们,例如 --kafka.server=kafka1:9092 --kafka.server=kafka2:9092 - - -use.consumelag.zookeeper
当这个标志被设置时,kafka_exporter会使用ZooKeeper来获取consumer lag(消费者延迟)的信息,而不是直接从Kafka获取。这可能在某些老版本的Kafka集群中是有用的,但在新版本中,直接从Kafka获取这些信息可能更为准确和高效。 - - -zookeeper.server=localhost:2181
指定ZooKeeper服务器的地址和端口。在这个例子中,连接到运行在本地机器上的ZooKeeper实例,端口是2181。ZooKeeper通常用于Kafka集群的元数据存储和协调。 - - -kafka.labels=“”
允许你为导出的指标添加额外的标签。这些标签可以作为Prometheus查询的过滤条件。在这个例子中,该参数是空的,意味着没有添加额外的标签。 - - -refresh.metadata=“30s”
设置kafka_exporter刷新Kafka元数据的时间间隔。在这个例子中,设置为30秒,意味着每30秒,kafka_exporter会重新获取一次Kafka的元数据。 - - -kafka.allow-auto-topic-creation
允许kafka_exporter在需要时自动创建监控的topic。这通常不是推荐的做法,因为可能导致创建不必要的topic。 - - -offset.show-all
启用 --offset.show-all 参数时,kafka_exporter 会导出所有 Kafka 分区的 offset 信息,而不仅仅是那些有消费者组活跃的分区。这意味着,即使某些分区当前没有消费者组在消费,它们的 offset 信息也会被导出。
SSL/TLS 安全连接类
- - -tls.enabled
是否使用TLS连接到Kafka。如果设置为true,kafka_exporter将使用TLS来加密与Kafka的通信。 - - -tls.server-name=“”
用于验证返回的证书上的主机名。指定在TLS握手期间用于验证返回的证书上的主机名。 - - -tls.ca-file=“”
Kafka TLS客户端认证的证书颁发机构文件。指定证书颁发机构(CA)的证书文件路径。这个文件用于验证Kafka服务器提供的TLS证书的有效性。 - - -tls.cert-file=“”
Kafka客户端认证的证书文件。指定Kafka客户端(即kafka_exporter)用于TLS认证的证书文件路径。如果Kafka集群配置了双向TLS认证,必须配置这个参数。 - - -tls.key-file=“”
Kafka客户端认证的密钥文件。指定与–tls.cert-file中指定的证书相匹配的私钥文件路径。在双向TLS认证场景下必须配置这个参数。 - - -tls.insecure-skip-tls-verify
是否跳过TLS验证。用于指示kafka_exporter是否应该跳过TLS证书的验证。如果设置为true,则不会验证Kafka服务器提供的TLS证书的有效性。
SASL 认证类
- - -sasl.enabled
是否使用SASL/PLAIN连接。指定是否启用SASL认证来连接到Kafka集群。如果设置为true,kafka_exporter将使用SASL来与Kafka进行身份验证。 - - -sasl.handshake
是否进行SASL握手。确定是否在连接建立后进行SASL握手。通常与SASL/SSL组合使用,以确保在加密连接建立后再进行身份验证。 - - -sasl.username=“”
SASL用户名。指定用于SASL认证的用户名。 - - -sasl.password=“”
SASL用户密码。指定与SASL用户名对应的密码。 - - -sasl.mechanism=“”
SASL的SCRAM SHA算法。定义要使用的SASL机制。常见的值包括PLAIN、SCRAM-SHA-256、SCRAM-SHA-512等。这个值取决于Kafka服务器支持的SASL机制。 - - -sasl.service-name=“”
使用Kerberos认证时的服务名称。使用Kerberos认证时,此参数指定服务的名称,通常是kafka。 - - -sasl.kerberos-config-path=“”
指定Kerberos配置文件(通常是krb5.conf)的路径。这个文件包含了Kerberos realm和KDC(密钥分发中心)的信息。 - - -sasl.realm=“”
Kerberos领域的名称,用于标识Kerberos认证服务的特定管理域。 - - -sasl.kerberos-auth-type=“”
指定Kerberos的认证类型,例如USER_PASS(用户名和密码)或KEYTAB(使用keytab文件)。 - - -sasl.keytab-path=“”
使用keytab文件进行Kerberos认证时,此参数指定keytab文件的路径。Keytab文件包含服务或用户的加密密钥。 - - -sasl.disable-PA-FX-FAST
指示Kerberos客户端是否应禁用PA-FX-FAST优化。在某些环境中,禁用此优化可以解决与Kerberos认证相关的问题。
Web 服务器与监控指标暴露类
- - -web.telemetry-path=“/metrics”
设置指标暴露路径的参数。Prometheus 或其他监控工具将从这个路径拉取 Kafka 相关指标。默认值通常是 /metrics,但可以根据需要进行更改。 - - -server.tls.enabled
指定是否为kafka_exporter的Web服务器启用TLS加密。如果设置为true,则Web服务器将只接受通过TLS加密的连接。这有助于保护指标数据在传输过程中的安全性。 - - -server.tls.mutual-auth-enabled
确定是否为Web服务器启用TLS客户端相互认证(也称为双向TLS认证)。当启用此选项时,不仅服务器会向客户端提供证书以证明其身份,而且客户端也必须向服务器提供有效证书以进行身份验证。这增加了通信的安全性,但也需要更复杂的证书管理。 - - -server.tls.ca-file=“”
指定证书颁发机构(CA)的证书文件路径。这个文件用于验证连接到Web服务器的客户端提供的TLS证书的有效性。在双向TLS认证中,这是必需的,以确保服务器只接受由受信任的CA签发的客户端证书。 - - -server.tls.cert-file=“”
指定Web服务器用于TLS连接的证书文件路径。这个文件包含了服务器的公钥和相关信息,用于向客户端证明服务器的身份。 - - -server.tls.key-file=“”
指定与Web服务器证书文件相匹配的私钥文件路径。私钥用于对发送给客户端的数据进行签名,以确保数据的完整性和真实性。
过滤与并发类
- - -topic.filter=“.*”
使用正则表达式来确定哪些 Kafka 主题(topic)的指标将被收集。.* 表示匹配所有主题。如果您只想监控特定的主题,可以修改此正则表达式。 - - -group.filter=“.*”
使用正则表达式来确定哪些消费者组(consumer group)的指标将被收集。.* 表示匹配所有消费者组。如果您只想监控特定的消费者组,可以修改此正则表达式。 - - -concurrent.enable
确定是否启用并发Kafka操作。如果设置为true,kafka_exporter将能够并发地处理多个Kafka主题和消费者组的监控数据。这可以提高数据收集的效率,特别是在监控大量主题或消费者组时。启用并发操作有助于减少数据收集的时间,使kafka_exporter能够更快地提供监控指标。 - - -topic.workers=100
设置用于处理Kafka主题监控的工作器(worker)数量。工作器是负责从Kafka集群收集特定主题相关信息的后台任务。增加工作器的数量可以提高并发处理能力,但也可能增加系统的资源消耗。默认值(如100)通常适用于大多数情况,但在具有大量主题或高负载的Kafka集群中,可需要根据实际情况调整此值。然而,设置过多的工作器可能会导致资源争用和性能下降,因此需要根据服务器的硬件性能和Kafka集群的大小来合理配置。
日志与调试类
- - -log.enable-sarama
用于开启或关闭 Sarama(Kafka 的 Go 客户端库)的日志记录。Sarama是kafka_exporter用于与Kafka集群通信的客户端库。默认情况下,这个选项是关闭的(false)。如果你需要调试或获取更详细的日志信息,特别是与Kafka通信相关的日志,你可以将此参数设置为true。启用后,Sarama将生成详细的日志,这有助于诊断与Kafka连接、消费或生产相关的问题。 - - -verbosity=0
设置日志的详细级别。数值越高,输出的日志信息越详细。通常,较低的详细级别(如0)只会记录关键信息,而较高的级别会包含更多的调试信息。通过增加详细级别,你可以获得更多关于kafka_exporter内部操作的信息,这有助于诊断复杂的问题。 - - -log.level=info
日志消息的严重程度。常见的日志级别包括debug、info、warn、error等。设置为info级别意味着kafka_exporter将记录信息性消息以及更严重级别的消息(如警告和错误),但会忽略调试级别的消息。选择合适的日志级别可以帮助你关注重要的日志事件,同时避免日志中充斥过多不必要的细节。 - - -log.format=logfmt
指定日志消息的输出格式。logfmt是一种简洁的键值对格式,易于阅读和解析。除了logfmt外,还可能支持其他格式,如JSON等。选择适当的日志格式可以简化日志分析过程,特别是当你使用日志分析工具或系统时。
四、实战演练:生产环境搭建指南🔨
4.1 创建普通用户管理kafka_exporter👤
useradd deploy
4.2 解压kafka_exporter.tar.gz📦
注意:
我的是x86,所以使用kafka_exporter-1.6.0.linux-amd64.tar.gz,您可以使用uname -a命令查看系统架构
tar xvf kafka_exporter-1.6.0.linux-amd64.tar.gz -C /home/deploy/
4.3 将kafka_exporter集成到Prometheus配置中✂️
将kafka_exporter集成到Prometheus配置中,确保数据能够正常采集。编辑Prometheus的配置文件(通常是prometheus.yml),在scrape_configs部分添加kafka_exporter的配置。告诉Prometheus将采集localhost:9308的数据。
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "kafka_exporter"
static_configs:
- targets: ["localhost:9308"]
4.4 更改kafka_exporter软件包名称✂️
mv /home/deploy/kafka_exporter-1.6.0.linux-amd64 /home/deploy/kafka_exporter
4.5 编辑kafka_exporter.service文件📝
cat > /etc/systemd/system/kafka_exporter.service <<EOF
[Unit]
Description=Kafka Exporter
[Service]
Type=simple
User=deploy
Group=deploy
ExecStart=/home/deploy/kafka_exporter/kafka_exporter --kafka.server=127.0.0.1:9092 \
--concurrent.enable \
--topic.workers=50 \
--web.listen-address=:9308 \
--log.level=info \
--log.format=logfmt
ExecReload=/bin/kill -HUP
Restart=on-failure
[Install]
WantedBy=default.target
EOF
4.6 启动kafka_exporter.service🔌
sudo systemctl daemon-reload
sudo systemctl enable --now kafka_exporter.service
4.7 查看服务是否正常启动🔍
# 查看service服务是否启动
sudo systemctl status kafka_exporter.service
# 查看端口是否存在
sudo ss -ntulp | grep 9308
五、基于云原生的部署方案 🚀
5.1 使用Docker部署kafka_exporter🐳
5.1.1 获取Prometheus Docker镜像 📸
- 从docker-hub下载镜像
docker pull danielqsj/kafka-exporter/kafka_exporter:v1.7.0
docker tag danielqsj/kafka-exporter/kafka_exporter:v1.7.0 kafka_exporter:v1.7.0
- 从阿里云下载镜像(如果访问不到docker-hub)
// 如果访问不到docker-hub的可以访问如下地址
docker pull registry.cn-beijing.aliyuncs.com/insights-ops/kafka_exporter:v1.7.0
docker tag registry.cn-beijing.aliyuncs.com/insights-ops/kafka_exporter:v1.7.0 kafka_exporter:v1.7.0
- 从百度网盘下载镜像
docker load -i kafka_exporter-v1.7.0.tar
docker tag danielqsj/kafka-exporter/kafka_exporter:v1.7.0 kafka_exporter:v1.7.0
5.1.2 运行kafka_exporter容器 🏃
docker run -itd --rm -p 9308:9308 kafka_exporter:v1.7.0 --name=kafka_exporter --kafka.server=127.0.0.1:9092
5.1.3 验证Docker部署 ✅
# 查看容器是否正常启动,Status为Up为正常
docker ps -a | grep kafka_exporter
# 端口监听
ss -ntulp | grep 9308
5.2 利用Docker-Compose简化部署 📘
5.2.1 编写docker-compose.yml配置文件 📜
---
version: '3'
services:
kafka-exporter:
image: kafka_exporter:v1.7.0
command: ["--kafka.server=127.0.0.1:9092"]
ports:
- 9308:9308
5.2.2 使用Docker-Compose启动服务 🚀
docker-compose up -d
5.2.3 验证Docker部署 ✅
# 查看容器是否正常启动,Status为Up为正常
docker ps -a | grep kafka_exporter
# 端口监听
ss -ntulp | grep 9308
5.3 在Docker Swarm中部署kafka_exporter🐝
5.3.1 创建Docker Compose文件
创建一个 docker-compose.yml 文件来定义 kafka_exporter 服务。以下是一个示例配置文件:
mkdir docker/docker-swarm/kafka_exporter -p
docker network create -d overlay kafka-network
vi docker/docker-swarm/kafka_exporter/docker-compose.yml
version: '3.7'
services:
kafka-exporter:
image: bitnami/kafka-exporter:1.7.0
environment:
- KAFKA_BROKERS=kafka-broker-1:9092,kafka-broker-2:9092 # 替换为你的Kafka broker地址
ports:
- "9308:9308"
deploy:
restart_policy:
condition: on-failure
placement:
constraints:
- node.role == manager # 可选:限制只在manager节点上运行
networks:
- kafka-network
networks:
kafka-network:
external: true
5.3.2 部署服务到Docker Swarm
使用 docker stack deploy 命令将服务部署到 Docker Swarm。
docker pull bitnami/kafka-exporter:1.7.0
docker stack deploy -c docker/docker-swarm/kafka_exporter/docker-compose.yml monitoring
5.3.3 验证部署
docker service ls
5.4 在Kubernetes(K8s)上部署kafka_exporter🚀
5.4.1 部署 kafka_exporter
创建一个名为kafka_exporter-Deployment.yaml的文件来定义kafka_exporter的Deployment服务。
mkdir k8s/kafka_exporter -p
vi k8s/kafka_exporter/kafka_exporter-Deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: kafka-exporter
namespace: monitoring # 假设你有一个名为monitoring的命名空间
spec:
replicas: 1 # 根据需要调整副本数
selector:
matchLabels:
app: kafka-exporter
template:
metadata:
labels:
app: kafka-exporter
spec:
containers:
- name: kafka-exporter
image: bitnami/kafka-exporter:1.7.0
args:
- --kafka.server=kafka-broker-1:9092,kafka-broker-2:9092 # 替换为你的Kafka broker地址
ports:
- containerPort: 9308
resources:
requests:
memory: "64Mi"
cpu: "100m"
limits:
memory: "128Mi"
cpu: "200m"
---
apiVersion: v1
kind: Service
metadata:
name: kafka-exporter
namespace: monitoring
labels:
app: kafka-exporter
spec:
type: ClusterIP
ports:
- port: 9308
protocol: TCP
targetPort: 9308
selector:
app: kafka-exporter
使用命令将其应用到Kubernetes集群中:
kubectl apply -f k8s/kafka_exporter/kafka_exporter-Deployment.yaml
5.4.2 验证部署
要验证kafka-exporter是否正确部署并运行,可以使用以下命令查看Pod状态:
kubectl get pods -n monitoring -l app=kafka-exporter