kind: ConfigMap
apiVersion: v1
metadata:
  name: prometheus-config
  labels:
    app: prometheus
data:
  prometheus.yml: |
    # my global config
    global:
      scrape_interval:     15s # By default, scrape targets every 15 seconds.
      evaluation_interval: 15s # By default, scrape targets every 15 seconds.
      # scrape_timeout is set to the global default (10s).

      # Attach these labels to any time series or alerts when communicating with
      # external systems (federation, remote storage, Alertmanager).
      external_labels:
          monitor: 'faas-monitor'

    # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
    rule_files:
        - 'alert.rules'


    # A scrape configuration containing exactly one endpoint to scrape:
    # Here it's Prometheus itself.
    scrape_configs:
      # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
      - job_name: 'prometheus'

        # Override the global default and scrape targets from this job every 5 seconds.
        scrape_interval: 5s

        # metrics_path defaults to '/metrics'
        # scheme defaults to 'http'.
        static_configs:
          - targets: ['localhost:9090']

      - job_name: "gateway"
        scrape_interval: 5s
        dns_sd_configs:
          - names: ['gateway.default.svc.cluster.local']
            port: 8080
            type: A
            refresh_interval: 5s
    alerting:
      alertmanagers:
      - static_configs:
        - targets:
          - alertmanager.default:9093

  alert.rules: |
    groups:
    - name: prometheus/alert.rules
      rules:
      - alert: service_down
        expr: up == 0
      - alert: APIHighInvocationRate
        expr: sum(rate(gateway_function_invocation_total{code="200"}[10s])) BY (function_name) > 5
        for: 5s
        labels:
          service: gateway
          severity: major
          value: '{{$value}}'
        annotations:
          description: High invocation total on {{ $labels.instance }}
          summary: High invocation total on {{ $labels.instance }}