47、Flink 的指标报告介绍(graphite、influxdb、prometheus、statsd和datalog)及示例(jmx和slf4j示例)

news2025/2/1 16:51:01

Flink 系列文章

1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接

13、Flink 的table api与sql的基本概念、通用api介绍及入门示例
14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性
15、Flink 的table api与sql之流式概念-详解的介绍了动态表、时间属性配置(如何处理更新结果)、时态表、流上的join、流上的确定性以及查询配置
16、Flink 的table api与sql之连接外部系统: 读写外部系统的连接器和格式以及FileSystem示例(1)
16、Flink 的table api与sql之连接外部系统: 读写外部系统的连接器和格式以及Elasticsearch示例(2)
16、Flink 的table api与sql之连接外部系统: 读写外部系统的连接器和格式以及Apache Kafka示例(3)
16、Flink 的table api与sql之连接外部系统: 读写外部系统的连接器和格式以及JDBC示例(4)
16、Flink 的table api与sql之连接外部系统: 读写外部系统的连接器和格式以及Apache Hive示例(6)
17、Flink 之Table API: Table API 支持的操作(1)
17、Flink 之Table API: Table API 支持的操作(2)
18、Flink的SQL 支持的操作和语法
19、Flink 的Table API 和 SQL 中的内置函数及示例(1)
19、Flink 的Table API 和 SQL 中的自定义函数及示例(2)
19、Flink 的Table API 和 SQL 中的自定义函数及示例(3)
19、Flink 的Table API 和 SQL 中的自定义函数及示例(4)
20、Flink SQL之SQL Client: 不用编写代码就可以尝试 Flink SQL,可以直接提交 SQL 任务到集群上
21、Flink 的table API与DataStream API 集成(1)- 介绍及入门示例、集成说明
21、Flink 的table API与DataStream API 集成(2)- 批处理模式和inser-only流处理
21、Flink 的table API与DataStream API 集成(3)- changelog流处理、管道示例、类型转换和老版本转换示例
21、Flink 的table API与DataStream API 集成(完整版)
22、Flink 的table api与sql之创建表的DDL
24、Flink 的table api与sql之Catalogs(介绍、类型、java api和sql实现ddl、java api和sql操作catalog)-1
24、Flink 的table api与sql之Catalogs(java api操作数据库、表)-2
24、Flink 的table api与sql之Catalogs(java api操作视图)-3
24、Flink 的table api与sql之Catalogs(java api操作分区与函数)-4
25、Flink 的table api与sql之函数(自定义函数示例)
26、Flink 的SQL之概览与入门示例
27、Flink 的SQL之SELECT (select、where、distinct、order by、limit、集合操作和去重)介绍及详细示例(1)
27、Flink 的SQL之SELECT (SQL Hints 和 Joins)介绍及详细示例(2)
27、Flink 的SQL之SELECT (窗口函数)介绍及详细示例(3)
27、Flink 的SQL之SELECT (窗口聚合)介绍及详细示例(4)
27、Flink 的SQL之SELECT (Group Aggregation分组聚合、Over Aggregation Over聚合 和 Window Join 窗口关联)介绍及详细示例(5)
27、Flink 的SQL之SELECT (Top-N、Window Top-N 窗口 Top-N 和 Window Deduplication 窗口去重)介绍及详细示例(6)
27、Flink 的SQL之SELECT (Pattern Recognition 模式检测)介绍及详细示例(7)
28、Flink 的SQL之DROP 、ALTER 、INSERT 、ANALYZE 语句
29、Flink SQL之DESCRIBE、EXPLAIN、USE、SHOW、LOAD、UNLOAD、SET、RESET、JAR、JOB Statements、UPDATE、DELETE(1)
29、Flink SQL之DESCRIBE、EXPLAIN、USE、SHOW、LOAD、UNLOAD、SET、RESET、JAR、JOB Statements、UPDATE、DELETE(2)
30、Flink SQL之SQL 客户端(通过kafka和filesystem的例子介绍了配置文件使用-表、视图等)
31、Flink的SQL Gateway介绍及示例
32、Flink table api和SQL 之用户自定义 Sources & Sinks实现及详细示例
33、Flink 的Table API 和 SQL 中的时区
35、Flink 的 Formats 之CSV 和 JSON Format
36、Flink 的 Formats 之Parquet 和 Orc Format
41、Flink之Hive 方言介绍及详细示例
40、Flink 的Apache Kafka connector(kafka source的介绍及使用示例)-1
40、Flink 的Apache Kafka connector(kafka sink的介绍及使用示例)-2
40、Flink 的Apache Kafka connector(kafka source 和sink 说明及使用示例) 完整版
42、Flink 的table api与sql之Hive Catalog
43、Flink之Hive 读写及详细验证示例
44、Flink之module模块介绍及使用示例和Flink SQL使用hive内置函数及自定义函数详细示例–网上有些说法好像是错误的
45、Flink 的指标体系介绍及验证(1)-指标类型及指标实现示例
45、Flink 的指标体系介绍及验证(2)-指标的scope、报告、系统指标以及追踪、api集成示例和dashboard集成
45、Flink 的指标体系介绍及验证(3)- 完整版
46、Flink 的table api与sql之配项列表及示例
47、Flink 的指标报告介绍(graphite、influxdb、prometheus、statsd和datalog)及示例(jmx和slf4j示例)


