daemons Package

Diagrams

Simple Daemon class diagram :

digraph inheritancee8f93e9927 { rankdir=LR; size="8.0, 12.0"; "daemons.arbiterdaemon.Arbiter" [style="setlinewidth(0.5)",URL="#shinken.daemons.arbiterdaemon.Arbiter",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10]; "shinken.daemon.Daemon" -> "daemons.arbiterdaemon.Arbiter" [arrowsize=0.5,style="setlinewidth(0.5)"]; "daemons.pollerdaemon.Poller" [style="setlinewidth(0.5)",URL="#shinken.daemons.pollerdaemon.Poller",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10]; "shinken.satellite.Satellite" -> "daemons.pollerdaemon.Poller" [arrowsize=0.5,style="setlinewidth(0.5)"]; "shinken.satellite.Satellite" [style="setlinewidth(0.5)",URL="shinken.html#shinken.satellite.Satellite",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10]; "shinken.satellite.BaseSatellite" -> "shinken.satellite.Satellite" [arrowsize=0.5,style="setlinewidth(0.5)"]; "daemons.receiverdaemon.Receiver" [style="setlinewidth(0.5)",URL="#shinken.daemons.receiverdaemon.Receiver",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10]; "shinken.satellite.Satellite" -> "daemons.receiverdaemon.Receiver" [arrowsize=0.5,style="setlinewidth(0.5)"]; "daemons.brokerdaemon.Broker" [style="setlinewidth(0.5)",URL="#shinken.daemons.brokerdaemon.Broker",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10]; "shinken.satellite.BaseSatellite" -> "daemons.brokerdaemon.Broker" [arrowsize=0.5,style="setlinewidth(0.5)"]; "shinken.daemon.Daemon" [style="setlinewidth(0.5)",URL="shinken.html#shinken.daemon.Daemon",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10]; "daemons.schedulerdaemon.Shinken" [style="setlinewidth(0.5)",URL="#shinken.daemons.schedulerdaemon.Shinken",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10]; "shinken.satellite.BaseSatellite" -> "daemons.schedulerdaemon.Shinken" [arrowsize=0.5,style="setlinewidth(0.5)"]; "daemons.reactionnerdaemon.Reactionner" [style="setlinewidth(0.5)",URL="#shinken.daemons.reactionnerdaemon.Reactionner",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10]; "shinken.satellite.Satellite" -> "daemons.reactionnerdaemon.Reactionner" [arrowsize=0.5,style="setlinewidth(0.5)"]; "shinken.satellite.BaseSatellite" [style="setlinewidth(0.5)",URL="shinken.html#shinken.satellite.BaseSatellite",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10]; "shinken.daemon.Daemon" -> "shinken.satellite.BaseSatellite" [arrowsize=0.5,style="setlinewidth(0.5)"]; }

Simple Interface class diagram :

