diff --git a/metadata/service/alertmanager/container.yml b/metadata/service/alertmanager/container.yml index 8335969..4c36be9 100644 --- a/metadata/service/alertmanager/container.yml +++ b/metadata/service/alertmanager/container.yml @@ -4,6 +4,9 @@ parameters: prometheus: alertmanager: enabled: true + dir: + config: /srv/volumes/prometheus/alertmanager + data: /srv/volumes/local/prometheus/alertmanager bind: address: 0.0.0.0 port: 9093 diff --git a/metadata/service/server/container.yml b/metadata/service/server/container.yml index 2269896..38facc3 100644 --- a/metadata/service/server/container.yml +++ b/metadata/service/server/container.yml @@ -6,6 +6,9 @@ parameters: prometheus: server: enabled: true + dir: + config: /srv/volumes/prometheus/server + data: /srv/volumes/local/prometheus/server bind: port: 9090 address: 0.0.0.0 diff --git a/prometheus/alertmanager.sls b/prometheus/alertmanager.sls index 6e1481d..00902e4 100644 --- a/prometheus/alertmanager.sls +++ b/prometheus/alertmanager.sls @@ -3,11 +3,24 @@ {%- if pillar.docker is defined and pillar.docker.host is defined %} +{{alertmanager.dir.config}}: + file.directory: + - makedirs: True + +# prometheus user is available inside docker container not on docker host +# in dockerfile for alertmanager we ensure that it will have 999 uid +{{alertmanager.dir.data}}: + file.directory: + - makedirs: True + - mode: 755 + - user: {{alertmanager.user}} + {{alertmanager.dir.config}}/alertmanager.yml: file.managed: - source: salt://prometheus/files/alertmanager.yml - template: jinja - - makedirs: True + - require: + - file: {{alertmanager.dir.config}} {%- endif %} {%- endif %} diff --git a/prometheus/files/prometheus.yml b/prometheus/files/prometheus.yml index c199994..dd17832 100644 --- a/prometheus/files/prometheus.yml +++ b/prometheus/files/prometheus.yml @@ -6,7 +6,7 @@ global: {%- endif %} rule_files: -- {{ server.dir.config_in_container }}/alerts.yml +- alerts.yml {%- set static_target = {} %} {%- for node_name, node_grains in salt['mine.get']('*', 'grains.items').iteritems() %} diff --git a/prometheus/map.jinja b/prometheus/map.jinja index bdba327..1819231 100644 --- a/prometheus/map.jinja +++ b/prometheus/map.jinja @@ -1,16 +1,11 @@ {% set server = salt['grains.filter_by']({ 'default': { - 'dir': { - 'config': '/srv/volumes/prometheus', - 'config_in_container': '/opt/prometheus/config' - }, + 'user': '999', }, }, merge=salt['pillar.get']('prometheus:server')) %} {% set alertmanager = salt['grains.filter_by']({ 'default': { - 'dir': { - 'config': '/srv/volumes/prometheus', - }, + 'user': '999', }, }, merge=salt['pillar.get']('prometheus:alertmanager')) %} diff --git a/prometheus/server.sls b/prometheus/server.sls index b324435..9aeb00c 100644 --- a/prometheus/server.sls +++ b/prometheus/server.sls @@ -3,17 +3,31 @@ {%- if pillar.docker is defined and pillar.docker.host is defined %} +{{server.dir.config}}: + file.directory: + - makedirs: True + +# prometheus user is available inside docker container not on docker host +# in dockerfile for prometheus we ensure that it will have 999 uid +{{server.dir.data}}: + file.directory: + - makedirs: True + - mode: 755 + - user: {{server.user}} + {{server.dir.config}}/prometheus.yml: file.managed: - source: salt://prometheus/files/prometheus.yml - template: jinja - - makedirs: True + - require: + - file: {{server.dir.config}} {{server.dir.config}}/alerts.yml: file.managed: - source: salt://prometheus/files/alerts.yml - template: jinja - - makedirs: True + - require: + - file: {{server.dir.config}} {%- endif %} {%- endif %} diff --git a/tests/pillar/alertmanager.sls b/tests/pillar/alertmanager.sls index 092e788..d22c28f 100644 --- a/tests/pillar/alertmanager.sls +++ b/tests/pillar/alertmanager.sls @@ -2,7 +2,8 @@ prometheus: alertmanager: enabled: true dir: - config: /srv/volumes/prometheus + config: /srv/volumes/prometheus/alertmanager + data: /srv/volumes/local/prometheus/alertmanager bind: address: 0.0.0.0 port: 9093 @@ -45,4 +46,4 @@ docker: - 127.0.0.1 log: engine: json-file - size: 50m \ No newline at end of file + size: 50m diff --git a/tests/pillar/server.sls b/tests/pillar/server.sls index 9882410..5f2a2d2 100644 --- a/tests/pillar/server.sls +++ b/tests/pillar/server.sls @@ -2,8 +2,8 @@ prometheus: server: enabled: true dir: - config: /srv/volumes/prometheus - config_in_container: /opt/prometheus/config + config: /srv/volumes/prometheus/server + data: /srv/volumes/local/prometheus/server bind: port: 9090 address: 0.0.0.0 @@ -76,4 +76,4 @@ docker: - 127.0.0.1 log: engine: json-file - size: 50m \ No newline at end of file + size: 50m