monitoring Package

monitoring Package

Roles in this namespace are meant to provision monitoring systems like Supervisor or log watch.

supervisor Module

Roles in this namespace are meant to provide Supervisor monitoring utility methods for Debian distributions.

class provy.more.debian.monitoring.supervisor.SupervisorRole(prov, context)[source]

Bases: provy.core.roles.Role

This role provides Supervisor monitoring utilities for Debian distributions.

Example:

from provy.core import Role
from provy.more.debian import SupervisorRole

class MySampleRole(Role):
    def provision(self):
        with self.using(SupervisorRole) as role:
            role.config(
                config_file_directory='/home/backend',
                log_folder='/home/backend/logs',
                user=self.context['supervisor-user']
            )

            with role.with_program('website') as program:
                program.directory = '/home/backend/provy/tests/functional'
                program.command = 'python website.py 800%(process_num)s'
                program.number_of_processes = 4

                program.log_folder = '/home/backend/logs'
cleanup()[source]

Updates the config file and/or init files and restarts supervisor if needed.

There’s no need to call this method since provy’s lifecycle will make sure it is called.

config(config_file_directory=None, log_folder='/var/log', log_file_max_mb=50, log_file_backups=10, log_level='info', pidfile='/var/run/supervisord.pid', user=None)[source]

Configures supervisor by creating a supervisord.conf file at the specified location.

Parameters:
  • config_file_directory (str) – Directory to create the supervisord.conf file at the server.
  • log_folder (str) – Path where log files will be created by supervisor. Defaults to /var/log (if you use the default, make sure your user has access).
  • log_file_max_mb (int) – Maximum size of log file in megabytes. Defaults to 50.
  • log_file_backups (int) – Number of log backups that supervisor keeps. Defaults to 10.
  • log_level (str) – Level of logging for supervisor. Defaults to ‘info’.
  • pidfile (str) – Path for the pidfile that supervisor creates for itself. Defaults to /var/run/supervisor.pid (if you use the default, make sure your user has access).
  • user (str) – User that runs supervisor. Defaults to None, which means the last created user.

Example:

from provy.core import Role
from provy.more.debian import SupervisorRole

class MySampleRole(Role):
    def provision(self):
        with self.using(SupervisorRole) as role:
            role.config(
                config_file_directory='/home/backend',
                log_folder='/home/backend/logs',
                pidfile='/home/backend/supervisord.pid',
                user='backend'
            )
ensure_config_update()[source]

Makes sure that the config file is updated upon cleanup.

Example:

from provy.core import Role
from provy.more.debian import SupervisorRole

class MySampleRole(Role):
    def provision(self):
        with self.using(SupervisorRole) as role:
            role.ensure_config_update()
ensure_restart()[source]

Makes sure supervisor is restarted on cleanup.

There’s no need to call this method since it will be called when changes occur by the other methods.

provision()[source]

Installs Supervisor and its dependencies. This method should be called upon if overriden in base classes, or Supervisor won’t work properly in the remote server.

Example:

from provy.core import Role
from provy.more.debian import SupervisorRole

class MySampleRole(Role):
    def provision(self):
        self.provision_role(SupervisorRole) # no need to call this if using with block.
restart()[source]

Forcefully restarts supervisor.

Example:

from provy.core import Role
from provy.more.debian import SupervisorRole

class MySampleRole(Role):
    def provision(self):
        with self.using(SupervisorRole) as role:
            role.restart()
update_config_file()[source]

Updates the config file to match the configurations done under the config() method.

There’s no need to call this method after config(), since SupervisorRole.cleanup() will call it for you.

Example:

from provy.core import Role
from provy.more.debian import SupervisorRole

class MySampleRole(Role):
    def provision(self):
        with self.using(SupervisorRole) as role:
            role.update_config_file()
update_init_script(config_file_path)[source]

Creates a supervisord /etc/init.d script that points to the specified config file path.

Parameters:config_file_path (str) – Path to the supervisord.conf at the server.

Example:

from provy.core import Role
from provy.more.debian import SupervisorRole

class MySampleRole(Role):
    def provision(self):
        with self.using(SupervisorRole) as role:
            role.update_init_script('/etc/supervisord.conf')
with_program(name)[source]

Enters a with block with a program variable that allows you to configure a program entry in supervisord.conf.

Parameters:name (str) – Name of the program being supervised.

Example:

from provy.core import Role
from provy.more.debian import SupervisorRole

class MySampleRole(Role):
    def provision(self):
        with self.using(SupervisorRole) as role:
            with role.with_program('website') as program:
                program.directory = '/home/backend/provy/tests/functional'
                program.command = 'python website.py 800%(process_num)s'
                program.number_of_processes = 4
                program.log_folder = '/home/backend/logs'
class provy.more.debian.monitoring.supervisor.WithProgram(supervisor, name)[source]

Bases: object

This class acts as the context manager for the SupervisorRole.with_program() method.

Don’t use it directly; Instead, use the SupervisorRole.with_program() method.