0ca247a37e
Added inspec checks for environment files and specifically prometheus and node_exporter args. Provided comments throughout the key reference points for users to signpost the differing approaches to args used along with more clearly identifying the difference between archive and repo approach. Tests appear to be working on both approaches though updates have been focused at repo install method. Fixes: #59
286 lines
10 KiB
YAML
286 lines
10 KiB
YAML
# -*- 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=<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"
|
|
|
|
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'
|