Flume的監控參數

參考 flume的http監控參數說明java

 

普通的flume啓動命令數據庫

bin/flume-ng agent -c conf -f conf/flume-conf.properties -n agent -Dflume.root.logger=INFO,console

日誌信息在終端輸出,只有去掉這個參數,日誌才能在log4j和logback中輸出apache

-Dflume.root.logger=INFO,console

若是要加上http監控的話緩存

bin/flume-ng agent -c conf -f conf/flume-conf.properties -n agent -Dflume.root.logger=INFO,console -Dflume.monitoring.type=http -Dflume.monitoring.port=34545

 即加上參數,flume.monitoring.type=http 指定了Reporting的方式爲http,flume.monitoring.port 指定了http服務的端口號bash

-Dflume.monitoring.type=http -Dflume.monitoring.port=34545

 訪問框架

http://localhost:34545/metrics

 

參數說明:ui

(1)、SOURCE

SOURCE做爲flume的數據源組件,全部收集日誌的第一個到達的地方,它的監控信息很是重要。經過監控咱們可以獲得的監控數據有這些:spa

KafkaEventGetTimer日誌

AppendBatchAcceptedCount(追加到channel中的批數量) 速率code

EventAcceptedCount(成功放入channel的event數量) 速率

AppendReceivedCount(source追加目前收到的數量) 速率

StartTime(組件開始時間)

AppendBatchReceivedCount(source端剛剛追加的批數量) 速率

KafkaCommitTimer

EventReceivedCount(source端成功收到的event數量) 速率

Type(組件類型)

AppendAcceptedCount(放入channel的event數量) 速率

OpenConnectionCount(打開的鏈接數)

KafkaEmptyCount

StopTime(組件中止時間)

固然這些只是flume監控源碼中已經自帶的監控元素,若是你須要其餘的監控信息,例如ip、端口號等,有兩種方法,第一個,修改監控源碼,添加你須要的監控元素,這種方法只是在原有代碼基礎上,添加一些知足本身需求的監控元素,比較簡單,但靈活性不足;第二個就是自定義監控組件,這種方法是在原有監控框架中,本身實現本身的監控組件,這樣能夠達到徹底知足本身需求,且靈活性很高。至於這兩種方法如何操做,在後面Flume監控如何實現有討論到。

同理CHANNEL、SINK這兩個組件的監控也可使用這兩種方法來添加本身想要的監控元素。

(2)、CHANNEL

CHANNEL是flume的一個通道組件,對數據有一個緩存的做用。可以獲得的數據:

ChannelCapacity(通道容量)

ChannelFillPercentage(通道使用比例)

Type(組件類型)

ChannelSize(目前在channel中的event數量)

EventTakeSuccessCount(從channel中成功取走的event數量) 速率

EventTakeAttemptCount(嘗試從channel中取走event的次數) 速率

StartTime(組件開始時間)

EventPutAttemptCount(嘗試放入將event放入channel的次數) 速率

EventPutSuccessCount(成功放入channel的event數量) 速率

StopTime(組件中止時間)

(3)、SINK

SINK是數據即將離開flume的最後一個組件,它從channel中取走數據,而後發送到緩存系統或者持久化數據庫。能獲得數據:

ConnectionCreatedCount(建立鏈接數) 速率

BatchCompleteCount(完成的批數量)  速率

BatchEmptyCount(批量取空的數量,空的批量的數量,若是數量很大表示souce寫數據比sink清理數據慢速度慢不少) 速率

EventDrainSuccessCount(成功發送event的數量) 速率

StartTime(組件開始時間)

BatchUnderflowCount(正處於批量處理的batch數)等。  速率

ConnectionFailedCount(鏈接失敗數) 速率

ConnectionClosedCount(關閉鏈接數量) 速率

Type(組件類型)

RollbackCount

EventDrainAttemptCount(嘗試提交的event數量) 速率

KafkaEventSendTimer

StopTime(組件中止時間)

 

在實際生產環境中,因爲數據量比較大(Kafka中導入200M左右的數據),Flume有時候會遇到下面oom問題

問題1

Exception in thread "PollableSourceRunner-KafkaSource-r1" java.lang.OutOfMemoryError: GC overhead limit exceeded

或者

Exception in thread "PollableSourceRunner-KafkaSource-r1" java.lang.OutOfMemoryError: Java heap space

 這是因爲flume啓動時的默認最大的堆內存大小是20M

解決方法:在flume的基礎配置文件conf下的flume-env.sh中添加

export JAVA_OPTS="-Xms2048m -Xmx2048m -Xss256k -Xmn1g -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:-UseGCOverheadLimit"

問題2

13:54:27.213 ERROR org.apache.flume.source.kafka.KafkaSource:317 - KafkaSource EXCEPTION, {}
org.apache.flume.ChannelFullException: Space for commit to queue couldn't be acquired. Sinks are likely not keeping up with sources, or the buffer size is too tight

 flume的properties文件中添加

agent.channels.c1.capacity = 1000000 #改大一點
agent.channels.c1.keep-alive = 60
相關文章
相關標籤/搜索