# -*- coding: utf-8 -*-
# vim: ft=yaml
---
prometheus:
  wanted:
    - prometheus
         {%- if grains.os_family not in ('Debian',) %}
    - alertmanager
         {%- endif %}
    - node_exporter
    # no memcached_exporter in upstream repo - only archive
    # memcached_exporter

  use_upstream_archive: false
     {%- if grains.os_family in ('CentOS',) %}
  use_upstream_repo: false
     {%- endif %}

  pkg:
    prometheus:
      archive_version: '2.10.0'
      archive_hash: f4233783826f18606b79e5cef0686e4a9c2030146a3c7ce134f0add09f5adcb7
    alertmanager:
      archive_version: '0.17.0'
      archive_hash: ec171b13976baceace193461f8a1e61021ab9657df5ba45157cd0095aee7d569

  service:
    prometheus:
      args:
        web.listen-address: 0.0.0.0:9090
    # pushgateway:
    #   args:
    #    web.listen-address: ":9091"
    #    web.telemetry-path: "/metrics"
    node_exporter:
      args:
        web.listen-address: ":9110"
        # collector.textfile.directory: /var/tmp/node_exporter

  tofs:
    # The files_switch key serves as a selector for alternative
    # directories under the formula files directory. See TOFS pattern
    # doc for more info.
    # Note: Any value not evaluated by `config.get` will be used literally.
    # This can be used to set custom paths, as many levels deep as required.
    files_switch:
      - any/path/can/be/used/here
      - id
      - osfinger
      - os
      - os_family
    # All aspects of path/file resolution are customisable using the options below.
    # This is unnecessary in most cases; there are sensible defaults.
    # path_prefix: prometheus_alt
    # dirs:
    #   files: files_alt
    #   default: default_alt
    source_files:
      prometheus-config-file-file-managed:
        - 'alt_config.yml.jinja'
      prometheus-archive-install-managed-service:
        - 'alt_systemd.ini.jinja'

  # Pillar-based config
  config:
    prometheus:
      # yamllint disable-line rule:line-length
      # ref https://raw.githubusercontent.com/prometheus/prometheus/release-2.10/config/testdata/conf.good.yml
      # my global config
      global:
        # Set the scrape interval to every 15 seconds. Default is every 1 minute.
        scrape_interval: 15s
        # Evaluate rules every 15 seconds. The default is every 1 minute.
        evaluation_interval: 15s
        # scrape_timeout is set to the global default (10s).

      # Alertmanager configuration
      alerting:
        alertmanagers:
          - static_configs:
              - targets:
                  - alertmanager1:9093
                  - alertmanager2:9093
                  - alertmanager3:9093

      # Load rules once and periodically evaluate them according to the global
      # 'evaluation_interval'.
      rule_files:
        - "first_rules.yml"
        # - "second_rules.yml"

      # A scrape configuration containing exactly one endpoint to scrape:
      scrape_configs:
        # The job name is added as a label `job=<job_name>` to any timeseries
        # scraped from this config.
        - job_name: 'prometheus'
          # metrics_path defaults to '/metrics'
          # scheme defaults to 'http'.
          static_configs:
            - targets: ['localhost:9090']

        - job_name: pushgateway
          scrape_interval: 5s
          honor_labels: true
          static_configs:
            - targets: ['pushgateway:9091']

        - job_name: 'blackbox'
          # ref https://github.com/prometheus/blackbox_exporter#prometheus-configuration
          metrics_path: /probe
          params:
            module: [http_2xx]  # Look for a HTTP 200 response.
          static_configs:
            - targets:
                - http://prometheus.io     # Target to probe with http.
                - https://prometheus.io    # Target to probe with https.
                - http://example.com:8080  # Target to probe with http on port 8080.
          relabel_configs:
            - source_labels: [__address__]
              target_label: __param_target
            - source_labels: [__param_target]
              target_label: instance
            - target_label: __address__
              replacement: 127.0.0.1:9115  # The blackbox exporter's real hostname:port.

    alertmanager:
      # yamllint disable-line rule:line-length
      # ref https://github.com/prometheus/alertmanager/blob/master/config/testdata/conf.good.yml
      global:
        smtp_smarthost: 'localhost:25'
        smtp_from: 'alertmanager@example.org'
        smtp_auth_username: 'alertmanager'
        smtp_auth_password: "multiline\nmysecret"
        smtp_hello: "host.example.org"
        slack_api_url: "http://mysecret.example.com/"
        http_config:
          proxy_url: 'http://127.0.0.1:1025'
      route:
        group_by: ['alertname', 'cluster', 'service']
        group_wait: 30s
        group_interval: 5m
        repeat_interval: 3h
        receiver: team-X-mails
        routes:
          - match_re:
              service: ^(foo1|foo2|baz)$
            receiver: team-X-mails
            routes:
              - match:
                  severity: critical
                receiver: team-X-mails
      receivers:
        - name: 'team-X-mails'
          email_configs:
            - to: 'team-X+alerts@example.org'

      inhibit_rules:
        - name: opsGenie-receiver
          opsgenie_configs:
            - api_key: mysecret
        - name: slack-receiver
          slack_configs:
            - channel: '#my-channel'
              image_url: 'http://some.img.com/img.png'

  linux:
    # 'Alternatives system' priority: zero disables (default)
    # yamllint disable-line rule:braces
    altpriority: {{ range(1, 9100000) | random }}

  exporters:
    node_exporter:
      textfile_collectors:
        ipmitool:
          # You must enable individual collectors
          enable: true
          # pkg: ipmitool
        smartmon:
          enable: true
          # pkg: smartmontools
          # bash_pkg: bash
          # smartctl: /usr/sbin/smartctl