integrations/flink/documentation.yaml (28 lines of code) (raw):

exporter_type: included app_name_short: Flink app_name: Apache {{app_name_short}} app_site_name: Apache Flink app_site_url: https://flink.apache.org/ exporter_name: the Flink exporter exporter_pkg_name: flink minimum_exporter_version: "1.17" exporter_repo_url: https://flink.apache.org/features/2019/03/11/prometheus-monitoring.html additional_prereq_info: | {{app_name_short}} exposes Prometheus-format metrics when configured with `metrics.reporter.prom.factory.class: org.apache.flink.metrics.prometheus.PrometheusReporterFactory`. If you deployed Flink with the official [getting started manifests](https://nightlies.apache.org/flink/flink-docs-master/docs/deployment/resource-providers/standalone/kubernetes/){:class="external"}, add this new option to the ConfigMap: <pre> apiVersion: v1 kind: ConfigMap metadata: name: flink-config labels: app: flink data: flink-conf.yaml: |+ ... + metrics.reporter.prom.factory.class: org.apache.flink.metrics.prometheus.PrometheusReporterFactory </pre> If you deployed Flink with the official [operator](https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main/docs/try-flink-kubernetes-operator/quick-start/){:class="external"}, add this new option to the FlinkDeployment's `spec.flinkConfiguration` field: <pre> apiVersion: flink.apache.org/v1beta1 kind: FlinkDeployment metadata: name: basic-example spec: image: flink:1.17 flinkVersion: v1_17 flinkConfiguration: taskmanager.numberOfTaskSlots: "2" + metrics.reporter.prom.factory.class: org.apache.flink.metrics.prometheus.PrometheusReporterFactory </pre> Alternatively, you can specify the Prometheus reporter as a default option within the [Flink operator configuration](https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main/docs/operations/configuration/){:class="external"}. To verify that {{exporter_name}} is emitting metrics on the expected endpoints, do the following: 1. Set up port forwarding by using the following command: <pre class="devsite-click-to-copy"> kubectl -n {{namespace_name}} port-forward {{pod_name}} 9249 </pre> 1. Access the endpoint `localhost:9249/metrics` by using the browser or the `curl` utility in another terminal session. dashboard_available: true multiple_dashboards: true dashboard_display_name: {{app_name_short}} Prometheus Overview podmonitoring_config: | apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: flink labels: app.kubernetes.io/name: flink app.kubernetes.io/part-of: google-cloud-managed-prometheus spec: endpoints: - port: 9249 scheme: http interval: 30s path: /metrics selector: matchLabels: app.kubernetes.io/name: flink additional_podmonitoring_info: | Ensure that the values of the `port` and `matchLabels` fields match those of the {{app_name_short}} pods you want to monitor. {{app_name_short}} exposes metrics on port 9249 by default when metrics are enabled. sample_promql_query: up{job="flink", cluster="{{cluster_name}}", namespace="{{namespace_name}}"} alerts_config: | apiVersion: monitoring.googleapis.com/v1 kind: Rules metadata: name: flink-rules labels: app.kubernetes.io/component: rules app.kubernetes.io/name: flink-rules app.kubernetes.io/part-of: google-cloud-managed-prometheus spec: groups: - name: flink interval: 30s rules: - alert: FlinkHighJVMMemoryNonHeapUsage annotations: description: |- Flink high jvm memory non-heap usage VALUE = {{ $value }} LABELS: {{ $labels }} summary: Flink high jvm memory non-heap usage (instance {{ $labels.instance }}) expr: (flink_jobmanager_Status_JVM_Memory_NonHeap_Used/flink_jobmanager_Status_JVM_Memory_NonHeap_Max) >= 0.9 for: 5m labels: severity: critical - alert: FlinkHighJVMMemoryHeapUsage annotations: description: |- Flink high jvm memory heap usage VALUE = {{ $value }} LABELS: {{ $labels }} summary: Flink high jvm memory heap usage (instance {{ $labels.instance }}) expr: (flink_jobmanager_Status_JVM_Memory_Heap_Used/flink_jobmanager_Status_JVM_Memory_Heap_Max) >= 0.9 for: 5m labels: severity: warning additional_alert_info: You can adjust the alert thresholds to suit your application.