Merge pull request #296 from tommy3001/master

Psutil system resources library added to scenarios/admin
This commit is contained in:
Kenneth Reitz
2013-07-30 11:43:15 -07:00
3 changed files with 63 additions and 55 deletions
+54
View File
@@ -120,6 +120,60 @@ State files can be written using YAML, the Jinja2 template system or pure python
`Salt Documentation <http://docs.saltstack.org/en/latest/index.html>`_
Psutil
------
`Psutil <https://code.google.com/p/psutil/>`_ is an interface to different system information (e.g. CPU, memory, disks, network, users and processes).
Here is an example to be aware of some server overload. In case of some failed test (net, CPU) it send an email.
.. code-block:: python
# Functions to get system values:
from psutil import cpu_percent, net_io_counters
# Functions to take a break:
from time import sleep
# Package for email services:
import smtplib
import string
MAX_NET_USAGE = 400000
MAX_ATTACKS = 4
attack = 0
counter = 0
while attack <= MAX_ATTACKS:
sleep(4)
counter = counter + 1
# Check the cpu usage
if cpu_percent(interval = 1) > 70:
attack = attack + 1
# Check the net usage
neti1 = net_io_counters()[1]
neto1 = net_io_counters()[0]
sleep(1)
neti2 = net_io_counters()[1]
neto2 = net_io_counters()[0]
# Calculate the bytes per second
net = ((neti2+neto2) - (neti1+neto1))/2
if net > MAX_NET_USAGE:
attack = attack + 1
if counter > 25:
attack = 0
counter = 0
# Write a very important email if attack is higher then 4
TO = "you@your_email.com"
FROM = "webmaster@your_domain.com"
SUBJECT = "Your domain is out of system resources!"
text = "Go and fix your server!"
BODY = string.join(("From: %s" %FROM,"To: %s" %TO,"Subject: %s" %SUBJECT, "",text), "\r\n")
server = smtplib.SMTP('127.0.0.1')
server.sendmail(FROM, [TO], BODY)
server.quit()
A full terminal application like a widely extended top which is based on psutil and with the ability of a client-server
monitoring is `glance <https://github.com/nicolargo/glances/>`_.
Chef
----
+8 -54
View File
@@ -9,66 +9,20 @@ Python Imaging Library
----------------------
The `Python Imaging Library <http://www.pythonware.com/products/pil/>`_, or PIL
for short, is *the* library for image manipulation in Python.
for short, is *the* library for image manipulation in Python. Unfortunately, its
development has stagnated, with its last release in 2009.
It works with Python 1.5.2 and above, including 2.5, 2.6 and 2.7. Unfortunately,
it doesn't work with 3.0+ yet.
Lucky for you, there's an actively-developed fork of PIL called `Pillow <http://python-imaging.github.io/>`_ -
it's easier to install, runs on all operating systems, and supports Python 3.
Installation
~~~~~~~~~~~~
PIL has a reputation of not being very straightforward to install. Listed below
are installation notes on various systems.
Before installing Pillow, you'll have to install Pillow's prerequisites. Find
the instructions for your platform `here <https://pypi.python.org/pypi/Pillow/2.1.0#platform-specific-instructions>`_.
Also, there's a fork named `Pillow <http://pypi.python.org/pypi/Pillow>`_ which is easier
to install. It has good setup instructions for all platforms.
Installing on Linux
~~~~~~~~~~~~~~~~~~~
Arch Linux
``````````
PIL is maintained in the official community repository, and installed with the system installer as:
After that, it's straightforward:
.. code-block:: bash
$ sudo pacman -S python2-imaging
Ubuntu 12.10
````````````
Can be installed on the command line as:
.. code-block:: bash
$ sudo apt-get install python-imaging
Installing on Mac OS X
~~~~~~~~~~~~~~~~~~~~~~
PIP doesn't know about the Mac OS X Freetype paths. To rectify that:
.. code-block:: bash
$ ln -s /usr/X11/include/freetype2 /usr/local/include/
$ ln -s /usr/X11/include/ft2build.h /usr/local/include/
$ ln -s /usr/X11/lib/libfreetype.6.dylib /usr/local/lib/
$ ln -s /usr/X11/lib/libfreetype.6.dylib /usr/local/lib/libfreetype.dylib
then:
.. code-block:: bash
$ brew install libjpeg
$ pip install PIL
Installing on Windows
~~~~~~~~~~~~~~~~~~~~~
.. todo::
Notes on installing on Windows machines
$ pip install Pillow
+1 -1
View File
@@ -319,7 +319,7 @@ to use.
import tornado.ioloop
import tornado.web
# Load tamplate file templates/site.html
# Load template file templates/site.html
TEMPLATE_FILE = "site.html"
templateLoader = FileSystemLoader( searchpath="templates/" )
templateEnv = Environment( loader=templateLoader )