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
|
This state will remove the prometheus package and has a depency on
|
||||||
``prometheus.config.clean`` via include list.
|
``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:
|
base:
|
||||||
'*':
|
'*':
|
||||||
- prometheus
|
- prometheus
|
||||||
|
- prometheus.exporters
|
||||||
pillars:
|
pillars:
|
||||||
top.sls:
|
top.sls:
|
||||||
base:
|
base:
|
||||||
|
@ -62,3 +62,8 @@ prometheus:
|
|||||||
|
|
||||||
static_configs:
|
static_configs:
|
||||||
- targets: ['localhost:9090']
|
- targets: ['localhost:9090']
|
||||||
|
|
||||||
|
exporters:
|
||||||
|
node:
|
||||||
|
args:
|
||||||
|
web.listen-address: ":9110"
|
||||||
|
@ -9,3 +9,7 @@ prometheus:
|
|||||||
service:
|
service:
|
||||||
name: prometheus
|
name: prometheus
|
||||||
sysrc: False
|
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.
|
# you will need to provide at least an empty dict in this file, e.g.
|
||||||
# osfamilymap: {}
|
# osfamilymap: {}
|
||||||
---
|
---
|
||||||
Debian: {}
|
Debian:
|
||||||
|
exporters:
|
||||||
|
node:
|
||||||
|
config_file: /etc/default/prometheus-node-exporter
|
||||||
|
|
||||||
RedHat: {}
|
RedHat: {}
|
||||||
|
|
||||||
@ -27,6 +30,10 @@ FreeBSD:
|
|||||||
config_file: /usr/local/etc/prometheus.yml
|
config_file: /usr/local/etc/prometheus.yml
|
||||||
service:
|
service:
|
||||||
sysrc: True
|
sysrc: True
|
||||||
|
exporters:
|
||||||
|
node:
|
||||||
|
pkg: node_exporter
|
||||||
|
service: node_exporter
|
||||||
|
|
||||||
OpenBSD:
|
OpenBSD:
|
||||||
rootgroup: wheel
|
rootgroup: wheel
|
||||||
|
@ -4,4 +4,8 @@ control 'Prometheus package' do
|
|||||||
describe package('prometheus') do
|
describe package('prometheus') do
|
||||||
it { should be_installed }
|
it { should be_installed }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe package('prometheus-node-exporter') do
|
||||||
|
it { should be_installed }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -6,4 +6,9 @@ control 'Prometheus service' do
|
|||||||
it { should be_enabled }
|
it { should be_enabled }
|
||||||
it { should be_running }
|
it { should be_running }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe service('prometheus-node-exporter') do
|
||||||
|
it { should be_enabled }
|
||||||
|
it { should be_running }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user