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)
* Highlight max stats in the processes list (issue #878)
* Docker alerts and actions (issue #875)
* Glances API returns the processes PPID (issue #926)
* Configure server cached time from the command line --cached-time (issue #901)

View File

@ -209,12 +209,12 @@ port_default_gateway=True
[docker]
# Thresholds for CPU and MEM (in %)
cpu_careful=50
cpu_warning=70
cpu_critical=90
mem_careful=20
mem_warning=50
mem_critical=70
#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

View File

@ -8,4 +8,25 @@ Glances uses the Docker API through the `docker-py`_ library.
.. 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

View File

@ -1,6 +1,6 @@
.\" 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
glances \- An eye on your system
.

View File

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