From 091dc9eb1cccfee25e0c6fda83c0477d69b54da3 Mon Sep 17 00:00:00 2001 From: Ralph Bean Date: Wed, 1 Oct 2014 19:20:12 +0000 Subject: [PATCH] Add a collectd/web-service role for monitoring site latency. --- roles/collectd/web-service/tasks/main.yml | 14 +++++++++ .../templates/web-service-collectd.py | 29 +++++++++++++++++++ .../web-service/templates/web-service.conf | 4 +++ 3 files changed, 47 insertions(+) create mode 100644 roles/collectd/web-service/tasks/main.yml create mode 100644 roles/collectd/web-service/templates/web-service-collectd.py create mode 100644 roles/collectd/web-service/templates/web-service.conf diff --git a/roles/collectd/web-service/tasks/main.yml b/roles/collectd/web-service/tasks/main.yml new file mode 100644 index 0000000000..a98edc42cb --- /dev/null +++ b/roles/collectd/web-service/tasks/main.yml @@ -0,0 +1,14 @@ +--- + +- name: Copy in /usr/local/bin/web-service-collectd + template: > + src=web-service-collectd.py + dest="/usr/local/bin/web-service-collectd-{{ site }}" + mode=0755 + notify: restart collectd + +- name: Copy in /etc/collectd.d/web-service.conf + template: > + src=web-service.conf + dest=/etc/collectd.d/{{ site }}.conf + notify: restart collectd diff --git a/roles/collectd/web-service/templates/web-service-collectd.py b/roles/collectd/web-service/templates/web-service-collectd.py new file mode 100644 index 0000000000..97d27f8b65 --- /dev/null +++ b/roles/collectd/web-service/templates/web-service-collectd.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python +""" monitor website request times for collectd """ + +import time +import urllib + + +hostname = socket.gethostname() # Use FQDN, I guess.. + + +def get_loadtime(url): + start = time.time() + _ = urllib.urlopen(url) + return time.time() - start + + +if __name__ == '__main__': + site = "{{ site }}" + url = "{{ url }}" + interval = int("{{ interval }}") + + try: + loadtime = get_loadtime(url) + timestamp = int(time.time()) + print "PUTVAL %s/%s/delay-%s interval=%i %i:%i" % ( + hostname, 'web', site, interval, timestamp, loadtime) + sleep(interval) + except KeyboardInterrupt: + pass diff --git a/roles/collectd/web-service/templates/web-service.conf b/roles/collectd/web-service/templates/web-service.conf new file mode 100644 index 0000000000..27b44eaa63 --- /dev/null +++ b/roles/collectd/web-service/templates/web-service.conf @@ -0,0 +1,4 @@ +LoadPlugin exec + + Exec "collectd" "/usr/local/bin/web-service-collectd-{{ site }}" +