Flink配置Prometheus监控
准备Flink软件包
首先在Flink官网下载Flink的安装包。
复制opt/flink-metrics-prometheus-1.8.1.jar
到flink的lib
目录下。
配置flink.yaml
metrics.reporter.promgateway.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
metrics.reporter.promgateway.host: 10.180.210.172
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=` to any timeseries scraped from this config.
- job_name: 'pushgateway'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['10.180.210.172:9091']
labels:
instance: 'pushgateway'
- job_name: 'linux'
static_configs:
- targets: ['10.180.210.172:9100']
labels:
instance: 'linux'
- job_name: prometheus
static_configs:
- targets: ['10.180.210.172:9090']
labels:
instance: prometheus
启动prometheus, node_exporter和pushgateway
在命令行启动prometheus, node_exporter和pushgateway。
通过访问组件对应的URL确定是否成功启动。
端口号:
- prometheus: 9090
- node_exporter: 9100
- pushgateway: 9091
![Flink配置Prometheus监控 Flink配置Prometheus监控](https://www.top8488.top/wp-content/uploads/2020/07/frc-e9311cf0e4d46c9006c83131fc96d85f.png)
![Flink配置Prometheus监控 Flink配置Prometheus监控](https://www.top8488.top/wp-content/uploads/2020/07/frc-258fd0c2d629041f2f50e0c3f4380cc7.png)
![Flink配置Prometheus监控 Flink配置Prometheus监控](https://www.top8488.top/wp-content/uploads/2020/07/frc-c56fe0a504a238e42721149928498e9f.png)
查看metrics:
访问对应组件的URL,例如http://10.180.210.172:9091/metrics
(初次安装这里为空白)
![Flink配置Prometheus监控 Flink配置Prometheus监控](https://www.top8488.top/wp-content/uploads/2020/07/frc-7081f1ffc3c3e3ca04324a3fd4ef92a4.png)
查看各个endpoint是否成功注册在prometheus:
访问prometheus首页(9090端口),打开status -> targets,观察各个endpoint的status是否为UP。
![Flink配置Prometheus监控 Flink配置Prometheus监控](https://www.top8488.top/wp-content/uploads/2020/07/frc-e780bc8ac2455a68dd31730838102b71.png)
配置安装Grafana
下载并启动Grafana
下载Grafana解压,添加prometheus数据源。
Grafana的下载地址为: https://grafana.com/grafana/download
下载后解压至任意目录,使用默认配置。执行Grafana安装目录中的bin/grafana-server
即可启动Grafana。
配置Grafana
配置数据源
Grafana默认运行在3000端口。使用默认用户名密码(admin/admin)登录Grafana后,选择左侧菜单的Configuration -> Data Sources。
![Flink配置Prometheus监控 Flink配置Prometheus监控](https://www.top8488.top/wp-content/uploads/2020/07/frc-57ad4accb11d00dfcedc713ab6351526.png)
接下来点击右侧的Add data source
按钮。在数据源类型选择中界面选择Prometheus
。
![Flink配置Prometheus监控 Flink配置Prometheus监控](https://www.top8488.top/wp-content/uploads/2020/07/frc-cf9df1ed47d277a8d4c260a96b39745e.png)
最后,将Prometheus的地址端口号填写入URL这一栏,点击下方的Save & Test
按钮。如果配置无误,会弹出数据源正常连接的提示信息。
![Flink配置Prometheus监控 Flink配置Prometheus监控](https://www.top8488.top/wp-content/uploads/2020/07/frc-d8620b49665f23d826518651bc29f1b8.png)
配置Dashboard
选择左侧菜单的Create -> Dashboard,然后选择Add Query
。
Dashboard的Add Panel,Add Query。会进入到指标查询配置页面。
![Flink配置Prometheus监控 Flink配置Prometheus监控](https://www.top8488.top/wp-content/uploads/2020/07/frc-0d0cade42f87c537921365c5ccaaff00.png)
打开Query右侧的下拉列表,选择使用的数据源。
![Flink配置Prometheus监控 Flink配置Prometheus监控](https://www.top8488.top/wp-content/uploads/2020/07/frc-b7331e7c8d88709d27e8813b2c5892de.png)
接下来配置查询语句。有以下两种方式点击Metrics按钮,根据分类选择监控指标。或者是在文本框中输入指标的关键字。
![Flink配置Prometheus监控 Flink配置Prometheus监控](https://www.top8488.top/wp-content/uploads/2020/07/frc-a884a3c5d9f49fa27b8a11dee1f19f14.png)
查询语句配置完毕后,页面上方会显示出监控数据,如图所示。
![Flink配置Prometheus监控 Flink配置Prometheus监控](https://www.top8488.top/wp-content/uploads/2020/07/frc-d7390a0874e7826db219386fb1b07d5f.png)
返回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)读取到的数据条数。代码如下:
env.enableCheckpointing(500)
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监控配置界面中找到这个自定义指标。