文章目录

  • Reporter
  • JMX
  • Graphite
  • InfluxDB
  • Prometheus
  • PrometheusPushGateway
  • StatsD
  • Datadog
  • Slf4j



Flink 允许向外部系统报告指标。有关 Flink 公制系统的更多信息,请访问

公制系统文档

Reporter

通过在 conf/flink-conf.yaml 中配置一个或多个报告器,可以向外部系统公开指标。这些报告器将在启动时在每个作业和任务管理器上实例化。

  • metrics.reporter..:通用设置报告器命名。
  • metrics.reporter..class:用于报告器的跟踪器类,命名为
  • metrics.reporter..factory.class:报告方工厂类使用,为报告器命名
  • metrics.reporter..interval: 用于名为的报告器的报告器间隔
  • metrics.reporter..scope.delimiter:用于名为 的报告器的标识符(默认值使用 metrics.scope.delimiter)的分隔符。
  • metrics.reporter..scope.variables.excludes:(可选)分号 (;)基于标签的报告者应该忽略的变量的单独列表(例如,Prometheus,InfluxDB)。
  • metrics.reporters: (可选)以逗号分隔的包含报告者姓名列表。默认情况下,将使用所有已配置的报告器。
  • metrics.reporter..scope.variables.additional: (可选)变量及其值的逗号分隔映射,由冒号 (😃 分隔。这些映射由基于标签的报告器(例如Prometheux,InfluxDB)添加到变量映射中。

所有报告者必须至少具有类或工厂.class属性。可以/应该使用哪个属性取决于报告器实现。有关详细信息,请参阅各个报告器配置部分。某些报告器(称为“计划”)允许指定报告间隔。下面将列出特定于每个报告器的更多设置。

指定多个报告器的示例报告器配置

metrics.reporters: my_jmx_reporter,my_other_reporter

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

metrics.reporter.my_other_reporter.class: org.apache.flink.metrics.graphite.GraphiteReporter
metrics.reporter.my_other_reporter.host: 192.168.1.1
metrics.reporter.my_other_reporter.port: 10000

要点:当Flink启动时,包含reporter程序的jar必须是可访问的。支持factory.class属性的记者可以作为插件加载。否则jar必须放在/lib文件夹中。默认情况下,Flink附带的reporter(即本页记录的所有reporter)是可用的。

您可以通过实现org.apache.flink.metrics.reporter.MetricReporter接口来编写自己的Reporter。如果Reporter应该定期发送报告,那么您也必须实现Scheduled接口。通过另外实现MetricReporterFactory,您的reporter也可以作为插件加载。

以下部分列出了支持的reporter。

JMX

(org.apache.flink.metrics.jmx.JMXReporter)
您不必包含额外的依赖项,因为JMX报告程序在默认情况下是可用的,但不是激活的。

参数:

  • port——(可选)JMX侦听连接的端口。为了能够在一台主机上运行报告程序的多个实例(例如,当一个TaskManager与JobManager同时存在时),建议使用9250-9260这样的端口范围。当指定一个范围时,实际的端口将显示在相关的作业或任务管理器日志中。如果设置了这个设置,Flink将为给定的端口/范围启动一个额外的JMX连接器。在默认的本地JMX接口上,度量总是可用的。

配置样例:

metrics.reporter.jmx.factory.class: org.apache.flink.metrics.jmx.JMXReporterFactory
metrics.reporter.jmx.port: 8789

通过JMX公开的度量标准由域和键属性列表标识,它们共同构成对象名称。

域总是以org.apache.flink开头,后面跟着一个通用度量标识符。与通常的标识符不同,它不受作用域格式的影响,不包含任何变量,并且在作业中是常量。这样一个域的示例是org.apache.flink.job.task.numBytesOut。

键-属性列表包含与给定度量相关的所有变量的值,无论配置的范围格式如何。这样一个列表的示例是host=localhost,job_name=MyJob,task_name=MyTask。

因此,域标识一个指标类,而键-属性列表标识该指标的一个(或多个)实例。

Graphite

(org.apache.flink.metrics.graphite.GraphiteReporter)

参数:

  • host - the Graphite server host
  • port - the Graphite server port
  • protocol - protocol to use (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

InfluxDB

(org.apache.flink.metrics.influxdb.InfluxdbReporter)
为了使用这个reporter必须拷贝/opt/flink-metrics-influxdb-1.15.0.jar到flink部署目录的plugins/influxdb下面。

参数:

key

默认值

类型

描述

connectTimeout

10000

Integer

(可选)InfluxDB连接超时

consistency

ONE

Enum

(可选)指标的InfluxDB一致性级别,包括:ALL,ANY,ONE,QUORUM

db

(none)

String

使用fluxdb数据库存储指标

host

(none)

String

the InfluxDB server host

password

(none)

String

(可选)用于身份验证的InfluxDB数据库用户的密码

port

8086

Integer

InfluxDB 数据库服务端口

retentionPolicy

(none)

String

(可选)指标的InfluxDB保留策略

scheme

http

Enum

String

username

(none)

String

(可选)用于身份验证的InfluxDB数据库用户名

writeTimeout

10000

Integer

(可选)指标的InfluxDB写超时

Example configuration:

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

reporter程序将使用http协议和指定的保留策略(或在服务器上指定的默认策略)向fluxdb服务器发送指标。所有Flink指标变量(请参阅所有变量列表)都导出为fluxdb标签。

Prometheus

(org.apache.flink.metrics.prometheus.PrometheusReporter)
参数:

  • port——(可选)Prometheus出口商监听的端口,默认为9249。为了能够在一台主机上运行报告程序的多个实例(例如,当一个TaskManager与JobManager同时存在时),建议使用9250-9260这样的端口范围。
  • filterLabelValueCharacters -(可选)是否过滤标签值字符。如果启用,所有不匹配[a-zA-Z0-9:_]的字符将被删除,否则没有字符将被删除。在禁用此选项之前,请确保您的标签值满足普罗米修斯要求。

Example configuration:

metrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReporter

Flink指标类型映射到普罗米修斯指标类型如下:

Flink

Prometheus

Note

Counter

Gauge

普罗米修斯计数器不能被减少。

Gauge

Gauge

只支持数字和布尔值。

Histogram

Summary

Quantiles .5, .75, .95, .98, .99 and .999

Meter

Gauge

仪表输出仪表的速率.

所有Flink指标变量(参见所有变量列表)都作为标签导出到普罗米修斯。

PrometheusPushGateway

(org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter)

参数:

flink Over Window Aggregation executeinsert 报错 flink reporter_apache


Example configuration:

metrics.reporter.promgateway.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
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抓取。

StatsD

(org.apache.flink.metrics.statsd.StatsDReporter)
Parameters:

  • host - the StatsD server host
  • port - the StatsD server port

Example configuration:

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

Datadog

(org.apache.flink.metrics.datadog.DatadogHttpReporter)

注意,Flink度量中的任何变量,例如, <job_name>, <tm_id>, <subtask_index>, <task_name>, and <operator_name>,,都将作为标签发送给Datadog。标签将类似于host:localhost和job_name:myjobname。

注意:Histograms是一系列遵循Datadog Histograms命名惯例的量规(.)。默认情况下报告最小聚合,而sum不可用。与datadog提供的Histograms相比,报告的聚合不是针对特定的报告间隔计算的。

Parameters:

  • apikey - Datadog API密钥
  • tags - (可选的)全局标记,当发送到Datadog时将应用于指标。标签之间只能用逗号分隔
  • proxyHost - (可选)发送给Datadog时使用的代理主机。
  • proxyPort - (可选)发送给Datadog时使用的代理端口,默认为8080。
  • dataCenter - (可选)需要连接的数据中心(EU/US),默认为US。
  • maxMetricsPerRequest - (可选)每个请求中包含的度量的最大数量,默认为2000。

Example configuration:

metrics.reporter.dghttp.factory.class: org.apache.flink.metrics.datadog.DatadogHttpReporterFactory
metrics.reporter.dghttp.apikey: xxx
metrics.reporter.dghttp.tags: myflinkapp,prod
metrics.reporter.dghttp.proxyHost: 
metrics.reporter.dghttp.proxyPort: 8080
metrics.reporter.dghttp.dataCenter: US
metrics.reporter.dghttp.maxMetricsPerRequest: 2000
metrics.reporter.dghttp.interval: 60 SECONDS

Slf4j

(org.apache.flink.metrics.slf4j.Slf4jReporter)

Example configuration:

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