From ada3bb5cda036c736b460b76552ce47dd8f40aa8 Mon Sep 17 00:00:00 2001 From: John O Loughlin Date: Thu, 28 Jun 2018 16:01:00 +0100 Subject: 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 --- docker/ansible/collectd_service.yml | 6 ++ docker/ansible/roles/config_files/tasks/main.yml | 4 ++ .../roles/config_files/tasks/prometheus.yml | 21 +++++++ .../config_files/templates/prometheus.conf.j2 | 19 +++++++ docker/ansible/roles/config_files/vars/main.yml | 3 + docker/ansible/roles/run_prometheus/tasks/main.yml | 65 ++++++++++++++++++++++ .../roles/run_prometheus/templates/prometheus.yml | 9 +++ docker/ansible/roles/run_prometheus/vars/main.yml | 21 +++++++ 8 files changed, 148 insertions(+) create mode 100644 docker/ansible/roles/config_files/tasks/prometheus.yml create mode 100644 docker/ansible/roles/config_files/templates/prometheus.conf.j2 create mode 100644 docker/ansible/roles/run_prometheus/tasks/main.yml create mode 100644 docker/ansible/roles/run_prometheus/templates/prometheus.yml create mode 100644 docker/ansible/roles/run_prometheus/vars/main.yml (limited to 'docker') 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 + + + Port "{{ prometheus_port }}" + 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 -- cgit 1.2.3-korg