Better grain handling for telegraf
Replace '-' to '_' in prometheus config dir
Add possibility to add recording rules
Change-Id: Ifc85a95ae62cb0f1b810a3b4f718e8d92f9c6209
diff --git a/README.rst b/README.rst
index 754a94e..627a517 100644
--- a/README.rst
+++ b/README.rst
@@ -17,7 +17,7 @@
server:
enabled: true
dir:
- config: /srv/volumes/prometheus-config
+ config: /srv/volumes/prometheus
config_in_container: /opt/prometheus/config
bind:
port: 9090
@@ -30,6 +30,10 @@
cert_name: kubelet-client.crt
key_name: kubelet-client.key
etcd: ${etcd:server:members}
+ recording:
+ - name: 'instance:fd_utilization'
+ query: >-
+ process_open_fds / process_max_fds
alert:
PrometheusTargetDown:
if: 'up != 1'
@@ -63,7 +67,7 @@
alertmanager:
enabled: true
dir:
- config: /srv/volumes/prometheus-config
+ config: /srv/volumes/prometheus
bind:
address: 0.0.0.0
port: 9093
diff --git a/prometheus/files/alerts.yml b/prometheus/files/alerts.yml
index ebafbed..68c1c88 100644
--- a/prometheus/files/alerts.yml
+++ b/prometheus/files/alerts.yml
@@ -1,5 +1,11 @@
{%- from "prometheus/map.jinja" import server with context %}
+{%- if server.recording is defined %}
+{%- for recording_rule in server.recording %}
+{{ recording_rule.name }} = {{ recording_rule.query }}
+{%- endfor %}
+{%- endif %}
+
{%- if server.alert is defined %}
{%- for alertname, alert in server.alert.iteritems() %}
ALERT {{ alertname }}
diff --git a/prometheus/files/prometheus.yml b/prometheus/files/prometheus.yml
index 09cc042..0872c02 100644
--- a/prometheus/files/prometheus.yml
+++ b/prometheus/files/prometheus.yml
@@ -12,8 +12,9 @@
{%- set telegraf_nodes = [] %}
{%- for node_name, node_grains in salt['mine.get']('*', 'grains.items').iteritems() %}
{%- if 'telegraf' in node_grains.get('services') %}
- {%- set node_ip = node_grains.get('prometheus_client').get('address') %}
- {%- set node_port = node_grains.get('prometheus_client').get('port') %}
+ {%- set prometheus_client = node_grains.get('telegraf').get('prometheus_client') %}
+ {%- set node_ip = prometheus_client.get('address') %}
+ {%- set node_port = prometheus_client.get('port') %}
{%- set telegraf_address = "'%s:%d'" | format(node_ip, node_port) %}
{%- do telegraf_nodes.append(telegraf_address) %}
{%- endif %}
diff --git a/prometheus/map.jinja b/prometheus/map.jinja
index f6a1c70..bdba327 100644
--- a/prometheus/map.jinja
+++ b/prometheus/map.jinja
@@ -1,7 +1,7 @@
{% set server = salt['grains.filter_by']({
'default': {
'dir': {
- 'config': '/srv/volumes/prometheus-config',
+ 'config': '/srv/volumes/prometheus',
'config_in_container': '/opt/prometheus/config'
},
},
@@ -10,7 +10,7 @@
{% set alertmanager = salt['grains.filter_by']({
'default': {
'dir': {
- 'config': '/srv/volumes/prometheus-config',
+ 'config': '/srv/volumes/prometheus',
},
},
}, merge=salt['pillar.get']('prometheus:alertmanager')) %}