digraph inheritance9c0940a3bf { rankdir=LR; size="8.0, 12.0"; "shinken.satellite.ISchedulers" [style="setlinewidth(0.5)",URL="shinken.html#shinken.satellite.ISchedulers",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10]; "shinken.daemon.Interface" -> "shinken.satellite.ISchedulers" [arrowsize=0.5,style="setlinewidth(0.5)"]; "daemons.brokerdaemon.IStats" [style="setlinewidth(0.5)",URL="#shinken.daemons.brokerdaemon.IStats",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10]; "shinken.daemon.Interface" -> "daemons.brokerdaemon.IStats" [arrowsize=0.5,style="setlinewidth(0.5)"]; "daemons.schedulerdaemon.IBroks" [style="setlinewidth(0.5)",URL="#shinken.daemons.schedulerdaemon.IBroks",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10]; "shinken.daemon.Interface" -> "daemons.schedulerdaemon.IBroks" [arrowsize=0.5,style="setlinewidth(0.5)"]; "shinken.satellite.IStats" [style="setlinewidth(0.5)",URL="shinken.html#shinken.satellite.IStats",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10]; "shinken.daemon.Interface" -> "shinken.satellite.IStats" [arrowsize=0.5,style="setlinewidth(0.5)"]; "daemons.schedulerdaemon.IStats" [style="setlinewidth(0.5)",URL="#shinken.daemons.schedulerdaemon.IStats",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10]; "shinken.daemon.Interface" -> "daemons.schedulerdaemon.IStats" [arrowsize=0.5,style="setlinewidth(0.5)"]; "daemons.receiverdaemon.IStats" [style="setlinewidth(0.5)",URL="#shinken.daemons.receiverdaemon.IStats",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10]; "shinken.daemon.Interface" -> "daemons.receiverdaemon.IStats" [arrowsize=0.5,style="setlinewidth(0.5)"]; "daemons.arbiterdaemon.IForArbiter" [style="setlinewidth(0.5)",URL="#shinken.daemons.arbiterdaemon.IForArbiter",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10]; "shinken.daemon.Interface" -> "daemons.arbiterdaemon.IForArbiter" [arrowsize=0.5,style="setlinewidth(0.5)"]; "shinken.daemon.Interface" [style="setlinewidth(0.5)",URL="shinken.html#shinken.daemon.Interface",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10]; "shinken.satellite.IForArbiter" [style="setlinewidth(0.5)",URL="shinken.html#shinken.satellite.IForArbiter",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10]; "shinken.daemon.Interface" -> "shinken.satellite.IForArbiter" [arrowsize=0.5,style="setlinewidth(0.5)"]; "daemons.schedulerdaemon.IChecks" [style="setlinewidth(0.5)",URL="#shinken.daemons.schedulerdaemon.IChecks",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10]; "shinken.daemon.Interface" -> "daemons.schedulerdaemon.IChecks" [arrowsize=0.5,style="setlinewidth(0.5)"]; "shinken.satellite.IBroks" [style="setlinewidth(0.5)",URL="shinken.html#shinken.satellite.IBroks",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10]; "shinken.daemon.Interface" -> "shinken.satellite.IBroks" [arrowsize=0.5,style="setlinewidth(0.5)"]; }

Package

daemons Package

arbiterdaemon Module

class shinken.daemons.arbiterdaemon.Arbiter(config_files, is_daemon, do_replace, verify_only, debug, debug_file, profile=None, analyse=None, migrate=None, arb_name='')[source]

Bases: shinken.daemon.Daemon

add(b)[source]
check_and_log_tp_activation_change()[source]
do_loop_turn()[source]
get_daemons(daemon_type)[source]

Returns the daemons list defined in our conf for the given type

get_external_commands_from_satellites()[source]
get_objects_from_from_queues()[source]
get_retention_data()[source]
go_migrate()[source]
launch_analyse()[source]
load_config_file()[source]
load_external_command(e)[source]
main()[source]
push_broks_to_broker()[source]
push_external_commands_to_schedulers()[source]
restore_retention_data(data)[source]
run()[source]
setup_new_conf()[source]

Setup a new conf received from a Master arbiter.

wait_for_master_death()[source]
class shinken.daemons.arbiterdaemon.IForArbiter(app)[source]

Bases: shinken.daemon.Interface

do_not_run()[source]
doc = 'Dump all objects of the type in [hosts, services, contacts, commands, hostgroups, servicegroups]'
get_all_states()[source]
get_config()[source]
get_objects_properties(table)[source]
get_satellite_list(daemon_type='')[source]
have_conf(magic_hash)[source]
put_conf(conf)[source]
what_i_managed()[source]

brokerdaemon Module

class shinken.daemons.brokerdaemon.Broker(config_file, is_daemon, do_replace, debug, debug_file, profile='')[source]

Bases: shinken.satellite.BaseSatellite

