对于Kafka Connect Connector或Connector任务失败或遇到错误的情况,是否有任何警报选项?
我们有Kafka Connect运行,它运行良好,但我们有错误需要手动跟踪和发现。通常,在人类注意到问题之前,它已处于错误状态一周。
一种选择是使用Kafka Connect's REST API来检查工人的健康状况和连接器的状态。使用简单脚本或许多监视系统,这种方法很容易自动化。它适用于独立工作者和分布式工作者,但在后一种情况下,您可以向群集中的任何Kafka Connect工作者发出请求。
如果要检查所有连接器的运行状况,第一步是获取已部署连接器的列表:
GET /connectors
这将返回连接器名称的JSON数组。对于其中每个,请发出检查指定连接器状态的请求:
GET /connectors/(string: name)/status
响应将包括有关连接器及其任务的状态信息。例如,以下显示了一个运行两个任务的连接器,其中一个任务仍在运行,另一个任务因错误而失败:
HTTP/1.1 200 OK
{
"name": "hdfs-sink-connector",
"connector": {
"state": "RUNNING",
"worker_id": "fakehost:8083"
},
"tasks":
[
{
"id": 0,
"state": "RUNNING",
"worker_id": "fakehost:8083"
},
{
"id": 1,
"state": "FAILED",
"worker_id": "fakehost:8083",
"trace": "org.apache.kafka.common.errors.RecordTooLargeException\n"
}
]
}
这些只是REST API允许您执行的操作的示例。
在Randall所说的基础上,这个shell脚本使用Confluent CLI来显示所有连接器和任务的状态。您可以将其用作警报的基础:
Robin@asgard02 ~/c/confluent-3.3.0> ./bin/confluent status connectors| \
jq '.[]'| \
xargs -I{connector} ./bin/confluent status {connector}| \
jq -c -M '[.name,.connector.state,.tasks[].state]|join(":|:")'| \
column -s : -t| \
sed 's/\"//g'| \
sort
file-sink-mysql-foobar | RUNNING | RUNNING
jdbc_source_mysql_foobar_01 | RUNNING | RUNNING
我知道这是一个非常古老的问题,因此当我们遇到类似的问题时,我们非常重视Kafka Connect,并且因为很难单独监控每个连接器,特别是当您正在寻找管理150多个连接器时。
因此,我们编写了一个基于Kotlin的小应用程序,它接受一个config.json
,您可以在其中指定集群配置,如果指定了smtp配置,它将继续根据指定的指定递归间隔轮询集群,并将发送基于邮件的警报。
如果它适合您的用例,请使用并提出问题,以防您遇到任何问题。
回购的链接如下:https://github.com/gunjdesai/kafka-connect-monit
图像也会在Docker Hub上推送,您可以使用以下命令直接运行它。
docker run -d -v <location-of-your-config-file.json>:/home/code/config.json gunjdesai/kafka-connect-monit
希望这对你有所帮助