文章目录

  • Flink 系列文章
  • 一、Metric Reporters
    • 1、概述及示例
    • 2、入门示例
      • 0)、特别说明
      • 1)、配置
      • 2)、验证
      • 3)、自定义的指标收集器
    • 3、基于标志符格式 vs. 基于 tags 格式
    • 4、Push vs. Pull
    • 5、发送器
      • 1)、JMX
      • 2)、Graphite
      • 2)、InfluxDB
      • 4)、Prometheus
      • 5)、PrometheusPushGateway
      • 6)、StatsD
      • 7)、Datadog
      • 8)、Slf4j


本文介绍了Flink的指标报告的类型以及几种发送器的示例配置,特别是针对jmx和slf4j给出了具体的实现示例及验证结果。由于本文是介绍flink的指标数据可以给哪些系统发送数据,至于具体实现算是各自的应用,故没有深入的展示。
本文依赖flink集群能正常使用。
本文分为5个部分,即Metric Reporters概述、入门示例、格式、推拉和8种发送器,其中两种给出了具体的示例。
本文的示例是在Flink 1.17版本中运行。

一、Metric Reporters

1、概述及示例

Flink 支持用户将 Flink 的各项运行时指标发送给外部系统。 了解更多指标方面信息可查看 45、Flink 的指标体系介绍及验证(3)- 完整版。

你可以通过 conf/flink-conf.yaml 文件来配置一种或多种发送器,将运行时指标暴露给外部系统。 发送器会在 TaskManager、Flink 作业启动时进行实例化。

下面列出了所有发送器都适用的参数,可以通过配置文件中的 metrics.reporter.<reporter_name>. 项进行配置。有些发送器有自己特有的配置,详见该发送器章节下的具体说明。
在这里插入图片描述
每种发送器的配置需要有 factory.class 属性。 有些基于定时调度的发送器还可以通过 interval 来配置发送间隔。

Flink 在启动时必须能访问到发送器所属的 jar 包,发送器会被加载为 plugins,Flink 自带的发送器(文档中已经列出的发送器)无需做其他配置,开箱即用。

[root@1049 plugins]# ll
drwxr-xr-x 2 501 games 114 519 2023 external-resource-gpu
drwxr-xr-x 2 501 games  46 519 2023 metrics-datadog
drwxr-xr-x 2 501 games  47 519 2023 metrics-graphite
drwxr-xr-x 2 501 games  47 519 2023 metrics-influx
drwxr-xr-x 2 501 games  42 519 2023 metrics-jmx
drwxr-xr-x 2 501 games  49 519 2023 metrics-prometheus
drwxr-xr-x 2 501 games  44 519 2023 metrics-slf4j
drwxr-xr-x 2 501 games  45 519 2023 metrics-statsd

你可以实现 org.apache.flink.metrics.reporter.MetricReporter 接口来自定义发送器,并实现 Scheduled 接口让发送器周期性地将运行时指标发送出去。 需要注意 report() 方法不应该阻塞太长的时间,所有用时很长的操作应该异步执行。 另外也可以实现 MetricReporterFactory 接口,让发送器作为插件被 Flink 导入。

2、入门示例

想要同时配置多个发送器,可参考以下示例。

0)、特别说明

  • 如果要使用jconsole远程连接flink,必须在conf/flink-conf.yaml配置文件中增加如下内容,具体情况根据自己的环境进行修改
  • 如果自己的flink集群环境既包含job manager,又包含task manager,则上面的端口配置会出现冲突,一般来说应该是不需要,因为一台机器有一个监控即可。
  • 1099端口可以根据自己的需要视情况设置
env.java.opts: "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.rmi.port=1099 -Djava.rmi.server.hostname=192.168.10.49"

1)、配置

本示例配置将指标写入jmx和日志中(将指标每分钟写入一次日志文件中)

metrics.reporters: alan_jmx_reporter,alan_slf4j_reporter

metrics.reporter.alan_jmx_reporter.factory.class: org.apache.flink.metrics.jmx.JMXReporterFactory
metrics.reporter.alan_jmx_reporter.port: 9020-9040
metrics.reporter.alan_jmx_reporter.scope.variables.excludes: job_id;task_attempt_num
metrics.reporter.alan_jmx_reporter.scope.variables.additional: cluster_name:alan_test_cluster,tag_name:alan_tag_value

metrics.reporter.alan_slf4j_reporter.factory.class: org.apache.flink.metrics.slf4j.Slf4jReporterFactory
metrics.reporter.alan_slf4j_reporter.interval: 60 SECONDS

