Add separate telegraf output and prometheus target for openstack metrics
Change-Id: Iae2c16fcd835fb8d7591cc3a76703ddf9a83e1a4
Related-Bug: PROD-18242
diff --git a/keystone/map.jinja b/keystone/map.jinja
index b680d2a..5adfe78 100644
--- a/keystone/map.jinja
+++ b/keystone/map.jinja
@@ -94,5 +94,7 @@
'all_auths_rate': 0.1,
},
'telegraf_openstack_input_plugin_interval': '1m',
+ 'telegraf_openstack_output_plugin_expiration_interval': '2m',
+ 'output_openstack_port': 9127,
},
}, grain='os_family', merge=salt['pillar.get']('keystone:monitoring')) %}
diff --git a/keystone/meta/prometheus.yml b/keystone/meta/prometheus.yml
index a328c2c..078f98b 100644
--- a/keystone/meta/prometheus.yml
+++ b/keystone/meta/prometheus.yml
@@ -1,7 +1,16 @@
{%- if pillar.keystone.server is defined and pillar.keystone.server.get('enabled') %}
{%- from "keystone/map.jinja" import monitoring with context %}
-{% raw %}
server:
+ target:
+ dns:
+ enabled: true
+ endpoint:
+ - name: 'remote_agent_openstack'
+ domain:
+ - 'tasks.monitoring_remote_agent'
+ type: A
+ port: '{{ monitoring.output_openstack_port }}'
+{% raw %}
alert:
KeystoneAPIDown:
if: >-
diff --git a/keystone/meta/telegraf.yml b/keystone/meta/telegraf.yml
index 2be47d3..a293ce2 100644
--- a/keystone/meta/telegraf.yml
+++ b/keystone/meta/telegraf.yml
@@ -1,9 +1,12 @@
{%- from "keystone/map.jinja" import monitoring, server with context %}
{%- if server is defined and server.get('enabled', False) %}
+{%- set openstack_input_interval = monitoring.telegraf_openstack_input_plugin_interval %}
+{%- set openstack_output_expiration_interval = monitoring.telegraf_openstack_output_plugin_expiration_interval %}
+
remote_agent:
input:
openstack:
- interval: "{{ monitoring.telegraf_openstack_input_plugin_interval }}"
+ interval: "{{ openstack_input_interval }}"
project: "{{ server.admin_tenant }}"
tenant: "{{ server.admin_tenant }}"
region: "{{ server.region }}"
@@ -11,6 +14,19 @@
password: "{{ server.admin_password }}"
identity_endpoint: "{{ server.bind.private_protocol }}://{{ server.bind.private_address|replace('0.0.0.0', '127.0.0.1') }}:{{ server.bind.private_port }}/v{% if server.get('api_version', 2)|int == 2 %}2.0{% else %}3{% endif %}"
monitor_agents: "true"
+ output:
+ prometheus_client_openstack:
+ template: telegraf/files/output/prometheus_client.conf
+ engine: prometheus
+ # Output plugin configuration
+ bind:
+ address: 0.0.0.0
+ port: "{{ monitoring.output_openstack_port }}"
+ expiration_interval: "{{ openstack_output_expiration_interval }}"
+ # Measurement filtering
+ namepass: ["openstack*"]
+ prometheus_client:
+ namedrop: ["openstack*"]
agent:
input:
http_response: