image:
  repository: twinproduction/gatus
  tag: v5.35.0

# Does envFrom secret named gatus
secrets: true

serviceMonitor:
  enabled: true

config:
  web:
    address: "[::]"
    read-buffer-size: 32768

  metrics: true

  storage:
    type: postgres
    path: "postgres://app:${DB_PASS}@prod-gatus-db-rw:5432/app"

  ui:
    title: Oceanbox | Service Status
    header: Oceanbox Service Status
    logo: https://maps.oceanbox.io/ob.png
    link: https://maps.oceanbox.io
    default-sort-by: "group"

  security:
    oidc:
      issuer-url: "https://login.microsoftonline.com/3f737008-e9a0-4485-9d27-40329d288089/v2.0"
      redirect-url: "https://uptime.adm.hel1.obx/authorization-code/callback"
      client-id: "38af7e63-b097-4f1b-8dac-3d0030dceaf9"
      client-secret: "${CLIENT_SECRET}"
      scopes: ["openid"]

  alerting:
    custom:
      url: "https://oncall-prod-eu-west-0.grafana.net/oncall/integrations/v1/formatted_webhook/${WEBHOOK}/"
      method: "POST"
      body: |
        {
          "title":     "[ENDPOINT_GROUP] ➔ [ENDPOINT_NAME]",
          "message":   "[ALERT_TRIGGERED_OR_RESOLVED]: [ENDPOINT_GROUP] ➔ [ENDPOINT_NAME] ➔ [ALERT_DESCRIPTION]",
          "state":     "[ALERT_TRIGGERED_OR_RESOLVED]",
          "image_url": ""
        }
      headers:
        Content-Type: "application/json"
      send-on-resolved: true
      failure-threshold: 3
      success-threshold: 2
      placeholders:
        ALERT_TRIGGERED_OR_RESOLVED:
          TRIGGERED: "alerting"
          RESOLVED: "ok"

  .defaults: &defaults
    interval: 30s

  .https-endpoint: &https-endpoint
    <<: *defaults
    conditions:
      - "[STATUS] == 200"
      - "[RESPONSE_TIME] <= 2000"
      - "[CERTIFICATE_EXPIRATION] > 168h" # 7 days

  .tls-endpoint: &tls-endpoint
    <<: *defaults
    conditions:
      - "[CONNECTED] == true"
      - "[RESPONSE_TIME] <= 2000"
      - "[CERTIFICATE_EXPIRATION] > 168h" # 7 days

  .tcp-endpoint: &tcp-endpoint
    <<: *defaults
    conditions:
      - "[CONNECTED] == true"
      - "[RESPONSE_TIME] <= 2000"

  endpoints:
    - name: Atlantis TOS
      <<: *https-endpoint
      group: "Primary Services"
      url: https://maps.oceanbox.io/healthz
      alerts:
        - type: custom

    - name: Sorcerer TOS
      <<: *https-endpoint
      group: "Primary Services"
      url: https://sorcerer.data.oceanbox.io/healthz
      alerts:
        - type: custom

    - name: Atlantis Beta TOS
      <<: *https-endpoint
      group: "Primary Services"
      url: https://maps.beta.oceanbox.io/healthz
      alerts:
        - type: custom

    # NOTE: Ingress is down
    # - name: Sorcerer VTN
    #   <<: *https-endpoint
    #   group: "Primary Services"
    #   url: https://sorcerer.vtn.oceanbox.io/healthz
    # alerts:
    # - type: custom

    - name: Plume TOS
      <<: *https-endpoint
      group: "Secondary Services"
      url: https://plume.data.oceanbox.io/healthz
      alerts:
        - type: custom

    - name: Homepage
      <<: *https-endpoint
      group: "Secondary Services"
      url: https://oceanbox.io
      alerts:
        - type: custom

    - name: Atlantis Dev TOS
      <<: *https-endpoint
      group: "Experimental Services"
      url: https://maps.dev.oceanbox.io/healthz
      extra-labels:
        environment: staging
      alerts:
        - type: custom

    - name: Sorcerer Dev TOS
      <<: *https-endpoint
      group: "Experimental Services"
      url: https://sorcerer.ekman.oceanbox.io/healthz
      extra-labels:
        environment: staging
      alerts:
        - type: custom