2)、验证

  • 日志文件内容
    包含job manager和task manager,示例如下
2023-11-28 14:22:40,280 INFO  org.apache.flink.metrics.slf4j.Slf4jReporter                 [] - 
=========================== Starting metrics report ===========================

-- Gauges ---------------------------------------------------------------------
192_168_10_49.jobmanager.Status.JVM.ClassLoader.ClassesLoaded: 9047
192_168_10_49.jobmanager.Status.JVM.Memory.Mapped.MemoryUsed: 0
192_168_10_49.jobmanager.Status.JVM.Memory.NonHeap.Committed: 82313216
192_168_10_49.jobmanager.numRunningJobs: 0
192_168_10_49.jobmanager.Status.JVM.Memory.Metaspace.Used: 58573704
192_168_10_49.jobmanager.Status.JVM.Memory.Mapped.Count: 0
192_168_10_49.jobmanager.Status.JVM.ClassLoader.ClassesUnloaded: 0
192_168_10_49.jobmanager.Status.JVM.Memory.Heap.Used: 69453280
192_168_10_49.jobmanager.Status.JVM.CPU.Load: 2.887393783748263E-7
192_168_10_49.jobmanager.Status.JVM.GarbageCollector.G1 Young Generation.Count: 3
192_168_10_49.jobmanager.Status.JVM.Memory.Metaspace.Committed: 60817408
192_168_10_49.jobmanager.Status.JVM.GarbageCollector.G1 Young Generation.Time: 27
192_168_10_49.jobmanager.numRegisteredTaskManagers: 0
192_168_10_49.jobmanager.Status.JVM.GarbageCollector.G1 Old Generation.Count: 0
192_168_10_49.jobmanager.Status.JVM.GarbageCollector.G1 Old Generation.Time: 0
192_168_10_49.jobmanager.Status.JVM.Memory.Direct.Count: 10
192_168_10_49.jobmanager.Status.JVM.Memory.Metaspace.Max: 268435456
192_168_10_49.jobmanager.taskSlotsTotal: 0
192_168_10_49.jobmanager.Status.JVM.Memory.NonHeap.Used: 76532504
192_168_10_49.jobmanager.Status.JVM.Memory.Heap.Committed: 1530920960
192_168_10_49.jobmanager.Status.JVM.Memory.NonHeap.Max: 780140544
192_168_10_49.jobmanager.Status.JVM.Memory.Direct.MemoryUsed: 532481
192_168_10_49.jobmanager.taskSlotsAvailable: 0
192_168_10_49.jobmanager.Status.JVM.Memory.Heap.Max: 1530920960
192_168_10_49.jobmanager.Status.JVM.Memory.Direct.TotalCapacity: 532480
192_168_10_49.jobmanager.Status.JVM.Memory.Mapped.TotalCapacity: 0
192_168_10_49.jobmanager.Status.JVM.Threads.Count: 69
192_168_10_49.jobmanager.Status.JVM.CPU.Time: 9960000000

=========================== Finished metrics report ===========================

2023-11-28 14:23:40,281 INFO  org.apache.flink.metrics.slf4j.Slf4jReporter                 [] - 
=========================== Starting metrics report ===========================

-- Gauges ---------------------------------------------------------------------
192_168_10_49.jobmanager.Status.JVM.ClassLoader.ClassesLoaded: 9121
192_168_10_49.jobmanager.Status.JVM.Memory.Mapped.MemoryUsed: 0
192_168_10_49.jobmanager.Status.JVM.Memory.NonHeap.Committed: 83361792
192_168_10_49.jobmanager.numRunningJobs: 0
192_168_10_49.jobmanager.Status.JVM.Memory.Metaspace.Used: 59044888
192_168_10_49.jobmanager.Status.JVM.Memory.Mapped.Count: 0
192_168_10_49.jobmanager.Status.JVM.ClassLoader.ClassesUnloaded: 0
192_168_10_49.jobmanager.Status.JVM.Memory.Heap.Used: 73647584
192_168_10_49.jobmanager.Status.JVM.CPU.Load: 0.005763448045439359
192_168_10_49.jobmanager.Status.JVM.GarbageCollector.G1 Young Generation.Count: 3
192_168_10_49.jobmanager.Status.JVM.Memory.Metaspace.Committed: 61472768
192_168_10_49.jobmanager.Status.JVM.GarbageCollector.G1 Young Generation.Time: 27
192_168_10_49.jobmanager.numRegisteredTaskManagers: 0
192_168_10_49.jobmanager.Status.JVM.GarbageCollector.G1 Old Generation.Count: 0
192_168_10_49.jobmanager.Status.JVM.GarbageCollector.G1 Old Generation.Time: 0
192_168_10_49.jobmanager.Status.JVM.Memory.Direct.Count: 10
192_168_10_49.jobmanager.Status.JVM.Memory.Metaspace.Max: 268435456
192_168_10_49.jobmanager.taskSlotsTotal: 0
192_168_10_49.jobmanager.Status.JVM.Memory.NonHeap.Used: 78078760
192_168_10_49.jobmanager.Status.JVM.Memory.Heap.Committed: 1530920960
192_168_10_49.jobmanager.Status.JVM.Memory.NonHeap.Max: 780140544
192_168_10_49.jobmanager.Status.JVM.Memory.Direct.MemoryUsed: 532481
192_168_10_49.jobmanager.taskSlotsAvailable: 0
192_168_10_49.jobmanager.Status.JVM.Memory.Heap.Max: 1530920960
192_168_10_49.jobmanager.Status.JVM.Memory.Direct.TotalCapacity: 532480
192_168_10_49.jobmanager.Status.JVM.Memory.Mapped.TotalCapacity: 0
192_168_10_49.jobmanager.Status.JVM.Threads.Count: 63
192_168_10_49.jobmanager.Status.JVM.CPU.Time: 11330000000

