nginx-amplify-agent/amplify/agent/collectors/plus/util/api/http_cache.py

55 lines
1.4 KiB
Python

# -*- coding: utf-8 -*-
import copy
__author__ = "Grant Hulegaard"
__copyright__ = "Copyright (C) Nginx, Inc. All rights reserved."
__license__ = ""
__maintainer__ = "Grant Hulegaard"
__email__ = "grant.hulegaard@nginx.com"
def collect_cache_size(collector, data, stamp):
collector.object.statsd.gauge('plus.cache.size', data['size'], stamp=stamp)
if 'max_size' in data:
collector.object.statsd.gauge('plus.cache.max_size', data['max_size'], stamp=stamp)
def collect_cache_metrics(collector, data, stamp):
types = [
'bypass',
'expired',
'hit',
'miss',
'revalidated',
'stale',
'updating'
]
for label in types:
data_bucket = data[label]
metric_base = 'plus.cache.%s' % label
filtered_names = filter(
lambda name: name not in ('responses_written', 'bytes_written'),
data_bucket.keys()
)
counted_vars = {}
for name in filtered_names:
metric_name = metric_base + '.%s' % name
counted_vars[metric_name] = data_bucket[name]
# metric base is used to store total responses
counted_vars.update({
metric_base: data_bucket['responses']
})
collector.aggregate_counters(copy.deepcopy(counted_vars), stamp=stamp)
CACHE_COLLECT_INDEX = [
collect_cache_size,
collect_cache_metrics,
]