mirror of
https://github.com/nicolargo/glances.git
synced 2024-12-26 10:42:29 +03:00
Add GlancesActions class. Actions are run every refresh time... It sucks...
This commit is contained in:
parent
8c34feff51
commit
35414e9a3c
@ -3,6 +3,7 @@
|
|||||||
user_careful=50
|
user_careful=50
|
||||||
user_warning=70
|
user_warning=70
|
||||||
user_critical=90
|
user_critical=90
|
||||||
|
user_critical_action=touch /tmp/glances.alert
|
||||||
iowait_careful=50
|
iowait_careful=50
|
||||||
iowait_warning=70
|
iowait_warning=70
|
||||||
iowait_critical=90
|
iowait_critical=90
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
# Glances - An eye on your system
|
# Glances - An eye on your system
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
40
glances/core/glances_actions.py
Normal file
40
glances/core/glances_actions.py
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# This file is part of Glances.
|
||||||
|
#
|
||||||
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
|
#
|
||||||
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# Glances is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
"""Manage on alert actions."""
|
||||||
|
|
||||||
|
# Import system lib
|
||||||
|
from subprocess import Popen
|
||||||
|
|
||||||
|
# Import Glances lib
|
||||||
|
from glances.core.glances_logging import logger
|
||||||
|
|
||||||
|
|
||||||
|
class GlancesActions(object):
|
||||||
|
|
||||||
|
"""This class manage action if an alert is reached"""
|
||||||
|
|
||||||
|
def run(self, commands):
|
||||||
|
"""Run the commands (in background)
|
||||||
|
- commands: a list of command line"""
|
||||||
|
|
||||||
|
for cmd in commands:
|
||||||
|
logger.info("Action triggered: {0}".format(cmd))
|
||||||
|
splitted_cmd = cmd.split()
|
||||||
|
Popen(splitted_cmd)
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
125
glances/exports/glances_statsd.py
Normal file
125
glances/exports/glances_statsd.py
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# This file is part of Glances.
|
||||||
|
#
|
||||||
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
|
#
|
||||||
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# Glances is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
"""Statsd interface class."""
|
||||||
|
|
||||||
|
# Import sys libs
|
||||||
|
from statsd import StatsClient
|
||||||
|
from numbers import Number
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# Import Glances lib
|
||||||
|
from glances.core.glances_logging import logger
|
||||||
|
from ConfigParser import NoSectionError, NoOptionError
|
||||||
|
from glances.exports.glances_export import GlancesExport
|
||||||
|
|
||||||
|
|
||||||
|
class Export(GlancesExport):
|
||||||
|
|
||||||
|
"""This class manages the Statsd export module."""
|
||||||
|
|
||||||
|
def __init__(self, config=None, args=None):
|
||||||
|
"""Init the Statsd export IF."""
|
||||||
|
GlancesExport.__init__(self, config=config, args=args)
|
||||||
|
|
||||||
|
# Load the InfluxDB configuration file
|
||||||
|
self.host = None
|
||||||
|
self.port = None
|
||||||
|
self.prefix = None
|
||||||
|
self.export_enable = self.load_conf()
|
||||||
|
if not self.export_enable:
|
||||||
|
sys.exit(2)
|
||||||
|
|
||||||
|
# Default prefix for stats is 'glances'
|
||||||
|
if self.prefix is None:
|
||||||
|
self.prefix = 'glances'
|
||||||
|
|
||||||
|
# Init the Statsd client
|
||||||
|
self.client = StatsClient(self.host,
|
||||||
|
int(self.port),
|
||||||
|
prefix=self.prefix)
|
||||||
|
|
||||||
|
def load_conf(self, section="statsd"):
|
||||||
|
"""Load the Statsd configuration in the Glances configuration file"""
|
||||||
|
if self.config is None:
|
||||||
|
return False
|
||||||
|
try:
|
||||||
|
self.host = self.config.get_raw_option(section, "host")
|
||||||
|
self.port = self.config.get_raw_option(section, "port")
|
||||||
|
except NoSectionError:
|
||||||
|
logger.critical("No Statsd configuration found")
|
||||||
|
return False
|
||||||
|
except NoOptionError as e:
|
||||||
|
logger.critical("Error in the Statsd configuration (%s)" % e)
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
logger.debug("Load Statsd from the Glances configuration file")
|
||||||
|
# Prefix is optional
|
||||||
|
try:
|
||||||
|
self.prefix = self.config.get_raw_option(section, "prefix")
|
||||||
|
except NoOptionError as e:
|
||||||
|
pass
|
||||||
|
return True
|
||||||
|
|
||||||
|
def init(self, prefix='glances'):
|
||||||
|
"""Init the connection to the Statsd server"""
|
||||||
|
if not self.export_enable:
|
||||||
|
return None
|
||||||
|
return StatsClient(self.host,
|
||||||
|
self.port,
|
||||||
|
prefix=prefix)
|
||||||
|
|
||||||
|
def update(self, stats):
|
||||||
|
"""Update stats to the InfluxDB server."""
|
||||||
|
if not self.export_enable:
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Get the stats
|
||||||
|
all_stats = stats.getAll()
|
||||||
|
plugins = stats.getAllPlugins()
|
||||||
|
|
||||||
|
# Loop over available plugin
|
||||||
|
i = 0
|
||||||
|
for plugin in plugins:
|
||||||
|
if plugin in self.plugins_to_export():
|
||||||
|
if type(all_stats[i]) is list:
|
||||||
|
for item in all_stats[i]:
|
||||||
|
export_names = map(
|
||||||
|
lambda x: item[item['key']] + '.' + x, item.keys())
|
||||||
|
export_values = item.values()
|
||||||
|
self.__export(plugin, export_names, export_values)
|
||||||
|
elif type(all_stats[i]) is dict:
|
||||||
|
export_names = all_stats[i].keys()
|
||||||
|
export_values = all_stats[i].values()
|
||||||
|
self.__export(plugin, export_names, export_values)
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
def __export(self, name, columns, points):
|
||||||
|
"""Export the stats to the Statsd server"""
|
||||||
|
for i in range(0, len(columns)):
|
||||||
|
if not isinstance(points[i], Number):
|
||||||
|
continue
|
||||||
|
stat_name = '{0}.{1}'.format(name, columns[i])
|
||||||
|
stat_value = points[i]
|
||||||
|
try:
|
||||||
|
self.client.gauge(stat_name, stat_value)
|
||||||
|
except Exception as e:
|
||||||
|
logger.critical("Can not export stats to Statsd (%s)" % e)
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
@ -32,6 +32,7 @@ from operator import itemgetter
|
|||||||
from glances.core.glances_globals import is_py3
|
from glances.core.glances_globals import is_py3
|
||||||
from glances.core.glances_logging import logger
|
from glances.core.glances_logging import logger
|
||||||
from glances.core.glances_logs import glances_logs
|
from glances.core.glances_logs import glances_logs
|
||||||
|
from glances.core.glances_actions import GlancesActions
|
||||||
|
|
||||||
|
|
||||||
class GlancesPlugin(object):
|
class GlancesPlugin(object):
|
||||||
@ -64,6 +65,9 @@ class GlancesPlugin(object):
|
|||||||
# Init the limits dictionnary
|
# Init the limits dictionnary
|
||||||
self.limits = dict()
|
self.limits = dict()
|
||||||
|
|
||||||
|
# Init the actions
|
||||||
|
self.actions = GlancesActions()
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
"""Return the raw stats."""
|
"""Return the raw stats."""
|
||||||
return self.stats
|
return self.stats
|
||||||
@ -263,6 +267,8 @@ class GlancesPlugin(object):
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
self.limits[
|
self.limits[
|
||||||
self.plugin_name + '_' + s] = config.get_raw_option(self.plugin_name, s).split(",")
|
self.plugin_name + '_' + s] = config.get_raw_option(self.plugin_name, s).split(",")
|
||||||
|
logger.debug("Load limit: {0} = {1}".format(self.plugin_name + '_' + s,
|
||||||
|
self.limits[self.plugin_name + '_' + s]))
|
||||||
|
|
||||||
def set_limits(self, input_limits):
|
def set_limits(self, input_limits):
|
||||||
"""Set the limits to input_limits."""
|
"""Set the limits to input_limits."""
|
||||||
@ -299,19 +305,21 @@ class GlancesPlugin(object):
|
|||||||
# Manage limits
|
# Manage limits
|
||||||
ret = 'OK'
|
ret = 'OK'
|
||||||
try:
|
try:
|
||||||
if value > self.__get_limit_critical(header=header):
|
if value > self.__get_limit('critical', header=header):
|
||||||
ret = 'CRITICAL'
|
ret = 'CRITICAL'
|
||||||
elif value > self.__get_limit_warning(header=header):
|
elif value > self.__get_limit('warning', header=header):
|
||||||
ret = 'WARNING'
|
ret = 'WARNING'
|
||||||
elif value > self.__get_limit_careful(header=header):
|
elif value > self.__get_limit('careful', header=header):
|
||||||
ret = 'CAREFUL'
|
ret = 'CAREFUL'
|
||||||
elif current < min:
|
elif current < min:
|
||||||
ret = 'CAREFUL'
|
ret = 'CAREFUL'
|
||||||
except KeyError:
|
except KeyError:
|
||||||
return 'DEFAULT'
|
return 'DEFAULT'
|
||||||
|
|
||||||
# Manage log (if needed)
|
# Init the return post string
|
||||||
log_str = ""
|
log_str = ""
|
||||||
|
|
||||||
|
# Manage log
|
||||||
if log:
|
if log:
|
||||||
# Add _LOG to the return string
|
# Add _LOG to the return string
|
||||||
# So stats will be highlited with a specific color
|
# So stats will be highlited with a specific color
|
||||||
@ -324,6 +332,12 @@ class GlancesPlugin(object):
|
|||||||
# Add the log to the list
|
# Add the log to the list
|
||||||
glances_logs.add(ret, stat_name.upper(), value, [])
|
glances_logs.add(ret, stat_name.upper(), value, [])
|
||||||
|
|
||||||
|
# Manage action
|
||||||
|
action = self.__get_limit_action(ret.lower(), header=header)
|
||||||
|
if action is not None:
|
||||||
|
# An action is available for the current alert, run it
|
||||||
|
self.actions.run(action)
|
||||||
|
|
||||||
# Default is ok
|
# Default is ok
|
||||||
return ret + log_str
|
return ret + log_str
|
||||||
|
|
||||||
@ -331,23 +345,42 @@ class GlancesPlugin(object):
|
|||||||
"""Get the alert log."""
|
"""Get the alert log."""
|
||||||
return self.get_alert(current, min, max, header, log=True)
|
return self.get_alert(current, min, max, header, log=True)
|
||||||
|
|
||||||
def __get_limit_critical(self, header=""):
|
def __get_limit(self, criticity, header=""):
|
||||||
if header == "":
|
"""Return the limit value for the alert"""
|
||||||
return self.limits[self.plugin_name + '_' + 'critical']
|
prefix = self.plugin_name + '_'
|
||||||
else:
|
if header != "":
|
||||||
return self.limits[self.plugin_name + '_' + header + '_' + 'critical']
|
prefix += header + '_'
|
||||||
|
action = self.limits[prefix + criticity]
|
||||||
|
return action
|
||||||
|
|
||||||
def __get_limit_warning(self, header=""):
|
def __get_limit_action(self, criticity, header=""):
|
||||||
if header == "":
|
"""Return the action for the alert"""
|
||||||
return self.limits[self.plugin_name + '_' + 'warning']
|
prefix = self.plugin_name + '_'
|
||||||
else:
|
if header != "":
|
||||||
return self.limits[self.plugin_name + '_' + header + '_' + 'warning']
|
prefix += header + '_'
|
||||||
|
try:
|
||||||
|
action = self.limits[prefix + criticity + '_action']
|
||||||
|
except KeyError:
|
||||||
|
action = None
|
||||||
|
return action
|
||||||
|
|
||||||
def __get_limit_careful(self, header=""):
|
# def __get_limit_critical(self, header=""):
|
||||||
if header == "":
|
# if header == "":
|
||||||
return self.limits[self.plugin_name + '_' + 'careful']
|
# return self.limits[self.plugin_name + '_' + 'critical']
|
||||||
else:
|
# else:
|
||||||
return self.limits[self.plugin_name + '_' + header + '_' + 'careful']
|
# return self.limits[self.plugin_name + '_' + header + '_' + 'critical']
|
||||||
|
|
||||||
|
# def __get_limit_warning(self, header=""):
|
||||||
|
# if header == "":
|
||||||
|
# return self.limits[self.plugin_name + '_' + 'warning']
|
||||||
|
# else:
|
||||||
|
# return self.limits[self.plugin_name + '_' + header + '_' + 'warning']
|
||||||
|
|
||||||
|
# def __get_limit_careful(self, header=""):
|
||||||
|
# if header == "":
|
||||||
|
# return self.limits[self.plugin_name + '_' + 'careful']
|
||||||
|
# else:
|
||||||
|
# return self.limits[self.plugin_name + '_' + header + '_' + 'careful']
|
||||||
|
|
||||||
def get_conf_value(self, value, header="", plugin_name=None):
|
def get_conf_value(self, value, header="", plugin_name=None):
|
||||||
"""Return the configuration (header_)value for the current plugin (or the one given by the plugin_name var)"""
|
"""Return the configuration (header_)value for the current plugin (or the one given by the plugin_name var)"""
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# This file is part of Glances.
|
# This file is part of Glances.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2014 Nicolargo <nicolas@nicolargo.com>
|
# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
|
||||||
#
|
#
|
||||||
# Glances is free software; you can redistribute it and/or modify
|
# Glances is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Lesser General Public License as published by
|
# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
Loading…
Reference in New Issue
Block a user