监控
在本页
概述
了解如何通过监控来观察您的MongoDB Kafka源连接器或MongoDB Kafka目标连接器的行为。监控是获取正在运行的程序执行活动信息的过程,用于应用程序或应用程序性能管理库。
要了解连接器中的监控工作原理以及如何使用它,请参阅用例部分。
要查看如何监控运行连接器的示例,请参阅示例 - 监控快速入门部分。
要查看由MongoDB源和目标连接器产生的所有度量值的列表,请参阅可用度量值部分。
用例
本部分描述了监控MongoDB源和目标连接器的用例,以及您如何使用连接器提供的指标来满足这些用例。
下接连接器
以下表格描述了监控 MongoDB 下接连接器的一些用例以及连接器提供的指标,以满足这些用例
用例 | 要使用的指标 |
---|---|
您想知道您的管道组件是否落后。 | 使用 latest-kafka-time-difference-ms 指标。此指标表示记录到达 Kafka 主题的时间和连接器接收到该记录的时间之间的时间间隔。如果此指标值增加,则表明 Apache Kafka 或 MongoDB 可能存在问题。 |
您想知道您的连接器写入 MongoDB 的记录总数。 | 使用 records 指标。 |
您想知道您的连接器在尝试写入 MongoDB 时遇到的写入错误总数。 | 使用 batch-writes-failed 指标。 |
您想知道您的 MongoDB 性能是否随时间变慢。 | 使用 使用以下指标进一步诊断任何问题
|
您想知道 Kafka Connect 和 MongoDB 下接连接器花费在将记录写入 MongoDB 上的时间。 | 比较以下指标的值
|
您可以在 下接连接器 JMX 指标 部分找到所有 MongoDB 下接连接器指标的描述。
源连接器
以下表格描述了监控 MongoDB 源连接器的一些用例以及源连接器提供的指标,以满足这些用例
用例 | 要使用的指标 | |
---|---|---|
您想知道您的管道组件是否落后。 | 使用 latest-mongodb-time-difference-secs 指标。此指标表示您的连接器处理的最新更改流事件有多旧。如果此指标增加,则表明 Apache Kafka 或 MongoDB 可能存在问题。 | |
您想知道您的源连接器已处理的更改流事件总数。 | 使用 records 指标。 | |
您想知道您的连接器接收但未能写入Apache Kafka的记录的百分比。 | 使用
| |
您想知道连接器处理文档的平均大小。 | 使用
要了解如何计算一段时间内记录的平均大小,请参阅mongodb-bytes-read。 | |
您想找出Kafka Connect和MongoDB源连接器将记录写入Apache Kafka所花费的时间。 | 比较以下指标的值
| |
您想知道您的 MongoDB 性能是否随时间变慢。 | 使用 使用以下指标进一步诊断任何问题
|
您可以在源连接器JMX指标部分找到所有MongoDB源连接器指标的描述。
监控连接器
MongoDB Kafka连接器使用Java管理扩展(JMX)来启用监控。JMX是Java平台标准版中包含的一项技术,它提供了监控应用程序和设备的工具。您可以使用任何JMX控制台(如JConsole)查看连接器产生的指标。
MongoDB Kafka连接器为单个任务提供指标。任务是Kafka Connect实例化的类,用于在数据存储和Apache Kafka之间复制数据。Kafka Connect中两种类型任务的名称和职责如下:
源任务从数据存储复制数据到Apache Kafka。
目标任务从Apache Kafka复制数据到数据存储。
目标连接器配置一个或多个目标任务。源连接器配置一个或多个源任务。
要了解更多关于JMX的信息,请参阅以下来自Oracle的资源:
要了解更多关于Kafka Connect中的任务和连接器的信息,请参阅以下资源:
启用监控
MongoDB Kafka 连接器使用 Kafka Connect 的度量基础设施来提供度量信息。要读取连接器产生的度量信息,请在您的 Kafka Connect 部署中启用 JMX。
要了解如何在主机机器上运行 Kafka Connect 实例时启用 JMX,请参阅官方 Kafka 文档。
要了解如何在容器化 Kafka Connect 部署中启用 JMX,请参阅使用 JMX 和 Docker 的 Kafka 监控和度量。
指标类型
连接器提供以下类型数量的指标
连接器任务中事件发生的总次数
与最近一次事件相关的值
对于某些用例,您必须对连接器提供的指标进行额外计算。例如,您可以从提供的指标计算以下值
指标的变动率
一段时间内指标的值
一个指标与另一个指标之间的差异
要查看一些计算指标的示例,请参阅用例部分。
JMX 路径
MongoDB Kafka 连接器和 Kafka Connect 都为 MongoDB 连接器任务生成指标。
这两组指标都提供了有关任务如何与 Kafka Connect 交互的信息,但只有 MongoDB Kafka 连接器指标提供了有关任务如何与 MongoDB 交互的信息。
MongoDB Kafka 连接器在以下 JMX 路径下生成指标
com.mongodb.kafka.connect.sink-task-metrics.sink-task-
com.mongodb.kafka.connect.source-task-metrics.source-task-
com.mongodb.kafka.connect.source-task-metrics.source-task-change-stream-
com.mongodb.kafka.connect.source-task-metrics.source-task-copy-existing-
Kafka Connect 在以下 JMX 路径下生成指标
kafka.connect.sink-task-metrics.<connector-name>
kafka.connect.source-task-metrics.<connector-name>
kafka.connect.connector-task-metrics.<connector-name>
要将 Kafka Connect 指标与 MongoDB Kafka 连接器指标相关联,您必须记住您将连接器添加到 Kafka Connect 的顺序。
注意
命名冲突
如果 MongoDB Kafka 连接器在尝试在 JMX 路径上注册 MBean
时遇到命名冲突,则 MongoDB Kafka 连接器将为 MBean
添加版本后缀。
例如,如果连接器试图在路径 com.mongodb.kafka.connect.sink-task-metrics.sink-task-0
下注册一个 MBean
而无法完成,则尝试在 com.mongodb.kafka.connect.sink-task-metrics.sink-task-0-v1
下注册 MBean
。
示例
假设您将一个名为 my-source-connector
的单个 MongoDB 源连接器添加到您的部署中。
MongoDB 源连接器将指标写入以下 JMX 路径
com.mongodb.kafka.connect.sink-task-metrics.sink-task-0
Kafka Connect 将此任务的指标写入以下路径
kafka.connect.sink-task-metrics.my-source-connector
示例 - 监控快速入门
快速入门中提供的示例环境在主机上的 URI localhost:35000
提供指标。
要使用 JConsole 查看这些指标,请执行以下操作
下载 JConsole。
JConsole是Java平台标准版的一部分。要下载JConsole,请从Oracle下载Java SE开发工具包。
启动快速入门流程并添加连接器。
按照快速入门指南进行操作,直到通过您的连接器发送文档内容这一步。
探索您的连接器的指标。
导航到JConsole中的 MBeans 选项卡。
检查连接器指标。请注意,
com.mongodb.kafka.connect.sink-task-metrics.sink-task-0.records
属性的值为0
。此值表示您的sink任务尚未从Apache Kafka接收任何记录。继续快速入门,直到但不包括 移除沙盒 步骤。
返回到JConsole中的 MBeans 选项卡。现在,
com.mongodb.kafka.connect.sink-task-metrics.sink-task-0.records
属性的值应该为1
。
停止并删除快速入门环境。
要停止和删除快速入门环境,请遵循快速入门中的删除沙盒步骤。
可用指标
使用本节中表格中的属性,通过Java管理扩展(JMX)来监视您的源和目标连接器的行为。
注意
轮询和放置方法
MongoDB源连接器任务有一个poll()
方法用于从MongoDB检索文档并发送它们到Apache Kafka。MongoDB目标连接器任务有一个put()
方法用于从Apache Kafka检索文档并发送它们到MongoDB。
有关poll()
和put()
方法的更多信息,请参阅以下资源
下连接器JMX度量
属性名称 | 描述 |
---|---|
records | MongoDB下连接器接收到的Kafka记录总数。 |
records-successful | MongoDB下连接器成功写入MongoDB的Kafka记录总数。 |
records-failed | MongoDB下连接器写入MongoDB失败的Kafka记录总数。 |
latest-kafka-time-difference-ms | 记录MongoDB下连接器与Kafka之间最近时间差的毫秒数。此值通过从连接器时钟的当前时间减去任务接收的最后一条记录的时间戳来计算。 |
in-task-put | Kafka Connect框架执行MongoDB下连接器任务的 put() 方法的次数总和。 |
in-task-put-duration-ms | 执行MongoDB下连接器任务的 put() 方法所花费的总毫秒数。 |
in-task-put-duration-over-1-ms | 执行时间超过1毫秒的MongoDB下连接器任务 put() 方法调用的总次数。 |
in-task-put-duration-over-10-ms | 执行时间超过10毫秒的MongoDB下连接器任务 put() 方法调用的总次数。 |
in-task-put-duration-over-100-ms | 执行时间超过100毫秒的MongoDB下连接器任务 put() 方法调用的总次数。 |
in-task-put-duration-over-1000-ms | 执行时间超过1000毫秒的MongoDB下连接器任务 put() 方法调用的总次数。 |
in-task-put-duration-over-10000-ms | 执行时间超过10000毫秒的MongoDB下连接器任务 put() 方法调用的总次数。 |
in-connect-framework | 在首次调用MongoDB下连接器任务的 put() 方法后,Kafka Connect框架执行代码的次数总和。 |
in-connect-framework-duration-ms | 自框架首次调用MongoDB下连接器任务的 put() 方法以来,执行Kafka Connect框架中代码所花费的总毫秒数。此度量不包括执行MongoDB下连接器任务中代码的时间。 |
in-connect-framework-duration-over-1-ms | 执行时间超过1毫秒的Kafka Connect框架中代码执行的次数总和。 |
in-connect-framework-duration-over-10-ms | 在Kafka Connect框架中,代码执行时间超过10毫秒的总次数。 |
in-connect-framework-duration-over-100-ms | 在Kafka Connect框架中,代码执行时间超过100毫秒的总次数。 |
in-connect-framework-duration-over-1000-ms | 在Kafka Connect框架中,代码执行时间超过1000毫秒的总次数。 |
in-connect-framework-duration-over-10000-ms | 在Kafka Connect框架中,代码执行时间超过10000毫秒的总次数。 |
processing-phases | MongoDB目标任务在Kafka记录批次上执行处理阶段的总次数。MongoDB目标任务的处理阶段是在从Kafka获取记录后开始,在将记录写入MongoDB之前结束的一组操作。 |
processing-phases-duration-ms | MongoDB目标任务在将记录写入MongoDB之前处理记录所花费的总毫秒数。 |
processing-phases-duration-over-1-ms | MongoDB目标任务处理阶段执行时间超过1毫秒的总次数。 |
processing-phases-duration-over-10-ms | MongoDB目标任务处理阶段执行时间超过10毫秒的总次数。 |
processing-phases-duration-over-100-ms | MongoDB目标任务处理阶段执行时间超过100毫秒的总次数。 |
processing-phases-duration-over-1000-ms | MongoDB目标任务处理阶段执行时间超过1000毫秒的总次数。 |
processing-phases-duration-over-10000-ms | MongoDB目标任务处理阶段执行时间超过10000毫秒的总次数。 |
batch-writes-successful | MongoDB目标任务成功写入MongoDB集群的总批次数。 |
batch-writes-successful-duration-ms | MongoDB目标任务成功写入MongoDB集群所花费的总毫秒数。 |
batch-writes-successful-duration-over-1-ms | MongoDB目标任务成功执行的批写入操作中,持续时间超过1毫秒的总次数。 |
batch-writes-successful-duration-over-10-ms | MongoDB目标任务成功执行的批写入操作中,持续时间超过10毫秒的总次数。 |
batch-writes-successful-duration-over-100-ms | MongoDB目标任务成功执行的批写入操作中,持续时间超过100毫秒的总次数。 |
batch-writes-successful-duration-over-1000-ms | MongoDB目标任务成功执行的批写入操作中,持续时间超过1000毫秒的总次数。 |
batch-writes-successful-duration-over-10000-ms | MongoDB目标任务成功执行的批写入操作中,持续时间超过10000毫秒的总次数。 |
batch-writes-failed | MongoDB目标任务尝试写入MongoDB集群失败的总批次数。 |
batch-writes-failed-duration-ms | MongoDB目标任务尝试写入MongoDB集群失败所花费的总毫秒数。 |
batch-writes-failed-duration-over-1-ms | MongoDB目标任务尝试写入MongoDB集群失败的批写入操作中,持续时间超过1毫秒的总次数。 |
batch-writes-failed-duration-over-10-ms | 由MongoDB下游任务尝试的失败批处理写入总数,写入持续时间超过10毫秒。 |
batch-writes-failed-duration-over-100-ms | 由MongoDB下游任务尝试的失败批处理写入总数,写入持续时间超过100毫秒。 |
batch-writes-failed-duration-over-1000-ms | 由MongoDB下游任务尝试的失败批处理写入总数,写入持续时间超过1000毫秒。 |
batch-writes-failed-duration-over-10000-ms | 由MongoDB下游任务尝试的失败批处理写入总数,写入持续时间超过10000毫秒。 |
源连接器JMX指标
注意
初始命令和getMore命令
某些源连接器任务指标区分了初始命令和getMore
命令。初始命令是发送到MongoDB实例的find
或aggregate
命令,用于检索客户端MongoDB游标的第一个文档集。getMore
命令是MongoDB命令,用于检索游标中的后续文档集。
有关getMore
命令的更多信息,请参阅getMore页面。
属性名称 | 描述 |
---|---|
records | MongoDB源任务传递给Kafka Connect框架的记录总数。 |
records-filtered | MongoDB源任务传递给Kafka Connect框架并被框架过滤的记录数。过滤的记录不会写入Kafka。 |
records-acknowledged | MongoDB源任务传递给Kafka Connect框架并被成功写入Kafka的记录总数。 |
mongodb-bytes-read | MongoDB源任务从MongoDB集群读取的字节数总合。 要计算您的下游连接器在一段时间内处理的记录的平均大小,请执行以下操作
|
latest-mongodb-time-difference-secs | 最近记录的MongoDB集群与MongoDB源任务持有的后批处理恢复令牌之间的时间差秒数。该值通过从任务的后批处理恢复令牌的时间戳减去任务最近成功执行的MongoDB命令的 operationTime 值来计算。 |
in-task-poll | Kafka Connect框架执行MongoDB源任务的 poll() 方法的次数总和。 |
in-task-poll-duration-ms | Kafka Connect框架执行MongoDB源任务的 poll() 方法所花费的毫秒数总和。 |
in-task-poll-duration-over-1-ms | MongoDB源任务 poll() 方法执行次数总和,其执行时间超过1毫秒。 |
in-task-poll-duration-over-10-ms | MongoDB源任务 poll() 方法执行次数总和,其执行时间超过10毫秒。 |
in-task-poll-duration-over-100-ms | MongoDB源任务 poll() 方法执行次数总和,其执行时间超过100毫秒。 |
in-task-poll-duration-over-1000-ms | MongoDB源任务 poll() 方法执行次数总和,其执行时间超过1000毫秒。 |
in-task-poll-duration-over-10000-ms | MongoDB源任务 poll() 方法执行次数总和,其执行时间超过10000毫秒。 |
in-connect-framework | MongoDB源任务 poll() 方法首次调用后,在Kafka Connect框架中执行代码的总次数。 |
in-connect-framework-duration-ms | 自框架首次调用MongoDB源任务 poll() 方法以来,在Kafka Connect框架中执行代码的总毫秒数。此指标不计入MongoDB接收任务的代码执行时间。 |
in-connect-framework-duration-over-1-ms | 执行时间超过1毫秒的Kafka Connect框架中代码执行的次数总和。 |
in-connect-framework-duration-over-10-ms | 在Kafka Connect框架中,代码执行时间超过10毫秒的总次数。 |
in-connect-framework-duration-over-100-ms | 在Kafka Connect框架中,代码执行时间超过100毫秒的总次数。 |
in-connect-framework-duration-over-1000-ms | 在Kafka Connect框架中,代码执行时间超过1000毫秒的总次数。 |
in-connect-framework-duration-over-10000-ms | 在Kafka Connect框架中,代码执行时间超过10000毫秒的总次数。 |
initial-commands-successful | MongoDB源任务发出的初始命令成功次数总和。初始命令是发送到MongoDB集群的查找或聚合命令,用于检索游标的第一个文档集。一个 getMore 命令不是一个初始命令。 |
initial-commands-successful-duration-ms | MongoDB源任务成功执行初始命令所花费的总毫秒数。 |
initial-commands-successful-duration-over-1-ms | MongoDB源任务成功发出的初始命令中,执行时间超过1毫秒的总数。 |
initial-commands-successful-duration-over-10-ms | MongoDB源任务成功发出的初始命令中,执行时间超过10毫秒的总数。 |
initial-commands-successful-duration-over-100-ms | MongoDB源任务成功发出的初始命令中,执行时间超过100毫秒的总数。 |
initial-commands-successful-duration-over-1000-ms | MongoDB源任务成功发出的初始命令中,执行时间超过1000毫秒的总数。 |
initial-commands-successful-duration-over-10000-ms | MongoDB源任务成功发出的初始命令中,执行时间超过10000毫秒的总数。 |
getmore-commands-successful | MongoDB源任务成功发出的 getMore 命令总数。 |
getmore-commands-successful-duration-ms | MongoDB源任务成功执行 getMore 命令所花费的总毫秒数。 |
getmore-commands-successful-duration-over-1-ms | MongoDB源任务成功发出的 getMore 命令中,执行时间超过1毫秒的总数。 |
getmore-commands-successful-duration-over-10-ms | MongoDB源任务成功发出的 getMore 命令中,执行时间超过10毫秒的总数。 |
getmore-commands-successful-duration-over-100-ms | MongoDB源任务成功发出的 getMore 命令中,执行时间超过100毫秒的总数。 |
getmore-commands-successful-duration-over-1000-ms | MongoDB源任务成功发出的 getMore 命令中,执行时间超过1000毫秒的总数。 |
getmore-commands-successful-duration-over-10000-ms | MongoDB源任务成功发出的 getMore 命令中,执行时间超过10000毫秒的总数。 |
initial-commands-failed | 一个MongoDB源任务发出的失败初始命令总数。初始命令是发送到MongoDB集群以检索游标中第一组文档的查找或聚合命令。一个 getMore 命令不是初始命令。 |
initial-commands-failed-duration-ms | 一个MongoDB源任务在尝试向MongoDB服务器发出初始命令时花费的总毫秒数,这些尝试未成功。 |
initial-commands-failed-duration-over-1-ms | 一个MongoDB源任务发出的失败初始命令总数,其持续时间超过1毫秒。 |
initial-commands-failed-duration-over-10-ms | 一个MongoDB源任务发出的失败初始命令总数,其持续时间超过10毫秒。 |
initial-commands-failed-duration-over-100-ms | 一个MongoDB源任务发出的失败初始命令总数,其持续时间超过100毫秒。 |
initial-commands-failed-duration-over-1000-ms | 一个MongoDB源任务发出的失败初始命令总数,其持续时间超过1000毫秒。 |
initial-commands-failed-duration-over-10000-ms | 一个MongoDB源任务发出的失败初始命令总数,其持续时间超过10000毫秒。 |
getmore-commands-failed | 一个MongoDB源任务发出的失败 getMore 命令总数。 |
getmore-commands-failed-duration-ms | 一个MongoDB源任务在尝试向MongoDB服务器发出 getMore 命令时花费的总毫秒数,这些尝试未成功。 |
getmore-commands-failed-duration-over-1-ms | 一个MongoDB源任务发出的失败 getMore 命令总数,其持续时间超过1毫秒。 |
getmore-commands-failed-duration-over-10-ms | 一个MongoDB源任务发出的失败 getMore 命令总数,其持续时间超过10毫秒。 |
getmore-commands-failed-duration-over-100-ms | 一个MongoDB源任务发出的失败 getMore 命令总数,其持续时间超过100毫秒。 |
getmore-commands-failed-duration-over-1000-ms | 一个MongoDB源任务发出的失败 getMore 命令总数,其持续时间超过1000毫秒。 |
getmore-commands-failed-duration-over-10000-ms | 一个MongoDB源任务发出的失败 getMore 命令总数,其持续时间超过10000毫秒。 |