glances/docs/aoa/actions.rst

75 lines
2.2 KiB
ReStructuredText
Raw Normal View History

2016-03-02 12:29:19 +00:00
.. _actions:
Actions
=======
Glances can trigger actions on events.
By ``action``, we mean all shell command line. For example, if you want
to execute the ``foo.py`` script if the last 5 minutes load are critical
then add the ``_action`` line to the Glances configuration file:
.. code-block:: ini
[load]
critical=5.0
critical_action=python /path/to/foo.py
All the stats are available in the command line through the use of the
`{{mustache}}`_ syntax. Another example would be to create a log file
containing used vs total disk space if a space trigger warning is
reached:
.. code-block:: ini
[fs]
warning=70
warning_action=echo {{mnt_point}} {{used}}/{{size}} > /tmp/fs.alert
A last example would be to create a log file
containing the total user disk space usage for a device and notify by email each time a space trigger critical is
reached:
.. code-block:: ini
[fs]
critical=90
critical_action_repeat=echo {{device_name}} {{percent}} > /tmp/fs.alert && python /etc/glances/actions.d/fs-critical.py
Within ``/etc/glances/actions.d/fs-critical.py``:
.. code-block:: python
import subprocess
from requests import get
fs_alert = open('/tmp/fs.alert', 'r').readline().strip().split(' ')
device = fs_alert[0]
percent = fs_alert[1]
system = subprocess.check_output(['uname', '-rn']).decode('utf-8').strip()
ip = get('https://api.ipify.org').text
body = 'Used user disk space for ' + device + ' is at ' + percent + '%.\nPlease cleanup the filesystem to clear the alert.\nServer: ' + str(system)+ '.\nIP address: ' + ip
ps = subprocess.Popen(('echo', '-e', body), stdout=subprocess.PIPE)
subprocess.call(['mail', '-s', 'CRITICAL: disk usage above 90%', '-r', 'postmaster@example.com', 'glances@example.com'], stdin=ps.stdout)
2016-03-02 12:29:19 +00:00
.. note::
You can use all the stats for the current plugin. See
https://github.com/nicolargo/glances/wiki/The-Glances-RESTFULL-JSON-API
2016-03-02 12:29:19 +00:00
for the stats list.
It is also possible to repeat action until the end of the alert.
Keep in mind that the command line is executed every refresh time so
use with caution:
.. code-block:: ini
[load]
critical=5.0
critical_action_repeat=/home/myhome/bin/bipper.sh
2016-03-02 12:29:19 +00:00
.. _{{mustache}}: https://mustache.github.io/