ansible: add variable to select collectd container 89/67789/2
authorKamil Wiatrowski <kamilx.wiatrowski@intel.com>
Thu, 18 Apr 2019 11:33:39 +0000 (13:33 +0200)
committerKamil Wiatrowski <kamilx.wiatrowski@intel.com>
Wed, 8 May 2019 12:55:38 +0000 (14:55 +0200)
Add a variable to playbooks to select type of collectd container.
Container flavor can be stable, master or experimental.

Change-Id: Ie591ca3b7816210c377c5bffbb54117f8ee764aa
Signed-off-by: Kamil Wiatrowski <kamilx.wiatrowski@intel.com>
docker/ansible/default.inv
docker/ansible/roles/config_files/tasks/logparser.yml [new file with mode: 0644]
docker/ansible/roles/config_files/tasks/main.yml
docker/ansible/roles/config_files/tasks/snmp_agent.yml
docker/ansible/roles/config_files/templates/experimental/logparser.conf.j2 [new file with mode: 0644]
docker/ansible/roles/config_files/templates/master/snmp_agent.conf.j2 [new file with mode: 0644]
docker/ansible/roles/run_collectd/tasks/main.yml
docker/ansible/roles/run_collectd/vars/main.yml [new file with mode: 0644]

index 0f76e9c..fb36657 100644 (file)
@@ -13,6 +13,9 @@ localhost
 [collectd_hosts:vars]
 install_mcelog=true
 insert_ipmi_modules=true
+#to use master or experimental container set the collectd flavor below
+#possible values: stable|master|experimental
+flavor=stable
 
 [influxdb_hosts]
 #hostname or ip must be used.
diff --git a/docker/ansible/roles/config_files/tasks/logparser.yml b/docker/ansible/roles/config_files/tasks/logparser.yml
new file mode 100644 (file)
index 0000000..615d2e2
--- /dev/null
@@ -0,0 +1,23 @@
+#Copyright 2019 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 logparser plugin
+  template:
+    src: experimental/logparser.conf.j2
+    dest: "{{ config_file_dir }}/logparser.conf"
+  when: flavor|default('stable')|string == 'experimental'
+  tags:
+    - logparser
+
index 1bf6698..58cfec6 100644 (file)
@@ -50,6 +50,9 @@
 - name: enable logfile plugin
   import_tasks: logfile.yml
 
+- name: enable logparser plugin
+  import_tasks: logparser.yml
+
 - name: enable mcelog plugin
   import_tasks: mcelog.yml
 
index 603dc12..c72aee4 100644 (file)
@@ -1,4 +1,4 @@
-#Copyright 2018 OPNFV and Intel Corporation
+#Copyright 2018-2019 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.
   template:
     src: snmp_agent.conf.j2
     dest: "{{ config_file_dir }}/snmp_agent.conf"
+  when: flavor|default('stable')|string == 'stable'
+  tags:
+    - snmp
+
+- name: enable snmp agent for master container
+  template:
+    src: master/snmp_agent.conf.j2
+    dest: "{{ config_file_dir }}/snmp_agent.conf"
+  when: flavor|default('stable')|string != 'stable'
   tags:
     - snmp
