Apache kafka 卡夫卡连接警报选项?

Apache kafka 卡夫卡连接警报选项?,apache-kafka,apache-kafka-connect,Apache Kafka,Apache Kafka Connect,对于Kafka Connect连接器或连接器任务失败或出现错误的情况,是否有任何警报选项 我们有卡夫卡连接运行,它运行良好,但我们有需要手动跟踪和发现的错误。通常,在人类发现问题之前,它已经处于错误状态一周。一个选项是用来检查工作人员的健康状况和连接器的状态。使用简单的脚本或许多监控系统,这种方法很容易实现自动化。它适用于独立工作程序和分布式工作程序,但在后一种情况下,您可以向集群中的任何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提供了本机指标,更适合于自动监控和警报。