工程
电报操作员DT内部
这篇博文的目的是为您提供如何在Kubernetes (K8S)环境中使用Telegraf操作符和普罗米修斯监视JMX指标的详细说明.
动机
这样做的目的是解决当巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司的系统发生事件导致无法连接到Kafka代理时出现的问题. 巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司试图将事件写入Kafka. 然而,Kafka的生产者是不受监控的,这让巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司很难理解这个问题. 在事件回顾之后, 我主动监控了生产环境中的Kafka生产者.
挑战
巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司正在使用的应用程序是一个scala(基于jvm)应用程序. 在网上快速搜索一下就会发现,在JVM的情况下,Kafka生产者通过 JMX.
巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司在K8S上的监控设置基于 普罗米修斯 作为指标db. 另外,巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司使用标准的布局 ServiceMonitor 公开巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司的指标. 这允许普罗米修斯操作符刮掉它们. 因此, 挑战在于找出如何为巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司的K8S应用程序向普罗米修斯公开JMX指标.
解决方案
巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司为这个技术挑战找到了几个解决方案. 然而,两个仍然是主要的合理解决方案:
- 普罗米修斯 JMX Metrics出口商
- 使用的品种度量代理的K8S电报操作员
普罗米修斯 JMX指标导出器
一个收集器,可以配置地为prometheus抓取和公开JMX目标的mbean.
使用jolokia度量代理的K8S电报运营商
Telegraf是一个插件驱动的服务器代理,用于从数据库收集和发送指标和事件, 系统, 和物联网传感器.
telegraf operator是一个应用程序,用于在Kubernetes集群中创建和管理单独的telegraf实例. 而jolokia是用于远程JMX访问的基于代理的方法.
巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司使用电报操作员,因为发现它更方便配置. 更重要的是, telegraf 除了JMX metrics插件之外,还支持各种插件. 具有其他功能,例如监视用非基于JVM的编程语言编写的应用程序和监视 系统指标.
示意图流是巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司的JVM应用程序运行 的品种 代理. 该代理收集JMX指标,将它们公开到专用端口. 电报操作员负责创建一个 双轮马车的容器 在巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司的每个应用程序pod中. 该容器从jolokia代理中抓取JMX指标,并以适当的格式向普罗米修斯公开这些指标.
实现过程
首先,巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司希望应用程序容器能够访问jolokia代理jar文件. 巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司使用init容器是因为它们在应用程序容器启动之前运行, 并允许巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司获取jolokia代理jar文件. 为此,巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司必须将以下内容添加到巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司的服务部署YAML中: 首先,巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司希望应用程序容器能够访问jolokia代理jar文件. 巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司使用init容器是因为它们在应用程序容器启动之前运行, 并允许巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司获取jolokia代理jar文件. 为此,巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司必须将以下内容添加到巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司的服务部署YAML中:
在这里,巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司将jolokia jar下载到本地文件系统,并将其放置在/opt/jolokia上,以便巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司的服务容器可以访问该路径上的代理.
您可以替换命令部分并从首选对象存储中获取文件.
最后,巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司使用jolokia代理运行应用程序来定义 JAVA_TOOL_OPTIONS
关于YAML:
注意,巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司将端口8778配置为jolokia代理公开其指标的端口.
步骤2:在K8S集群上部署电报操作员
K8S的telegraf operator是一个开源项目,您可以在这里找到:http://github.com/influxdata/telegraf-operator
巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司希望在巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司的K8S环境中部署电报操作员. 通过使用dev.从github存储库中找到Yml文件并运行:
注意巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司是如何在K8S集群上使用Telegraf操作员pod创建新的Telegraf -operator名称空间的.
现在巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司使用类定义一个包含电报操作员输出配置的K8S密钥.Yml文件如下:
巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司需要知道巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司在stringData下定义了一个' prometheus '类, 将普罗米修斯格式的指标写入端口9273. 稍后,巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司将展示如何使用它. 让巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司将其添加到K8S集群中:
This is how you would do it using kubectl; However, 巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司的生产环境, 巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司基于YAML文件创建了舵图,以便将它们集成到K8S部署中.
第三步:设置巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司的服务与电报运营商一起工作
既然您想要定义应用程序,那么就使用telegraf操作符来公开指标. 在应用程序部署的YAML文件中,添加了以下内容:
添加电报.influxdata...注释到巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司的YAML中,表示Telegraf操作符, 将sidecar容器添加到使用此部署启动的每个pod中. 另外, 配置Telegraf的的品种插件,巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司的的品种 JMX指标在端口8778上暴露:
接下来,巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司定义了的品种插件将作为度量标准暴露的JMX bean,配置如下:
你可以用你想要的Kafka生产者指标或任何你喜欢的MBean替换MBean!
最后,巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司使用了类中的普罗米修斯类定义.允许巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司的JMX指标配置以普罗米修斯格式通过电报公开:
第四步:这是有效的!
就是这样!
一旦你完成部署, 巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司的应用程序以普罗米修斯格式在端口9273上公开其JMX指标. 尝试并检查:9273/metrics. 你应该看到这样的内容:
kafka_producer_request_rate {client_id =、主机= jolokia_代理_url = " http://localhost: 8778 /品种/}0.2811884900178086
现在巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司剩下要做的就是定义一个ServiceMonitor来使用prometheus抓取指标,巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司就可以开始了, 巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司的K8S应用程序JMX指标将在prometheus上.
Summary
巴黎人网址1590线路检测-appleappstore排行榜-巴黎人网址1590线路检测有限公司介绍了如何在K8S集群上使用普罗米修斯监视JMX指标,使用通过init容器获得的jolokia代理运行JVM应用程序的设置, 部署telegraf操作员,用于抓取的品种指标并将其暴露给prometheus.