aboutsummaryrefslogtreecommitdiffstats
path: root/docker
diff options
context:
space:
mode:
authorJohn O Loughlin <john.oloughlin@intel.com>2018-06-28 16:01:00 +0100
committerJohn O'Loughlin <john.oloughlin@intel.com>2018-10-03 13:36:06 +0000
commitada3bb5cda036c736b460b76552ce47dd8f40aa8 (patch)
treeadf9a26ff931e3b094da3ee6beb6ab0da36a5c74 /docker
parent328129a1fd4ae54fe012379439464a56d15d4681 (diff)
Adding support for prometheus using ansible
To enable add the following with your ip address to your inventory file: [prometheus_hosts] 172.24.4.19 Change-Id: I85add815367bcbcf1240398db2c43c2130537969 Signed-off-by: John O Loughlin <john.oloughlin@intel.com>
Diffstat (limited to 'docker')
-rw-r--r--docker/ansible/collectd_service.yml6
-rw-r--r--docker/ansible/roles/config_files/tasks/main.yml4
-rw-r--r--docker/ansible/roles/config_files/tasks/prometheus.yml21
-rw-r--r--docker/ansible/roles/config_files/templates/prometheus.conf.j219
-rw-r--r--docker/ansible/roles/config_files/vars/main.yml3
-rw-r--r--docker/ansible/roles/run_prometheus/tasks/main.yml65
-rw-r--r--docker/ansible/roles/run_prometheus/templates/prometheus.yml9
-rw-r--r--docker/ansible/roles/run_prometheus/vars/main.yml21
8 files changed, 148 insertions, 0 deletions
diff --git a/docker/ansible/collectd_service.yml b/docker/ansible/collectd_service.yml
index 965ec8ee..7022cc8b 100644
--- a/docker/ansible/collectd_service.yml
+++ b/docker/ansible/collectd_service.yml
@@ -38,3 +38,9 @@
become_user: root
roles:
- run_grafana
+
+- hosts: prometheus_hosts
+ become: true
+ become_user: root
+ roles:
+ - run_prometheus
diff --git a/docker/ansible/roles/config_files/tasks/main.yml b/docker/ansible/roles/config_files/tasks/main.yml
index 4bf81f81..9ba9cbb2 100644
--- a/docker/ansible/roles/config_files/tasks/main.yml
+++ b/docker/ansible/roles/config_files/tasks/main.yml
@@ -53,6 +53,10 @@
- name: enable network plugin
import_tasks: network.yml
+- name: enable prometheus plugin
+ import_tasks: prometheus.yml
+ when: groups['prometheus_hosts'] is defined
+
- name: enable pmu plugin
import_tasks: pmu.yml
diff --git a/docker/ansible/roles/config_files/tasks/prometheus.yml b/docker/ansible/roles/config_files/tasks/prometheus.yml
new file mode 100644
index 00000000..51f2b1f6
--- /dev/null
+++ b/docker/ansible/roles/config_files/tasks/prometheus.yml
@@ -0,0 +1,21 @@
+#Copyright 2018 OPNFV and Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+---
+
+- name: enable prometheus plugin
+ template:
+ src: prometheus.conf.j2
+ dest: "{{ config_file_dir }}/prometheus.conf"
+ tags:
+ - prometheus \ No newline at end of file
diff --git a/docker/ansible/roles/config_files/templates/prometheus.conf.j2 b/docker/ansible/roles/config_files/templates/prometheus.conf.j2
new file mode 100644
index 00000000..bb947867
--- /dev/null
+++ b/docker/ansible/roles/config_files/templates/prometheus.conf.j2
@@ -0,0 +1,19 @@
+#Copyright 2018 OPNFV and Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LoadPlugin write_prometheus
+
+<Plugin "write_prometheus">
+ Port "{{ prometheus_port }}"
+</Plugin>
diff --git a/docker/ansible/roles/config_files/vars/main.yml b/docker/ansible/roles/config_files/vars/main.yml
index bfa0fd68..461bfc3f 100644
--- a/docker/ansible/roles/config_files/vars/main.yml
+++ b/docker/ansible/roles/config_files/vars/main.yml
@@ -25,6 +25,9 @@ interval_value: 10
network_port: 25826
network_ip_addr: "{{ (groups['influxdb_hosts']|default({}))[0] | default('localhost') }}"
+#prometheus plugin vars
+prometheus_port: 9103
+
#ovs event and stats plugin vars
ovs_event_interval: 1
ovs_event_ip_addr: localhost
diff --git a/docker/ansible/roles/run_prometheus/tasks/main.yml b/docker/ansible/roles/run_prometheus/tasks/main.yml
new file mode 100644
index 00000000..940852e8
--- /dev/null
+++ b/docker/ansible/roles/run_prometheus/tasks/main.yml
@@ -0,0 +1,65 @@
+#Copyright 2018 OPNFV and Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+---
+
+- name: remove bar-prometheus container
+ docker_container:
+ name: bar-prometheus
+ state: absent
+ tags:
+ - rm_containers
+ - rm_prometheus_cont
+ when: rm_containers|default(false)|bool == true
+
+- name: Create prometheus directory
+ file:
+ path: /etc/prometheus
+ state: directory
+
+- name: copy prometheus config
+ template:
+ src: prometheus.yml
+ dest: "/etc/prometheus/prometheus.yml"
+
+- name: modify prometheus.yml to add prometheus_hosts
+ lineinfile:
+ dest: /etc/prometheus/prometheus.yml
+ insertafter: targets
+ line: " - '{{ item }}:{{ prometheus_port }}'"
+ with_items: "{{ groups['collectd_hosts'] }}"
+
+- name: Remove prom-prometheus image
+ docker_image:
+ name: prom/prometheus
+ state: absent
+ tags:
+ - rm_images
+ - rm_prometheus_cont
+ when: rm_images|default(false)|bool == true
+
+- name: launch bar-prometheus container
+ docker_container:
+ name: bar-prometheus
+ image: prom/prometheus
+ volumes:
+ - /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
+ exposed:
+ - 9090
+ - "{{ prometheus_port }}"
+ ports:
+ - 9090:9090
+ - "{{ prometheus_port }}:{{ prometheus_port }}"
+ detach: yes
+ restart: yes
+ network_mode: host
diff --git a/docker/ansible/roles/run_prometheus/templates/prometheus.yml b/docker/ansible/roles/run_prometheus/templates/prometheus.yml
new file mode 100644
index 00000000..7c6afa8a
--- /dev/null
+++ b/docker/ansible/roles/run_prometheus/templates/prometheus.yml
@@ -0,0 +1,9 @@
+global:
+ scrape_timeout: "{{scrape_timeout}}"
+ scrape_interval: "{{scrape_interval}}"
+ evaluation_interval: "{{evaluation_interval}}"
+
+scrape_configs:
+ - job_name: 'collectd_exporter'
+ static_configs:
+ - targets:
diff --git a/docker/ansible/roles/run_prometheus/vars/main.yml b/docker/ansible/roles/run_prometheus/vars/main.yml
new file mode 100644
index 00000000..acf4d2d4
--- /dev/null
+++ b/docker/ansible/roles/run_prometheus/vars/main.yml
@@ -0,0 +1,21 @@
+#Copyright 2018 OPNFV and Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+---
+
+#prometheus plugin vars
+prometheus_port: 9103
+
+scrape_timeout: 4s
+scrape_interval: 5s
+evaluation_interval: 5s \ No newline at end of file