{{- if and .Values.mastodon.metrics.statsd.exporter.enabled (not .Values.mastodon.metrics.statsd.address) }}
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ include "mastodon.fullname" . }}-statsd-mappings
  labels:
    {{- include "mastodon.labels" . | nindent 4 }}
data:
  mastodon-statsd-mappings.yml: |-
    ## From https://ipng.ch/assets/mastodon/statsd-mapping.yaml
    ## Prometheus Statsd Exporter mapping for Mastodon 4.0+
    ##
    ## Version 1.0, November 2022
    ##
    ## Documentation: https://ipng.ch/s/articles/2022/11/27/mastodon-3.html

    mappings:
      ## Web collector
      - match: Mastodon\.production\.web\.(.+)\.(.+)\.(.+)\.status\.(.+)
        match_type: regex
        name: "mastodon_controller_status"
        labels:
          controller: $1
          action: $2
          format: $3
          status: $4
          mastodon: "web"
      - match: Mastodon\.production\.web\.(.+)\.(.+)\.(.+)\.db_time
        match_type: regex
        name: "mastodon_controller_db_time"
        labels:
          controller: $1
          action: $2
          format: $3
          mastodon: "web"
      - match: Mastodon\.production\.web\.(.+)\.(.+)\.(.+)\.view_time
        match_type: regex
        name: "mastodon_controller_view_time"
        labels:
          controller: $1
          action: $2
          format: $3
          mastodon: "web"
      - match: Mastodon\.production\.web\.(.+)\.(.+)\.(.+)\.total_duration
        match_type: regex
        name: "mastodon_controller_duration"
        labels:
          controller: $1
          action: $2
          format: $3
          mastodon: "web"

      ## Database collector
      - match: Mastodon\.production\.db\.tables\.(.+)\.queries\.(.+)\.duration
        match_type: regex
        name: "mastodon_db_operation"
        labels:
          table: "$1"
          operation: "$2"
          mastodon: "db"

      ## Cache collector
      - match: Mastodon\.production\.cache\.(.+)\.duration
        match_type: regex
        name: "mastodon_cache_duration"
        labels:
          operation: "$1"
          mastodon: "cache"

      ## Sidekiq collector
      - match: Mastodon\.production\.sidekiq\.(.+)\.processing_time
        match_type: regex
        name: "mastodon_sidekiq_worker_processing_time"
        labels:
          worker: "$1"
          mastodon: "sidekiq"
      - match: Mastodon\.production\.sidekiq\.(.+)\.success
        match_type: regex
        name: "mastodon_sidekiq_worker_success_total"
        labels:
          worker: "$1"
          mastodon: "sidekiq"
      - match: Mastodon\.production\.sidekiq\.(.+)\.failure
        match_type: regex
        name: "mastodon_sidekiq_worker_failure_total"
        labels:
          worker: "$1"
          mastodon: "sidekiq"
      - match: Mastodon\.production\.sidekiq\.queues\.(.+)\.enqueued
        match_type: regex
        name: "mastodon_sidekiq_queue_enqueued"
        labels:
          queue: "$1"
          mastodon: "sidekiq"
      - match: Mastodon\.production\.sidekiq\.queues\.(.+)\.latency
        match_type: regex
        name: "mastodon_sidekiq_queue_latency"
        labels:
          queue: "$1"
          mastodon: "sidekiq"
      - match: Mastodon\.production\.sidekiq\.(.+)
        match_type: regex
        name: "mastodon_sidekiq_$1"
        labels:
          mastodon: "sidekiq"

{{- end }}