Java 如何将flink用户自定义度量导出到prometheus&;格拉凡纳
我正在尝试根据 通过提供的示例代码,我可以获得事件和直方图 我很困惑普罗米修斯和格拉法纳是如何使用这个标识符的。我还试图稍微修改示例代码,但度量不再起作用 此外,我只能访问系统度量,但不能访问我自己的度量 我的问题是:Java 如何将flink用户自定义度量导出到prometheus&;格拉凡纳,java,apache-flink,metrics,Java,Apache Flink,Metrics,我正在尝试根据 通过提供的示例代码,我可以获得事件和直方图 我很困惑普罗米修斯和格拉法纳是如何使用这个标识符的。我还试图稍微修改示例代码,但度量不再起作用 此外,我只能访问系统度量,但不能访问我自己的度量 我的问题是: 如何访问我创建的计数器?例如,计数器1 metricGroup到底是什么 例如,我想检测一个模式 从输入流开始,在 或者只将结果输出到timeseries数据库,如 xDB 提前谢谢 下面是map函数 类FlinkMetricsExposingMapFunction扩展了Rich
类FlinkMetricsExposingMapFunction扩展了RichMapFunction{
私有静态最终长serialVersionUID=1L;
专用瞬态计数器事件计数器;
专用瞬态计数器customCounter1;
专用瞬态计数器2;
@凌驾
公共无效打开(配置参数){
eventCounter=getRuntimeContext()
.getMetricGroup()计数器(“事件”);
customCounter1=getRuntimeContext()
.getMetricGroup()
.addGroup(“customCounterKey”、“mod2”)
.柜台(“柜台1”);
customCounter2=getRuntimeContext()
.getMetricGroup()
.addGroup(“自定义计数器键”、“mod5”)
.柜台(“柜台2”);
//meter=getRuntimeContext().getMetricGroup().meter(“eventMeter”,新的DropWizardMeterRapper(dropwizardMeter));
}
@凌驾
公共传感器读数图(传感器读数值){
eventCounter.inc();
if(value.getCurrTimestamp()%2==0)
customCounter1.inc();
if(value.getCurrTimestamp()%5==0)
customCounter2.inc();
if(value.getCurrTimestamp()%2==0&&value.getCurrTimestamp()%5==0)
自定义计数器1.dec();
返回值;
}
}
示例工作:
env
.addSource(新的SimpleSensorReadingGenerator())
.name(SimpleSensorReadingGenerator.class.getSimpleName())
.map(新的FlinkMetricsExposingMapFunction())
.name(FlinkMetricsExposingMapFunction.class.getSimpleName())
.print()
.name(DataStreamSink.class.getSimpleName());
更新 grafana access flink metrics的屏幕截图: flink-config.yaml
FROM flink:1.9.0
RUN echo "metrics.reporters: prom" >> "$FLINK_HOME/conf/flink-conf.yaml"; \
echo "metrics.latency.interval: 1000" >> "$FLINK_HOME/conf/flink-conf.yaml"; \
echo "metrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReporter" >> "$FLINK_HOME/conf/flink-conf.yaml"; \
mv $FLINK_HOME/opt/flink-metrics-prometheus-*.jar $FLINK_HOME/lib
COPY --from=builder /home/gradle/build/libs/*.jar $FLINK_HOME/lib/
教程中的默认贴图功能:
@覆盖
公共无效打开(配置参数){
eventCounter=getRuntimeContext().getMetricGroup().counter(“事件”);
valueHistogram=getRuntimeContext()
.getMetricGroup()
.直方图(“价值直方图”,新的描述性统计图(10_000_000));
}
访问。customCounterKey.mod2.counter1
<代码>在flink-conf.yaml中定义。如果未在此处定义,则默认值为.taskmanager….
addGroup()
中定义了什么)和度量名称希望有帮助 很多,很清楚。还有一个问题,在上面的flink prometheus grafana示例中,我找不到我在flink from grafana中定义的计数器。我需要修改某些内容才能从grafana访问它吗?谢谢你能在格拉法纳找到弗林克自己的指标吗?那么repoter的配置是否正确呢?我只是在上面上传了更多细节。我可以找到flink自己的指标,但找不到我自己的指标,甚至找不到该教程中定义的指标。默认情况下,本教程使用docker运行flink,flink-config.yaml是在docker构建期间创建的。我是否需要导出。taskmanager。。。。在config?中,教程示例使用getMetricsGroup()方法。这是否会自动将(映射函数中的计数器)映射到(flink内置度量)?@TobiSH,in.taskmanager…,我们从哪里获得tm\u id、运算符\u名称、子任务\u索引?约伯的名字在普罗米修斯。亚马尔,我知道。