2017-08-10 77 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