mirror of
https://github.com/valitydev/salt.git
synced 2024-11-07 17:09:03 +00:00
add memory usage beacon
Beacon used for testing the percent of memory used
This commit is contained in:
parent
18af1670bc
commit
8483a311f7
75
salt/beacons/memusage.py
Normal file
75
salt/beacons/memusage.py
Normal file
@ -0,0 +1,75 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
'''
|
||||
Beacon to monitor memory usage.
|
||||
|
||||
.. versionadded::
|
||||
|
||||
:depends: python-psutil
|
||||
'''
|
||||
|
||||
# Import Python libs
|
||||
from __future__ import absolute_import
|
||||
import logging
|
||||
import re
|
||||
|
||||
# Import Salt libs
|
||||
import salt.utils
|
||||
|
||||
# Import Third Party Libs
|
||||
try:
|
||||
import psutil
|
||||
HAS_PSUTIL = True
|
||||
except ImportError:
|
||||
HAS_PSUTIL = False
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
__virtualname__ = 'memusage'
|
||||
|
||||
|
||||
def __virtual__():
|
||||
if salt.utils.is_windows():
|
||||
return False
|
||||
elif HAS_PSUTIL is False:
|
||||
return False
|
||||
else:
|
||||
return __virtualname__
|
||||
|
||||
|
||||
def validate(config):
|
||||
'''
|
||||
Validate the beacon configuration
|
||||
'''
|
||||
# Configuration for diskusage beacon should be a list of dicts
|
||||
if not isinstance(config, dict):
|
||||
log.info('Configuration for diskusage beacon must be a dictionary.')
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
|
||||
def beacon(config):
|
||||
'''
|
||||
Monitor the memory usage of the minion
|
||||
|
||||
Specify thresholds for percent used and only emit a beacon if it is exceeded.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
beacons:
|
||||
memusage:
|
||||
- percent: 63%
|
||||
'''
|
||||
ret = []
|
||||
for memusage in config:
|
||||
mount = memusage.keys()[0]
|
||||
_current_usage = psutil.virtual_memory()
|
||||
|
||||
current_usage = _current_usage.percent
|
||||
monitor_usage = memusage[mount]
|
||||
if '%' in monitor_usage:
|
||||
monitor_usage = re.sub('%', '', monitor_usage)
|
||||
monitor_usage = float(monitor_usage)
|
||||
if current_usage >= monitor_usage:
|
||||
ret.append({'memusage': current_usage})
|
||||
return ret
|
Loading…
Reference in New Issue
Block a user