Enable telemetry for InfluxDB relay
Change-Id: If71d9b198c7396a4812f4b624a5e1709de63256a
diff --git a/README.rst b/README.rst
index ab729ac..a27364f 100644
--- a/README.rst
+++ b/README.rst
@@ -271,6 +271,11 @@
influxdb:
relay:
enabled: true
+ telemetry:
+ enabled: true
+ bind:
+ address: 127.0.0.1
+ port: 9196
listen:
http_backend:
type: http
diff --git a/influxdb/files/influxdb-relay.conf b/influxdb/files/influxdb-relay.conf
index 6d173a8..06fd210 100644
--- a/influxdb/files/influxdb-relay.conf
+++ b/influxdb/files/influxdb-relay.conf
@@ -2,6 +2,11 @@
{%- if relay.get('enabled') %}
+{%- if relay.telemetry.get('enabled') %}
+[telemetry]
+bind-addr = "{{ relay.telemetry.bind.get('address', '') }}:{{ relay.telemetry.bind.port }}"
+{%- endif %}
+
{%- for name, listen in relay.listen.iteritems()|sort %}
{%- if listen.get('enabled', True) and listen.get('type', 'http') in ('http', 'udp') %}
@@ -9,7 +14,7 @@
{%- set listen_type = listen.get('type', 'http') %}
[[{{ listen_type }}]]
name = "{{ name }}"
-bind-addr = "{{ listen.bind.get('address', '0.0.0.0') }}:{{ listen.bind.port }}"
+bind-addr = "{{ listen.bind.get('address', '') }}:{{ listen.bind.port }}"
{%- if listen_type == 'http' and listen.default_retention_policy is defined %}
default-retention-policy = "{{ listen.default_retention_policy }}"
{%- endif %}
diff --git a/influxdb/map.jinja b/influxdb/map.jinja
index 88ba241..47a9c00 100644
--- a/influxdb/map.jinja
+++ b/influxdb/map.jinja
@@ -54,5 +54,6 @@
'pkgs': ['influxdb-relay'],
'service': 'influxdb-relay',
'listen': {},
+ 'telemetry': {},
},
}, merge=salt['pillar.get']('influxdb:relay')) %}
diff --git a/influxdb/meta/prometheus.yml b/influxdb/meta/prometheus.yml
index 54a8b13..ea66b51 100644
--- a/influxdb/meta/prometheus.yml
+++ b/influxdb/meta/prometheus.yml
@@ -1,7 +1,7 @@
{%- if pillar.influxdb.server is defined %}
-{%- from "influxdb/map.jinja" import server, monitoring with context %}
+{%- from "influxdb/map.jinja" import server, relay, monitoring with context %}
-{%- if server.get('enabled', False) %}
+{%- if server.get('enabled', False) or relay.get('enabled') %}
server:
alert:
{%- if server.get('http', {}).get('enabled', False) %}
@@ -71,5 +71,28 @@
summary: 'Influxdb too many dropped writes'
description: '{{ printf `%.1f` $value }}% of written points have been dropped on {{ $labels.host }} (threshold={%- endraw %}{{ influx_http_points_written_dropped_threshold }}).'
{%- endif %}
+
+{%- if relay.get('enabled') and relay.telemetry.get('enabled') %}
+
+{%- set addresses = [] %}
+{%- if relay.telemetry.get('bind', {}).address is defined and not relay.telemetry.bind.address.startswith('127') and relay.telemetry.bind.address != '0.0.0.0' %}
+{%- do addresses.append(relay.telemetry.bind.address) %}
+{%- endif %}
+{%- for address in grains['fqdn_ip4'] %}
+{%- if not address.startswith('127') %}
+{%- do addresses.append(address) %}
+{%- endif %}
+{%- endfor %}
+
+ target:
+ static:
+ influxdb_relay:
+ enabled: true
+ endpoint:
+ - address: {{ addresses[0] }}
+ port: {{ relay.telemetry.bind.port }}
+
+{%- endif %}
+
{%- endif %}
{%- endif %}
diff --git a/metadata/service/relay/cluster.yml b/metadata/service/relay/cluster.yml
index 4708ea3..0dbe9b4 100644
--- a/metadata/service/relay/cluster.yml
+++ b/metadata/service/relay/cluster.yml
@@ -11,6 +11,11 @@
influxdb:
relay:
enabled: true
+ telemetry:
+ enabled: true
+ bind:
+ address: ${_param:cluster_local_address}
+ port: 9196
listen:
http:
type: http
diff --git a/tests/pillar/relay.sls b/tests/pillar/relay.sls
index 7da8b73..cf7e866 100644
--- a/tests/pillar/relay.sls
+++ b/tests/pillar/relay.sls
@@ -1,6 +1,11 @@
influxdb:
relay:
enabled: true
+ telemetry:
+ enabled: true
+ bind:
+ address: 127.0.0.1
+ port: 9196
listen:
http_backend:
type: http