Hi community, I am having difficulty understanding the Flink plugin system. I am attempting to enable the Prometheus exporter with the official Flink image 1.16.0, but I am experiencing issues with library dependencies. According to the plugin documentation ( https://nightlies.apache.org/flink/flink-docs-stable/docs/deployment/filesystems/plugins/), as long as the library is located in the /opt/flink/plugins/<plugin-name> directory, Flink should automatically load it, similar to how it loads libraries in the /opt/flink/lib directory. However, Flink does not seem to detect the plugin.
Here is the directory structure for /opt/flink: > tree /opt/flink . .... ├── plugins │ ├── metrics-prometheus │ │ └── flink-metrics-prometheus-1.16.0.jar ... And here is the related Flink configuration: > metrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReporter The error logs in the task manager show the following: 2022-12-30 10:03:55,840 WARN org.apache.flink.runtime.metrics.ReporterSetup [] - The reporter configuration of 'prom' configures the reporter class, which is a deprecated approach to configure reporters. Please configure a factory class instead: 'metrics.reporter.prom.factory.class: <factoryClass>' to ensure that the configuration continues to work with future versions. 2022-12-30 10:03:55,841 ERROR org.apache.flink.runtime.metrics.ReporterSetup [] - Could not instantiate metrics reporter prom. Metrics might not be exposed/reported. java.lang.ClassNotFoundException: org.apache.flink.metrics.prometheus.PrometheusReporter at jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source) ~[?:?] at jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source) ~[?:?] at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?] at java.lang.Class.forName0(Native Method) ~[?:?] at java.lang.Class.forName(Unknown Source) ~[?:?] at org.apache.flink.runtime.metrics.ReporterSetup.loadViaReflection(ReporterSetup.java:456) ~[flink-dist-1.16.0.jar:1.16.0] at org.apache.flink.runtime.metrics.ReporterSetup.loadReporter(ReporterSetup.java:409) ~[flink-dist-1.16.0.jar:1.16.0] at org.apache.flink.runtime.metrics.ReporterSetup.setupReporters(ReporterSetup.java:328) ~[flink-dist-1.16.0.jar:1.16.0] at org.apache.flink.runtime.metrics.ReporterSetup.fromConfiguration(ReporterSetup.java:209) ~[flink-dist-1.16.0.jar:1.16.0] The Java commands for Flink process: flink 1 3.0 4.6 2168308 765936 ? Ssl 10:03 1:08 /opt/java/openjdk/bin/java -XX:+UseG1GC -Xmx697932173 -Xms697932173 -XX:MaxDirectMemorySize=300647712 -XX:MaxMetaspaceSize=268435456 -Dlog.file=/opt/flink/log/flink--kubernetes-taskmanager-0-checkpoint-ha-example-taskmanager-1-1.log -Dlog4j.configuration=file:/opt/flink/conf/log4j-console.properties -Dlog4j.configurationFile=file:/opt/flink/conf/log4j-console.properties -Dlogback.configurationFile=file:/opt/flink/conf/logback-console.xml -classpath /opt/flink/lib/flink-cep-1.16.0.jar:/opt/flink/lib/flink-connector-files-1.16.0.jar:/opt/flink/lib/flink-csv-1.16.0.jar:/opt/flink/lib/flink-json-1.16.0.jar:/opt/flink/lib/flink-scala_2.12-1.16.0.jar:/opt/flink/lib/flink-shaded-hadoop-2-uber-2.4.1-10.0.jar:/opt/flink/lib/flink-shaded-zookeeper-3.5.9.jar:/opt/flink/lib/flink-table-api-java-uber-1.16.0.jar:/opt/flink/lib/flink-table-planner-loader-1.16.0.jar:/opt/flink/lib/flink-table-runtime-1.16.0.jar:/opt/flink/lib/log4j-1.2-api-2.17.1.jar:/opt/flink/lib/log4j-api-2.17.1.jar:/opt/flink/lib/log4j-core-2.17.1.jar:/opt/flink/lib/log4j-slf4j-impl-2.17.1.jar:/opt/flink/lib/flink-dist-1.16.0.jar:::: org.apache.flink.kubernetes.taskmanager.KubernetesTaskExecutorRunner --configDir /opt/flink/conf -Djobmanager.rpc.address=172.17.0.7 -Dpipeline.classpaths= -Djobmanager.memory.off-heap.size=134217728b -Dweb.tmpdir=/tmp/flink-web-57b9e638-f313-4389-a75b-988509697edb -Djobmanager.rpc.port=6123 -D.pipeline.job-id=ffffffffa6f1c9fb0000000000000000 -Drest.address=172.17.0.7 -Djobmanager.memory.jvm-overhead.max=214748368b -Djobmanager.memory.jvm-overhead.min=214748368b -Dtaskmanager.resource-id=checkpoint-ha-example-taskmanager-1-1 -Dexecution.target=embedded -Dpipeline.jars=file:/opt/flink/examples/streaming/StateMachineExample.jar -Djobmanager.memory.jvm-metaspace.size=268435456b -Djobmanager.memory.heap.size=1530082096b -D taskmanager.memory.network.min=166429984b -D taskmanager.cpu.cores=1.0 -D taskmanager.memory.task.off-heap.size=0b -D taskmanager.memory.jvm-metaspace.size=268435456b -D external-resources=none -D taskmanager.memory.jvm-overhead.min=214748368b -D taskmanager.memory.framework.off-heap.size=134217728b -D taskmanager.memory.network.max=166429984b -D taskmanager.memory.framework.heap.size=134217728b -D taskmanager.memory.managed.size=665719939b -D taskmanager.memory.task.heap.size=563714445b -D taskmanager.numberOfTaskSlots=1 -D taskmanager.memory.jvm-overhead.max=214748368b It seems that I must be missing something. Could someone please help me clarify this issue? Thank you, Ruibin