diff --git a/prometheus/alertmanager.sls b/prometheus/alertmanager.sls index 30e32fb..07ab3b9 100644 --- a/prometheus/alertmanager.sls +++ b/prometheus/alertmanager.sls @@ -28,7 +28,7 @@ alertmanager_config: alertmanager_config: file.managed: - name: {{ prometheus.alertmanager.args.config_file }} - - source: salt://prometheus/files/config.jinja + - source: salt://prometheus-ng/files/config.jinja - template: jinja - user: {{ prometheus.user }} - group: {{ prometheus.group }} @@ -39,7 +39,7 @@ alertmanager_config: alertmanager_defaults: file.managed: - name: /etc/default/alertmanager - - source: salt://prometheus/files/default-alertmanager.jinja + - source: salt://prometheus-ng/files/default-alertmanager.jinja - template: jinja - defaults: config_file: {{ prometheus.alertmanager.args.config_file }} @@ -58,10 +58,10 @@ alertmanager_service_unit: file.managed: {%- if grains.get('init') == 'systemd' %} - name: /etc/systemd/system/alertmanager.service - - source: salt://prometheus/files/alertmanager.systemd.jinja + - source: salt://prometheus-ng/files/alertmanager.systemd.jinja {%- elif grains.get('init') == 'upstart' %} - name: /etc/init/alertmanager.conf - - source: salt://prometheus/files/alertmanager.upstart.jinja + - source: salt://prometheus-ng/files/alertmanager.upstart.jinja {%- endif %} - watch: - file: alertmanager_defaults diff --git a/prometheus/defaults.yaml b/prometheus/defaults.yaml index b4d7fcd..80b28c8 100644 --- a/prometheus/defaults.yaml +++ b/prometheus/defaults.yaml @@ -2,41 +2,41 @@ prometheus: user: prometheus group: prometheus server: - version: 1.4.1.linux-amd64 + version: 2.5.0.linux-amd64 install_dir: /opt - source: https://github.com/prometheus/prometheus/releases/download/v1.4.1/prometheus-1.4.1.linux-amd64.tar.gz - source_hash: sha1=3e78173e7d65623e79e0292da16e6155de947185 + source: https://github.com/prometheus/prometheus/releases/download/v2.5.0/prometheus-2.5.0.linux-amd64.tar.gz + source_hash: https://github.com/prometheus/prometheus/releases/download/v2.5.0/sha256sums.txt args: config_file: /etc/prometheus/prometheus.yml storage: local_path: /var/lib/prometheus/metrics alertmanager: - version: 0.5.1.linux-amd64 + version: 0.15.3.linux-amd64 install_dir: /opt - source: https://github.com/prometheus/alertmanager/releases/download/v0.5.1/alertmanager-0.5.1.linux-amd64.tar.gz - source_hash: sha1=8f82ccc0db806991256084faee9335353d8e3f0d + source: https://github.com/prometheus/alertmanager/releases/download/v0.15.3/alertmanager-0.15.3.linux-amd64.tar.gz + source_hash: https://github.com/prometheus/alertmanager/releases/download/v0.15.3/sha256sums.txt args: config_file: /etc/alertmanager/alertmanager.yml storage: path: /var/lib/alertmanager exporter: node: - version: 0.13.0.linux-amd64 + version: 0.17.0.linux-amd64 install_dir: /opt - source: https://github.com/prometheus/node_exporter/releases/download/v0.13.0/node_exporter-0.13.0.linux-amd64.tar.gz - source_hash: sha1=84ca5f711962319f6f7823208b9d867ab1c0e3e7 + source: https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz + source_hash: https://github.com/prometheus/node_exporter/releases/download/v0.17.0/sha256sums.txt blackbox: - version: 0.3.0.linux-amd64 + version: 0.14.0.linux-amd64 install_dir: /opt - source: https://github.com/prometheus/blackbox_exporter/releases/download/v0.3.0/blackbox_exporter-0.3.0.linux-amd64.tar.gz - source_hash: sha1=89ac98c062315ba35eda257ca88c8c4b43f38d47 + source: https://github.com/prometheus/blackbox_exporter/releases/download/v0.14.0/blackbox_exporter-0.14.0.linux-amd64.tar.gz + source_hash: https://github.com/prometheus/blackbox_exporter/releases/download/v0.14.0/sha256sums.txt args: config_file: /etc/prometheus/blackbox_exporter.yml haproxy: - version: 0.7.1.linux-amd64 + version: 0.10.0.linux-amd64 install_dir: /opt - source: https://github.com/prometheus/haproxy_exporter/releases/download/v0.7.1/haproxy_exporter-0.7.1.linux-amd64.tar.gz - source_hash: sha1=56849253e280db3db2aa80f1013ecfe242536d32 + source: https://github.com/prometheus/haproxy_exporter/releases/download/v0.10.0/haproxy_exporter-0.10.0.linux-amd64.tar.gz + source_hash: https://github.com/prometheus/haproxy_exporter/releases/download/v0.10.0/sha256sums.txt args: scrape_uri: 'unix:/run/haproxy/admin.sock' rabbitmq: diff --git a/prometheus/exporter/blackbox.sls b/prometheus/exporter/blackbox.sls index 5d4d8fd..e778fa3 100644 --- a/prometheus/exporter/blackbox.sls +++ b/prometheus/exporter/blackbox.sls @@ -23,7 +23,7 @@ blackbox_exporter_bin_link: blackbox_exporter_defaults: file.managed: - name: /etc/default/blackbox_exporter - - source: salt://prometheus/files/default-blackbox_exporter.jinja + - source: salt://prometheus-ng/files/default-blackbox_exporter.jinja - template: jinja - defaults: config_file: {{ prometheus.exporter.blackbox.args.config_file }} @@ -32,11 +32,17 @@ blackbox_exporter_service_unit: file.managed: {%- if grains.get('init') == 'systemd' %} - name: /etc/systemd/system/blackbox_exporter.service - - source: salt://prometheus/files/blackbox_exporter.systemd.jinja + - source: salt://prometheus-ng/files/exporter.systemd.jinja {%- elif grains.get('init') == 'upstart' %} - name: /etc/init/blackbox_exporter.conf - - source: salt://prometheus/files/blackbox_exporter.upstart.jinja + - source: salt://prometheus-ng/files/exporter.upstart.jinja {%- endif %} + - context: + svc: node_exporter + user: {{ prometheus.user }} + group: {{ prometheus.group }} + bin_path: {{ prometheus.exporter.node.version_path }} + args: {{ prometheus.exporter.get('args', []) }} - require_in: - file: blackbox_exporter_service diff --git a/prometheus/exporter/haproxy.sls b/prometheus/exporter/haproxy.sls index 614dca5..14e6f30 100644 --- a/prometheus/exporter/haproxy.sls +++ b/prometheus/exporter/haproxy.sls @@ -23,7 +23,7 @@ haproxy_exporter_bin_link: haproxy_exporter_defaults: file.managed: - name: /etc/default/haproxy_exporter - - source: salt://prometheus/files/default-haproxy_exporter.jinja + - source: salt://prometheus-ng/files/default-haproxy_exporter.jinja - template: jinja - defaults: scrape_uri: {{ prometheus.exporter.haproxy.args.scrape_uri }} @@ -32,11 +32,17 @@ haproxy_exporter_service_unit: file.managed: {%- if grains.get('init') == 'systemd' %} - name: /etc/systemd/system/haproxy_exporter.service - - source: salt://prometheus/files/haproxy_exporter.systemd.jinja + - source: salt://prometheus-ng/files/exporter.systemd.jinja {%- elif grains.get('init') == 'upstart' %} - name: /etc/init/haproxy_exporter.conf - - source: salt://prometheus/files/haproxy_exporter.upstart.jinja + - source: salt://prometheus-ng/files/exporter.upstart.jinja {%- endif %} + - context: + svc: node_exporter + user: {{ prometheus.user }} + group: {{ prometheus.group }} + bin_path: {{ prometheus.exporter.node.version_path }} + args: {{ prometheus.exporter.get('args', []) }} - require_in: - file: haproxy_exporter_service diff --git a/prometheus/exporter/node.sls b/prometheus/exporter/node.sls index af633b5..e51788f 100644 --- a/prometheus/exporter/node.sls +++ b/prometheus/exporter/node.sls @@ -23,18 +23,24 @@ node_exporter_bin_link: node_exporter_defaults: file.managed: - name: /etc/default/node_exporter - - source: salt://prometheus/files/default-node_exporter.jinja + - source: salt://prometheus-ng/files/default-node_exporter.jinja - template: jinja node_exporter_service_unit: file.managed: {%- if grains.get('init') == 'systemd' %} - name: /etc/systemd/system/node_exporter.service - - source: salt://prometheus/files/node_exporter.systemd.jinja + - source: salt://prometheus-ng/files/exporter.systemd.jinja {%- elif grains.get('init') == 'upstart' %} - name: /etc/init/node_exporter.conf - - source: salt://prometheus/files/node_exporter.upstart.jinja + - source: salt://prometheus-ng/files/exporter.upstart.jinja {%- endif %} + - context: + svc: node_exporter + user: {{ prometheus.user }} + group: {{ prometheus.group }} + bin_path: {{ prometheus.exporter.node.version_path }} + args: {{ prometheus.exporter.get('args', []) }} - require_in: - file: node_exporter_service diff --git a/prometheus/exporter/rabbitmq.sls b/prometheus/exporter/rabbitmq.sls index 738244d..9b4cf67 100644 --- a/prometheus/exporter/rabbitmq.sls +++ b/prometheus/exporter/rabbitmq.sls @@ -23,18 +23,24 @@ rabbitmq_exporter_bin_link: rabbitmq_exporter_defaults: file.managed: - name: /etc/default/rabbitmq_exporter - - source: salt://prometheus/files/default-rabbitmq_exporter.jinja + - source: salt://prometheus-ng/files/default-rabbitmq_exporter.jinja - template: jinja rabbitmq_exporter_service_unit: file.managed: {%- if grains.get('init') == 'systemd' %} - name: /etc/systemd/system/rabbitmq_exporter.service - - source: salt://prometheus/files/rabbitmq_exporter.systemd.jinja + - source: salt://prometheus-ng/files/exporter.systemd.jinja {%- elif grains.get('init') == 'upstart' %} - name: /etc/init/rabbitmq_exporter.conf - - source: salt://prometheus/files/rabbitmq_exporter.upstart.jinja + - source: salt://prometheus-ng/files/exporter.upstart.jinja {%- endif %} + - context: + svc: node_exporter + user: {{ prometheus.user }} + group: {{ prometheus.group }} + bin_path: {{ prometheus.exporter.node.version_path }} + args: {{ prometheus.exporter.get('args', []) }} - require_in: - file: rabbitmq_exporter_service diff --git a/prometheus/files/exporter.systemd.jinja b/prometheus/files/exporter.systemd.jinja new file mode 100644 index 0000000..5f7a064 --- /dev/null +++ b/prometheus/files/exporter.systemd.jinja @@ -0,0 +1,25 @@ +[Unit] +Description=Prometheus {{ svc }} Exporter +{%- if url is string %} +Documentation={{ url }} +{%- endif %} +Wants=basic.target +After=basic.target network.target + +[Service] +User={{ user }} +Group={{ group }} +EnvironmentFile=/etc/default/{{ svc }} +ExecStart={{ bin_path }}/{{ svc }} $ARGS +{%- if args is string %}} {{ args }}{% else %} +{%- for arg in args %}} \ + {{ arg }} +{%- endfor %} +{%- endif %} +ExecReload=/bin/kill -HUP $MAINPID +KillMode=process +Restart=always +RestartSec=42s + +[Install] +WantedBy=multi-user.target diff --git a/prometheus/files/exporter.upstart.jinja b/prometheus/files/exporter.upstart.jinja new file mode 100644 index 0000000..3c9bade --- /dev/null +++ b/prometheus/files/exporter.upstart.jinja @@ -0,0 +1,30 @@ +# Prometheus {{ svc }} (Upstart unit) +description "Prometheus {{ svc }}" +start on runlevel [2345] +stop on runlevel [06] + +env EXPORTER={{ bin_path }}/{{ svc }} +env USER={{ user }} +env GROUP={{ group }} +env DEFAULTS=/etc/default/{{ svc }} +env RUNDIR=/var/run/{{ svc }} +env PID_FILE=/var/run/{{ svc }}/{{ svc }}.pid +pre-start script + [ -e $DEFAULTS ] && . $DEFAULTS + + mkdir -p $RUNDIR || true + chmod 0750 $RUNDIR || true + chown $USER:$GROUP $RUNDIR || true +end script + +script + # read settings like GOMAXPROCS from "/etc/default/{{ svc }}", if available. + [ -e $DEFAULTS ] && . $DEFAULTS + + export GOMAXPROCS=${GOMAXPROCS:-2} + exec start-stop-daemon -c $USER -g $GROUP -p $PID_FILE -x $EXPORTER -S -- $ARGS +end script + +respawn +respawn limit 10 10 +kill timeout 10 diff --git a/prometheus/files/node_exporter.systemd.jinja b/prometheus/files/node_exporter.systemd.jinja index 01caedc..2d4042e 100644 --- a/prometheus/files/node_exporter.systemd.jinja +++ b/prometheus/files/node_exporter.systemd.jinja @@ -5,10 +5,15 @@ Wants=basic.target After=basic.target network.target [Service] -User=prometheus -Group=prometheus +User={{ user }} +Group={{ group }} EnvironmentFile=/etc/default/node_exporter -ExecStart=/usr/bin/node_exporter $ARGS +ExecStart={{ bin_path }}/node_exporter $ARGS +{%- if args is string %}} {{ args }}{% else %} +{%- for arg in args %}} \ + {{ arg }} +{%- endfor %} +{%- endif %} ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=always diff --git a/prometheus/files/prometheus.systemd.jinja b/prometheus/files/prometheus.systemd.jinja index 0d9b780..13ae182 100644 --- a/prometheus/files/prometheus.systemd.jinja +++ b/prometheus/files/prometheus.systemd.jinja @@ -5,10 +5,10 @@ Wants=basic.target After=basic.target network.target [Service] -User=prometheus -Group=prometheus +User={{ user }} +Group={{ user }} EnvironmentFile=/etc/default/prometheus -ExecStart=/usr/bin/prometheus $ARGS +ExecStart={{ bin_path }}/prometheus $ARGS ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=always diff --git a/prometheus/server.sls b/prometheus/server.sls index 77f2e2a..311fba1 100644 --- a/prometheus/server.sls +++ b/prometheus/server.sls @@ -28,7 +28,7 @@ prometheus_server_config: prometheus_defaults: file.managed: - name: /etc/default/prometheus - - source: salt://prometheus/files/default-prometheus.jinja + - source: salt://prometheus-ng/files/default-prometheus.jinja - template: jinja - defaults: config_file: {{ prometheus.server.args.config_file }} @@ -51,11 +51,16 @@ prometheus_service_unit: file.managed: {%- if grains.get('init') == 'systemd' %} - name: /etc/systemd/system/prometheus.service - - source: salt://prometheus/files/prometheus.systemd.jinja + - source: salt://prometheus-ng/files/prometheus.systemd.jinja {%- elif grains.get('init') == 'upstart' %} - name: /etc/init/prometheus.conf - - source: salt://prometheus/files/prometheus.upstart.jinja + - source: salt://prometheus-ng/files/prometheus.upstart.jinja {%- endif %} + - context: + user: {{ prometheus.user }} + group: {{ prometheus.group }} + bin_path: {{ prometheus.exporter.node.version_path }} + args: {{ prometheus.exporter.get('args', []) }} - watch: - file: prometheus_defaults - require_in: