# -*- coding: utf-8 -*- # vim: ft=yaml --- # Prometheus has two approaches to handling config arguments, through an environment # file or directly adding to the service file. # This formular takes both approaches in seperate circumstances, with the archive # install approach implementing a custom service file, and the repo (default) approach # using an environ file with the standard package provided service file. # As a result, depending on the install method used, the environ:args or service:args # pillars need to be set appropriately. # The default options given under service in the default.yaml may not therefore apply # depending on the install method, and in some cases they are no longer consistent # with the default configuration in the latest package. # This applies to all components with an example provided for node_exporter. prometheus: wanted: clientlibs: - golang - haskell - rust component: # List components (ie, exporters) using underscores and # removing the 'prometheus' prefix - prometheus - alertmanager - node_exporter - php-fpm_exporter - postgres_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: false # Uses the archive install method with true or repo method with false. Default is # false. # The archive and repo methods use completely different approaches to # / service arguments handling, with different required pillar values. # The repo method uses the package service config, the archive method uses a custom # service config. use_upstream_archive: true clientlibs: # https://prometheus.io/docs/instrumenting/clientlibs # no bash & perl client tarballs are available golang: version: v1.6.0 component: # If you use OS packages in Debian's family, components should have # a 'name' variable stating the name of the package (it's generally # something like `prometheus-component-with-dashes-replacing-underscores` # ie, # node_exporter: # name: prometheus-node-exporter # # See prometheus/osfamilymap.yaml for more examples 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 environ: args: collector.systemd: null web.listen-address: ":9110" service: name: prometheus-node-exporter args: collector.systemd: null 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' # You can manage these files with the `extra_files` dict (see below) 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=` 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" php-fpm_exporter: version: v0.6.1 archive: official: false tar: false # yamllint disable-line rule:line-length source: https://github.com/bakins/php-fpm-exporter/releases/download/v0.6.1/php-fpm-exporter.linux.amd64 source_hash: 40e52d84f7decb5fdad9fadacf63cb2de26ebddce56e11b20651555e8d6c6130 service: args: addr: ":9253" fastcgi: "unix:///run/php/php-fpm.sock" postgres_exporter: version: v0.8.0 service: env: - 'DATA_SOURCE_NAME=foo:bar@/' archive: official: false # yamllint disable-line rule:line-length source: https://github.com/wrouesnel/postgres_exporter/releases/download/v0.8.0/postgres_exporter_v0.8.0_linux-amd64.tar.gz skip_verify: true mysqld_exporter: service: env: - 'DATA_SOURCE_NAME=foo:bar@/' linux: # 'Alternatives system' priority: zero disables (default) # yamllint disable-line rule:braces altpriority: {{ range(1, 100000) | random }} # This dict lets you manage other config files (like the `rule_files` for the # alertmanager) or split the config un multiple and organize files in meaninful ways extra_files: first_rules: component: alertmanager config: groups: - name: example rules: - alert: HighRequestLatency expr: 'job:request_latency_seconds:mean5m{job="myjob"} > 0.5' for: 10m labels: severity: page annotations: summary: High request latency # You can specify a `file` parameter, which will be used to create a file # under the prometheus config dir. In this example, the file will be # named /etc/prometheus/subdir/second.yml second_rules: file: subdir/second component: alertmanager config: groups: - name: example rules: - alert: HighRequestLatency expr: 'job:request_latency_seconds:mean5m{job="myjob"} > 0.5' for: 10m labels: {} 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'