【问题标题】:Kafka Connect Alerting Options?Kafka Connect 警报选项?
【发布时间】:2018-01-19 05:45:24
【问题描述】:

对于 Kafka Connect 连接器或连接器任务失败或遇到错误的情况,是否有任何警报选项?

我们正在运行 Kafka Connect,它运行良好,但我们遇到了需要手动跟踪和发现的错误。通常,在人类发现问题之前,它会处于错误状态一周。

【问题讨论】:

    标签: apache-kafka apache-kafka-connect


    【解决方案1】:

    (我仍然无法评论以回应克莱的回答......)

    注意:任务/连接器状态的 JMX 指标中存在错误(发布时:2020 年 5 月 11 日)

    1) 当任务失败时,它的状态指标就会消失。这是一个已知问题,正在修复中。一个Jira can be found herePR can be found here

    2) 不要使用 Connector 指标来监控任务的状态。 Connector 可以显示为运行良好但任务可能处于失败状态,您需要监控直接做任务。这在 Confluent 的 Connector monitoring tips 中提到:

    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.

    【讨论】:

      【解决方案2】:

      根据 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
      

      【讨论】:

        【解决方案3】:

        一种选择是使用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 允许您执行的操作的一个示例。

        【讨论】:

        • 这是编写时的最佳答案,但较新版本的 Confluent 提供了更适合自动监控 + 警报的原生指标。
        【解决方案4】:

        我知道这是一个非常老的问题,所以当我们遇到类似的问题时,因为我们非常频繁地使用 Kafka Connect,而且很难单独监控每个连接器,尤其是当您要管理超过 150 个以上的连接器时连接器。

        因此我们编写了一个基于 Kotlin 的小型应用程序,它接受 config.json,您可以在其中指定集群配置,如果指定了 smtp 配置,它将根据指定的指定递归间隔继续轮询集群并发送基于邮件的警报。

        如果它适合您的用例,请使用并在遇到任何问题时提出问题。

        repo 的链接如下: 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

        希望对你有帮助

        【讨论】:

          【解决方案5】:

          自从撰写/回答了这篇文章后,Kafka Connect 开始提供自己的官方指标。 Apache Kafka Connect 以旧版 JMX 格式提供指标。

          如果您使用 Confluent Kafka Connect Helm Charts (https://github.com/confluentinc/cp-helm-charts/tree/master/charts/cp-kafka-connect),它们包括 Prometheus 指标导出器。

          我在 Confluent Helm Chart Prometheus 图表中监控 cp_kafka_connect_connect_connector_metrics{status="running"} 并发出警报,但有很多变化。

          对于任何自动监控 + 警报设置,通常最好使用官方 Kafka Connect 指标。当这篇文章被写+回答时,这个选项不可用。

          仅供参考,Kafka 仍然没有公开延迟指标,因此您仍然需要第三方选项来监控延迟并发出警报。

          【讨论】:

            【解决方案6】:

            我知道这有点晚了,但这可能会完成人们在这里的建议,改进 KC 集群监控的一种方法是使用这个 Kafka Connect REST 扩展: https://github.com/LoObp4ck/kafka-connect-healthchecks

            然后让您的监控定期作业检查此端点,以确保所有连接器任务运行正常。 我们在生产中使用它并完成工作

            jar 也可以在 maven Central 中使用,如下所示:

            <dependency>
              <groupId>net.loobpack.kafka-connect-healthchecks</groupId>
              <artifactId>kafka-connect-healthcheck-extension</artifactId>
              <version>1.0.0</version>
            </dependency>
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-12-12
              • 2021-09-18
              • 1970-01-01
              • 2015-06-11
              相关资源
              最近更新 更多