# -*- coding: utf-8 -*-
# vim: ft=yaml
---
prometheus:
  wanted:
    clientlibs:
      - golang
      - haskell
      - rust
    component:
      - prometheus
      - alertmanager          # not in debian repo, only archive
      - node_exporter
      # - memcached_exporter  # not in upstream repo, only archive

  exporters:
    node_exporter:
      textfile_collectors_dependencies: []
      textfile_collectors:
        ipmitool:
          enable: false
          remove: false
          pkg: ipmitool
        smartmon:
          enable: false
          remove: false
          pkg: smartmontools
          bash_pkg: bash
          smartctl: /usr/sbin/smartctl

  pkg:
    use_upstream_repo: true
    use_upstream_archive: false

    clientlibs:
      # https://prometheus.io/docs/instrumenting/clientlibs
      # no bash & perl client tarballs are available
      golang:
        version: v1.6.0

    component:
      alertmanager:
        config:
          # 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'

      node_exporter:
        version: v0.18.1
        archive:
          source_hash: b2503fd932f85f4e5baf161268854bf5d22001869b84f00fd2d1f57b51b72424
        service:
          name: prometheus-node-exporter
          args:
            web.listen-address: ":9110"
            # collector.textfile.directory: /var/tmp/node_exporter

      prometheus:
        service:
          args:
            web.listen-address: 0.0.0.0:9090
        config:
          # 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'
              # 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'  # real hostname and port

      pushgateway:
        version: v0.8.0
        archive:
          source_hash: 6949866ba9ad0cb88d3faffd4281f17df79281398b4dbd0ec3aab300071681ca
        service:
          args:
            web.listen-address: ":9091"
            web.telemetry-path: "/metrics"

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

  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'