flink metric库的使用和自定义metric-reporter
简单介绍
flink内部实现了一套metric数据收集库。 同时flink自身系统有一些固定的metric数据, 包括系统的一些指标,CPU,内存, IO 或者各个task运行的一些指标。具体包含那些指标可以查看官方文档: flink-metric
同时我们也可以利用系统的metric库在自己的代码中进行打点收集metrics数据。此外, flink提供了外部接口,可以用来导出这些metrics数据.
flink-metric库的使用
在官方的文档中有介绍, 需要继承Richfunction 才能获得对应的metric对象, 用法如下:
public class MyMapper extends RichMapFunction<String, String> {
private transient Counter counter;
@Override
public void open(Configuration config) {
this.counter = getRuntimeContext()
.getMetricGroup()
.counter("myCounter");
}
@Override
public String map(String value) throws Exception {
this.counter.inc();
return value;
}
}
flink-metrics导出到外部系统
在flink中, 提供了方便的metric数据导出的库,通过实现自己的reporter,可以将metrics数据导出到不同的系统.
官方提供有多种reporter库,JMX, Graphite, Slf4j... 等等. 同时,我们可以自定义实现metric库,来导入到自己的系统.
自定义reporter类
实现MetricReporter类中的open,close, notifyOfAddedMetric, notifyOfRemovedMetric方法
实现Scheduled的report方法 ,在刚方法中实现写入到其他系统的逻辑
实现CharacterFilter的 filterCharacters方法, 用于对scope进行过滤.
public class FalconReporter implements MetricReporter, CharacterFilter, Scheduled {
private static final Logger LOG =LoggerFactory.getLogger(FalconReporter.class);
private final Map<Gauge<?>, MetricTag> gauges = new ConcurrentHashMap<>();
private final Map<Counter, MetricTag> counters = new ConcurrentHashMap<>();
private final Map<Histogram, MetricTag> histograms = new ConcurrentHashMap<>();
private final Map<Meter, MetricTag> meters = new ConcurrentHashMap<>();
@Override
public String filterCharacters(String s) {
return s;
}
@Override
public void open(MetricConfig metricConfig) {
}
@Override
public void close() {
}
@Override
public void notifyOfAddedMetric(Metric metric, String s, MetricGroup metricGroup) {
}
@Override
public void notifyOfRemovedMetric(Metric metric, String s, MetricGroup metricGroup) {
}
@Override
public void report() {
}
}
配置reporter
在flink-conf.yaml中配置即可,配置如下
metrics.reporters: slf4j, jmx
metrics.reporter.slf4j.class: org.apache.flink.metrics.falcon.FalconReporter
metrics.reporter.slf4j.interval: 60 SECONDS
metrics.reporters 用于配置类型名, 自定义即可
metrics.reporter.slf4j.class: 配置对应类型的reporter类
metrics.reporter.slf4j.interval: 60 SECONDS 消息上报的间隔
metrics.reporter.slf4j.* 可以自定义配置, 可以在open(MetricConfig metricConfig) 中的获得对应的config
flink metric库的使用和自定义metric-reporter的更多相关文章
- Flink的sink实战之四:自定义
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- xgboost中如何自定义metric(python中)
正好在参加携程的比赛,用的xgboost的算法,但携程比赛的测评函数比较奇怪,不是传统的那些,而是取precision≥0.97的情况下,recall的最大值.那无疑这个测评函数是要自己写的(官方没给 ...
- JSP标准标签库的安装以及自定义标签的创建
JSTL 库安装 Apache Tomcat安装JSTL 库步骤如下: 从Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip). 官方下载 ...
- python找寻合适的日志库logging Handler——Handler自定义实现
最近在用python tornado开发一个app的服务端.投产的系统肯定需要包含日志功能,这里就自然想到了用python自带的logging库. logging中日志内容的输出都交由Handle ...
- [WPF自定义控件库]为Form和自定义Window添加FunctionBar
1. 前言 我常常看到同一个应用程序中的表单的按钮----也就是"确定"."取消"那两个按钮----实现得千奇百怪,其实只要使用统一的Style起码就可以统一按 ...
- 解析prototxt文件的python库 prototxt-parser(使用parsy自定义文件格式解析)
解析prototxt文件的python库 prototxt-parser https://github.com/yogin16/prototxt_parser https://test.pypi.or ...
- flink-----实时项目---day07-----1.Flink的checkpoint原理分析 2. 自定义两阶段提交sink(MySQL) 3 将数据写入Hbase(使用幂等性结合at least Once实现精确一次性语义) 4 ProtoBuf
1.Flink中exactly once实现原理分析 生产者从kafka拉取数据以及消费者往kafka写数据都需要保证exactly once.目前flink中支持exactly once的sourc ...
- Volley HTTP库系列教程(5)自定义一个Volley请求
Implementing a Custom Request Previous Next This lesson teaches you to Write a Custom Request parse ...
- 【C++】标准库sort函数的自定义排序
自定义排序需要单独写一个compare函数 例1 LeetCode 056. Merge Intervals Given a collection of intervals, merge all ov ...
随机推荐
- Nginx 静态页面POST 请求提示405 Not Allowed
从git上cp了一个开源的前端框架lay Ajax版本,用Nginx配置访问首页没问题 nginx配置如下: server { listen ; server_name adminhtml.com; ...
- java解析json的操作
import java.io.FileNotFoundException; import java.io.FileReader; import com.google.gson.JsonArray; i ...
- INotifyPropertyChanged 接口 CallerMemberName属性
调用方信息 使用调用方信息属性,可以获取关于调用方的信息传递给方法. 可以获取源代码.行号在源代码和调用方的成员名称的文件路径. 此信息用于跟踪,调试和创建诊断工具非常有用.若要获取此信息,则使用适用 ...
- 在SOUI中使用窗口自適應大小
SOUI 2.5.0.3開始支持窗口大小自適應. 2.5.0.3以前,宿主窗口要適應顯示內容大小比較麻煩,因爲一般都是佈局內容適應宿主. SOUI 2.5.+開始支持線性佈局,線性佈局是借鑑的Andr ...
- 咸鱼入门到放弃11--Servlet+JSP+JavaBean开发模式
本篇搬运了大佬blog:https://www.cnblogs.com/xdp-gacl/p/3902537.html 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servle ...
- CF1013B And
There is an array with n elements a1, a2, ..., an and the number x. In one operation you can select ...
- C语言第零次作业
Q1.你对网络专业或者计算机专业了解是怎样? 说实话不了解网络专业,在甚至在填志愿之前我都不曾听说过.但经过一番的查阅资料.现在,首先我了解到我们主要学习计算机.通信以及网络方面的基础理论.设计原理, ...
- Android Studio 重写方法时参数命名异常
Android Studio 重写方法时参数命名异常 Android Studio 重写方法时参数名称乱掉可以通过下载相应源码解决
- java自动化-关键字驱动在junit接口自动化的应用
本文是继承上文的基础上进行的讨论,建议读者先阅读http://www.cnblogs.com/xuezhezlr/p/9097137.html和https://www.cnblogs.com/xuez ...
- 英语词汇—V01
今日词汇 1, wash [wɒʃ] n. 洗涤:洗的衣服:化妆水:冲积物 vt. 洗涤:洗刷:冲走:拍打 vi. 洗澡:被冲蚀 2, dust [dʌst] n. 灰尘:尘埃:尘土 vt. 撒:拂去 ...