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)
参数: 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: 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
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
|