I try to configure Graphite as metric reporter DB in Apache Flink 1.20
metrics:
scope:
operator: <job_name>.<operator_name>
task: <job_name>.<task_name>
reporters: grph,prom
reporter:
grph:
factory:
class: org.apache.flink.metrics.graphite.GraphiteReporterFactory
host: localhost3
port: 2001
protocol: TCP
interval: 10 SECONDS
prom:
factory:
class: org.apache.flink.metrics.prometheus.PrometheusReporterFactory
port: 9249-9251
scope:
operator: <job_name>.<operator_name>
task: <job_name>.<task_name>
But when I start the cluster, I get the exception below. AS you can see, host name is parsed but port is invalid.
2025-03-12 19:31:26,025 ERROR org.apache.flink.runtime.metrics.ReporterSetup [] - Could not instantiate MetricReporter grph. Metrics might not be exposed/reported.
java.lang.IllegalArgumentException: Invalid host/port configuration. Host: localhost3
Port: -1
at org.apache.flink.metrics.graphite.GraphiteReporter.getReporter(GraphiteReporter.java:51) ~ [?:?]
at org.apache.flink.dropwizard.ScheduledDropwizardReporter.open(ScheduledDropwizardReporter.ja va:113) ~[?:?]
at org.apache.flink.runtime.metrics.ReporterSetup.createReporterSetup(ReporterSetup.java:185) ~[flink-dist-1.20.0.jar:1.20.0]
at org.apache.flink.runtime.metrics.ReporterSetup.lambda$setupReporters$2(ReporterSetup.java:3 60) ~[flink-dist-1.20.0.jar:1.20.0]
in Flink logs, at startup I can see, these values are parsed correctly.
INFO [] - Loading configuration property: metrics.reporter.grph.port, 2001
INFO [] - Loading configuration property: metrics.reporter.grph.host, localhost3
INFO [] - Loading configuration property: metrics.reporter.grph.interval, 10 SECONDS
INFO [] - Loading configuration property: metrics.reporter.grph.interval, 10 SECONDS
Any idea why port value can not be parsed and seems -1 ,default value?
For some reason defining the port as a string allow the plugin to work.
reporter:
grph:
factory:
class: org.apache.flink.metrics.graphite.GraphiteReporterFactory
host: localhost3
port: '2001'
protocol: TCP
interval: 10 SECONDS