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 toNone
, 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' )
- config_file_directory (
-
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()
, sinceSupervisorRole.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.