參考 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
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這兩個組件的監控也可使用這兩種方法來添加本身想要的監控元素。
CHANNEL是flume的一個通道組件,對數據有一個緩存的做用。可以獲得的數據:
ChannelCapacity(通道容量)
ChannelFillPercentage(通道使用比例)
Type(組件類型)
ChannelSize(目前在channel中的event數量)
EventTakeSuccessCount(從channel中成功取走的event數量) 速率
EventTakeAttemptCount(嘗試從channel中取走event的次數) 速率
StartTime(組件開始時間)
EventPutAttemptCount(嘗試放入將event放入channel的次數) 速率
EventPutSuccessCount(成功放入channel的event數量) 速率
StopTime(組件中止時間)
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