add(elt)[source]
add_broks_to_queue(broks)[source]
clean_previous_run()[source]
do_loop_turn()[source]
do_stop()[source]
get_new_broks(type='scheduler')[source]
get_objects_from_from_queues()[source]
get_retention_data()[source]
interger_arbiter_broks()[source]
interger_internal_broks()[source]
is_connection_try_too_close(elt)[source]
main()[source]
manage_brok(b)[source]
properties = {'modules_dir': <shinken.property.PathProp object at 0x3df6bd0>, 'server_cert': <shinken.property.StringProp object at 0x2f6efd0>, 'workdir': <shinken.property.PathProp object at 0x3df6b10>, 'ca_cert': <shinken.property.StringProp object at 0x2f6ef90>, 'hard_ssl_name_check': <shinken.property.BoolProp object at 0x2f7c0d0>, 'host': <shinken.property.StringProp object at 0x3df6e10>, 'local_log': <shinken.property.PathProp object at 0x413c210>, 'spare': <shinken.property.BoolProp object at 0x2f7c190>, 'user': <shinken.property.StringProp object at 0x3df6f50>, 'use_ssl': <shinken.property.BoolProp object at 0x2f87150>, 'log_level': <shinken.property.LogLevelProp object at 0x2f7c090>, 'use_local_log': <shinken.property.BoolProp object at 0x2f7c050>, 'port': <shinken.property.IntegerProp object at 0x413c1d0>, 'idontcareaboutsecurity': <shinken.property.BoolProp object at 0x2f7c110>, 'http_backend': <shinken.property.StringProp object at 0x2f7c250>, 'server_key': <shinken.property.StringProp object at 0x2f6ef50>, 'group': <shinken.property.StringProp object at 0x3df6fd0>, 'max_queue_size': <shinken.property.IntegerProp object at 0x2f7c1d0>, 'daemon_enabled': <shinken.property.BoolProp object at 0x2f7c150>, 'pidfile': <shinken.property.PathProp object at 0x413c150>, 'daemon_thread_pool_size': <shinken.property.IntegerProp object at 0x2f7c210>}
pynag_con_init(id, type='scheduler')[source]
restore_retention_data(data)[source]
setup_new_conf()[source]
class shinken.daemons.brokerdaemon.IStats(app)[source]

Bases: shinken.daemon.Interface

Interface for various stats about broker activity

doc = 'Get raw stats from the daemon'
get_raw_stats()[source]

pollerdaemon Module

class shinken.daemons.pollerdaemon.Poller(config_file, is_daemon, do_replace, debug, debug_file, profile)[source]

Bases: shinken.satellite.Satellite

do_actions = False
do_checks = True
properties = {'modules_dir': <shinken.property.PathProp object at 0x3df6bd0>, 'server_cert': <shinken.property.StringProp object at 0x2f6efd0>, 'workdir': <shinken.property.PathProp object at 0x3df6b10>, 'ca_cert': <shinken.property.StringProp object at 0x2f6ef90>, 'hard_ssl_name_check': <shinken.property.BoolProp object at 0x2f7c0d0>, 'host': <shinken.property.StringProp object at 0x3df6e10>, 'local_log': <shinken.property.PathProp object at 0x4db8150>, 'spare': <shinken.property.BoolProp object at 0x2f7c190>, 'user': <shinken.property.StringProp object at 0x3df6f50>, 'use_ssl': <shinken.property.BoolProp object at 0x2f87150>, 'log_level': <shinken.property.LogLevelProp object at 0x2f7c090>, 'use_local_log': <shinken.property.BoolProp object at 0x2f7c050>, 'port': <shinken.property.IntegerProp object at 0x413c790>, 'idontcareaboutsecurity': <shinken.property.BoolProp object at 0x2f7c110>, 'http_backend': <shinken.property.StringProp object at 0x2f7c250>, 'server_key': <shinken.property.StringProp object at 0x2f6ef50>, 'group': <shinken.property.StringProp object at 0x3df6fd0>, 'max_queue_size': <shinken.property.IntegerProp object at 0x2f7c1d0>, 'daemon_enabled': <shinken.property.BoolProp object at 0x2f7c150>, 'pidfile': <shinken.property.PathProp object at 0x413c6d0>, 'daemon_thread_pool_size': <shinken.property.IntegerProp object at 0x2f7c210>}

reactionnerdaemon Module

