2017-08-10 56 views
1

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

我们有卡夫卡连接运行,它运行良好,但我们有错误,需要手动跟踪和发现。通常,在人类发现问题之前,它一直处于错误状态。

回答

1

一个选项是使用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允许你采样做。

2

基于Randall的说法,此shell脚本使用Confluent CLI显示所有连接器和任务的状态。你可以使用它作为警报的基础:

[email protected] ~/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