flink 自定义指标

Flink指标详解与自定义
本文详细介绍了Flink中的四种主要指标类型:Gauge、Counter、Meter和Histogram的功能及应用场景,并提供了自定义吞吐量指标的具体实现示例。

flink指标种类

Gauge —— 最简单的度量指标,只是简单的返回一个值,比如返回一个队列中当前元素的个数;
Counter —— 计数器,在一些情况下,会比Gauge高效,比如通过一个AtomicLong变量来统计一个队列的长度;
Meter —— 吞吐量的度量,也就是一系列事件发生的速率,例如TPS;
Histogram —— 度量值的统计结果,如最大值、最小值、平均值,以及分布情况等。
 参考资料:https://blog.youkuaiyun.com/qq_21653785/article/details/79625601

自定义累加指标

https://blog.youkuaiyun.com/aA518189/article/details/88952910

自定义吞吐量指标

 SingleOutputStreamOperator<String> map = stream.map(new RichMapFunction<String, String>() {
            Meter meter;
            @Override
            public void open(Configuration parameters) throws Exception {
                MetricGroup kafka_custom_data_metric = getRuntimeContext()
                        .getMetricGroup()
                        .addGroup("kafka_custom_data_metric");
                Counter counter = kafka_custom_data_metric.counter("ResordsCounter");
              meter=  kafka_custom_data_metric.meter("MyMeter", new MeterView(counter, 60));
            }

            @Override
            public String map(String s) throws Exception {
                meter.markEvent();
                return s;
            }
        });

参考:https://blog.youkuaiyun.com/qq_21653785/article/details/79625601

### Flink 中与垃圾回收(GC)相关的性能指标和监控 Flink 是一种分布式流处理框架,其性能高度依赖于 JVM 垃圾回收机制的表现。为了有效监控和优化 Flink 应用程序的性能,理解并跟踪 GC 相关的关键指标至关重要。 #### 1. 关键 GC 性能指标 以下是 Flink 中常见的 GC 监控指标及其意义: - **GcTime**: 表示自应用程序启动以来,JVM 花费在垃圾回收上的总时间[^5]。此指标有助于识别是否存在过多的时间被浪费在 GC 上。 - **FullGcCount**: 自应用程序启动以来发生的 Full GC 次数。频繁的 Full GC 可能表明堆内存不足或存在内存泄漏问题[^4]。 - **HeapMemoryUsed / HeapMemoryCommitted**: 当前使用的堆内存量以及分配给堆的最大容量。这两个指标可以帮助判断是否有足够的堆空间来满足工作负载需求[^1]。 - **NonHeapMemoryUsed / NonHeapMemoryCommitted**: 非堆内存的实际使用情况及最大可用大小。对于元数据密集型操作尤其重要[^3]。 #### 2. 如何配置和启用 GC Metrics Flink 提供内置的支持以暴露这些 GC 统计信息。可以通过以下方式开启 GC metrics: ```properties # 在 flink-conf.yaml 文件中设置如下参数 metrics.reporter.prometheus.class: org.apache.flink.metrics.prometheus.PrometheusReporter metrics.scope.jvm.gc.time: jvm_gc_time_total_seconds{task="flink_task"} ``` 此外还可以利用 `nodetool` 工具获取更深层次的信息关于节点的状态详情。 #### 3. 实现自定义 GC Metric 示例 如果默认提供的度量标准无法完全覆盖特定需求,则可以创建自定义 metric 来追踪额外的行为。下面是一个简单的例子展示了如何注册一个新的 gauge 来报告最后一次 checkpoint 大小[^2]: ```java getEnvironment().getMetricGroup().gauge("lastCheckpointSize", new Gauge<Long>() { @Override public Long getValue() { return StreamTask.this.lastCheckpointSize; } }); ``` 类似的逻辑也可以扩展至捕获任何其他类型的 JVM 或者应用级别的统计数值之上。 #### 4. 影响因素分析 需要注意的是,在高负载条件下,即使没有明显的对象堆积现象也可能观察到较高的延迟水平。这是因为即便是在较低的工作负荷下,网络缓冲区内待发送的数据包仍需经历一定的等待周期才能最终传输出去[^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值