=========================== Finished metrics report ===========================

。。。。。。。。。。。。。。

2023-11-28 13:42:26,246 INFO  org.apache.flink.metrics.slf4j.Slf4jReporter                 [] - 
=========================== Starting metrics report ===========================

-- Gauges ---------------------------------------------------------------------
localhost.taskmanager.localhost:46098-60172b.Status.JVM.Memory.Metaspace.Committed: 54468608
localhost.taskmanager.localhost:46098-60172b.Status.Shuffle.Netty.TotalMemory: 359694336
localhost.taskmanager.localhost:46098-60172b.Status.JVM.CPU.Time: 9470000000
localhost.taskmanager.localhost:46098-60172b.Status.JVM.ClassLoader.ClassesLoaded: 7916
localhost.taskmanager.localhost:46098-60172b.Status.JVM.Threads.Count: 51
localhost.taskmanager.localhost:46098-60172b.Status.Network.AvailableMemorySegments: 10977
localhost.taskmanager.localhost:46098-60172b.Status.JVM.GarbageCollector.G1 Old Generation.Count: 0
localhost.taskmanager.localhost:46098-60172b.Status.JVM.Memory.Mapped.Count: 0
localhost.taskmanager.localhost:46098-60172b.Status.JVM.Memory.Mapped.MemoryUsed: 0
localhost.taskmanager.localhost:46098-60172b.Status.JVM.Memory.NonHeap.Committed: 73748480
localhost.taskmanager.localhost:46098-60172b.Status.JVM.GarbageCollector.G1 Young Generation.Count: 3
localhost.taskmanager.localhost:46098-60172b.Status.JVM.CPU.Load: 2.748870782605016E-7
localhost.taskmanager.localhost:46098-60172b.Status.JVM.Memory.Metaspace.Max: 268435456
localhost.taskmanager.localhost:46098-60172b.Status.JVM.GarbageCollector.G1 Young Generation.Time: 63
localhost.taskmanager.localhost:46098-60172b.Status.JVM.Memory.Mapped.TotalCapacity: 0
localhost.taskmanager.localhost:46098-60172b.Status.Flink.Memory.Managed.Total: 1438814063
localhost.taskmanager.localhost:46098-60172b.Status.Network.TotalMemorySegments: 10977
localhost.taskmanager.localhost:46098-60172b.Status.JVM.Memory.Heap.Committed: 1665138688
localhost.taskmanager.localhost:46098-60172b.Status.JVM.Memory.Direct.TotalCapacity: 360426496
localhost.taskmanager.localhost:46098-60172b.Status.Shuffle.Netty.AvailableMemory: 359694336
localhost.taskmanager.localhost:46098-60172b.Status.JVM.Memory.Direct.MemoryUsed: 360426497
localhost.taskmanager.localhost:46098-60172b.Status.JVM.Memory.Heap.Used: 38173672
localhost.taskmanager.localhost:46098-60172b.Status.JVM.Memory.Metaspace.Used: 52683336
localhost.taskmanager.localhost:46098-60172b.Status.JVM.GarbageCollector.G1 Old Generation.Time: 0
localhost.taskmanager.localhost:46098-60172b.Status.Flink.Memory.Managed.Used: 0
localhost.taskmanager.localhost:46098-60172b.Status.Shuffle.Netty.RequestedMemoryUsage: 0
localhost.taskmanager.localhost:46098-60172b.Status.JVM.Memory.NonHeap.Used: 69118632
localhost.taskmanager.localhost:46098-60172b.Status.Shuffle.Netty.TotalMemorySegments: 10977
localhost.taskmanager.localhost:46098-60172b.Status.Shuffle.Netty.UsedMemorySegments: 0
localhost.taskmanager.localhost:46098-60172b.Status.JVM.Memory.Heap.Max: 1665138688
localhost.taskmanager.localhost:46098-60172b.Status.Shuffle.Netty.AvailableMemorySegments: 10977
localhost.taskmanager.localhost:46098-60172b.Status.Shuffle.Netty.UsedMemory: 0
localhost.taskmanager.localhost:46098-60172b.Status.JVM.ClassLoader.ClassesUnloaded: 0
localhost.taskmanager.localhost:46098-60172b.Status.JVM.Memory.Direct.Count: 10993
localhost.taskmanager.localhost:46098-60172b.Status.JVM.Memory.NonHeap.Max: 780140544

