對於Kafka Connect Connector或Connector任務失敗或遇到錯誤的情況,是否有任何警報選項?Kafka Connect警報選項?
我們有卡夫卡連接運行,它運行良好,但我們有錯誤,需要手動跟蹤和發現。通常,在人類發現問題之前,它一直處於錯誤狀態。
對於Kafka Connect Connector或Connector任務失敗或遇到錯誤的情況,是否有任何警報選項?Kafka Connect警報選項?
我們有卡夫卡連接運行,它運行良好,但我們有錯誤,需要手動跟蹤和發現。通常,在人類發現問題之前,它一直處於錯誤狀態。
一個選項是使用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允許你採樣做。
基於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