diff options
Diffstat (limited to 'tools/collectors/sysmetrics')
-rwxr-xr-x | tools/collectors/sysmetrics/__init__.py | 18 | ||||
-rw-r--r-- | tools/collectors/sysmetrics/linuxmetrics.py | 79 |
2 files changed, 97 insertions, 0 deletions
diff --git a/tools/collectors/sysmetrics/__init__.py b/tools/collectors/sysmetrics/__init__.py new file mode 100755 index 00000000..9ad1bf29 --- /dev/null +++ b/tools/collectors/sysmetrics/__init__.py @@ -0,0 +1,18 @@ +# Copyright 2015 Intel Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Implementation of linux-metrics system metrics logger. +""" + +from tools.collectors.sysmetrics.linuxmetrics import * diff --git a/tools/collectors/sysmetrics/linuxmetrics.py b/tools/collectors/sysmetrics/linuxmetrics.py new file mode 100644 index 00000000..fdf30696 --- /dev/null +++ b/tools/collectors/sysmetrics/linuxmetrics.py @@ -0,0 +1,79 @@ +# Copyright 2015 Intel Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""linux-metrics system statistics model. + +Provides linux-metrics system statistics generic "helper" functions. + +This requires the following setting in your config: + +* SYSMETRICS_LINUX_METRICS_CPU_SAMPLES_INTERVAL + Number of seconds in between samples to take for CPU percentages + +If this doesn't exist, the application will raise an exception +(EAFP). +""" + + +import logging +import os +from conf import settings +from tools.collectors.collector import collector +from linux_metrics import cpu_stat, mem_stat + +_ROOT_DIR = os.path.dirname(os.path.realpath(__file__)) + +class LinuxMetrics(collector.ICollector): + """A logger based on the linux-metrics module. + + Currently it supports the logging of memory and CPU statistics + """ + def __init__(self): + self._logger = logging.getLogger(__name__) + self._num_samples = settings.getValue( + 'SYSMETRICS_LINUX_METRICS_CPU_SAMPLES_INTERVAL') + self._mem_stats = [] + self._cpu_stats = [] + + def log_mem_stats(self): + """See ICollector for descripion + """ + self._mem_stats = mem_stat.mem_stats() + # pylint: disable=unbalanced-tuple-unpacking + mem_active, mem_total, mem_cached, mem_free, swap_total, swap_free = \ + self._mem_stats + self._logger.info('%s mem_active: %s, mem_total: %s, mem_cached: %s, ' + 'mem_free: %s, swap_total: %s, swap_free: %s', + collector.CMD_PREFIX, + mem_active, mem_total, mem_cached, mem_free, + swap_total, swap_free) + return self._mem_stats + + def log_cpu_stats(self): + """See ICollector for descripion + """ + self._cpu_stats = cpu_stat.cpu_percents(self._num_samples) + self._logger.info('%s user: %.2f%%, nice: %.2f%%, system: %.2f%%, ' + 'idle: %.2f%%, iowait: %.2f%%, irq: %.2f%%, ' + 'softirq: %.2f%%', + collector.CMD_PREFIX, + self._cpu_stats['user'], + self._cpu_stats['nice'], + self._cpu_stats['system'], + self._cpu_stats['idle'], + self._cpu_stats['iowait'], + self._cpu_stats['irq'], + self._cpu_stats['softirq']) + return self._cpu_stats + |