59 lines
1.7 KiB
Python
59 lines
1.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
import copy
|
|
|
|
|
|
__author__ = "Mike Belov"
|
|
__copyright__ = "Copyright (C) Nginx, Inc. All rights reserved."
|
|
__license__ = ""
|
|
__maintainer__ = "Mike Belov"
|
|
__email__ = "dedm@nginx.com"
|
|
|
|
|
|
def collect_pages(collector, data, stamp):
|
|
pages = data['pages']
|
|
used, free = pages['used'], pages['free']
|
|
total = used + free
|
|
pct_used = int(round(float(free)/float(total) * 100))
|
|
|
|
collector.object.statsd.gauge('plus.slab.pages.used', used, stamp=stamp)
|
|
collector.object.statsd.gauge('plus.slab.pages.free', free, stamp=stamp)
|
|
collector.object.statsd.gauge('plus.slab.pages.total', total, stamp=stamp)
|
|
collector.object.statsd.gauge('plus.slab.pages.pct_used', pct_used, stamp=stamp)
|
|
|
|
|
|
def collect_slots(collector, data, stamp):
|
|
used, free = data['pages']['used'], data['pages']['free']
|
|
total = used + free
|
|
pct_used = int(round(float(free) / float(total) * 100))
|
|
|
|
collector.object.statsd.gauge(
|
|
'plus.slab' + '.used', used, stamp=stamp
|
|
)
|
|
collector.object.statsd.gauge(
|
|
'plus.slab' + '.free', free, stamp=stamp
|
|
)
|
|
collector.object.statsd.gauge(
|
|
'plus.slab' + '.total', total, stamp=stamp
|
|
)
|
|
collector.object.statsd.gauge(
|
|
'plus.slab' + '.pct_used', pct_used, stamp=stamp
|
|
)
|
|
|
|
for slot, slot_data in data['slots'].items():
|
|
# pre-format metric name
|
|
slot_base = 'plus.slab.%s' % slot
|
|
|
|
counted_vars = {
|
|
slot_base + '.requests': slot_data['reqs'],
|
|
slot_base + '.fails': slot_data['reqs']
|
|
}
|
|
collector.aggregate_counters(
|
|
copy.deepcopy(counted_vars), stamp=stamp
|
|
)
|
|
|
|
|
|
SLAB_COLLECT_INDEX = [
|
|
collect_pages,
|
|
collect_slots
|
|
]
|