From e258bae72737bbfc01956de1b890849e12ca1835 Mon Sep 17 00:00:00 2001 From: Ralph Bean Date: Thu, 29 May 2014 16:36:43 +0000 Subject: [PATCH] Collectd+postgres for db-datanommer01 --- .../db-datanommer01.phx2.fedoraproject.org | 5 +++++ playbooks/groups/postgresl-server.yml | 3 ++- roles/collectd/postgres/tasks/main.yml | 14 ++++++++++++ .../postgres/templates/collectd-postgres.sh | 22 +++++++++++++++++++ .../collectd/postgres/templates/postgres.conf | 3 +++ 5 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 roles/collectd/postgres/tasks/main.yml create mode 100644 roles/collectd/postgres/templates/collectd-postgres.sh create mode 100644 roles/collectd/postgres/templates/postgres.conf diff --git a/inventory/host_vars/db-datanommer01.phx2.fedoraproject.org b/inventory/host_vars/db-datanommer01.phx2.fedoraproject.org index 0bd76efa6e..5f02aeefbe 100644 --- a/inventory/host_vars/db-datanommer01.phx2.fedoraproject.org +++ b/inventory/host_vars/db-datanommer01.phx2.fedoraproject.org @@ -9,6 +9,11 @@ eth0_ip: 10.5.126.109 vmhost: virthost14.phx2.fedoraproject.org datacenter: phx2 +# This is a generic list, monitored by collectd +databases: +- datanommer + +# This is a more strict list, to be made publicly available dbs_to_backup: - datanommer diff --git a/playbooks/groups/postgresl-server.yml b/playbooks/groups/postgresl-server.yml index 9720d6a5b9..cf958d3152 100644 --- a/playbooks/groups/postgresl-server.yml +++ b/playbooks/groups/postgresl-server.yml @@ -38,8 +38,9 @@ - denyhosts - nagios_client - fas_client - - collectd/base - postgresql_server + - collectd/base + - collectd/postgres # This requires a 'databases' var to be set in host_vars tasks: - include: "{{ tasks }}/hosts.yml" diff --git a/roles/collectd/postgres/tasks/main.yml b/roles/collectd/postgres/tasks/main.yml new file mode 100644 index 0000000000..9a6ac2b3bf --- /dev/null +++ b/roles/collectd/postgres/tasks/main.yml @@ -0,0 +1,14 @@ +--- + +- name: Copy in /usr/local/bin/collectd-postgres.sh + template: > + src=collectd-postgres.sh + dest=/usr/local/bin/collectd-postgres.sh + mode=0755 + notify: restart collectd + +- name: Copy in /etc/collectd.d/postgres.conf + template: > + src=postgres.conf + dest=/etc/collectd.d/postgres.conf + notify: restart collectd diff --git a/roles/collectd/postgres/templates/collectd-postgres.sh b/roles/collectd/postgres/templates/collectd-postgres.sh new file mode 100644 index 0000000000..8890a8b45f --- /dev/null +++ b/roles/collectd/postgres/templates/collectd-postgres.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +pause=10 +host=$( hostname -s ) + +while getopts "h:p:s:" c; do + case $c in + h) host=$OPTARG;; + p) pause=$OPTARG;; + *) echo "Usage: /bin/bash [-h ] [-p ]";; + esac +done + + + while [ $? -eq 0 ] ; do + time="$(date +%s)" + for db in {{ databases.join(' ') }} + do + echo "PUTVAL $host/pg_conns/pg_conns-$db $time:$(ps auxwww | grep -c $db)" + done + sleep $pause + done diff --git a/roles/collectd/postgres/templates/postgres.conf b/roles/collectd/postgres/templates/postgres.conf new file mode 100644 index 0000000000..5d53877265 --- /dev/null +++ b/roles/collectd/postgres/templates/postgres.conf @@ -0,0 +1,3 @@ + + Exec "nobody" "/usr/local/bin/collectd_postgres.sh" "-h" "{{ ansible_hostname }}" "-p" "10" +