Update docs for Docker limits and actions (issue #875)

This commit is contained in:
nicolargo 2016-10-10 21:10:10 +02:00
parent 4396634e60
commit 92ec33c272
5 changed files with 53 additions and 17 deletions

1
NEWS
View File

@ -9,6 +9,7 @@ Enhancements and new features:
* Add CouchDB exporter (issue #928) * Add CouchDB exporter (issue #928)
* Highlight max stats in the processes list (issue #878) * Highlight max stats in the processes list (issue #878)
* Docker alerts and actions (issue #875)
* Glances API returns the processes PPID (issue #926) * Glances API returns the processes PPID (issue #926)
* Configure server cached time from the command line --cached-time (issue #901) * Configure server cached time from the command line --cached-time (issue #901)

View File

@ -209,12 +209,12 @@ port_default_gateway=True
[docker] [docker]
# Thresholds for CPU and MEM (in %) # Thresholds for CPU and MEM (in %)
cpu_careful=50 #cpu_careful=50
cpu_warning=70 #cpu_warning=70
cpu_critical=90 #cpu_critical=90
mem_careful=20 #mem_careful=20
mem_warning=50 #mem_warning=50
mem_critical=70 #mem_critical=70
# Per container thresholds # Per container thresholds
#containername_cpu_careful=10 #containername_cpu_careful=10
#containername_cpu_warning=20 #containername_cpu_warning=20

View File

@ -8,4 +8,25 @@ Glances uses the Docker API through the `docker-py`_ library.
.. image:: ../_static/docker.png .. image:: ../_static/docker.png
It is possible to define limits and actions from the configuration file
under the ``[docker]`` section:
.. code-block:: ini
[docker]
# Global containers' thresholds for CPU and MEM (in %)
cpu_careful=50
cpu_warning=70
cpu_critical=90
mem_careful=20
mem_warning=50
mem_critical=70
# Per container thresholds
containername_cpu_careful=10
containername_cpu_warning=20
containername_cpu_critical=30
containername_cpu_critical_action=echo {{Image}} {{Id}} {{cpu}} > /tmp/container_{{name}}.alert
You can use all the variables ({{foo}}) available in the Docker plugin.
.. _docker-py: https://github.com/docker/docker-py .. _docker-py: https://github.com/docker/docker-py

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "GLANCES" "1" "Sep 24, 2016" "2.8_DEVELOP" "Glances" .TH "GLANCES" "1" "Oct 10, 2016" "2.8_DEVELOP" "Glances"
.SH NAME .SH NAME
glances \- An eye on your system glances \- An eye on your system
. .

View File

@ -524,20 +524,31 @@ class GlancesPlugin(object):
glances_logs.add(ret, stat_name.upper(), value) glances_logs.add(ret, stat_name.upper(), value)
# Manage action # Manage action
self.manage_action(stat_name, ret.lower(), header, action_key)
# Default is ok
return ret + log_str
def manage_action(self,
stat_name,
trigger,
header,
action_key):
"""Manage the action for the current stat"""
# Here is a command line for the current trigger ? # Here is a command line for the current trigger ?
try: try:
command = self.__get_limit_action(ret.lower(), stat_name=stat_name) command = self.__get_limit_action(trigger, stat_name=stat_name)
except KeyError: except KeyError:
# Reset the trigger # Reset the trigger
self.actions.set(stat_name, ret.lower()) self.actions.set(stat_name, trigger)
else: else:
# Define the action key for the stats dict # Define the action key for the stats dict
# If not define, then it sets to header # If not define, then it sets to header
if action_key is None: if action_key is None:
action_key = header action_key = header
# A command line is available for the current alert, run it # A command line is available for the current alert
# Build the {{mustache}} dictionnary # 1) Build the {{mustache}} dictionnary
if isinstance(self.get_stats_action(), list): if isinstance(self.get_stats_action(), list):
# If the stats are stored in a list of dict (fs plugin for exemple) # If the stats are stored in a list of dict (fs plugin for exemple)
# Return the dict for the current header # Return the dict for the current header
@ -549,19 +560,22 @@ class GlancesPlugin(object):
else: else:
# Use the stats dict # Use the stats dict
mustache_dict = self.get_stats_action() mustache_dict = self.get_stats_action()
# Run the action # 2) Run the action
self.actions.run( self.actions.run(
stat_name, ret.lower(), command, mustache_dict=mustache_dict) stat_name, trigger, command, mustache_dict=mustache_dict)
# Default is ok def get_alert_log(self,
return ret + log_str current=0,
minimum=0,
def get_alert_log(self, current=0, minimum=0, maximum=100, header=""): maximum=100,
header="",
action_key=None):
"""Get the alert log.""" """Get the alert log."""
return self.get_alert(current=current, return self.get_alert(current=current,
minimum=minimum, minimum=minimum,
maximum=maximum, maximum=maximum,
header=header, header=header,
action_key=action_key,
log=True) log=True)
def __get_limit(self, criticity, stat_name=""): def __get_limit(self, criticity, stat_name=""):