feat(exporters): added node_exporter
This commit is contained in:
parent
a7fad98251
commit
34ada49bf7
@ -92,3 +92,9 @@ dependency on ``prometheus.service.clean`` via include list.
|
||||
This state will remove the prometheus package and has a depency on
|
||||
``prometheus.config.clean`` via include list.
|
||||
|
||||
``prometheus.exporters``
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
This state will manage prometheus exporters according to Pillar ``prometheus:exporters``.
|
||||
It includes sub-states like ``prometheus.exporters.node``.
|
||||
If you don't want to use Pillar data for this you may use the sub-states directly.
|
||||
|
@ -42,6 +42,7 @@ provisioner:
|
||||
base:
|
||||
'*':
|
||||
- prometheus
|
||||
- prometheus.exporters
|
||||
pillars:
|
||||
top.sls:
|
||||
base:
|
||||
|
@ -62,3 +62,8 @@ prometheus:
|
||||
|
||||
static_configs:
|
||||
- targets: ['localhost:9090']
|
||||
|
||||
exporters:
|
||||
node:
|
||||
args:
|
||||
web.listen-address: ":9110"
|
||||
|
@ -9,3 +9,7 @@ prometheus:
|
||||
service:
|
||||
name: prometheus
|
||||
sysrc: False
|
||||
exporters:
|
||||
node:
|
||||
pkg: prometheus-node-exporter
|
||||
service: prometheus-node-exporter
|
||||
|
14
prometheus/exporters/init.sls
Normal file
14
prometheus/exporters/init.sls
Normal file
@ -0,0 +1,14 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# vim: ft=sls
|
||||
|
||||
{#- Get the `tplroot` from `tpldir` #}
|
||||
{%- set tplroot = tpldir.split('/')[0] %}
|
||||
{%- set sls_config_file = tplroot ~ '.config.file' %}
|
||||
{%- from tplroot ~ "/map.jinja" import prometheus with context %}
|
||||
|
||||
{%- if prometheus.exporters.keys()|length > 0 %}
|
||||
include:
|
||||
{%- for name in prometheus.exporters.keys()|list %}
|
||||
- .{{ name }}
|
||||
{%- endfor %}
|
||||
{%- endif %}
|
28
prometheus/exporters/node/clean.sls
Normal file
28
prometheus/exporters/node/clean.sls
Normal file
@ -0,0 +1,28 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# vim: ft=sls
|
||||
|
||||
{#- Get the `tplroot` from `tpldir` #}
|
||||
{%- set tplroot = tpldir.split('/')[0] %}
|
||||
{%- from tplroot ~ "/map.jinja" import prometheus with context %}
|
||||
|
||||
prometheus-exporters-node-service-dead:
|
||||
service.dead:
|
||||
- name: {{ prometheus.exporters.node.service }}
|
||||
- enable: False
|
||||
|
||||
prometheus-exporters-node-pkg-removed:
|
||||
pkg.removed:
|
||||
- name: {{ prometheus.exporters.node.pkg }}
|
||||
- require:
|
||||
- service: prometheus-exporters-node-service-dead
|
||||
|
||||
{# FreeBSD #}
|
||||
{%- if salt['grains.get']('os_family') == 'FreeBSD' %}
|
||||
{%- for parameter in ['args', 'listen_address', 'textfile_dir'] %}
|
||||
prometheus-exporters-node-args-{{ parameter }}:
|
||||
sysrc.absent:
|
||||
- name: node_exporter_{{ parameter }}
|
||||
- require:
|
||||
- service: prometheus-exporters-node-service-dead
|
||||
{%- endfor %}
|
||||
{%- endif %}
|
73
prometheus/exporters/node/init.sls
Normal file
73
prometheus/exporters/node/init.sls
Normal file
@ -0,0 +1,73 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# vim: ft=sls
|
||||
|
||||
{#- Get the `tplroot` from `tpldir` #}
|
||||
{%- set tplroot = tpldir.split('/')[0] %}
|
||||
{%- from tplroot ~ "/map.jinja" import prometheus with context %}
|
||||
|
||||
{%- macro concat_args(args) %}
|
||||
{%- if args|length > 0 %}
|
||||
{%- for k,v in args -%}
|
||||
{%- if not k or not v %}{% continue %}{% endif -%}
|
||||
--{{ k }}={{ v }}
|
||||
{%- if not loop.last %} {% endif -%}
|
||||
{%- endfor -%}
|
||||
{%- endif -%}
|
||||
{%- endmacro %}
|
||||
|
||||
prometheus-exporters-node-pkg-installed:
|
||||
pkg.installed:
|
||||
- name: {{ prometheus.exporters.node.pkg }}
|
||||
|
||||
{%- if 'args' in prometheus.exporters.node %}
|
||||
{%- set args = prometheus.exporters.node.get('args', {}) -%}
|
||||
|
||||
{# FreeBSD #}
|
||||
{%- if salt['grains.get']('os_family') == 'FreeBSD' %}
|
||||
{%- if 'web.listen-address' in args.keys() %}
|
||||
{%- set value = args.pop('web.listen-address') %}
|
||||
prometheus-exporters-node-args-web-listen-address:
|
||||
sysrc.managed:
|
||||
- name: node_exporter_listen_address
|
||||
- value: {{ value }}
|
||||
- watch_in:
|
||||
- service: prometheus-exporters-node-service-running
|
||||
{%- endif %}
|
||||
|
||||
{%- if 'collector.textfile.directory' in args.keys() %}
|
||||
{%- set value = args.pop('collector.textfile.directory') %}
|
||||
prometheus-exporters-node-args-collector-textfile-directory:
|
||||
sysrc.managed:
|
||||
- name: node_exporter_textfile_dir
|
||||
- value: {{ value }}
|
||||
- watch_in:
|
||||
- service: prometheus-exporters-node-service-running
|
||||
{%- endif %}
|
||||
|
||||
prometheus-exporters-node-args:
|
||||
sysrc.managed:
|
||||
- name: node_exporter_args
|
||||
# service node_exporter restart tended to hang on FreeBSD
|
||||
# https://github.com/saltstack/salt/issues/44848#issuecomment-487016414
|
||||
- value: "{{ concat_args(args|dictsort) }} >/dev/null 2>&1"
|
||||
- watch_in:
|
||||
- service: prometheus-exporters-node-service-running
|
||||
|
||||
{# Debian #}
|
||||
{%- elif salt['grains.get']('os_family') == 'Debian'%}
|
||||
prometheus-exporters-node-args:
|
||||
file.managed:
|
||||
- name: {{ prometheus.exporters.node.config_file }}
|
||||
- contents: |
|
||||
ARGS="{{ concat_args(args) }}"
|
||||
- watch_in:
|
||||
- service: prometheus-exporters-node-service-running
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
|
||||
prometheus-exporters-node-service-running:
|
||||
service.running:
|
||||
- name: {{ prometheus.exporters.node.service }}
|
||||
- enable: True
|
||||
- watch:
|
||||
- pkg: prometheus-exporters-node-pkg-installed
|
@ -10,7 +10,10 @@
|
||||
# you will need to provide at least an empty dict in this file, e.g.
|
||||
# osfamilymap: {}
|
||||
---
|
||||
Debian: {}
|
||||
Debian:
|
||||
exporters:
|
||||
node:
|
||||
config_file: /etc/default/prometheus-node-exporter
|
||||
|
||||
RedHat: {}
|
||||
|
||||
@ -27,6 +30,10 @@ FreeBSD:
|
||||
config_file: /usr/local/etc/prometheus.yml
|
||||
service:
|
||||
sysrc: True
|
||||
exporters:
|
||||
node:
|
||||
pkg: node_exporter
|
||||
service: node_exporter
|
||||
|
||||
OpenBSD:
|
||||
rootgroup: wheel
|
||||
|
@ -4,4 +4,8 @@ control 'Prometheus package' do
|
||||
describe package('prometheus') do
|
||||
it { should be_installed }
|
||||
end
|
||||
|
||||
describe package('prometheus-node-exporter') do
|
||||
it { should be_installed }
|
||||
end
|
||||
end
|
||||
|
@ -6,4 +6,9 @@ control 'Prometheus service' do
|
||||
it { should be_enabled }
|
||||
it { should be_running }
|
||||
end
|
||||
|
||||
describe service('prometheus-node-exporter') do
|
||||
it { should be_enabled }
|
||||
it { should be_running }
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user