Add a collectd/web-service role for monitoring site latency.
This commit is contained in:
parent
2e3ebf1ab4
commit
091dc9eb1c
3 changed files with 47 additions and 0 deletions
14
roles/collectd/web-service/tasks/main.yml
Normal file
14
roles/collectd/web-service/tasks/main.yml
Normal file
|
@ -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
|
29
roles/collectd/web-service/templates/web-service-collectd.py
Normal file
29
roles/collectd/web-service/templates/web-service-collectd.py
Normal file
|
@ -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
|
4
roles/collectd/web-service/templates/web-service.conf
Normal file
4
roles/collectd/web-service/templates/web-service.conf
Normal file
|
@ -0,0 +1,4 @@
|
|||
LoadPlugin exec
|
||||
<Plugin exec>
|
||||
Exec "collectd" "/usr/local/bin/web-service-collectd-{{ site }}"
|
||||
</Plugin>
|
Loading…
Add table
Add a link
Reference in a new issue