diff --git a/docker/ansible/roles/config_files/templates/experimental/logparser.conf.j2 b/docker/ansible/roles/config_files/templates/experimental/logparser.conf.j2
new file mode 100644 (file)
index 0000000..3802768
--- /dev/null
@@ -0,0 +1,74 @@
+# Copyright 2019 OPNFV
+#
+# 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 logparser
+
+<Plugin logparser>
+  <Logfile "/var/log/syslog">
+    FirstFullRead false
+    <Message "pcie_errors">
+      DefaultType "pcie_error"
+      DefaultSeverity "warning"
+      <Match "aer error">
+        Regex "AER:.*error received"
+        SubmatchIdx -1
+      </Match>
+      <Match "incident time">
+        Regex "(... .. ..:..:..) .* pcieport.*AER"
+        SubmatchIdx 1
+        IsMandatory false
+      </Match>
+      <Match "root port">
+        Regex "pcieport (.*): AER:"
+        SubmatchIdx 1
+        IsMandatory true
+      </Match>
+      <Match "device">
+        PluginInstance true
+        Regex " ([0-9a-fA-F:\\.]*): PCIe Bus Error"
+        SubmatchIdx 1
+        IsMandatory false
+      </Match>
+      <Match "severity_mandatory">
+        Regex "severity="
+        SubMatchIdx -1
+      </Match>
+      <Match "nonfatal">
+        Regex "severity=.*\\([nN]on-[fF]atal"
+        TypeInstance "non_fatal"
+        IsMandatory false
+      </Match>
+      <Match "fatal">
+        Regex "severity=.*\\([fF]atal"
+        Severity "failure"
+        TypeInstance "fatal"
+        IsMandatory false
+      </Match>
+      <Match "corrected">
+        Regex "severity=Corrected"
+        TypeInstance "correctable"
+        IsMandatory false
+      </Match>
+      <Match "error type">
+        Regex "type=(.*),"
+        SubmatchIdx 1
+        IsMandatory false
+      </Match>
+     <Match "id">
+        Regex ", id=(.*)"
+        SubmatchIdx 1
+      </Match>
+    </Message>
+  </Logfile>
+</Plugin>
diff --git a/docker/ansible/roles/config_files/templates/master/snmp_agent.conf.j2 b/docker/ansible/roles/config_files/templates/master/snmp_agent.conf.j2
new file mode 100644 (file)
index 0000000..97a4ce4
--- /dev/null
@@ -0,0 +1,397 @@
+# Copyright 2019 OPNFV
+#
+# 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 snmp_agent
+
+<Plugin snmp_agent>
+# Intel PMU MIB
+  <Table "pmuTable">
+    IndexOID "INTEL-PMU-MIB::pmuGroupIndex"
+    <Data "pmuGroupDescr">
+      <IndexKey>
+        Source "PluginInstance"
+      </IndexKey>
+      Plugin "intel_pmu"
+      OIDs "INTEL-PMU-MIB::pmuGroupDescr"
+    </Data>
+    <Data "pmuL1DCacheLoads">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "L1-dcache-loads"
+      OIDs "INTEL-PMU-MIB::pmuL1DCacheLoads"
+    </Data>
+    <Data "pmuL1DCacheLoadMisses">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "L1-dcache-load-misses"
+      OIDs "INTEL-PMU-MIB::pmuL1DCacheLoadMisses"
+    </Data>
+    <Data "pmuL1DCacheStores">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "L1-dcache-stores"
+      OIDs "INTEL-PMU-MIB::pmuL1DCacheStores"
+    </Data>
+    <Data "pmuL1DCacheStoreMisses">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "L1-dcache-store-misses"
+      OIDs "INTEL-PMU-MIB::pmuL1DCacheStoreMisses"
+    </Data>
+    <Data "pmuL1DCachePrefetches">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "L1-dcache-prefetches"
+      OIDs "INTEL-PMU-MIB::pmuL1DCachePrefetches"
+    </Data>
+    <Data "pmuL1DCachePrefetchMisses">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "L1-dcache-prefetch-misses"
+      OIDs "INTEL-PMU-MIB::pmuL1DCachePrefetchMisses"
+    </Data>
+    <Data "pmuL1ICacheLoads">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "L1-icache-loads"
+      OIDs "INTEL-PMU-MIB::pmuL1ICacheLoads"
+    </Data>
+    <Data "pmuL1ICacheLoadMisses">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "L1-icache-load-misses"
+      OIDs "INTEL-PMU-MIB::pmuL1ICacheLoadMisses"
+    </Data>
+    <Data "pmuL1ICachePrefetches">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "L1-icache-prefetches"
+      OIDs "INTEL-PMU-MIB::pmuL1ICachePrefetches"
+    </Data>
+    <Data "pmuL1ICachePrefetchMisses">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "L1-icache-prefetch-misses"
+      OIDs "INTEL-PMU-MIB::pmuL1ICachePrefetchMisses"
+    </Data>
+    <Data "pmuLLCLoads">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "LLC-loads"
+      OIDs "INTEL-PMU-MIB::pmuLLCLoads"
+    </Data>
+    <Data "pmuLLCLoadMisses">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "LLC-load-misses"
+      OIDs "INTEL-PMU-MIB::pmuLLCLoadMisses"
+    </Data>
+    <Data "pmuLLCStores">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "LLC-stores"
+      OIDs "INTEL-PMU-MIB::pmuLLCStores"
+    </Data>
+    <Data "pmuLLCStoreMisses">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "LLC-store-misses"
+      OIDs "INTEL-PMU-MIB::pmuLLCStoreMisses"
+    </Data>
+    <Data "pmuLLCPrefetches">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "LLC-prefetches"
+      OIDs "INTEL-PMU-MIB::pmuLLCPrefetches"
+    </Data>
+    <Data "pmuLLCPrefetchMisses">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "LLC-prefetch-misses"
+      OIDs "INTEL-PMU-MIB::pmuLLCPrefetchMisses"
+    </Data>
+    <Data "pmuDTLBLoads">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "dTLB-loads"
+      OIDs "INTEL-PMU-MIB::pmuDTLBLoads"
+    </Data>
+    <Data "pmuDTLBLoadMisses">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "dTLB-load-misses"
+      OIDs "INTEL-PMU-MIB::pmuDTLBLoadMisses"
+    </Data>
+    <Data "pmuDTLBStores">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "dTLB-stores"
+      OIDs "INTEL-PMU-MIB::pmuDTLBStores"
+    </Data>
+    <Data "pmuDTLBStoreMisses">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "dTLB-store-misses"
+      OIDs "INTEL-PMU-MIB::pmuDTLBStoreMisses"
+    </Data>
+    <Data "pmuDTLBPrefetches">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "dTLB-prefetches"
+      OIDs "INTEL-PMU-MIB::pmuDTLBPrefetches"
+    </Data>
+    <Data "pmuDTLBPrefetchMisses">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "dTLB-prefetch-misses"
+      OIDs "INTEL-PMU-MIB::pmuDTLBPrefetchMisses"
+    </Data>
+    <Data "pmuITLBLoads">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "iTLB-loads"
+      OIDs "INTEL-PMU-MIB::pmuITLBLoads"
+    </Data>
+    <Data "pmuITLBLoadMisses">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "iTLB-load-misses"
+      OIDs "INTEL-PMU-MIB::pmuITLBLoadMisses"
+    </Data>
+    <Data "pmuBranchLoads">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "branch-loads"
+      OIDs "INTEL-PMU-MIB::pmuBranchLoads"
+    </Data>
+    <Data "pmuBranchLoadMisses">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "branch-load-misses"
+      OIDs "INTEL-PMU-MIB::pmuBranchLoadMisses"
+    </Data>
+    <Data "pmuCpuCycles">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "cpu-cycles"
+      OIDs "INTEL-PMU-MIB::pmuCpuCycles"
+    </Data>
+    <Data "pmuInstructions">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "instructions"
+      OIDs "INTEL-PMU-MIB::pmuInstructions"
+    </Data>
+    <Data "pmuCacheReferences">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "cache-references"
+      OIDs "INTEL-PMU-MIB::pmuCacheReferences"
+    </Data>
+    <Data "pmuCacheMisses">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "cache-misses"
+      OIDs "INTEL-PMU-MIB::pmuCacheMisses"
+    </Data>
+    <Data "pmuBranches">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "branches"
+      OIDs "INTEL-PMU-MIB::pmuBranches"
+    </Data>
+    <Data "pmuBranchMisses">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "branch-misses"
+      OIDs "INTEL-PMU-MIB::pmuBranchMisses"
+    </Data>
+    <Data "pmuBusCycles">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "bus-cycles"
+      OIDs "INTEL-PMU-MIB::pmuBusCycles"
+    </Data>
+    <Data "pmuCpuClock">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "cpu-clock"
+      OIDs "INTEL-PMU-MIB::pmuCpuClock"
+    </Data>
+    <Data "pmuTaskClock">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "task-clock"
+      OIDs "INTEL-PMU-MIB::pmuTaskClock"
+    </Data>
+    <Data "pmuContextSwitches">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "context-switches"
+      OIDs "INTEL-PMU-MIB::pmuContextSwitches"
+    </Data>
+    <Data "pmuCpuMigrations">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "cpu-migrations"
+      OIDs "INTEL-PMU-MIB::pmuCpuMigrations"
+    </Data>
+    <Data "pmuPageFaults">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "page-faults"
+      OIDs "INTEL-PMU-MIB::pmuPageFaults"
+    </Data>
+    <Data "pmuMinorFaults">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "minor-faults"
+      OIDs "INTEL-PMU-MIB::pmuMinorFaults"
+    </Data>
+    <Data "pmuMajorFaults">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "major-faults"
+      OIDs "INTEL-PMU-MIB::pmuMajorFaults"
+    </Data>
+    <Data "pmuAlignmentFaults">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "alignment-faults"
+      OIDs "INTEL-PMU-MIB::pmuAlignmentFaults"
+    </Data>
+    <Data "pmuEmulationFaults">
+      Plugin "intel_pmu"
+      Type "counter"
+      TypeInstance "emulation-faults"
+      OIDs "INTEL-PMU-MIB::pmuEmulationFaults"
+    </Data>
+  </Table>
+# Intel RDT MIB
+  <Table "rdtTable">
+    IndexOID "INTEL-RDT-MIB::rdtGroupIndex"
+    SizeOID "INTEL-RDT-MIB::rdtGroupNumber"
+    <Data "rdtGroupDescr">
+      <IndexKey>
+        Source "PluginInstance"
+      </IndexKey>
+      Plugin "intel_rdt"
+      OIDs "INTEL-RDT-MIB::rdtGroupDescr"
+    </Data>
+    <Data "rdtLlc">
+      Plugin "intel_rdt"
+      Type "bytes"
+      TypeInstance "llc"
+      OIDs "INTEL-RDT-MIB::rdtLlc"
+    </Data>
+    <Data "rdtIpc">
+      Plugin "intel_rdt"
+      Type "ipc"
+      OIDs "INTEL-RDT-MIB::rdtIpc"
+    </Data>
+    <Data "rdtMbmRemote">
+      Plugin "intel_rdt"
+      Type "memory_bandwidth"
+      TypeInstance "remote"
+      OIDs "INTEL-RDT-MIB::rdtMbmRemote"
+    </Data>
+    <Data "rdtMbmLocal">
+      Plugin "intel_rdt"
+      Type "memory_bandwidth"
+      TypeInstance "local"
+      OIDs "INTEL-RDT-MIB::rdtMbmLocal"
+    </Data>
+  </Table>
+# Intel Mcelog MIB
+  <Table "mcelogTable">
+    IndexOID "INTEL-MCELOG-MIB::memoryGroupIndex"
+    <Data "memoryGroupDescr">
+      <IndexKey>
+        Source "PluginInstance"
+      </IndexKey>
+      Plugin "mcelog"
+      OIDs "INTEL-MCELOG-MIB::memoryGroupDescr"
+    </Data>
+    <Data "memoryCorrectedErrors">
+      Plugin "mcelog"
+      Type "errors"
+      TypeInstance "corrected_memory_errors"
+      OIDs "INTEL-MCELOG-MIB::memoryCorrectedErrors"
+    </Data>
+    <Data "memoryCorrectedTimedErrors">
+      Plugin "mcelog"
+      Type "errors"
+      TypeInstance "corrected_memory_errors_in_24h"
+      OIDs "INTEL-MCELOG-MIB::memoryCorrectedTimedErrors"
+    </Data>
+    <Data "memoryUncorrectedErrors">
+      Plugin "mcelog"
+      Type "errors"
+      TypeInstance "uncorrected_memory_errors"
+      OIDs "INTEL-MCELOG-MIB::memoryUncorrectedErrors"
+    </Data>
+    <Data "memoryUncorrectedTimedErrors">
+      Plugin "mcelog"
+      Type "errors"
+      TypeInstance "uncorrected_memory_errors_in_24h"
+      OIDs "INTEL-MCELOG-MIB::memoryUncorrectedTimedErrors"
+    </Data>
+  </Table>
+# Hugepages
+  <Table "hugepagesTable">
+    <Data "hugepagesNode">
+      <IndexKey>
+        Source "PluginInstance"
+      </IndexKey>
+      Plugin "hugepages"
+      OIDs "INTEL-HUGEPAGES-MIB::hugepagesNode"
+    </Data>
+    <Data "hugepagesMemoryFree">
+      Plugin "hugepages"
+      Type "memory"
+      TypeInstance "free"
+      OIDs "INTEL-HUGEPAGES-MIB::hugepagesMemoryFree"
+    </Data>
+    <Data "hugepagesMemoryUsed">
+      Plugin "hugepages"
+      Type "memory"
+      TypeInstance "used"
+      OIDs "INTEL-HUGEPAGES-MIB::hugepagesMemoryUsed"
+    </Data>
+    <Data "hugepagesPagesFree">
+      Plugin "hugepages"
+      Type "vmpage_number"
+      TypeInstance "free"
+      OIDs "INTEL-HUGEPAGES-MIB::hugepagesPagesFree"
+    </Data>
+    <Data "hugepagesPagesUsed">
+      Plugin "hugepages"
+      Type "vmpage_number"
+      TypeInstance "used"
+      OIDs "INTEL-HUGEPAGES-MIB::hugepagesPagesUsed"
+    </Data>
+    <Data "hugepagesPercentFree">
+      Plugin "hugepages"
+      Type "percent"
+      TypeInstance "free"
+      OIDs "INTEL-HUGEPAGES-MIB::hugepagesPercentFree"
+    </Data>
+    <Data "hugepagesPercentUsed">
+      Plugin "hugepages"
+      Type "percent"
+      TypeInstance "used"
+      OIDs "INTEL-HUGEPAGES-MIB::hugepagesPercentUsed"
+    </Data>
+  </Table>
+</Plugin>
index c77aad5..744c7a7 100644 (file)
@@ -1,4 +1,4 @@
-#Copyright 2018 OPNFV and Intel Corporation
+#Copyright 2018-2019 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.
@@ -24,7 +24,7 @@
 
 - name: Remove bar-collectd image
   docker_image:
-    name: opnfv/barometer-collectd
+    name: "{{ collectd_image_name }}"
     state: absent
   tags:
     - rm_images
@@ -34,7 +34,7 @@
 - name: launch collectd container
   docker_container:
     name: bar-collectd
-    image: opnfv/barometer-collectd
+    image: "{{ collectd_image_name }}"
     volumes:
        - /opt/collectd/etc/collectd.conf.d/:/opt/collectd/etc/collectd.conf.d
        - /var/run:/var/run
diff --git a/docker/ansible/roles/run_collectd/vars/main.yml b/docker/ansible/roles/run_collectd/vars/main.yml
new file mode 100644 (file)
index 0000000..cebd0f4
--- /dev/null
@@ -0,0 +1,21 @@
+#Copyright 2019 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.
+---
+
+default_flavor: "{{ flavor|default('stable')|string }}"
+flavor_image_name: "{{
+         'barometer-collectd-master' if (default_flavor == 'master') else
+         'barometer-collectd-experimental' if (default_flavor == 'experimental')
+         else 'barometer-collectd' }}"
+collectd_image_name: "{{ 'opnfv/' + flavor_image_name }}"