Kafka连接警报选项?

b1zrtrql  于 2021-06-04  发布在  Kafka
关注(0)|答案(5)|浏览(212)

对于kafka connect连接器或连接器任务失败或出现错误的情况,是否有任何警报选项?
我们有Kafka连接运行,它运行良好,但我们有一些错误,需要手动跟踪和发现。通常,在人类注意到问题之前,它已经处于错误状态一周了。

j8ag8udp

j8ag8udp1#

我知道这是一个非常老的问题,所以当我们遇到类似的问题时,因为我们大量使用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 希望这对你有帮助

c9x0cxw0

c9x0cxw02#

基于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
vh0rcniy

vh0rcniy3#

一种选择是使用kafkaconnect的restapi来检查worker的运行状况和连接器的状态。使用简单的脚本或许多监视系统,这种方法很容易实现自动化。它与独立工作线程和分布式工作线程一起工作,不过在后一种情况下,您可以向集群中的任何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"
        }
    ]
}

这些只是restapi允许您做的一个示例。

bcs8qyzn

bcs8qyzn4#

自从这篇文章被撰写/回复后,Kafka连接开始提供自己的官方标准。apachekafka connect以遗留jmx提供度量。
如果你使用合流Kafka连接舵图表(https://github.com/confluentinc/cp-helm-charts/tree/master/charts/cp-kafka-connect),其中包括普罗米修斯指标出口商。
我监视并提醒 cp_kafka_connect_connect_connector_metrics{status="running"} 从合流舵图普罗米修斯图,但有许多变化。
对于任何自动监控+警报设置,通常最好使用官方的kafka connect度量。此选项在撰写和回复此帖子时不可用。
仅供参考,kafka仍然没有公开滞后指标,所以您仍然需要第三方选项来监视和警告滞后。

fxnxkyjh

fxnxkyjh5#

(对于克莱的回答,我仍然无法发表评论……)
注意:任务/连接器状态的jmx度量中有一个bug(发布时:5/11/2020)
1) 当一个任务失败时,它的状态度量就会消失。这是一个已知问题,正在进行修复。在这里可以找到吉拉,在这里可以找到公关。
2) 不要使用连接器度量来监视任务的状态。连接器可以显示为正常运行,但任务可能处于失败状态,您需要直接监视任务。confluent的连接器监控提示中提到了这一点,其中指出: In most cases, connector and task states will match, though they may be different for short periods of time when changes are occurring or if tasks have failed. For example, when a connector is first started, there may be a noticeable delay before the connector and its tasks have all transitioned to the RUNNING state. States will also diverge when tasks fail since Connect does not automatically restart failed tasks.

相关问题