=========================== Finished metrics report ===========================

  • jconsole显示
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3)、自定义的指标收集器

1、自定义指标参考文章:45、Flink 的指标体系介绍及验证(1)-指标类型及指标实现示例

2、将实现的自定义指标打包,并放在flink的lib目录下,确保Flink 在启动时必须能访问到发送器所属的 jar 包,发送器会被加载为 plugins

3、配置flink-conf.yaml文件

metrics.reporters: alan-reporter
metrics.reporter.alan-reporter.class: com.alan.AlanReporter
metrics.reporter.alan-reporter.class.host: 192.168.10.49
metrics.reporter.alan-reporter.port: 8789

一般而言,不需要自己开发,除非有特殊需求一般的开源不能满足。

3、基于标志符格式 vs. 基于 tags 格式

发送器发送运行指标时有以下两种格式:

第一种是基于标志符的格式,这种格式将指标所属的详细范围信息与该指标名称连在一起,组成一个长字符串标志符。 比如 job.MyJobName.numRestarts 就是这样的格式。

第二种是基于 tags 的格式,这种格式由指标的逻辑范围和该指标名称组成,代表某一类通用的指标,比如 job.numRestarts。 这类格式描述的特定指标实例会以“键值对”的方式体现出来,即所谓的标签或变量,比如 “jobName=MyJobName”。

4、Push vs. Pull

发送器通过 Pull 或 Push 的方式将指标发送出去。
基于 Push 的发送器一般实现了 Scheduled 接口,周期性地将当前运行指标信息汇总,发送给外部系统存储。
基于 Pull 的发送器一般是由外部系统主动发起查询将指标信息拉走。

5、发送器

接下来的部分列出了 Flink 支持的发送器。

1)、JMX

参考本文的入门示例,不再赘述。

  • factory.class
metrics.reporter.alan_jmx_reporter.factory.class: org.apache.flink.metrics.jmx.JMXReporterFactory
  • 类型: pull/基于 tags 格式

  • 参数:
    port -(可选的)JMX 监听的端口。 如果需要在一台机器上运行多个发送器示例进行监控时(比如 TaskManger 与 JobManager 在一台机器上运行时),建议将端口号配置为 9250-9260 这样的区间, 实际使用的端口会在相关作业 或 TaskManger 的日志中显示。如果设置了这个选项,Flink 会按照配置的端口号或端口区间开启 JMX 发送器, 这些运行时指标可以通过本地的 JMX 默认接口访问到。

metrics.reporter.jmx.factory.class: org.apache.flink.metrics.jmx.JMXReporterFactory
metrics.reporter.jmx.port: 8789
# 或,下面例子重命名/并增加了其他属性配置
metrics.reporters: alan_jmx_reporter,alan_slf4j_reporter
metrics.reporter.alan_jmx_reporter.factory.class: org.apache.flink.metrics.jmx.JMXReporterFactory
metrics.reporter.alan_jmx_reporter.port: 9020-9040
metrics.reporter.alan_jmx_reporter.scope.variables.excludes: job_id;task_attempt_num
metrics.reporter.alan_jmx_reporter.scope.variables.additional: cluster_name:alan_test_cluster,tag_name:alan_tag_value

通过 JMX 发送的指标由“域”和“key-properties”列表组成,“域”总以 org.apache.flink 开头,后跟一个“通用指标标识符”。

“通用指标标识符”不像一般系统的指标度量那样按照所度量范围的形式进行命名,而是不包含任何变量,如同常量一样,每个作业都有。 例如,org.apache.flink.job.task.numBytesOut 就是一个“域”。

“key-property”列表包含所有指标的具体变量值,无论配置的度量范围格式如何,都能关联到指定的指标。

例如host=localhost,job_name=MyJob,task_name=MyTask 就是一个“key-property”列表。

总结来说,“域”标注出了某个指标的类,“key-property”列表标注出了该指标的一个(或者多个)实例。

2)、Graphite

关于Graphite 请参考官方文档,不再赘述。

  • factory.class
metrics.reporter.grph.factory.class: org.apache.flink.metrics.graphite.GraphiteReporterFactory
  • 类型:push/基于标志符格式

  • 参数:
    host - Graphite 服务的地址。
    port - Graphite 服务的端口。
    protocol - 使用的协议(TCP/UDP)。

  • 配置示例:

metrics.reporter.grph.factory.class: org.apache.flink.metrics.graphite.GraphiteReporterFactory
metrics.reporter.grph.host: localhost
metrics.reporter.grph.port: 2003
metrics.reporter.grph.protocol: TCP
metrics.reporter.grph.interval: 60 SECONDS

2)、InfluxDB

关于 InfluxDB 请参考其官网介绍。

  • factory.class
