From 270a4ed4b9c836df526a1e7890743e0c7bba53c2 Mon Sep 17 00:00:00 2001 From: Joe Talerico Date: Tue, 8 Mar 2016 12:45:36 -0500 Subject: [PATCH] Move collectd Collectd can be used for more than just OpenStack. To make things more generic, we are moving to collectd-openstack for OSP collectd. As well as collectd-generic for things that are not OpenStack specific. + (akrzos) nit picking some whitespace and simplifing the generic collectd config. Change-Id: I6e7364e7af24507b5568469e247088ecae85a7fe --- ansible/install/collectd-generic.yml | 10 +++ .../{collectd.yml => collectd-openstack.yml} | 8 +- .../files/custom-collectd.pp | Bin .../roles/collectd-generic/tasks/main.yml | 85 ++++++++++++++++++ .../templates/collectd.conf.j2 | 85 ++++++++++++++++++ .../files/collectd-redis.sh | 0 .../files/custom-collectd.pp | Bin 0 -> 1410 bytes .../tasks/main.yml | 3 +- .../templates/collectd.conf.j2 | 0 .../roles/collectd/files/collectd-rabbitmq | 1 - 10 files changed, 186 insertions(+), 6 deletions(-) create mode 100644 ansible/install/collectd-generic.yml rename ansible/install/{collectd.yml => collectd-openstack.yml} (83%) rename ansible/install/roles/{collectd => collectd-generic}/files/custom-collectd.pp (100%) create mode 100644 ansible/install/roles/collectd-generic/tasks/main.yml create mode 100644 ansible/install/roles/collectd-generic/templates/collectd.conf.j2 rename ansible/install/roles/{collectd => collectd-openstack}/files/collectd-redis.sh (100%) create mode 100644 ansible/install/roles/collectd-openstack/files/custom-collectd.pp rename ansible/install/roles/{collectd => collectd-openstack}/tasks/main.yml (97%) rename ansible/install/roles/{collectd => collectd-openstack}/templates/collectd.conf.j2 (100%) delete mode 160000 ansible/install/roles/collectd/files/collectd-rabbitmq diff --git a/ansible/install/collectd-generic.yml b/ansible/install/collectd-generic.yml new file mode 100644 index 000000000..421e7b3da --- /dev/null +++ b/ansible/install/collectd-generic.yml @@ -0,0 +1,10 @@ +--- +# +# Generic Playbook to install collectd on generic machines +# + +- hosts: nodes + remote_user: root + roles: + - common + - collectd-generic diff --git a/ansible/install/collectd.yml b/ansible/install/collectd-openstack.yml similarity index 83% rename from ansible/install/collectd.yml rename to ansible/install/collectd-openstack.yml index 86efd5153..02ee71d60 100644 --- a/ansible/install/collectd.yml +++ b/ansible/install/collectd-openstack.yml @@ -7,7 +7,7 @@ remote_user: "{{ local_remote_user }}" roles: - { role: common, when: collectd_undercloud } - - { role: collectd, when: collectd_undercloud } + - { role: collectd-openstack, when: collectd_undercloud } tasks: - name: Collectd off if not collectd_undercloud service: name=collectd state=stopped enabled=false @@ -18,7 +18,7 @@ remote_user: "{{ host_remote_user }}" roles: - { role: common, when: collectd_controller } - - { role: collectd, when: collectd_controller } + - { role: collectd-openstack, when: collectd_controller } tasks: - name: Collectd off if not collectd_controller service: name=collectd state=stopped enabled=false @@ -29,7 +29,7 @@ remote_user: "{{ host_remote_user }}" roles: - { role: common, when: collectd_ceph } - - { role: collectd, when: collectd_ceph } + - { role: collectd-openstack, when: collectd_ceph } tasks: - name: Collectd off if not collectd_ceph service: name=collectd state=stopped enabled=false @@ -40,7 +40,7 @@ remote_user: "{{ host_remote_user }}" roles: - { role: common, when: collectd_compute } - - { role: collectd, when: collectd_compute } + - { role: collectd-openstack, when: collectd_compute } tasks: - name: Collectd off if not collectd_compute service: name=collectd state=stopped enabled=false diff --git a/ansible/install/roles/collectd/files/custom-collectd.pp b/ansible/install/roles/collectd-generic/files/custom-collectd.pp similarity index 100% rename from ansible/install/roles/collectd/files/custom-collectd.pp rename to ansible/install/roles/collectd-generic/files/custom-collectd.pp diff --git a/ansible/install/roles/collectd-generic/tasks/main.yml b/ansible/install/roles/collectd-generic/tasks/main.yml new file mode 100644 index 000000000..28da31194 --- /dev/null +++ b/ansible/install/roles/collectd-generic/tasks/main.yml @@ -0,0 +1,85 @@ +--- +# +# Install/run collectd for browbeat +# + +- name: Check for epel + shell: rpm -qa | grep -q epel-release + ignore_errors: true + register: epel_installed + +- name: Install epel repo + command: rpm -ivh {{ epel_repo }} + become: true + when: epel_installed.rc != 0 + +- name: Install collectd rpms + yum: name={{ item }} state=present + become: true + with_items: + - collectd + - collectd-turbostat + +- name: Configure collectd.conf + template: + src=collectd.conf.j2 + dest=/etc/collectd.conf + owner=root + group=root + mode=0644 + become: true + with_items: + - interval: "{{ collectd_interval }}" + ip_address: "{{ graphite_host }}" + prefix: "{{ graphite_prefix }}" + +# +# Configure selinux bits +# +- name: Check for collectd permissive + shell: semodule -l | grep -q permissive_collectd_t + become: true + register: collectd_permissive + ignore_errors: true + changed_when: false + +- name: Set permissive for collectd + shell: semanage permissive -a collectd_t + become: true + when: collectd_permissive.rc != 0 + +# +# Additional policy bits may be needed for exec +# +- name: Collectd policy customization + copy: + src=custom-collectd.pp + dest=/root/custom-collectd.pp + owner=root + group=root + mode=644 + become: true + +- name: Check for collectd custom + shell: semodule -l | grep -q custom-collectd + become: true + register: collectd_custom + ignore_errors: true + changed_when: false + +- name: Set custom policy for collectd + shell: semodule -i /root/custom-collectd.pp + become: true + when: collectd_custom.rc != 0 + +# +# Start collectd service +# +- name: Setup collectd service + service: name=collectd state=restarted enabled=true + become: true + +- name: Disable EPEL + shell: rpm -e epel-release + ignore_errors: true + become: true diff --git a/ansible/install/roles/collectd-generic/templates/collectd.conf.j2 b/ansible/install/roles/collectd-generic/templates/collectd.conf.j2 new file mode 100644 index 000000000..63bbd3950 --- /dev/null +++ b/ansible/install/roles/collectd-generic/templates/collectd.conf.j2 @@ -0,0 +1,85 @@ +# Installed by Browbeat Ansible Installer + +# Interval default is 10s +Interval {{ item.interval }} + +# Hostname for this machine, if not defined, use gethostname(2) system call +Hostname "{{inventory_hostname}}" + +# Allow collectd to log +LoadPlugin syslog + +# Loaded Plugins: +LoadPlugin write_graphite +LoadPlugin cpu +LoadPlugin df +LoadPlugin disk +LoadPlugin interface +LoadPlugin irq +LoadPlugin load +LoadPlugin match_regex +LoadPlugin memory +LoadPlugin numa +LoadPlugin processes +LoadPlugin swap +LoadPlugin turbostat +LoadPlugin uptime + +PreCacheChain "PreCache" + + + + Plugin "^interface$" + PluginInstance "^tap*" + + Target "stop" + + + + Plugin "^interface$" + PluginInstance "^q.*" + + Target "stop" + + Target "return" + + +# Graphite Host Configuration + + + Host "{{ item.ip_address }}" + Port "2003" + Prefix "{{ item.prefix }}." + Protocol "tcp" + LogSendErrors true + StoreRates true + AlwaysAppendDS false + EscapeCharacter "_" + + + + + ValuesPercentage true + + + + Disk "/^[hsv]d[a-z]+[0-9]?$/" + IgnoreSelected false + + + + # Example, collect on all httpd processes: + Process "httpd" + + # Collect on collectd process + ProcessMatch "collectd" "/usr/sbin/collectd.+-C.+/etc/collectd.conf" + + + + ReportBytes true + ValuesPercentage true + + + +# Include other collectd configuration files +Include "/etc/collectd.d" diff --git a/ansible/install/roles/collectd/files/collectd-redis.sh b/ansible/install/roles/collectd-openstack/files/collectd-redis.sh similarity index 100% rename from ansible/install/roles/collectd/files/collectd-redis.sh rename to ansible/install/roles/collectd-openstack/files/collectd-redis.sh diff --git a/ansible/install/roles/collectd-openstack/files/custom-collectd.pp b/ansible/install/roles/collectd-openstack/files/custom-collectd.pp new file mode 100644 index 0000000000000000000000000000000000000000..9b8fe86e9d3888acf548ebacb9d60b57eac0606a GIT binary patch literal 1410 zcmb`HT}s116ou;_iU{fsx&cLZFfYF8lM5Kybi`X`0G=X+v0-$AW6RYJ_Rux6a z;^M$kx7Rn$%r@wNoc09`#e$fvd{bqwA)Z-8wwx`4&#JPt&WBJ8>VgGNc@d7y!Vl|^ zwJ~rD%6;g|%Ex+EHX6wBHME+)SaV-H%Lz`7+0<7$&2cP5N7f9u4%MR$i@foxs*b+9 z9?y(%o99pzp40nyWITS;G44DsedHJA!eb=893PGJE7SoiXgsm&MRleE*XcnKBjV}p zkxN0H9{({zvs^mBeDbMKcD?8s&H!Ae2StpCr!Sve3hML_FRi&Gz(>U6-oSNwqwo=N z*fQWcy-|Ph_l*h