class shinken.daemons.reactionnerdaemon.Reactionner(config_file, is_daemon, do_replace, debug, debug_file, profile='')[source]

Bases: shinken.satellite.Satellite

do_actions = True
do_checks = False
properties = {'modules_dir': <shinken.property.PathProp object at 0x3df6bd0>, 'server_cert': <shinken.property.StringProp object at 0x2f6efd0>, 'workdir': <shinken.property.PathProp object at 0x3df6b10>, 'ca_cert': <shinken.property.StringProp object at 0x2f6ef90>, 'hard_ssl_name_check': <shinken.property.BoolProp object at 0x2f7c0d0>, 'host': <shinken.property.StringProp object at 0x3df6e10>, 'local_log': <shinken.property.PathProp object at 0x4121450>, 'spare': <shinken.property.BoolProp object at 0x2f7c190>, 'user': <shinken.property.StringProp object at 0x3df6f50>, 'use_ssl': <shinken.property.BoolProp object at 0x2f87150>, 'log_level': <shinken.property.LogLevelProp object at 0x2f7c090>, 'use_local_log': <shinken.property.BoolProp object at 0x2f7c050>, 'port': <shinken.property.IntegerProp object at 0x4121410>, 'idontcareaboutsecurity': <shinken.property.BoolProp object at 0x2f7c110>, 'http_backend': <shinken.property.StringProp object at 0x2f7c250>, 'server_key': <shinken.property.StringProp object at 0x2f6ef50>, 'group': <shinken.property.StringProp object at 0x3df6fd0>, 'max_queue_size': <shinken.property.IntegerProp object at 0x2f7c1d0>, 'daemon_enabled': <shinken.property.BoolProp object at 0x2f7c150>, 'pidfile': <shinken.property.PathProp object at 0x4db8450>, 'daemon_thread_pool_size': <shinken.property.IntegerProp object at 0x2f7c210>}

receiverdaemon Module

class shinken.daemons.receiverdaemon.IStats(app)[source]

Bases: shinken.daemon.Interface

Interface for various stats about broker activity

doc = 'Get raw stats from the daemon:\n * command_buffer_size: external command buffer size\n'
get_raw_stats()[source]
class shinken.daemons.receiverdaemon.Receiver(config_file, is_daemon, do_replace, debug, debug_file)[source]

Bases: shinken.satellite.Satellite

add(elt)[source]
do_loop_turn()[source]
do_stop()[source]
get_objects_from_from_queues()[source]
get_sched_from_hname(hname)[source]
main()[source]
manage_brok(b)[source]
properties = {'modules_dir': <shinken.property.PathProp object at 0x3df6bd0>, 'server_cert': <shinken.property.StringProp object at 0x2f6efd0>, 'workdir': <shinken.property.PathProp object at 0x3df6b10>, 'ca_cert': <shinken.property.StringProp object at 0x2f6ef90>, 'hard_ssl_name_check': <shinken.property.BoolProp object at 0x2f7c0d0>, 'host': <shinken.property.StringProp object at 0x3df6e10>, 'local_log': <shinken.property.PathProp object at 0x41213d0>, 'spare': <shinken.property.BoolProp object at 0x2f7c190>, 'user': <shinken.property.StringProp object at 0x3df6f50>, 'use_ssl': <shinken.property.BoolProp object at 0x2f87150>, 'log_level': <shinken.property.LogLevelProp object at 0x2f7c090>, 'use_local_log': <shinken.property.BoolProp object at 0x2f7c050>, 'port': <shinken.property.IntegerProp object at 0x4db8e90>, 'idontcareaboutsecurity': <shinken.property.BoolProp object at 0x2f7c110>, 'http_backend': <shinken.property.StringProp object at 0x2f7c250>, 'server_key': <shinken.property.StringProp object at 0x2f6ef50>, 'group': <shinken.property.StringProp object at 0x3df6fd0>, 'max_queue_size': <shinken.property.IntegerProp object at 0x2f7c1d0>, 'daemon_enabled': <shinken.property.BoolProp object at 0x2f7c150>, 'pidfile': <shinken.property.PathProp object at 0x4db84d0>, 'daemon_thread_pool_size': <shinken.property.IntegerProp object at 0x2f7c210>}
push_external_commands_to_schedulers()[source]
push_host_names(sched_id, hnames)[source]
setup_new_conf()[source]

