flink提供了Counter, Gauge, Histogram and Meter四種類型的指標。我們通過繼承RichFunction拿到MetricGroup,並向其中填充指標。
Counter:
用與存儲數值類型,比如統計數據輸入、輸出總數量。
Gauge:
可以用來存儲任何類型,前提要實現org.apache.flink.metrics.Gauge接口,重寫getValue方法,如果返回類型為Object則該類需要重寫toString方法。
有些場景下,需要根據業務計算出指標,則Gauge使用起來更靈活。
Meter:
用來計算平均速率,直接使用其子類MeterView更方便壹些。
以flink1.5的Kafka讀取以及寫入為例,添加rps、dirtyData等相關指標信息。?kafka讀取和寫入重點是先拿到RuntimeContex初始化指標,並傳遞給要使用的序列類,通過重寫序列化和反序列化方法,來更新指標信息。
這樣就可以在監控框架裏面看到采集的指標信息了,比如flink_taskmanager_job_task_operator_dtDirtyData指標,dtDirtyData是自己添加的指標,前面的字符串是operator默認使用的metricGroup。