监控
在此页面上
Overview
了解如何通过监控来观察 MongoDB Kafka 源连接器或 MongoDB Kafka 接收器连接器的行为。 监控是获取正在运行的程序所执行的活动信息以用于应用程序或应用程序性能管理库的过程。
要了解监控在connector中的工作原理和使用方法,请参阅 使用案例部分。
要查看显示如何监控正在运行的connector的示例,请参阅示例 - 监控快速入门部分。
要查看 MongoDB 源连接器和接收器连接器生成的所有指标的列表,请参阅可用指标部分。
用例
本节介绍监控 MongoDB 源连接器和接收器连接器的使用案例,以及如何使用连接器提供的指标来满足这些使用案例。
接收器连接器
下表描述了监控 MongoDB Sink 连接器的一些使用案例,以及 Sink 连接器为满足这些使用案例而提供的指标:
用例(Use Case) | 要使用的指标 |
---|---|
您想知道管道的某个组件是否落后。 | 使用 latest-kafka-time-difference-ms 指标。 该指标表示记录到达 Kafka 主题与您的connector收到该记录之间的时间间隔。如果该指标的值不断增加,则表明 Apache Kafka 或 MongoDB 可能存在问题。 |
您想知道connector写入MongoDB的记录总数。 | 使用 records 指标。 |
您想知道connector在尝试写入MongoDB时遇到的写入错误总数。 | 使用 batch-writes-failed 指标。 |
您想知道 MongoDB 性能是否随着时间的推移而变慢。 | 使用 使用以下指标进一步诊断任何问题:
|
您想要找到Kafka Connect 和MongoDB Sink connector将记录写入MongoDB所花费的时间。 | 比较以下指标的值:
|
您可以在 接收connector JMX 指标 部分找到所有MongoDB 接收器connector 指标的描述。
来源连接器
下表描述了监控 MongoDB connector的一些使用案例,以及connector为满足这些使用案例而提供的指标:
用例(Use Case) | 要使用的指标 | |
---|---|---|
您想知道管道的某个组件是否落后。 | 使用 latest-mongodb-time-difference-secs 指标。 该指标表示connector最近处理的change stream事件的持续时间。如果该指标不断增加,则表明 Apache Kafka 或 MongoDB 可能存在问题。 | |
您想知道源connector已处理的变更流事件总数。 | 使用 records 指标。 | |
您想知道connector已收到但未能写入Apache Kafka的记录的百分比。 | 使用
| |
您想知道connector已处理文档的平均大小。 | 使用
要了解如何计算一段时间内记录的平均大小,请参阅mongodb-bytes-read。 | |
您想要找到Kafka Connect 和MongoDB源connector将记录写入Apache Kafka所花费的时间。 | 比较以下指标的值:
| |
您想知道 MongoDB 性能是否随着时间的推移而变慢。 | 使用 使用以下指标进一步诊断任何问题:
|
您可以在 源connector JMX 指标 部分找到所有MongoDB 源connector 指标的描述。
监控connector
MongoDB Kafka Connector 使用Java 管理扩展 (JMX)来启用监控。 JMX 是 Java Platform, Standard Edition 中包含的一项技术,可提供用于监控应用程序和设备的工具。 您可以使用任何 JMX 控制台(例如 JConsole)查看connector生成的指标。
MongoDB Kafka Connector 提供各个任务的指标。 任务是由 Kafka Connect 实例化的类,用于将数据复制到数据存储和 Apache Kafka 以及从数据存储和 Apache Kafka 复制数据。 Kafka Connect 中两类任务的名称和职责如下:
源任务将数据从数据存储复制到 Apache Kafka。
Sink 任务将数据从 Apache Kafka 复制到数据存储。
接收器连接器配置一个或多个接收器任务。 源连接器可配置一个或多个源任务。
要了解有关 JMX 的更多信息,请参阅 Oracle 提供的以下资源:
要了解有关 Kafka Connect 中任务和连接器的更多信息,请参阅以下资源:
启用监控
MongoDB Kafka Connector 使用 Kafka Connect 的指标基础架构来提供指标。 要读取连接器生成的指标,请在 Kafka Connect 部署中启用 JMX。
要了解如何为主机上运行的 Kafka Connect 实例启用 JMX,请参阅 Kafka 官方文档。
要了解如何为容器化 Kafka Connect 部署启用 JMX,请参阅 结合使用 JMX 和 Docker 进行 Kafka 监控和指标。
指标类型
connector提供与以下数量类型相关的指标:
connector任务中事件总共发生的次数
与最近发生的事件相关的值
对于某些使用案例,您必须使用connector提供的指标执行额外计算。 例如,您可以根据提供的指标计算以下值:
指标的变化率
某一指标在一段时间内的值
一个指标与另一个指标之间的差异
要查看计算指标的一些示例,请参阅使用案例部分。
JMX 路径
MongoDB Kafka Connector 和 Kafka Connect 都会为 MongoDB Connector 任务生成指标。
两组指标都提供有关任务如何与 Kafka Connect 交互的信息,但只有 MongoDB Kafka Connector 指标提供有关任务如何与 MongoDB 交互的信息。
MongoDB Kafka Connector 在以下 JMX 路径下生成指标:
com.mongodb.kafka.connect.sink-task-metrics.sink-task-<monitonically increasing number>
com.mongodb.kafka.connect.source-task-metrics.source-task-<monitonically increasing number>
com.mongodb.kafka.connect.source-task-metrics.source-task-change-stream-<monitonically increasing number>
com.mongodb.kafka.connect.source-task-metrics.source-task-copy-existing-<monitonically increasing number>
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 Connector 指标关联,您必须记住将连接器添加到 Kafka Connect 的顺序。
注意
命名冲突
如果 MongoDB Kafka Connector 在尝试在 JMX 路径上注册MBean
时遇到命名冲突,MongoDB Kafka Connector 则会在MBean
后添加版本后缀。
例如,如果connector尝试在路径 下注册MBean
com.mongodb.kafka.connect.sink-task-metrics.sink-task-0
但未能成功,则会尝试在 下注册MBean
com.mongodb.kafka.connect.sink-task-metrics.sink-task-0-v1
。
例子
假设您将一个名为my-source-connector
的 MongoDB connector 添加到部署中。
MongoDB connector会将指标写入以下 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 Platform, Standard Edition 的一部分。 要下载 JConsole,请下载 Java SE 开发工具包 来自 Oracle。
启动快速入门管道并添加连接器。
按照快速入门进行操作,直到执行 “通过连接器发送文档内容”步骤。
探索连接器的指标。
导航到 JConsole 中的MBeans标签页。
检查Connector指标。 请注意,
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) 监控源连接器和接收器连接器的行为。
注意
Poll 和 Put 方法
MongoDB connector任务具有poll()
方法,用于从 MongoDB 检索文档并将其发送到 Apache Kafka。MongoDB connector 任务具有put()
方法,用于从 Apache Kafka 检索文档并将其发送到 MongoDB。
要了解有关poll()
和put()
方法的详情,请参阅以下资源:
接收器connector JMX 指标
属性名称 | 说明 |
---|---|
记录 | MongoDB Sink 任务收到的 Kafka 记录总数。 |
记录成功 | MongoDB Sink 任务成功写入 MongoDB 的 Kafka 记录总数。 |
记录失败 | MongoDB 接收器任务无法写入 MongoDB 的 Kafka 记录总数。 |
latest-kafka-time-difference-ms | MongoDB Sink 任务和 Kafka 之间最近记录的时间差的毫秒数。 该值的计算方法是减去连接器时钟的当前时间和任务收到的最后一条记录的时间戳。 |
in-task-put | Kafka Connect 框架执行 MongoDB 接收器任务的 put() 方法的总次数。 |
in-任务-put-duration-ms | Kafka Connect 框架执行 MongoDB 接收器任务的 put() 方法所花费的总毫秒数。 |
in-task-put-duration-over-1-ms | 执行持续时间超过 1 毫秒的 MongoDB 接收器任务 put() 方法的总数。 |
in-任务-put-duration-over-10-ms | 持续时间超过 10 毫秒的 MongoDB 接收器任务 put() 方法执行总数。 |
in-任务-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 | 自 Kafka Connect 框架首次调用 MongoDB 接收器任务的 put() 方法以来,在该框架中执行代码所花费的总毫秒数。 此指标不将 MongoDB 接收器任务中执行代码的时间计入总时间。 |
in-connect-框架-duration-over-1-ms | Kafka Connect 框架中执行代码的持续时间超过 1 毫秒的总次数。 |
in-connect-框架-duration-over-10-ms | Kafka Connect 框架中代码执行时间超过 10 毫秒的总次数。 |
in-connect-框架-duration-over-100-ms | Kafka Connect 框架中代码执行时间超过 100 毫秒的总次数。 |
in-connect-框架-duration-over-1000-ms | Kafka Connect 框架中代码执行时间超过 1000 毫秒的总次数。 |
in-connect-框架-duration-over-10000-ms | Kafka Connect 框架中代码执行时间超过 10000 毫秒的总次数。 |
处理阶段 | MongoDB 任务对来自 Kafka 的批处理记录执行处理阶段的总次数。MongoDB 任务的处理阶段是指从 Kafka 获取记录之后开始到将记录写入 MongoDB 之前结束的一组操作。 |
Processing-Phases-Duration-ms | MongoDB 接收器任务在将记录写入 MongoDB 之前处理记录所花费的总毫秒数。 |
Processing-Phases-duration-over-1-ms | 持续时间超过 1 毫秒的 MongoDB 接收器任务处理阶段执行总数。 |
Processing-Phases-Duration-over-10-ms | 持续时间超过 10 毫秒的 MongoDB 接收器任务处理阶段执行总数。 |
Processing-Phases-Duration-over-100-ms | 持续时间超过 100 毫秒的 MongoDB 接收器任务处理阶段执行总数。 |
Processing-Phases-Duration-over-1000-ms | 持续时间超过 1000 毫秒的 MongoDB 接收器任务处理阶段执行总数。 |
Processing-Phases-Duration-over-10000-ms | 持续时间超过 10000 毫秒的 MongoDB 接收器任务处理阶段执行总数。 |
batch-writes-successful | MongoDB接收器任务成功写入MongoDB cluster的批处理总数。 |
批处理-writes-successful-duration-ms | MongoDB接收器任务成功写入MongoDB cluster所花费的总毫秒数。 |
批处理-writes-successful-duration-over-1-ms | MongoDB 任务成功执行的持续时间超过 1 毫秒的批处理写入总数。 |
批处理-writes-successful-duration-over-10-ms | MongoDB 接收器任务成功执行的持续时间超过 10 毫秒的批量写入总数。 |
批处理-writes-successful-duration-over-100-ms | MongoDB 任务成功执行的持续时间超过 100 毫秒的批处理写入总数。 |
批处理-writes-successful-duration-over-1000-ms | MongoDB 任务成功执行的持续时间超过 1000 毫秒的批处理写入总数。 |
批处理-writes-successful-duration-over-10000-ms | MongoDB 任务成功执行的持续时间超过 10000 毫秒的批处理写入总数。 |
batch-writes-failed | MongoDB接收器任务未能写入MongoDB cluster的批处理总数。 |
batch-writes-failed-duration-ms | MongoDB接收器任务尝试将批处理写入MongoDB cluster失败所花费的总毫秒数。 |
批处理-writes-failed-duration-over-1-ms | MongoDB 任务尝试进行的持续时间超过 1 毫秒的失败批处理写入总次数。 |
批处理-writes-failed-duration-over-10-ms | MongoDB 接收器任务尝试的持续时间超过 10 毫秒的失败批量写入总次数。 |
批处理-writes-failed-duration-over-100-ms | MongoDB 任务尝试的持续时间超过 100 毫秒的失败批处理写入总次数。 |
批处理-writes-failed-duration-over-1000-ms | MongoDB 任务尝试的持续时间超过 1000 毫秒的失败批处理写入总次数。 |
批处理-writes-failed-duration-over-10000-ms | MongoDB 任务尝试的持续时间超过 10000 毫秒的失败批处理写入总次数。 |
源connector JMX 指标
注意
初始命令和 getMore 命令
源connector任务的某些指标会区分初始命令和getMore
命令。 初始命令是发送到 MongoDB 实例的find
或aggregate
命令,用于检索客户端 MongoDB 游标中的第一组文档。 getMore
命令是获取游标中后续文档集的 MongoDB 命令。
要了解有关getMore
命令的更多信息,请参阅getMore页面。
属性名称 | 说明 |
---|---|
记录 | MongoDB 源任务传递到 Kafka Connect 框架的记录总数。 |
已筛选记录 | MongoDB 源任务传递到 Kafka Connect 框架,然后由框架筛选的记录数。 筛选后的记录不会写入 Kafka。 |
已确认记录 | MongoDB 源任务传递到 Kafka Connect 框架,然后成功写入 Kafka 的记录总数。 |
mongodb-bytes-read | MongoDB源任务从MongoDB cluster读取的总字节数。 要计算connector在一段时间内处理的记录的平均大小,请执行以下操作:
|
latest-mongodb-time-difference-secs | MongoDB cluster与MongoDB源任务持有的批处理后恢复令牌之间记录的最近时间差的秒数。 该值的计算方法是从任务最近成功执行的 MongoDB 命令的 operationTime 值中减去任务的批处理后恢复令牌的时间戳。 |
in-任务-poll | Kafka Connect 框架执行 MongoDB 源任务的 poll() 方法的总次数。 |
in-任务-poll-duration-ms | Kafka Connect 框架执行 MongoDB 源任务的 poll() 方法所花费的总毫秒数。 |
in-任务-poll-duration-over-1-ms | 持续时间超过 1 毫秒的 MongoDB 源任务 poll() 方法执行总数。 |
in-task-poll-duration-over-10-ms | 持续时间超过 10 毫秒的 MongoDB 源任务 poll() 方法执行总数。 |
in-task-poll-duration-over-100-ms | 持续时间超过 100 毫秒的 MongoDB 源任务 poll() 方法执行总数。 |
in-任务-poll-duration-over-1000-ms | 持续时间超过 1000 毫秒的 MongoDB 源任务 poll() 方法执行总数。 |
in-task-poll-duration-over-10000-ms | 持续时间超过 10000 毫秒的 MongoDB 源任务 poll() 方法执行总数。 |
in-connect-framework | 首次调用 MongoDB 源任务的 poll() 方法后,Kafka Connect 框架中执行代码的总次数。 |
in-connect-framework-duration-ms | 自 Kafka Connect 框架首次调用 MongoDB 源任务的 poll() 方法以来,在该框架中执行代码所花费的总毫秒数。 此指标不将 MongoDB 接收器任务中执行代码的时间计入总时间。 |
in-connect-框架-duration-over-1-ms | Kafka Connect 框架中执行代码的持续时间超过 1 毫秒的总次数。 |
in-connect-框架-duration-over-10-ms | Kafka Connect 框架中代码执行时间超过 10 毫秒的总次数。 |
in-connect-框架-duration-over-100-ms | Kafka Connect 框架中代码执行时间超过 100 毫秒的总次数。 |
in-connect-框架-duration-over-1000-ms | Kafka Connect 框架中代码执行时间超过 1000 毫秒的总次数。 |
in-connect-框架-duration-over-10000-ms | Kafka Connect 框架中代码执行时间超过 10000 毫秒的总次数。 |
initial-commands-successful | 成功的 MongoDB 源任务发出的初始命令总数。 初始命令是发送到MongoDB cluster的查找或聚合命令,用于检索游标中的第一组文档。 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 源任务成功发出的持续时间超过 1 毫秒的 getMore 命令总数。 |
getmore-commands-successful-duration-over-10-ms | MongoDB 源任务成功发出的持续时间超过 10 毫秒的 getMore 命令总数。 |
getmore-commands-successful-duration-over-100-ms | MongoDB 源任务成功发出的持续时间超过 100 毫秒的 getMore 命令总数。 |
getmore-commands-successful-duration-over-1000-ms | MongoDB 源任务成功发出的持续时间超过 1000 毫秒的 getMore 命令总数。 |
getmore-commands-successful-duration-over-10000-ms | MongoDB 源任务成功发出的持续时间超过 10000 毫秒的 getMore 命令总数。 |
initial-commands-failed | 失败的 MongoDB 源任务发出的初始命令总数。 初始命令是发送到MongoDB cluster的查找或聚合命令,用于检索游标中的第一组文档。 getMore 命令不是初始命令。 |
initial-commands-failed-duration-ms | MongoDB 任务尝试向 MongoDB Server 发出初始命令失败所花费的总毫秒数。 |
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 Server 发出 getMore 命令失败所花费的总毫秒数。 |
getmore-commands-failed-duration-over-1-ms | MongoDB 源任务发出的持续时间超过 1 毫秒的 getMore 命令失败的总次数。 |
getmore-commands-failed-duration-over-10-ms | MongoDB 源任务发出的持续时间超过 10 毫秒的 getMore 命令失败总次数。 |
getmore-commands-failed-duration-over-100-ms | MongoDB 源任务发出的持续时间超过 100 毫秒的 getMore 命令失败的总次数。 |
getmore-commands-failed-duration-over-1000-ms | MongoDB 源任务发出的持续时间超过 1000 毫秒的 getMore 命令失败的总次数。 |
getmore-commands-failed-duration-over-10000-ms | MongoDB 源任务发出的持续时间超过 10000 毫秒的 getMore 命令失败的总次数。 |