forked from ISTI-ansible-roles/ansible-roles
library/roles/ganglia/handlers/main.yml: Set a timeout for the restart handler.
library/roles/couchbase: Add support for a specific ganglia plugin.
This commit is contained in:
parent
c34cd379db
commit
565d53bb4a
|
@ -1,7 +1,10 @@
|
||||||
---
|
---
|
||||||
couchbase_install_packages: True
|
couchbase_install_packages: True
|
||||||
couchbase_start_server: True
|
couchbase_start_server: True
|
||||||
|
couchbase_repo_pkg: couchbase-release-1.0-2-amd64.deb
|
||||||
|
couchbase_repo_pkg_url: 'http://packages.couchbase.com/releases/couchbase-release/{{ couchbase_repo_pkg }}'
|
||||||
|
|
||||||
|
couchbase_default_host: localhost
|
||||||
couchbase_console_port: 8091
|
couchbase_console_port: 8091
|
||||||
couchbase_xdcr_port: 8092
|
couchbase_xdcr_port: 8092
|
||||||
couchbase_query_port: 8093
|
couchbase_query_port: 8093
|
||||||
|
@ -39,3 +42,6 @@ couchbase_allowed_hosts:
|
||||||
- '{{ network.nmis }}'
|
- '{{ network.nmis }}'
|
||||||
- '{{ ansible_default_ipv4.address }}/32'
|
- '{{ ansible_default_ipv4.address }}/32'
|
||||||
|
|
||||||
|
#couchbase_ganglia_url_username:
|
||||||
|
#couchbase_ganglia_url_password:
|
||||||
|
couchbase_monitored_buckets:
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
---
|
||||||
|
- name: Get the meta package for the couchbase repository
|
||||||
|
get_url: url={{ couchbase_repo_pkg_url }} dest=/root/{{ couchbase_repo_pkg }}
|
||||||
|
register: couchbase_repository
|
||||||
|
tags: couchbase
|
||||||
|
|
||||||
|
- name: Install the package source and the Couchbase public keys
|
||||||
|
shell: /usr/bin/dpkg -i /root/couchbase-release-1.0-2-amd64.deb
|
||||||
|
when: ( couchbase_repository | changed )
|
||||||
|
tags: couchbase
|
||||||
|
|
||||||
|
- name: Install the latest version of couchbase community server
|
||||||
|
apt: pkg={{ item }} state=latest update_cache=yes
|
||||||
|
with_items:
|
||||||
|
- couchbase-server-community
|
||||||
|
when:
|
||||||
|
- couchbase_install_packages
|
||||||
|
tags: couchbase
|
||||||
|
|
||||||
|
- name: Ensure couchbase is started and enabled
|
||||||
|
service: name=couchbase-server state=started enabled=yes
|
||||||
|
when: couchbase_start_server
|
||||||
|
tags: couchbase
|
||||||
|
|
||||||
|
- name: Ensure couchbase is stopped and disabled
|
||||||
|
service: name=couchbase-server state=stopped enabled=no
|
||||||
|
when: not couchbase_start_server
|
||||||
|
tags: couchbase
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
---
|
||||||
|
#
|
||||||
|
# The ganglia plugin comes from https://github.com/ganglia/gmond_python_modules
|
||||||
|
#
|
||||||
|
- name: Install the ganglia plugin for Couchbase. One instance per bucket
|
||||||
|
template: src=couchbase.py.j2 dest=/usr/lib/ganglia/python_modules/couchbase_{{ item }}.py owner=root group=ganglia mode=0440
|
||||||
|
with_items: '{{ couchbase_monitored_buckets }}'
|
||||||
|
notify: Restart ganglia monitor
|
||||||
|
tags: [ 'ganglia', 'couchbase' ]
|
||||||
|
|
||||||
|
- name: Distribute the ganglia (gmond) configuration for the Couchbase plugin
|
||||||
|
template: src=couchbase.pyconf.j2 dest=/etc/ganglia/conf.d/couchbase_{{ item }}.pyconf owner=root group=ganglia mode=0440
|
||||||
|
with_items: '{{ couchbase_monitored_buckets }}'
|
||||||
|
notify: Restart ganglia monitor
|
||||||
|
tags: [ 'ganglia', 'couchbase' ]
|
|
@ -1,29 +1,5 @@
|
||||||
---
|
---
|
||||||
- name: Get the meta package for the couchbase repository
|
- include: couchbase.yml
|
||||||
get_url: url=http://packages.couchbase.com/releases/couchbase-release/couchbase-release-1.0-2-amd64.deb dest=/root/couchbase-release-1.0-2-amd64.deb
|
- include: ganglia-plugin.yml
|
||||||
register: couchbase_repository
|
when: ganglia_enabled
|
||||||
tags: couchbase
|
|
||||||
|
|
||||||
- name: Install the package source and the Couchbase public keys
|
|
||||||
shell: /usr/bin/dpkg -i /root/couchbase-release-1.0-2-amd64.deb
|
|
||||||
when: ( couchbase_repository | changed )
|
|
||||||
tags: couchbase
|
|
||||||
|
|
||||||
- name: Install the latest version of couchbase community server
|
|
||||||
apt: pkg={{ item }} state=latest update_cache=yes
|
|
||||||
with_items:
|
|
||||||
- couchbase-server-community
|
|
||||||
when:
|
|
||||||
- couchbase_install_packages
|
|
||||||
tags: couchbase
|
|
||||||
|
|
||||||
- name: Ensure couchbase is started and enabled
|
|
||||||
service: name=couchbase-server state=started enabled=yes
|
|
||||||
when: couchbase_start_server
|
|
||||||
tags: couchbase
|
|
||||||
|
|
||||||
- name: Ensure couchbase is stopped and disabled
|
|
||||||
service: name=couchbase-server state=stopped enabled=no
|
|
||||||
when: not couchbase_start_server
|
|
||||||
tags: couchbase
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
import requests
|
||||||
|
import random
|
||||||
|
import json
|
||||||
|
|
||||||
|
HOST = "{{ couchbase_default_host }}"
|
||||||
|
PORT = "{{ couchbase_console_port }}"
|
||||||
|
BCKT = "{{ item }}"
|
||||||
|
USERNAME = "{{ couchbase_ganglia_url_username }}"
|
||||||
|
PASSWORD = "{{ couchbase_ganglia_url_password }}"
|
||||||
|
PREFIX = ""
|
||||||
|
|
||||||
|
def get_descriptor(name):
|
||||||
|
d = {'name': name,
|
||||||
|
'call_back': temp_handler,
|
||||||
|
'time_max': 90,
|
||||||
|
'value_type': 'uint',
|
||||||
|
'units': 'number',
|
||||||
|
'slope': 'both',
|
||||||
|
'format': '%d',
|
||||||
|
'description': '%s metric' %name,
|
||||||
|
'groups': 'cb bucket %s' %BCKT}
|
||||||
|
|
||||||
|
return d
|
||||||
|
|
||||||
|
def temp_handler(name):
|
||||||
|
global s
|
||||||
|
return int(s[name[len(PREFIX):]].pop())
|
||||||
|
|
||||||
|
|
||||||
|
def metric_init(params):
|
||||||
|
global s
|
||||||
|
descriptors = []
|
||||||
|
|
||||||
|
url = 'http://%s:%s/pools/default/buckets/%s/stats/' %(HOST, PORT, BCKT)
|
||||||
|
r = requests.get(url, auth=(USERNAME, PASSWORD))
|
||||||
|
j = json.loads(r.content)
|
||||||
|
s = j['op']['samples']
|
||||||
|
for i in s:
|
||||||
|
name = PREFIX + str(i)
|
||||||
|
d = get_descriptor(name)
|
||||||
|
descriptors.append(d)
|
||||||
|
return descriptors
|
||||||
|
|
||||||
|
|
||||||
|
def metric_cleanup():
|
||||||
|
'''Clean up the metric module.'''
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
dd = metric_init({})
|
||||||
|
for d in dd:
|
||||||
|
print (('%s = %s') % (d['name'], d['format'])) % (d['call_back'](d['name']))
|
||||||
|
|
|
@ -0,0 +1,171 @@
|
||||||
|
modules {
|
||||||
|
module {
|
||||||
|
name = "couchbase_{{ item }}"
|
||||||
|
language = "python"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
collection_group {
|
||||||
|
collect_every = 40
|
||||||
|
time_threshold = 50
|
||||||
|
metric {
|
||||||
|
name = "avg_disk_commit_time"
|
||||||
|
title = "{{ item }}_avg_disk_commit_time"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "avg_disk_update_time"
|
||||||
|
title = "{{ item }}_avg_disk_update_time"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "cas_hits"
|
||||||
|
title = "{{ item }}_cas_hits"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "cas_misses"
|
||||||
|
title = "{{ item }}_cas_misses"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "couch_docs_actual_disk_size"
|
||||||
|
title = "{{ item }}_couch_docs_actual_disk_size"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "couch_views_disk_size"
|
||||||
|
title = "{{ item }}_couch_views_disk_size"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "couch_views_ops"
|
||||||
|
title = "{{ item }}_couch_views_ops"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "cpu_idle_ms"
|
||||||
|
title = "{{ item }}_cpu_idle_ms"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "cpu_utilization_rate"
|
||||||
|
title = "{{ item }}_cpu_utilization_rate"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "curr_connections"
|
||||||
|
title = "{{ item }}_curr_connections"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "curr_items"
|
||||||
|
title = "{{ item }}_curr_items"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "curr_items_tot"
|
||||||
|
title = "{{ item }}_curr_items_tot"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "decr_hits"
|
||||||
|
title = "{{ item }}_decr_hits"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "decr_misses"
|
||||||
|
title = "{{ item }}_decr_misses"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "delete_hits"
|
||||||
|
title = "{{ item }}_delete_hits"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "delete_misses"
|
||||||
|
title = "{{ item }}_delete_misses"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "disk_commit_count"
|
||||||
|
title = "{{ item }}_disk_commit_count"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "disk_commit_total"
|
||||||
|
title = "{{ item }}_disk_commit_total"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "disk_update_count"
|
||||||
|
title = "{{ item }}_disk_update_count"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "disk_update_total"
|
||||||
|
title = "{{ item }}_disk_update_total"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "disk_write_queue"
|
||||||
|
title = "{{ item }}_disk_write_queue"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "evictions"
|
||||||
|
title = "{{ item }}_evictions"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "get_hits"
|
||||||
|
title = "{{ item }}_get_hits"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "get_misses"
|
||||||
|
title = "{{ item }}_get_misses"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "hibernated_requests"
|
||||||
|
title = "{{ item }}_hibernated_requests"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "hibernated_waked"
|
||||||
|
title = "{{ item }}_hibernated_waked"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "hit_ratio"
|
||||||
|
title = "{{ item }}_hit_ratio"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "incr_hits"
|
||||||
|
title = "{{ item }}_incr_hits"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "incr_misses"
|
||||||
|
title = "{{ item }}_incr_misses"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "mem_actual_free"
|
||||||
|
title = "{{ item }}_mem_actual_free"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "mem_actual_used"
|
||||||
|
title = "{{ item }}_mem_actual_used"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "mem_free"
|
||||||
|
title = "{{ item }}_mem_free"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "mem_total"
|
||||||
|
title = "{{ item }}_mem_total"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "mem_used"
|
||||||
|
title = "{{ item }}_mem_used"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "misses"
|
||||||
|
title = "{{ item }}_misses"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "ops"
|
||||||
|
title = "{{ item }}_ops"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "swap_total"
|
||||||
|
title = "{{ item }}_swap_total"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "swap_used"
|
||||||
|
title = "{{ item }}_swap_used"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "vb_total_queue_age"
|
||||||
|
title = "{{ item }}_vb_total_queue_age"
|
||||||
|
}
|
||||||
|
metric {
|
||||||
|
name = "xdc_ops"
|
||||||
|
title = "{{ item }}_xdc_ops"
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,2 +1,5 @@
|
||||||
|
---
|
||||||
- name: Restart ganglia monitor
|
- name: Restart ganglia monitor
|
||||||
service: name=ganglia-monitor state=restarted
|
service: name=ganglia-monitor state=restarted sleep=20
|
||||||
|
when: ganglia_enabled
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue