Adding support for prometheus using ansible 09/59209/13
authorJohn O Loughlin <john.oloughlin@intel.com>
Thu, 28 Jun 2018 15:01:00 +0000 (16:01 +0100)
committerJohn O'Loughlin <john.oloughlin@intel.com>
Wed, 3 Oct 2018 13:36:06 +0000 (13:36 +0000)
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>
docker/ansible/collectd_service.yml
docker/ansible/roles/config_files/tasks/main.yml
docker/ansible/roles/config_files/tasks/prometheus.yml [new file with mode: 0644]
docker/ansible/roles/config_files/templates/prometheus.conf.j2 [new file with mode: 0644]
docker/ansible/roles/config_files/vars/main.yml
docker/ansible/roles/run_prometheus/tasks/main.yml [new file with mode: 0644]
docker/ansible/roles/run_prometheus/templates/prometheus.yml [new file with mode: 0644]
docker/ansible/roles/run_prometheus/vars/main.yml [new file with mode: 0644]
docs/release/userguide/docker.userguide.rst

index 965ec8e..7022cc8 100644 (file)
@@ -38,3 +38,9 @@
   become_user: root
   roles:
       - run_grafana
+
+- hosts: prometheus_hosts
+  become: true
+  become_user: root
+  roles:
+      - run_prometheus
index 4bf81f8..9ba9cbb 100644 (file)
 - 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 (file)
index 0000000..51f2b1f
--- /dev/null
@@ -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 (file)
index 0000000..bb94786
--- /dev/null
@@ -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>
index bfa0fd6..461bfc3 100644 (file)
@@ -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 (file)
index 0000000..940852e
--- /dev/null
@@ -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 (file)
index 0000000..7c6afa8
--- /dev/null
@@ -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 (file)
index 0000000..acf4d2d
--- /dev/null
@@ -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
index 258d122..7582e67 100644 (file)
@@ -147,6 +147,9 @@ Edit inventory file and add hosts: ~/default.inv
     [grafana_hosts]
     localhost
 
+    [prometheus_hosts]
+    #localhost
+
     [kafka_hosts]
     #localhost