这篇文章介绍了如何利用Apache Flink的内置指标系统以及如何使用Prometheus来高效地监控流式应用程序。 为什么选择Prometheus?...如果启用,则将删除所有不匹配[a-zA-Z0-9:_]的字符,否则将不删除任何字符。禁用此选项之前,请确保您的标签值符合Prometheus要求。 效果 提交任务后,我们看下实际效果。...例如: 总结 当然除了Prometheus主动发现Pod,然后定期抓取metrcis的方式,flink 也支持向PushGateway 主动push metrcis。...这些Reporter在启动时将在每个作业和任务管理器上实例化。 所有Reporter都必须至少具有class或factory.class属性。可以/应该使用哪个属性取决于Reporter的实现。...启动Flink时,必须可以访问包含reporter的jar。
:跟Pushgateway一样是Prometheus 的组件,采集到主机的运行指标如CPU, 内存,磁盘等信息 本文主要介绍将flink任务运行的metric发送到Prometheus,通过grafana...1.监控的意义 flink流式任务在实时性稳定性方面都有一定的要求,通过Prometheus 采集flink集群的metric,指定一些指标就可以对其进行监控告警。...生态系统包含很多组件(大多是都是可选择的) Prometheus server(抓取、存储时间序列数据) client libraries(帮助应用支持prometheus数据采集) push gateway...flink-conf.yml对应的metrics.reporter.promgateway.port: 9091 flink会把一些metric push到9091端口上,然后prometheus采集。...选中之后,即会出现对应的监控指标 至此,Flink 的metrics 的指标展示在Grafana 中了 flink 指标对应的指标名比较长,可以在Legend 中配置显示内容,在{undefined{
此时 Metrics 可以很好的帮助开发人员了解作业的当前状况。Flink 提供的 Metrics 可以在Flink 内部收集一些指标,通过这些指标让开发人员更好地理解作业或集群的状态。...但是我们要监控的是Flink on YARN作业,想要让Prometheus自动发现作业的提交、结束以及自动拉取数据显然是比较困难的。...相关指标 到此,Flink任务与prometheus集成完毕。...原理是在job任务存活时,会按照配置metrics.reporter.promgateway.interval上报频率递增。基于这个特点,当任务失败后这个数值就不会改变,就能监控到任务失败。...Pushgateway从许多不同的来源收集指标时宕机,用户将失去对这些来源的监控 Pushgateway不会自动删除推送给它的任何指标数据,因此,必须使用Pushgateway的API从推送网关中删除过期的指标
指标对外披露,flink 是咋定义的? 是否还记得上期的分享中,如何把指标数据披露出去的?没错,那就是有一系列的 Reporter 来完成的事情,接下来看看 flink 有没有类似的规范定义呢? ?...其中 open() 方法主要用于初始化相关操作;close() 主要是关闭 Reporter,用于释放资源;notifyOfAddedMetric()/notifyOfRemovedMetric() 定义新指标注册以及指标删除时通知...如图示意,要完成数据源层的 AppService 的指标监控,需要对应用纳入一个 Client lib 来支撑指标产生、输出,然后通过 push 的形式,主动推送数据到 PushGateway,然后 Prometheus...如源码所示,PrometheusPushGatewayReporter 类持有 PushGateway 的引用,进而可以使用 Prometheus 提供的 API 进行 push 数据,以及创建连接和释放资源...,从 PushGateway 上把 jobName 对应的 metrics 删除。
Reporter 支持上报到 JMX、Influxdb、Prometheus 等时序数据库。...End-to-End latency 端到端链路时延指标,默认关闭。将 metrics.latency.interval 参数值设为大于 0 时开启此设置。...这个指标对 Flink 集群的性能影响很大,建议只在调试阶段使用。 State access latency 状态访问延迟指标,默认关闭。...以 Prometheus 为例,简单说明一下 Flink 是如何以主动推送方式上报监控指标的。...REST API 接口上报指标 REST API 则是通过提供 RESTful 接口返回集群、作业、算子等状态。
实时作业要保证7 x 24运行,除了要在业务逻辑和编码上下功夫之外,好的监控系统也是必不可少的。...Flink支持多种汇报监控指标(metrics)的reporter,如JMX、SLF4J、InfluxDB、Prometheus等。...,但是flink on yarn作业的每一个任务对应的集群不一样,地址不一样,那么对于Prometheus这样一个主动拉取的角色,就必须借助一个固定地址的数据中转站来进行数据的获取,pushgateway..._2.11/1.13.1/flink-metrics-prometheus_2.11-1.13.1.jar mv flink-metrics-prometheus.../bin/grafana-server web & 4.启动flink 前提是准备好mysql/hadoop/hive metastore的环境 flink配置 metrics.reporter.promgateway.class
Reporter 支持上报到 JMX、Influxdb、Prometheus 等时序数据库。...End-to-End latency 端到端链路时延指标,默认关闭。将 metrics.latency.interval 参数值设为大于 0 时开启此设置。...这个指标对 Flink 集群的性能影响很大,建议只在调试阶段使用。 State access latency 状态访问延迟指标,默认关闭。...以 Prometheus 为例,简单说明一下 Flink 是如何以主动推送方式上报监控指标的。 ...REST API 接口上报指标 REST API 则是通过提供 RESTful 接口返回集群、作业、算子等状态。
方案中利用 Promethus 监控系统指标,如流计算 Oceanus 作业运行状况,利用云 Grafana 监控 CVM 或业务应用指标。...作业参数 【内置connector】选择flink-connector-elasticsearch6和flink-connector-kafka 注: 根据实际版本选择 5....3.3 系统指标监控 本章节主要实现系统信息监控,对Flink作业运行状况进行监控告警。 Prometheus 是一个非常灵活的时序数据库,通常用于监控数据的存储、计算和告警。...监控配置 Oceanus 作业监控 除了 Oceanus 控制台自带的监控信息,还可以配置目前已经支持了任务级细粒度监控、作业级监控和集群Flink作业列表监控。 1. 配置作业高级参数。...metrics.reporter.promgateway.host: xx.xx.xx.xx # Prometheus实例地址 metrics.reporter.promgateway.port
方案中利用 Promethus 监控系统指标,如流计算 Oceanus 作业运行状况,利用云 Grafana 监控 CVM 或业务应用指标。...(五)创建云监控 Prometheus 实例 为了展示自定义系统指标,需购买 Promethus 服务。只需要自定业务指标的同学可以省略此步骤。...(三)系统指标监控 本章节主要实现系统信息监控,对 Flink 作业运行状况进行监控告警。 Prometheus 是一个非常灵活的时序数据库,通常用于监控数据的存储、计算和告警。...监控配置 流计算 Oceanus 作业监控 除了流计算 Oceanus 控制台自带的监控信息,还可以配置目前已经支持了任务级细粒度监控、作业级监控和集群 Flink 作业列表监控。...: xxxxxxxxxxx # Prometheus实例密码metrics.reporter.promgateway.interval: 10 SECONDS 2、在任一流计算 Oceanus 作业中,
当 Prometheus server 来 pull 时,直接返回实时状态的 metrics。 Push Gateway: 主要用于短期的 jobs。...还记得 Flink 中的指标类型吗?Flink 也提供了四种类型的监控指标,分别是:Counter、Gauge、Histogram、Meter。...首先,flink.yaml文件的配置: metrics.reporter.promgateway.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter...metrics.reporter.promgateway.host: node1 metrics.reporter.promgateway.port: 9091 metrics.reporter.promgateway.jobName...选中之后,即会出现对应的监控指标 ? 对于 Flink 任务,我们需要监控的指标包括JobManager 服务器状态、Checkpoint情况、程序运行时长、Taskmanager内存,流量。
到这儿,采用 Prometheus Server + Grafana + node_exporter 对机器性能指标监控的实战,就算演示操作完毕,点到为止,接下来看看 flink 监控如何集成。...##metrics metrics.reporter.promgateway.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter...选择并添加相关指标看一看。 ? 好了,到这 Prometheus 监控 flink 也就完毕了,后续就是监控指标如何展示的更好的问题,不再赘述。 3....问题三:启动 grafana 时始终失败。...监控 flink 时,始终找不到 PrometheusPushGatewayReporter。
配置即可,Flink原生已经支持了很多reporter,如 JMX、InfluxDB、Prometheus 等等。...注意点: 搜索自定义或者查看某个指标需要点击DAG图中对应算子的名称 指标的前缀0,1,2....是指算子的分区数 进行监控时,尽量不要对算子进行重命名,使用默认的名字,这样一套监控程序可以监控多个flink...原因:是因为默认情况下Flink开启了operator chain,所以当flink程序所有的算子都在一个chain里面时,也就是在一个DAG(task)里面,所有没有向下游发送数据,所以显示都为0。...InfluxDB、Prometheus等等,同时也支持自定义reporter。...Flink自带了很多Reporter,包括JMX、InfluxDB、Prometheus等等,接下来介绍下InfluxDB Reporter的使用。
前言 虽然笔者之前写过基于Prometheus PushGateway搭建Flink监控的过程,但是在我们的生产环境中,使用的是InfluxDB。...InfluxDB是一个由Go语言写成的、由InfluxData部分开源的时序数据库,能够非常好地处理监控指标的存储和查询,配合Grafana即可简单地实现Flink作业metrics的收集与展示。...Metrics Reporter 将FLINK_HOME/opt下的flink-metrics-influxdb-.jar拷贝到 metrics.reporter.influxdb.class...metrics.reporter.influxdb.port: 8086 metrics.reporter.influxdb.db: flink_metrics 启动Flink on YARN作业,稍等片刻...说个小tip,如果不想让不同时期启动的相同作业监控数据发生混淆,可以在指定Flink作业的名称时,加上一些其他的东西(如该作业的Maven profile名称以及启动时间)进行区分。
监控机制的必要性: 对于需要7 * 24小时不间断运行的流式计算程序来说,能实时监控程序运行状况、出现异常告警能立即响应并快速定位问题是必须具备的能力。...Flink Metric内置的监控涵盖面丰富,支持: 1 系统级别的监控:CPU状态信息、内存状态信息等(默认关闭,需要更改配置文件打开,且lib目录下需要添加相关依赖jar包) 2 JVM级别的监控:...Report方式: 同时Flink也提供了往外Report监控指标的方式,及常见的通过在flink-conf.yaml配置Metric Reporter将flink的监控指标定期发送至第三方系统。...这里大家可以想一下Prometheus的工作原理即可,Flink也实现了Prometheus的Report,可以直接通过配置就可以启用,再通过Prometheus去采集集群监控数据。...API主动抓取Metrics信息,还是通过Reporter收集Metrics信息。
扩展插件化 在官网中,Flink社区自己提供了一些已接入的Reporter,如果我们有自己定制的Reporter,也可以根据它的规范去实现自己的Reporter。...|-- ReporterSetup \-- fromConfiguration //当集群启动时,会从配置读取监控并初始化相关类 \-- loadAvailableReporterFactories...org.apache.flink.metrics.prometheus.PrometheusReporter org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter...org.apache.flink.metrics.slf4j.Slf4jReporterFactory 每当社区需要接入新的Reporter时,仅仅需要实现MetricReporterFactory即可...不仅只支持Push 在Flink中,监控数据不仅支持Push,同时还实现了Pull,而实现也非常的简单。
监控 目前 Prometheus 已经成为 k8s 生态的监控事实标准,下面我们的讨论也是讨论如何将 Flink/Spark 的作业的指标对接到 Prometheus。...[architecture.png] 其中的核心在于 Prometheus Servier 收集指标的方式是 pull 还是 push: 对于常驻的进程,比如在线服务,一般由 Prometheus Server...对于会结束的进程指标收集,比如 batch 作业,一般使用进程主动 push 的方式。...详细流程是进程将指标 push 到常驻的 PushGateway,然后 Prometheus Server 去 PushGateway pull 指标。...(将指标主动 push 给 PushGateway,Prometheus Server 不需要感知 Flink 作业)。
在这种情况下,Prometheus作业将会发现目标已完成执行并且不再可以被抓取 目标资源没有可以抓取的端点,例如批处理作业。...这是因为网关不是聚合器,例如StatsD或其他类似工具 这里还会看到另一个指标:push_time_seconds。...这是每个作业都有的指标,指示最后一次推送发生的时间 11.1.6 删除Pushgateway中的指标 指标保存在网关中(假设未设置持久性),走到网关重启或者指标被删除。...注意:除了PrometheusClient::Push上的add方法之外,还有replace和delete方法,用来替换或删除网关上的指标 11.2 抓取Pushgateway Pushgateway只是指标的临时停靠站...当Prometheus抓取目标时,它将附加抓取作业的名称(此处为pushgateway),以及填充了目标的主机或IP地址的instance标签 如果honor_labels设置为true,那么Prometheus
在出现故障时无法进行自动回滚。 Readiness probe 仅支持对容器自身进行简单的探测,无法通过查询外部指标来验证更新,例如应用层面整体的请求成功率。...Analysis 支持与 Prometheus,Datadog, CloudWatch 等监控组件集成来获取相关指标来进行分析。...Prometheus 是一个开源监控系统和时序数据库,可以使用 Prometheus 来记录 Istio 相关的指标数据从而追踪 Istio 和服务网格中应用程序的健康状况。...:9090 # Prometheus 地址 query: >+ # 查询语句 sum(rate(istio_requests_total{ reporter...11 清理环境 完成实验后,执行以下命令删除 Kubernetes 集群。
在部署 Flink 时,每个构建块通常有多个选项可用。 我们在图下方的表格中列出了它们。...监控存储 Flink 组件报告内部指标,Flink 作业也可以报告额外的、特定于作业的指标。 See Metrics Reporter page....目前清理 CompletedCheckpoints 时存在一个问题,这些问题在将它们包含在通常的 CompletedCheckpoint 管理中时未能被删除。...这些工件没有被可重复的清理所覆盖,即它们仍然必须手动删除。 FLINK-26606 涵盖了这一点。...此外,当Application模式下多个正在运行的作业(例如使用 executeAsync() 提交)中的任何一个被取消时,所有作业都将停止并且 JobManager 将关闭。
领取专属 10元无门槛券
手把手带您无忧上云