Apache kafka 卡夫卡连接警报选项?
对于Kafka Connect连接器或连接器任务失败或出现错误的情况,是否有任何警报选项 我们有卡夫卡连接运行,它运行良好,但我们有需要手动跟踪和发现的错误。通常,在人类发现问题之前,它已经处于错误状态一周。一个选项是用来检查工作人员的健康状况和连接器的状态。使用简单的脚本或许多监控系统,这种方法很容易实现自动化。它适用于独立工作程序和分布式工作程序,但在后一种情况下,您可以向集群中的任何Kafka Connect工作程序发出请求 如果要检查所有连接器的运行状况,第一步是获取已部署连接器的列表:Apache kafka 卡夫卡连接警报选项?,apache-kafka,apache-kafka-connect,Apache Kafka,Apache Kafka Connect,对于Kafka Connect连接器或连接器任务失败或出现错误的情况,是否有任何警报选项 我们有卡夫卡连接运行,它运行良好,但我们有需要手动跟踪和发现的错误。通常,在人类发现问题之前,它已经处于错误状态一周。一个选项是用来检查工作人员的健康状况和连接器的状态。使用简单的脚本或许多监控系统,这种方法很容易实现自动化。它适用于独立工作程序和分布式工作程序,但在后一种情况下,您可以向集群中的任何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配置,它将根据指定的递归间隔继续轮询集群,并发送基于邮件的警报
如果它适合您的用例,请使用它,并在遇到任何问题时提出问题
回购协议的链接如下:
图像也被推送到Docker Hub上,您可以使用以下命令直接运行它
docker run-d-v:/home/code/config.json gunjdesai/kafka connect monit
希望这可能对您有所帮助自从这篇文章被撰写/回复后,卡夫卡连接开始提供自己的官方指标。ApacheKafka Connect以传统的JMX格式提供指标 如果您使用合流的卡夫卡连接头盔图表(),它们包括普罗米修斯度量导出器 我在普罗米修斯海图的汇合舵海图中监控并提醒cp_kafka_connect_connect_connector_metrics{status=“running”},但有许多变化 对于任何自动监控+警报设置,通常最好使用官方卡夫卡连接指标。此选项在撰写和回复此帖子时不可用 仅供参考,卡夫卡仍然没有公开滞后指标,因此您仍然需要第三方选项来监控滞后并发出警报。(我仍然无法对clay的回答做出评论…) 注意:任务/连接器状态的JMX指标中有一个bug(发布时:2020年5月11日) 1) 当任务失败时,其状态度量将消失。这是一个已知问题,正在进行修复。A和 2) 不要使用连接器指标来监视任务的状态。连接器可以显示为正常运行,但任务可能处于故障状态,您需要直接监视任务。Confluent's中提到了这一点,其中写道:
在大多数情况下,连接器和任务状态将匹配,尽管在发生更改或任务失败的短时间内它们可能不同。例如,当连接器首次启动时,在连接器及其任务全部转换到运行状态之前,可能会有明显的延迟。当任务失败时,状态也会出现分歧,因为Connect不会自动重新启动失败的任务。
我知道这有点晚了,但这可能完成了人们在这里提出的建议,改进KC群集监控的一种方法是使用此Kafka Connect REST扩展:
然后让您的监视定期作业检查此端点,以确保所有连接器任务都正常运行。
我们在生产中使用它,它完成了这项工作
jar在maven central中也可用,如下所示:
<dependency>
<groupId>net.loobpack.kafka-connect-healthchecks</groupId>
<artifactId>kafka-connect-healthcheck-extension</artifactId>
<version>1.0.0</version>
</dependency>
net.loobpack.kafka-connect-healthchecks
卡夫卡连接健康检查扩展
1.0.0
编写时这是最好的答案,但较新版本的Confluent提供了本机指标,更适合于自动监控和警报。