schedulerdaemon Module

class shinken.daemons.schedulerdaemon.IBroks(app)[source]

Bases: shinken.daemon.Interface

Interface for Brokers: They connect here and get all broks (data for brokers). Data must be ORDERED! (initial status BEFORE update...)

fill_initial_broks(bname)[source]
get_broks(bname)[source]
class shinken.daemons.schedulerdaemon.IChecks(app)[source]

Bases: shinken.daemon.Interface

Interface for Workers: They connect here and see if they are still OK with our running_id, if not, they must drop their checks

get_checks(do_checks=False, do_actions=False, poller_tags=['None'], reactionner_tags=['None'], worker_name='none', module_types=['fork'])[source]
put_results(results)[source]
class shinken.daemons.schedulerdaemon.IForArbiter(app)[source]

Bases: shinken.satellite.IForArbiter

Interface for Arbiter. We ask him a for a conf and after that listen for instructions from the arbiter. The arbiter is the interface to the administrator, so we must listen carefully and give him the information he wants. Which could be for another scheduler

put_conf(conf)[source]
run_external_commands(cmds)[source]
wait_new_conf()[source]
class shinken.daemons.schedulerdaemon.IStats(app)[source]

Bases: shinken.daemon.Interface

Interface for various stats about scheduler activity

doc = 'Get raw stats from the daemon:\n * nb_scheduled: number of scheduled checks (to launch in the future)\n * nb_inpoller: number of check take by the pollers\n * nb_zombies: number of zombie checks (should be close to zero)\n * nb_notifications: number of notifications+event handlers\n * latency: avg,min,max latency for the services (should be <10s)\n'
get_raw_stats()[source]
class shinken.daemons.schedulerdaemon.Shinken(config_file, is_daemon, do_replace, debug, debug_file, profile='')[source]

Bases: shinken.satellite.BaseSatellite

compensate_system_time_change(difference)[source]

Compensate a system time change of difference for all hosts/services/checks/notifs

do_loop_turn()[source]
do_stop()[source]
main()[source]
manage_signal(sig, frame)[source]
properties = {'modules_dir': <shinken.property.PathProp object at 0x3df6bd0>, 'server_cert': <shinken.property.StringProp object at 0x2f6efd0>, 'workdir': <shinken.property.PathProp object at 0x3df6b10>, 'ca_cert': <shinken.property.StringProp object at 0x2f6ef90>, 'hard_ssl_name_check': <shinken.property.BoolProp object at 0x2f7c0d0>, 'host': <shinken.property.StringProp object at 0x3df6e10>, 'local_log': <shinken.property.PathProp object at 0x413cf50>, 'spare': <shinken.property.BoolProp object at 0x2f7c190>, 'user': <shinken.property.StringProp object at 0x3df6f50>, 'use_ssl': <shinken.property.BoolProp object at 0x2f87150>, 'log_level': <shinken.property.LogLevelProp object at 0x2f7c090>, 'use_local_log': <shinken.property.BoolProp object at 0x2f7c050>, 'port': <shinken.property.IntegerProp object at 0x413cbd0>, 'idontcareaboutsecurity': <shinken.property.BoolProp object at 0x2f7c110>, 'http_backend': <shinken.property.StringProp object at 0x2f7c250>, 'server_key': <shinken.property.StringProp object at 0x2f6ef50>, 'group': <shinken.property.StringProp object at 0x3df6fd0>, 'max_queue_size': <shinken.property.IntegerProp object at 0x2f7c1d0>, 'daemon_enabled': <shinken.property.BoolProp object at 0x2f7c150>, 'pidfile': <shinken.property.PathProp object at 0x413cad0>, 'daemon_thread_pool_size': <shinken.property.IntegerProp object at 0x2f7c210>}
setup_new_conf()[source]
what_i_managed()[source]