metrics.reporter.influxdb.factory.class: org.apache.flink.metrics.influxdb.InfluxdbReporterFactory
  • 类型: push/基于 tags 格式

  • 参数:
    在这里插入图片描述

  • 配置示例:

metrics.reporter.influxdb.factory.class: org.apache.flink.metrics.influxdb.InfluxdbReporterFactory
metrics.reporter.influxdb.scheme: http
metrics.reporter.influxdb.host: localhost
metrics.reporter.influxdb.port: 8086
metrics.reporter.influxdb.db: flink
metrics.reporter.influxdb.username: flink-metrics
metrics.reporter.influxdb.password: qwerty
metrics.reporter.influxdb.retentionPolicy: one_hour
metrics.reporter.influxdb.consistency: ANY
metrics.reporter.influxdb.connectTimeout: 60000
metrics.reporter.influxdb.writeTimeout: 60000
metrics.reporter.influxdb.interval: 60 SECONDS

InfluxDB 发送器会使用 http 协议按照将指标发送到 InfluxDB 服务器。指标的保留策略可通过配置指定,或按照 InfluxDB 服务端的保留策略决定。 所有的 Flink 运行指标变量(见 List of all Variables)都会按照 tag 形式上报给 InfluxDB。

4)、Prometheus

关于Prometheus请参考官网信息。

  • factory.class
metrics.reporter.prom.factory.class: org.apache.flink.metrics.prometheus.PrometheusReporterFactory
  • 类型: pull/基于 tags 格式

  • 参数:
    1、port - (可选的)Prometheus 发送器监听的端口,默认为 9249。如果需要在一台机器上运行多个发送器示例进行监控时(比如 TaskManger 与 JobManager 在一台机器上运行时),建议将端口号配置为 9250-9260 这样的区间。
    2、filterLabelValueCharacters -(可选的)指定是否过滤 label 中的非法字符。如果设置过滤,所有没有按照 [a-zA-Z0-9:_] 匹配的字符都会被过滤掉,如果设置不过滤,则不会有字符被过滤掉。设置不过滤前,请确保你的 label 符合 Prometheus 的 lable 命名规范。

  • 配置示例:

metrics.reporter.prom.factory.class: org.apache.flink.metrics.prometheus.PrometheusReporterFactory

Flink 指标类型与 Prometheus 指标类型对应关系如下:
在这里插入图片描述
所有的 Flink 运行指标变量(见 List of all Variables)都会按照 label 形式上报给 Prometheus。

5)、PrometheusPushGateway

关于PrometheusPushGateway请参考官网信息。

  • factory.class
metrics.reporter.promgateway.factory.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporterFactory
  • 类型: push/基于 tags 格式
  • 参数:
    在这里插入图片描述
  • 配置示例:
metrics.reporter.promgateway.factory.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporterFactory
metrics.reporter.promgateway.hostUrl: http://localhost:9091
metrics.reporter.promgateway.jobName: myJob
metrics.reporter.promgateway.randomJobNameSuffix: true
metrics.reporter.promgateway.deleteOnShutdown: false
metrics.reporter.promgateway.groupingKey: k1=v1;k2=v2
metrics.reporter.promgateway.interval: 60 SECONDS

PrometheusPushGatewayReporter 发送器将运行指标发送给 Pushgateway,Prometheus 再从 Pushgateway 拉取、解析运行指标。

更多使用方法可查看 Prometheus 的文档

6)、StatsD

关于StatsD请参考官网信息。

  • factory.class
metrics.reporter.stsd.factory.class: org.apache.flink.metrics.statsd.StatsDReporterFactory
  • 类型: push/基于标志符格式

  • 参数:
    host - StatsD 的服务器地址。
    port - StatsD 的服务器端口。

  • 配置示例:

metrics.reporter.stsd.factory.class: org.apache.flink.metrics.statsd.StatsDReporterFactory
metrics.reporter.stsd.host: localhost
metrics.reporter.stsd.port: 8125
metrics.reporter.stsd.interval: 60 SECONDS

7)、Datadog

关于 Datadog官网了解更多的信息。

  • factory.class
metrics.reporter.dghttp.factory.class: org.apache.flink.metrics.datadog.DatadogHttpReporterFactory
  • 类型: push/基于 tags 格式
    1、使用 Datadog 时,Flink 运行指标中的任何变量,例如 、<job_name>、 <tm_id>、 <subtask_index>、<task_name>、 <operator_name>,都会被当作 host:localhost、job_name:myjobname 这样的 tag 发送。
    2、Note For legacy reasons the reporter uses both the metric identifier and tags. This redundancy can be avoided by enabling useLogicalIdentifier.

