Flink 配置Prometheus监控

Flink 使用介绍相关文档目录

Flink 使用介绍相关文档目录

准备Flink软件包和配置

首先在Flink官网下载Flink的安装包。解压到任意目录。

新版本Flink(例如1.15.4以上)的配置方式:

编辑$FLINK_HOME/conf/flink-conf.yaml,增加如下内容:

metrics.reporter.promgateway.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
metrics.reporter.promgateway.hostUrl: http://pushgateway_ip:9091

其中pushgateway_ip为下面pushgateway服务所在的节点hostname或者IP。到此位置Flink Prometheus reporter配置完毕。

主要注意的是,Flink老版本,例如Flink 1.8.1,需要复制opt/flink-metrics-prometheus-1.8.1.jar 到flink的lib目录下。

Flink 1.8.1和前面所述较新版本的Flink配置项名称不同:

metrics.reporter.promgateway.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
metrics.reporter.promgateway.host: pushgateway_ip
metrics.reporter.promgateway.port: 9091

Prometheus配置

下载prometheus

Prometheus 的下载链接为:
https://prometheus.io/download/

这里所需Prometheus的组件为:

  • prometheus
  • pushgateway(Flink推送监控数据到此)
  • node_exporter(节点信息监控,CPU内存等,可以不安装)

将这些组件分别解压到任意目录。

配置Prometheus

修改Prometheus根目录prometheus.yml文件的scrape_config,如下图所示:

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'pushgateway'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['node:9091']
      labels:
        instance: 'pushgateway'
  - job_name: 'linux'
    static_configs:
    - targets: ['node:9100']
      labels:
        instance: 'linux'
        
  - job_name: prometheus
    static_configs:
    - targets: ['node:9090']
      labels:
        instance: prometheus

启动prometheus, node_exporter和pushgateway

在命令行启动prometheus, node_exporter和pushgateway。

通过访问组件对应的URL确定是否成功启动。
端口号:

  • prometheus: 9090
  • node_exporter: 9100
  • pushgateway: 9091
Prometheus主界面
pushgateway界面
node-exporter界面

查看metrics:
访问对应组件的URL,例如http://10.180.210.172:9091/metrics(初次安装这里为空白)

Prometheus的metrics界面

查看各个endpoint是否成功注册在prometheus:
访问prometheus首页(9090端口),打开status -> targets,观察各个endpoint的status是否为UP。

Prometheus的target状态页面

配置安装Grafana

下载并启动Grafana

下载Grafana解压,添加prometheus数据源。

Grafana的下载地址为: https://grafana.com/grafana/download

下载后解压至任意目录,使用默认配置。执行Grafana安装目录中的bin/grafana-server 即可启动Grafana。

配置Grafana

配置数据源

Grafana默认运行在3000端口。使用默认用户名密码(admin/admin)登录Grafana后,选择左侧菜单的Configuration -> Data Sources。

Data Source菜单

接下来点击右侧的Add data source按钮。在数据源类型选择中界面选择Prometheus

数据源选择

最后,将Prometheus的地址端口号填写入URL这一栏,点击下方的Save & Test按钮。如果配置无误,会弹出数据源正常连接的提示信息。

数据源配置

配置Dashboard

选择左侧菜单的Create -> Dashboard,然后选择Add Query
Dashboard的Add Panel,Add Query。会进入到指标查询配置页面。

监控指标配置

打开Query右侧的下拉列表,选择使用的数据源。

数据源选择框

接下来配置查询语句。有以下两种方式点击Metrics按钮,根据分类选择监控指标。或者是在文本框中输入指标的关键字。

查询语句配置

查询语句配置完毕后,页面上方会显示出监控数据,如图所示。

查询语句配置完毕

返回Dashboard后可以看到配置的监控图已经固定到了页面当中,方便以后查看。

至此,Grafana显示监控指标的基本配置已介绍完毕。Grafana的其他配置会在以后博客中更新。

Flink增加自定义监控指标

默认Flink仅提供了job manager和task manager的JVM和系统配置相关的监控数据。我们可以通过Flink提供的metrics API,在具体业务中添加自定义的监控指标。

Flink metrics的官网文档链接:https://ci.apache.org/projects/flink/flink-docs-stable/monitoring/metrics.html

下面我们举个例子。我们自定义一个监控指标,叫做my_counter,监控数据源(socket)读取到的数据条数。代码如下:

val stream = env.socketTextStream("10.180.210.172", 11000)

// 使用RichFunction可以获取到RuntimeContext
stream.map(new RichMapFunction[String, String] {
  var counter: Counter = _

  override def open(parameters: Configuration): Unit = {
    // 自定义指标名字为`my_counter`
    counter = getRuntimeContext.getMetricGroup.counter("my_counter")
  }

  override def map(in: String): String = {
    counter.inc()
    in
  }
})

// execute program
env.execute("Flink Custom Metrics Demo")

Flink运行该任务后,我们可以在Grafana监控配置界面中找到这个自定义指标。

counter在Prometheus中对应的指标项为(其中id等为随机生成,不一定和例子中相同):

flink_taskmanager_job_task_operator_my_counter{exported_job="2c1880813281a1d6d66f915898ea46a5", host="worker_node", instance="pushgateway", job="pushgateway", job_id="024ef3a75b23cd14d094d07464152429", job_name="Flink_Custom_Metrics_Demo", operator_id="7df19f87deec5680128845fd9a6ca18d", operator_name="Map", subtask_index="0", task_attempt_id="dbf678920d500a2aa3f52d4f24c334a2", task_attempt_num="0", task_id="cbc357ccb763df2852fee8c4fc7d55f2", task_name="Source:_Socket_Stream____Map", tm_id="container_e16_1708999618610_0017_01_000002"}

我们可以通过类似flink_taskmanager_job_task_operator_my_counter{job_name="Flink_Custom_Metrics_Demo"}的表达式,筛选出指定Job中的my_counter对应的监控值。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,717评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,501评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,311评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,417评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,500评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,538评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,557评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,310评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,759评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,065评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,233评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,909评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,548评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,172评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,420评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,103评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,098评论 2 352

推荐阅读更多精彩内容