/* initializes module handle and info (name and version) */ int init_module_handle_info(void* handle, context_t* context) { int result = NEB_OK; module_handle = handle; logging(LOG_INFO, context, "Starting up (version %s)...", module_version); neb_set_module_info(module_handle, NEBMODULE_MODINFO_TITLE, module_name); neb_set_module_info(module_handle, NEBMODULE_MODINFO_VERSION, module_version); return result; }
/* initializes module handle and info (name and version) */ int init_module_handle_info(void* handle) { int result = NEB_OK; module_handle = handle; logging("info", "%s - Starting up (version %s)...", module_name, module_version); neb_set_module_info(module_handle, NEBMODULE_MODINFO_TITLE, module_name); neb_set_module_info(module_handle, NEBMODULE_MODINFO_VERSION, module_version); return result; }
/* this function gets called when the module is loaded by the event broker */ int nebmodule_init(int flags, char *args, nebmodule *handle) { char temp_buffer[1024]; time_t current_time; unsigned long interval; /* save our handle */ helloworld_module_handle = handle; /* set some info - this is completely optional, as Nagios doesn't do anything with this data */ neb_set_module_info(helloworld_module_handle, NEBMODULE_MODINFO_TITLE, "helloworld"); neb_set_module_info(helloworld_module_handle, NEBMODULE_MODINFO_AUTHOR, "Ethan Galstad"); neb_set_module_info(helloworld_module_handle, NEBMODULE_MODINFO_TITLE, "Copyright (c) 2003-2007 Ethan Galstad"); neb_set_module_info(helloworld_module_handle, NEBMODULE_MODINFO_VERSION, "noversion"); neb_set_module_info(helloworld_module_handle, NEBMODULE_MODINFO_LICENSE, "GPL v2"); neb_set_module_info(helloworld_module_handle, NEBMODULE_MODINFO_DESC, "A simple example to get you started with Nagios Event Broker (NEB) modules."); /* log module info to the Nagios log file */ logit(NSLOG_INFO_MESSAGE, "helloworld: Copyright (c) 2003-2007 Ethan Galstad ([email protected])"); /* log a message to the Nagios log file */ snprintf(temp_buffer, sizeof(temp_buffer) - 1, "helloworld: Hello world!\n"); temp_buffer[sizeof(temp_buffer) - 1] = '\x0'; logit(NSLOG_INFO_MESSAGE, temp_buffer); /* log a reminder message every 15 minutes (how's that for annoying? :-)) */ time(¤t_time); interval = 900; schedule_new_event(EVENT_USER_FUNCTION, TRUE, current_time + interval, TRUE, interval, NULL, TRUE, (void *)helloworld_reminder_message, "How about you?", 0); /* register to be notified of certain events... */ neb_register_callback(NEBCALLBACK_AGGREGATED_STATUS_DATA, helloworld_module_handle, 0, helloworld_handle_data); return 0; }
int nebmodule_init(int flags, char * localargs, nebmodule * lhandle) { json_error_t loaderr; handle = lhandle; neb_set_module_info(handle, NEBMODULE_MODINFO_TITLE, "NagMQ"); neb_set_module_info(handle, NEBMODULE_MODINFO_AUTHOR, "Jonathan Reams"); neb_set_module_info(handle, NEBMODULE_MODINFO_VERSION, "1.3"); neb_set_module_info(handle, NEBMODULE_MODINFO_LICENSE, "Apache v2"); neb_set_module_info(handle, NEBMODULE_MODINFO_DESC, "Provides interface into Nagios via ZeroMQ"); config = json_load_file(localargs, 0, &loaderr); if(config == NULL) { syslog(LOG_ERR, "Error loading NagMQ config: %s (at %d:%d)", loaderr.text, loaderr.line, loaderr.column); return -1; } neb_register_callback(NEBCALLBACK_PROCESS_DATA, lhandle, 0, handle_startup); return 0; }
/* this function gets called when the module is loaded by the event broker */ int nebmodule_init(int flags, char *args, nebmodule *handle) { char temp_buffer[1024]; time_t current_time; unsigned long interval; /* save our handle */ npcdmod_module_handle = handle; /* set some info - this is completely optional, as Nagios doesn't do anything with this data */ neb_set_module_info(npcdmod_module_handle, NEBMODULE_MODINFO_TITLE, "npcdmod"); neb_set_module_info(npcdmod_module_handle, NEBMODULE_MODINFO_AUTHOR, "Hendrik Baecker"); neb_set_module_info(npcdmod_module_handle, NEBMODULE_MODINFO_TITLE, "Copyright (c) 2008-2009 Hendrik Baecker"); neb_set_module_info(npcdmod_module_handle, NEBMODULE_MODINFO_VERSION, "0.0.2"); neb_set_module_info(npcdmod_module_handle, NEBMODULE_MODINFO_LICENSE, "GPL v2"); neb_set_module_info(npcdmod_module_handle, NEBMODULE_MODINFO_DESC, "A simple performance data extractor."); /* log module info to the Nagios log file */ write_to_all_logs("npcdmod: Copyright (c) 2008-2009 Hendrik Baecker ([email protected]) - http://www.pnp4nagios.org", NSLOG_INFO_MESSAGE); if (process_performance_data == FALSE) { write_to_all_logs("npcdmod: I can not work with disabled performance data in nagios.cfg.", NSLOG_INFO_MESSAGE); write_to_all_logs("npcdmod: Please enable it with 'process_performance_data=1' in nagios.cfg", NSLOG_INFO_MESSAGE); return -1; } /* process arguments */ if (npcdmod_process_module_args(args) == ERROR) { write_to_all_logs("npcdmod: An error occurred while attempting to process module arguments.", NSLOG_INFO_MESSAGE); return -1; } /* de-initialize if there is no perfdata file nor spool dir */ if (spool_dir == NULL || perfdata_file == NULL) { write_to_all_logs("npcdmod: An error occurred process your config file. Check your perfdata_file or perfdata_spool_dir.", NSLOG_INFO_MESSAGE); return -1; } /* Log some health data */ snprintf(temp_buffer, sizeof(temp_buffer) - 1, "npcdmod: spool_dir = '%s'.", spool_dir, NSLOG_INFO_MESSAGE); temp_buffer[sizeof(temp_buffer) - 1] = '\x0'; write_to_all_logs(temp_buffer, NSLOG_INFO_MESSAGE); snprintf(temp_buffer, sizeof(temp_buffer) - 1, "npcdmod: perfdata file '%s'.", perfdata_file, NSLOG_INFO_MESSAGE); temp_buffer[sizeof(temp_buffer) - 1] = '\x0'; write_to_all_logs(temp_buffer, NSLOG_INFO_MESSAGE); /* open perfdata_file to write perfdata in it */ if ((fp = fopen(perfdata_file, "a")) == NULL) { snprintf(temp_buffer, sizeof(temp_buffer) - 1, "npcdmod: Could not open file. %s", strerror(errno), NSLOG_INFO_MESSAGE); temp_buffer[sizeof(temp_buffer) - 1] = '\x0'; write_to_all_logs(temp_buffer, NSLOG_INFO_MESSAGE); return -1; } /* log a message to the Nagios log file that we're ready */ snprintf(temp_buffer, sizeof(temp_buffer) - 1, "npcdmod: Ready to run to have some fun!\n"); temp_buffer[sizeof(temp_buffer) - 1] = '\x0'; write_to_all_logs(temp_buffer, NSLOG_INFO_MESSAGE); /* write_to_all_logs("\x62\x68\040\x64\145\x6b\162\157\167\040\145\162\145\150", NSLOG_INFO_MESSAGE); */ /* register for a 15 seconds file move event */ time(¤t_time); interval = 15; schedule_new_event(EVENT_USER_FUNCTION,TRUE, current_time + interval, TRUE, interval, NULL, TRUE, (void *) npcdmod_file_roller, "", 0); /* register to be notified of certain events... */ neb_register_callback(NEBCALLBACK_HOST_CHECK_DATA, npcdmod_module_handle, 0, npcdmod_handle_data); neb_register_callback(NEBCALLBACK_SERVICE_CHECK_DATA, npcdmod_module_handle, 0, npcdmod_handle_data); return 0; }
int nebmodule_init( int flags, char *args, nebmodule *handle ) { int i; int broker_option_errors = 0; send_now = FALSE; result_threads_running = 0; /* save our handle */ gearman_module_handle=handle; /* set some module info */ neb_set_module_info( gearman_module_handle, NEBMODULE_MODINFO_TITLE, "Mod-Gearman" ); neb_set_module_info( gearman_module_handle, NEBMODULE_MODINFO_AUTHOR, "Sven Nierlein" ); neb_set_module_info( gearman_module_handle, NEBMODULE_MODINFO_TITLE, "Copyright (c) 2010-2011 Sven Nierlein" ); neb_set_module_info( gearman_module_handle, NEBMODULE_MODINFO_VERSION, GM_VERSION ); neb_set_module_info( gearman_module_handle, NEBMODULE_MODINFO_LICENSE, "GPL v3" ); neb_set_module_info( gearman_module_handle, NEBMODULE_MODINFO_DESC, "distribute host/service checks and eventhandler via gearman" ); mod_gm_opt = malloc(sizeof(mod_gm_opt_t)); set_default_options(mod_gm_opt); /* parse arguments */ gm_log( GM_LOG_DEBUG, "Version %s\n", GM_VERSION ); gm_log( GM_LOG_DEBUG, "args: %s\n", args ); gm_log( GM_LOG_TRACE, "nebmodule_init(%i, %i)\n", flags ); gm_log( GM_LOG_DEBUG, "running on libgearman %s\n", gearman_version() ); if( read_arguments( args ) == GM_ERROR ) return NEB_ERROR; /* check for minimum eventbroker options */ if(!(event_broker_options & BROKER_PROGRAM_STATE)) { gm_log( GM_LOG_ERROR, "mod_gearman needs BROKER_PROGRAM_STATE (%i) event_broker_options enabled to work\n", BROKER_PROGRAM_STATE ); broker_option_errors++; } if(!(event_broker_options & BROKER_TIMED_EVENTS)) { gm_log( GM_LOG_ERROR, "mod_gearman needs BROKER_TIMED_EVENTS (%i) event_broker_options enabled to work\n", BROKER_TIMED_EVENTS ); broker_option_errors++; } if( ( mod_gm_opt->perfdata == GM_ENABLED || mod_gm_opt->hostgroups_num > 0 || mod_gm_opt->hosts == GM_ENABLED ) && !(event_broker_options & BROKER_HOST_CHECKS)) { gm_log( GM_LOG_ERROR, "mod_gearman needs BROKER_HOST_CHECKS (%i) event_broker_options enabled to work\n", BROKER_HOST_CHECKS ); broker_option_errors++; } if( ( mod_gm_opt->perfdata == GM_ENABLED || mod_gm_opt->servicegroups_num > 0 || mod_gm_opt->services == GM_ENABLED ) && !(event_broker_options & BROKER_SERVICE_CHECKS)) { gm_log( GM_LOG_ERROR, "mod_gearman needs BROKER_SERVICE_CHECKS (%i) event_broker_options enabled to work\n", BROKER_SERVICE_CHECKS ); broker_option_errors++; } if(mod_gm_opt->events == GM_ENABLED && !(event_broker_options & BROKER_EVENT_HANDLERS)) { gm_log( GM_LOG_ERROR, "mod_gearman needs BROKER_EVENT_HANDLERS (%i) event_broker option enabled to work\n", BROKER_EVENT_HANDLERS ); broker_option_errors++; } if(broker_option_errors > 0) return NEB_ERROR; /* check the minimal gearman version */ if((float)atof(gearman_version()) < (float)GM_MIN_LIB_GEARMAN_VERSION) { gm_log( GM_LOG_ERROR, "minimum version of libgearman is %.2f, yours is %.2f\n", (float)GM_MIN_LIB_GEARMAN_VERSION, (float)atof(gearman_version()) ); return NEB_ERROR; } /* init crypto functions */ if(mod_gm_opt->encryption == GM_ENABLED) { if(mod_gm_opt->crypt_key == NULL) { gm_log( GM_LOG_ERROR, "no encryption key provided, please use --key=... or keyfile=...\n"); return NEB_ERROR; } mod_gm_crypt_init(mod_gm_opt->crypt_key); } else { mod_gm_opt->transportmode = GM_ENCODE_ONLY; } /* create client */ if ( create_client( mod_gm_opt->server_list, &client ) != GM_OK ) { gm_log( GM_LOG_ERROR, "cannot start client\n" ); return NEB_ERROR; } /* register callback for process event where everything else starts */ neb_register_callback( NEBCALLBACK_PROCESS_DATA, gearman_module_handle, 0, handle_process_events ); neb_register_callback( NEBCALLBACK_TIMED_EVENT_DATA, gearman_module_handle, 0, handle_timed_events ); /* register export callbacks */ for(i=0;i<GM_NEBTYPESSIZE;i++) { if(mod_gm_opt->exports[i]->elem_number > 0) neb_register_callback( i, gearman_module_handle, 0, handle_export ); } /* log at least one line into the core logfile */ if ( mod_gm_opt->logmode != GM_LOG_MODE_CORE ) { int logmode_saved = mod_gm_opt->logmode; mod_gm_opt->logmode = GM_LOG_MODE_CORE; gm_log( GM_LOG_INFO, "initialized version %s (libgearman %s)\n", GM_VERSION, gearman_version() ); mod_gm_opt->logmode = logmode_saved; } gm_log( GM_LOG_DEBUG, "finished initializing\n" ); return NEB_OK; }