diff --git a/prometheus/exporters/blackbox.sls b/prometheus/exporters/blackbox.sls new file mode 100644 index 0000000..0eed2e2 --- /dev/null +++ b/prometheus/exporters/blackbox.sls @@ -0,0 +1,48 @@ +{% from "prometheus/map.jinja" import prometheus with context %} +{%- set version_path = prometheus.exporters.blackbox.install_dir ~ "/blackbox_exporter-" ~ prometheus.exporters.blackbox.version %} + +include: + - prometheus.user + +blackbox_exporter_tarball: + archive.extracted: + - name: {{ prometheus.exporters.blackbox.install_dir }} + - source: {{ prometheus.exporters.blackbox.source }} + - source_hash: {{ prometheus.exporters.blackbox.source_hash }} + - archive_format: tar + - if_missing: {{ version_path }} + +blackbox_exporter_bin_link: + file.symlink: + - name: /usr/bin/blackbox_exporter + - target: {{ version_path }}/blackbox_exporter + - require: + - archive: blackbox_exporter_tarball + +blackbox_exporter_defaults: + file.managed: + - name: /etc/default/blackbox_exporter + - source: salt://prometheus/files/default-blackbox_exporter.jinja + - template: jinja + - defaults: + config_file: {{ prometheus.exporters.blackbox.args.config_file }} + +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 +{%- elif grains.get('init') == 'upstart' %} + - name: /etc/init/blackbox_exporter.conf + - source: salt://prometheus/files/blackbox_exporter.upstart.jinja +{%- endif %} + - require_in: + - file: blackbox_exporter_service + +blackbox_exporter_service: + service.running: + - name: blackbox_exporter + - enable: True + - reload: True + - watch: + - file: blackbox_exporter_defaults diff --git a/prometheus/files/blackbox_exporter.systemd.jinja b/prometheus/files/blackbox_exporter.systemd.jinja new file mode 100644 index 0000000..b1c9e92 --- /dev/null +++ b/prometheus/files/blackbox_exporter.systemd.jinja @@ -0,0 +1,18 @@ +[Unit] +Description=Prometheus blackbox exporter +Documentation=https://github.com/prometheus/blackbox_exporter +Wants=basic.target +After=basic.target network.target + +[Service] +User=prometheus +Group=prometheus +EnvironmentFile=/etc/default/blackbox_exporter +ExecStart=/usr/bin/blackbox_exporter $ARGS +ExecReload=/bin/kill -HUP $MAINPID +KillMode=process +Restart=always +RestartSec=42s + +[Install] +WantedBy=multi-user.target diff --git a/prometheus/files/blackbox_exporter.upstart.jinja b/prometheus/files/blackbox_exporter.upstart.jinja new file mode 100644 index 0000000..41c04b9 --- /dev/null +++ b/prometheus/files/blackbox_exporter.upstart.jinja @@ -0,0 +1,30 @@ +# Prometheus Blackbox exporter (Upstart unit) +description "Prometheus Blackbox exporter" +start on runlevel [2345] +stop on runlevel [06] + +env BLACKBOX_EXPORTER=/usr/bin/blackbox_exporter +env USER=prometheus +env GROUP=prometheus +env DEFAULTS=/etc/default/blackbox_exporter +env RUNDIR=/var/run/blackbox_exporter +env PID_FILE=/var/run/blackbox_exporter/blackbox_exporter.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/blackbox_exporter", if available. + [ -e $DEFAULTS ] && . $DEFAULTS + + export GOMAXPROCS=${GOMAXPROCS:-2} + exec start-stop-daemon -c $USER -g $GROUP -p $PID_FILE -x $BLACKBOX_EXPORTER -S -- $ARGS +end script + +respawn +respawn limit 10 10 +kill timeout 10 diff --git a/prometheus/files/default-blackbox_exporter.jinja b/prometheus/files/default-blackbox_exporter.jinja new file mode 100644 index 0000000..90b8a17 --- /dev/null +++ b/prometheus/files/default-blackbox_exporter.jinja @@ -0,0 +1,7 @@ +# Set the command-line arguments to pass to the blackbox_exporter service. +ARGS="-config.file {{config_file}}" + +# Blackbox exporter supports the following options: +# -config.file string +# Blackbox exporter configuration file name. +# (default "/etc/prometheus/blackbox_exporter.yml) \ No newline at end of file