按照 Datadog 的 Histograms 命名约定,Histograms 类的运行指标会作为一系列 gauges 显示(<metric_name>.)。 默认情况下 min 即最小值被发送到 Datadog,sum 不会被发送。 与 Datadog 提供的 Histograms 相比,Histograms 类的运行指标不会按照指定的发送间隔进行聚合计算。

  • 参数:
    apikey - Datadog 的 API KEY。
    proxyHost - (可选的)发送到 Datadog 时使用的代理主机。
    proxyPort - (可选的)发送到 Datadog 时使用的代理端口,默认为 8080。
    dataCenter - (可选的)要连接的数据中心(EU/US),默认为 US。
    maxMetricsPerRequest - (可选的)每次请求携带的最大运行指标个数,默认为 2000。
    useLogicalIdentifier -> (optional) Whether the reporter uses a logical metric identifier, defaults to false.

  • 配置示例:

metrics.reporter.dghttp.factory.class: org.apache.flink.metrics.datadog.DatadogHttpReporterFactory
metrics.reporter.dghttp.apikey: xxx
metrics.reporter.dghttp.proxyHost: my.web.proxy.com
metrics.reporter.dghttp.proxyPort: 8080
metrics.reporter.dghttp.dataCenter: US
metrics.reporter.dghttp.maxMetricsPerRequest: 2000
metrics.reporter.dghttp.interval: 60 SECONDS
metrics.reporter.dghttp.useLogicalIdentifier: true

8)、Slf4j

本部分可以参考入门示例中的slf4j的例子。

  • factory.class
metrics.reporter.slf4j.factory.class: org.apache.flink.metrics.slf4j.Slf4jReporterFactory
  • 类型: push/基于标志符格式

  • 配置示例
    每分钟将指标写入到日志文件中
    flink-conf.yaml配置文件内容增加

metrics.reporter.slf4j.factory.class: org.apache.flink.metrics.slf4j.Slf4jReporterFactory
metrics.reporter.slf4j.interval: 60 SECONDS

以上,本文介绍了Flink的指标报告的类型以及几种发送器的示例配置,特别是针对jmx和slf4j给出了具体的实现示例及验证结果。由于本文是介绍flink的指标数据可以给哪些系统发送数据,至于具体实现算是各自的应用,故没有深入的展示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1271492.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C/C++ Zlib库封装MyZip压缩类

Zlib是一个开源的数据压缩库&#xff0c;提供了一种通用的数据压缩和解压缩算法。它最初由Jean-Loup Gailly和Mark Adler开发&#xff0c;旨在成为一个高效、轻量级的压缩库&#xff0c;其被广泛应用于许多领域&#xff0c;包括网络通信、文件压缩、数据库系统等。其压缩算法是…

《如何戒掉坏习惯》精华摘抄

“劣质货币会驱逐优良货币。”这就是格雷沙姆法则&#xff08;劣币驱逐良币 法则&#xff09;。它是指一旦对劣质货币&#xff08;假币&#xff09;的流通放任不管&#xff0c;人们就不会 去使用优良货币&#xff08;真正的货币&#xff09;&#xff0c;从而导致优良货币从市场…

深入探索Maven:优雅构建Java项目的新方式(二)

Meven高级 1&#xff0c;属性1.1 属性1.1.1 问题分析1.1.2 解决步骤步骤1:父工程中定义属性步骤2:修改依赖的version 1.2 配置文件加载属性步骤1:父工程定义属性步骤2:jdbc.properties文件中引用属性步骤3:设置maven过滤文件范围步骤4:测试是否生效 1.3 版本管理 2&#xff0c;…

todesk连接ubuntu显示当前系统并无桌面环境,或无显示器,无法显示远程桌面,您需要自行安装X11桌面环境,或者使用终端文件功能

ToDesk远程遇到的问题如上图&#xff0c;换向日葵直接黑屏&#xff1b; 问题原因 截止发文时间&#xff0c;Todesk只支持X11协议&#xff0c;没有适配最新的Wayland协议&#xff0c;所以我们需要把窗口系统调整为X11才可以。 解决方法 修改配置文件&#xff0c;关闭wayland su…

Hadoop入门学习笔记

视频课程地址&#xff1a;https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接&#xff1a;https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 这里写目录标题 一、VMware准备Linux虚拟机1.1. VMware安装Linux虚拟机1.1.1. 修改虚拟机子网IP和网关1.1.2. 安装…

AI PC专题:AI PC深入变革PC产业

今天分享的是AI系列深度研究报告&#xff1a;《AI PC专题&#xff1a;AI PC深入变革PC产业》。 &#xff08;报告出品方&#xff1a;西南证券研究发展中心&#xff09; 报告共计&#xff1a;30页 AI PC将深入变革PC产业  从出货量看&#xff0c;PC整体呈现周期性的特征。2…

智慧灯杆网关:引领城市智慧照明的未来

智慧灯杆网关&#xff0c;作为城市智慧照明系统的核心组件&#xff0c;正逐渐成为各大城市发展的关键所在。它的出现使得城市照明管理更加智能、高效&#xff0c;为未来城市的可持续发展奠定了坚实的基础。 智慧灯杆网关是一种集网络通信、数据处理、远程控制等功能于一体的设备…

系统部署安装-Centos7-Cassandra

