# https://prometheus-operator.dev/docs/api-reference/api/#monitoring.coreos.com/v1.PodMonitor
apiVersion: monitoring.coreos.com/v1
# FIXME: switch to ServiceMonitor (can't distinguish by gen vs non-gen)
kind: PodMonitor
metadata:
  name: materialize-sql
  labels:
    app.kubernetes.io/part-of: materialize
    app.kubernetes.io/name: environmentd
    app.kubernetes.io/component: sql-exporter
spec:
  selector:
    matchLabels:
      # Added in v26.24.0
      # https://github.com/MaterializeInc/materialize/pull/36415
      app.kubernetes.io/name: environmentd
      # Before v26.24.0,
      # app: environmentd
  namespaceSelector:
    any: true
  # Pod labels copied onto scraped metrics (consumed by the dashboards).
  # Harmless on pods lacking a given label. Node-level labels (zone, instance
  # type, nodepool) are intentionally excluded — they are not pod labels.
  podTargetLabels:
    - materialize.cloud/organization-name
    - materialize.cloud/organization-namespace
    - materialize.cloud/organization-id
    - cluster.environmentd.materialize.cloud/cluster-id
    - cluster.environmentd.materialize.cloud/replica-id
  # https://prometheus-operator.dev/docs/api-reference/api/#monitoring.coreos.com/v1.PodMetricsEndpoint
  podMetricsEndpoints:
    - port: internal-http
      path: /metrics/mz_compute
      basicAuth:
        username:
          name: materialize-sql-monitor
          key: username
        password:
          name: materialize-sql-monitor
          key: password
    - port: internal-http
      path: /metrics/mz_frontier
      basicAuth:
        username:
          name: materialize-sql-monitor
          key: username
        password:
          name: materialize-sql-monitor
          key: password
    - port: internal-http
      path: /metrics/mz_storage
      basicAuth:
        username:
          name: materialize-sql-monitor
          key: username
        password:
          name: materialize-sql-monitor
          key: password
    - port: internal-http
      path: /metrics/mz_usage
      basicAuth:
        username:
          name: materialize-sql-monitor
          key: username
        password:
          name: materialize-sql-monitor
          key: password