文章目录 介绍安装在线下载安装启动普通启动注册服务 介绍 Apache Cassandra是一个高度可扩展的高性能分布式数据库&#xff0c;旨在处理许多商用服务器上的大量数据&#xff0c;提供高可用性而没有单点故障。 安装 在线下载 &#xff08;1&#xff09;使用weget下载最新的…

火锅店管理系统扫码点餐小程序作用如何

火锅店在餐饮行业中占据了很高地位&#xff0c;受众非常广&#xff0c;当然火热的赛道自然少不了众多品牌竞争&#xff0c;由于火锅店有一定成本支出&#xff0c;所以商家更希望能加大生意营收&#xff0c;而强到店属性下&#xff0c;如何将客户饮料进店和赋能客户消费就变得很…

天眼销:精准的企业名录

企业名录的重要性&#xff0c;对于销售而言都是极其重要的。本期为家人们分享如何正确挑选出优质的企业名录渠道&#xff0c;避免走一些弯弯坑坑。 为了有效利用企业名录进行客户开发&#xff0c;您需要关注信息的准确性、可提供的资源数量以及信息的时效性。能否根据您的需求…

封装进度条onUploadProgress+axios取消请求的上传组件

目录 定时模拟进度条 方法 A.axios B.xhr 取消请求 完整代码 A.自定义上传组件 B.二次封装组件 情况 增加cancelToken不生效&#xff0c;刷新页面 进度条太快->设置浏览器网速 定时模拟进度条 startUpload() {if (!this.file) return;const totalSize this.fil…

土壤养分分析仪:精准农业,从“土”开始

在农业生产中&#xff0c;土壤的质量是决定农作物产量和品质的关键因素。然而&#xff0c;传统的土壤检测方法耗时费力&#xff0c;且结果往往不够准确。随着科技的发展&#xff0c;土壤养分分析仪为现代农业带来了新的可能。 土壤养分分析仪是一种专门用于测量土壤中各种养分含…

Flutter应用程序加固的问题及解决方案

​&#x1f680;Flutter应用程序加固的问题及解决方案引言在移动应用开发中&#xff0c;为了保护应用程序的安全性&#xff0c;开发者需要对应用进行加固。在使用Flutter技术进行应用程序开发时&#xff0c;也需要注意应用程序的安全问题和加固方案。本文将介绍在Flutter应用程…

码云配置遇到秘钥不正确

你这个就是秘钥没有和git绑定&#xff0c; 需要 git config --global user.name "你的用户名随便写" git config --global user.email "你的邮箱"

老师怎么培养班干部

老师除了教学之外&#xff0c;班级管理也是一项重要的任务。而培养班干部则是班级管理中不可或缺的一部分。今天为大家分享一些关于如何培养班干部的干货。 明确职责&#xff0c;制定班规 在选拔班干部之后&#xff0c;首先需要明确各个职位的职责&#xff0c;让每位班干部都清…

22款奔驰GLS450升级HUD抬头显示 平视仪表信息

说起HUD抬头显示这个配置&#xff0c;最初是用在战斗机上的&#xff0c;它可以让战斗机驾驶员读取飞机的各种信息和状态&#xff0c;而无需移动头部&#xff0c;这样就能够有效的提高效率。但随着汽车技术的进步HUD这种配置也逐渐下放到民用车上。发展到今&#xff0c;车上的抬…

一文讲透Python函数中的局部变量和全局变量

变量的作用域就是变量能够发挥作用的区域&#xff0c;超出既定区域后就无法发挥作用。根据变量的作用域可以将变量分为局部变量和全局变量。 1.局部变量 局部变量是在函数内部定义并使用的变量&#xff0c;也就是说只有在函数内部&#xff0c;在函数运行时才会有效&#xff0…

Docker安装可视化工具Portainer

目录 Portainer简介 Portainer安装 Portainer简介 Portainer是一款开源的容器管理平台&#xff0c;支持多种容器技术&#xff0c;如Docker、Kubernetes和Swarm等。它提供了一个易于使用的Web UI界面&#xff0c;可用于管理和监控容器和集群。Portainer旨在使容器管理更加简单…

sqli-labs靶场详解(less38-less45)

堆叠注入 ​ less-38 less-38 ?id1 and 11;%00 成功 ?id1 and 12;%00 失败 不是吧 这就出来了&#xff1f; ?id1 order by 4;%00 报错 4列不行 ?id0 union select 1,2,3;%00 显示位置为2,3 ?id0 union select 1,database(),3;%00 数据库为security ?id0 union select 1,…

HarmonyOS入门开发(三) 持久化存储Preferences

接入鸿蒙几天以来&#xff0c;发现各种和Android不一样的地方&#xff0c;今天来看一下Preferences存储 在Android中比如有ShardPreferences、Mmkv这些持久化存储方式&#xff0c;开发起来很方便&#xff0c;读取速度也很快&#xff0c;在鸿蒙里面也提供了对应的持久化存储方案…