[Nagios-checkins] nagios/base commands.c, 1.62, 1.62.2.1 config.c, 1.58, 1.58.2.1 events.c, 1.39.2.
Nagios network monitoring software is enterprise server monitoring
Brought to you by:
egalstad,
sawolf-nagios
From: Ethan G. <ega...@us...> - 2006-12-22 01:43:23
|
Update of /cvsroot/nagios/nagios/base In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv11302/base Modified Files: Tag: nagios-2-x-bugfixes commands.c config.c events.c nagios.c nagiostats.c utils.c Log Message: Added sample MRTG graph config file snippet, support for defining buffer slots in config files Index: config.c =================================================================== RCS file: /cvsroot/nagios/nagios/base/config.c,v retrieving revision 1.58 retrieving revision 1.58.2.1 diff -C2 -d -r1.58 -r1.58.2.1 *** config.c 26 Dec 2005 23:18:14 -0000 1.58 --- config.c 22 Dec 2006 01:43:17 -0000 1.58.2.1 *************** *** 3,8 **** * CONFIG.C - Configuration input and verification routines for Nagios * ! * Copyright (c) 1999-2005 Ethan Galstad (na...@na...) ! * Last Modified: 12-26-2005 * * License: --- 3,8 ---- * CONFIG.C - Configuration input and verification routines for Nagios * ! * Copyright (c) 1999-2006 Ethan Galstad (na...@na...) ! * Last Modified: 12-21-2006 * * License: *************** *** 167,170 **** --- 167,172 ---- extern service **service_hashlist; + extern unsigned long external_command_buffer_slots; + extern unsigned long check_result_buffer_slots; *************** *** 1402,1405 **** --- 1404,1413 ---- } + else if(!strcmp(variable,"external_command_buffer_slots")) + external_command_buffer_slots=strtoul(value,NULL,0); + + else if(!strcmp(variable,"check_result_buffer_slots")) + check_result_buffer_slots=strtoul(value,NULL,0); + /*** AUTH_FILE VARIABLE USED BY EMBEDDED PERL INTERPRETER ***/ else if(!strcmp(variable,"auth_file")){ Index: utils.c =================================================================== RCS file: /cvsroot/nagios/nagios/base/utils.c,v retrieving revision 1.111.2.7 retrieving revision 1.111.2.8 diff -C2 -d -r1.111.2.7 -r1.111.2.8 *** utils.c 27 Oct 2006 22:58:20 -0000 1.111.2.7 --- utils.c 22 Dec 2006 01:43:19 -0000 1.111.2.8 *************** *** 210,213 **** --- 210,215 ---- extern circular_buffer service_result_buffer; extern circular_buffer event_broker_buffer; + extern unsigned long external_command_buffer_slots; + extern unsigned long check_result_buffer_slots; /* from GNU defines errno as a macro, since it's a per-thread variable */ *************** *** 3808,3812 **** /* adjust tail counter and number of items */ ! service_result_buffer.tail=(service_result_buffer.tail + 1) % SERVICE_BUFFER_SLOTS; service_result_buffer.items--; --- 3810,3814 ---- /* adjust tail counter and number of items */ ! service_result_buffer.tail=(service_result_buffer.tail + 1) % check_result_buffer_slots; service_result_buffer.items--; *************** *** 4623,4627 **** service_result_buffer.items=0; service_result_buffer.overflow=0L; ! service_result_buffer.buffer=(void **)malloc(SERVICE_BUFFER_SLOTS*sizeof(service_message **)); if(service_result_buffer.buffer==NULL) return ERROR; --- 4625,4629 ---- service_result_buffer.items=0; service_result_buffer.overflow=0L; ! service_result_buffer.buffer=(void **)malloc(check_result_buffer_slots*sizeof(service_message **)); if(service_result_buffer.buffer==NULL) return ERROR; *************** *** 4669,4673 **** /* release memory allocated to circular buffer */ ! for(x=service_result_buffer.tail;x!=service_result_buffer.head;x=(x+1) % SERVICE_BUFFER_SLOTS){ free(((service_message **)service_result_buffer.buffer)[x]); ((service_message **)service_result_buffer.buffer)[x]=NULL; --- 4671,4675 ---- /* release memory allocated to circular buffer */ ! for(x=service_result_buffer.tail;x!=service_result_buffer.head;x=(x+1) % check_result_buffer_slots){ free(((service_message **)service_result_buffer.buffer)[x]); ((service_message **)service_result_buffer.buffer)[x]=NULL; *************** *** 4689,4693 **** external_command_buffer.items=0; external_command_buffer.overflow=0L; ! external_command_buffer.buffer=(void **)malloc(COMMAND_BUFFER_SLOTS*sizeof(char **)); if(external_command_buffer.buffer==NULL) return ERROR; --- 4691,4695 ---- external_command_buffer.items=0; external_command_buffer.overflow=0L; ! external_command_buffer.buffer=(void **)malloc(external_command_buffer_slots*sizeof(char **)); if(external_command_buffer.buffer==NULL) return ERROR; *************** *** 4735,4739 **** /* release memory allocated to circular buffer */ ! for(x=external_command_buffer.tail;x!=external_command_buffer.head;x=(x+1) % COMMAND_BUFFER_SLOTS){ free(((char **)external_command_buffer.buffer)[x]); ((char **)external_command_buffer.buffer)[x]=NULL; --- 4737,4741 ---- /* release memory allocated to circular buffer */ ! for(x=external_command_buffer.tail;x!=external_command_buffer.head;x=(x+1) % external_command_buffer_slots){ free(((char **)external_command_buffer.buffer)[x]); ((char **)external_command_buffer.buffer)[x]=NULL; *************** *** 4815,4819 **** /* process data in the pipe (one message max) if there's some free space in the circular buffer */ ! if(buffer_items<SERVICE_BUFFER_SLOTS){ /* clear the message buffer */ --- 4817,4821 ---- /* process data in the pipe (one message max) if there's some free space in the circular buffer */ ! if(buffer_items<check_result_buffer_slots){ /* clear the message buffer */ *************** *** 4880,4884 **** /* handle overflow conditions */ /* NOTE: This should never happen (see check above) - child processes will instead block trying to write messages to the pipe... */ ! if(service_result_buffer.items==SERVICE_BUFFER_SLOTS){ /* record overflow */ --- 4882,4886 ---- /* handle overflow conditions */ /* NOTE: This should never happen (see check above) - child processes will instead block trying to write messages to the pipe... */ ! if(service_result_buffer.items==check_result_buffer_slots){ /* record overflow */ *************** *** 4886,4890 **** /* update tail pointer */ ! service_result_buffer.tail=(service_result_buffer.tail + 1) % SERVICE_BUFFER_SLOTS; } --- 4888,4892 ---- /* update tail pointer */ ! service_result_buffer.tail=(service_result_buffer.tail + 1) % check_result_buffer_slots; } *************** *** 4893,4898 **** /* increment the head counter and items */ ! service_result_buffer.head=(service_result_buffer.head + 1) % SERVICE_BUFFER_SLOTS; ! if(service_result_buffer.items<SERVICE_BUFFER_SLOTS) service_result_buffer.items++; --- 4895,4900 ---- /* increment the head counter and items */ ! service_result_buffer.head=(service_result_buffer.head + 1) % check_result_buffer_slots; ! if(service_result_buffer.items<check_result_buffer_slots) service_result_buffer.items++; *************** *** 4952,4960 **** #ifdef DEBUG_CFWT ! printf("(CFWT) BUFFER ITEMS: %d/%d\n",buffer_items,COMMAND_BUFFER_SLOTS); #endif /* process all commands in the file (named pipe) if there's some space in the buffer */ ! if(buffer_items<COMMAND_BUFFER_SLOTS){ /* clear EOF condition from prior run (FreeBSD fix) */ --- 4954,4962 ---- #ifdef DEBUG_CFWT ! printf("(CFWT) BUFFER ITEMS: %d/%d\n",buffer_items,external_command_buffer_slots); #endif /* process all commands in the file (named pipe) if there's some space in the buffer */ ! if(buffer_items<external_command_buffer_slots){ /* clear EOF condition from prior run (FreeBSD fix) */ *************** *** 4969,4973 **** /* submit the external command for processing (retry if buffer is full) */ ! while((result=submit_external_command(input_buffer,&buffer_items))==ERROR && buffer_items==COMMAND_BUFFER_SLOTS){ /* wait a bit */ --- 4971,4975 ---- /* submit the external command for processing (retry if buffer is full) */ ! while((result=submit_external_command(input_buffer,&buffer_items))==ERROR && buffer_items==external_command_buffer_slots){ /* wait a bit */ *************** *** 4981,4989 **** #ifdef DEBUG_CFWT ! printf("(CFWT) RES: %d, BUFFER_ITEMS: %d/%d\n",result,buffer_items,COMMAND_BUFFER_SLOTS); #endif /* bail if the circular buffer is full */ ! if(buffer_items==COMMAND_BUFFER_SLOTS) break; --- 4983,4991 ---- #ifdef DEBUG_CFWT ! printf("(CFWT) RES: %d, BUFFER_ITEMS: %d/%d\n",result,buffer_items,external_command_buffer_slots); #endif /* bail if the circular buffer is full */ ! if(buffer_items==external_command_buffer_slots) break; *************** *** 5020,5024 **** pthread_mutex_lock(&external_command_buffer.buffer_lock); ! if(external_command_buffer.items<COMMAND_BUFFER_SLOTS){ /* save the line in the buffer */ --- 5022,5026 ---- pthread_mutex_lock(&external_command_buffer.buffer_lock); ! if(external_command_buffer.items<external_command_buffer_slots){ /* save the line in the buffer */ *************** *** 5026,5030 **** /* increment the head counter and items */ ! external_command_buffer.head=(external_command_buffer.head + 1) % COMMAND_BUFFER_SLOTS; external_command_buffer.items++; } --- 5028,5032 ---- /* increment the head counter and items */ ! external_command_buffer.head=(external_command_buffer.head + 1) % external_command_buffer_slots; external_command_buffer.items++; } *************** *** 5439,5442 **** --- 5441,5447 ---- process_performance_data=DEFAULT_PROCESS_PERFORMANCE_DATA; + external_command_buffer_slots=DEFAULT_EXTERNAL_COMMAND_BUFFER_SLOTS; + check_result_buffer_slots=DEFAULT_CHECK_RESULT_BUFFER_SLOTS; + date_format=DATE_FORMAT_US; Index: nagios.c =================================================================== RCS file: /cvsroot/nagios/nagios/base/nagios.c,v retrieving revision 1.87.2.10 retrieving revision 1.87.2.11 diff -C2 -d -r1.87.2.10 -r1.87.2.11 *** nagios.c 28 Nov 2006 02:29:04 -0000 1.87.2.10 --- nagios.c 22 Dec 2006 01:43:18 -0000 1.87.2.11 *************** *** 9,13 **** * * First Written: 01-28-1999 (start of development) ! * Last Modified: 11-27-2006 * * Description: --- 9,13 ---- * * First Written: 01-28-1999 (start of development) ! * Last Modified: 12-21-2006 * * Description: *************** *** 208,211 **** --- 208,213 ---- circular_buffer service_result_buffer; pthread_t worker_threads[TOTAL_WORKER_THREADS]; + unsigned long external_command_buffer_slots=DEFAULT_EXTERNAL_COMMAND_BUFFER_SLOTS; + unsigned long check_result_buffer_slots=DEFAULT_CHECK_RESULT_BUFFER_SLOTS; Index: events.c =================================================================== RCS file: /cvsroot/nagios/nagios/base/events.c,v retrieving revision 1.39.2.1 retrieving revision 1.39.2.2 diff -C2 -d -r1.39.2.1 -r1.39.2.2 *** events.c 9 Oct 2006 15:59:02 -0000 1.39.2.1 --- events.c 22 Dec 2006 01:43:18 -0000 1.39.2.2 *************** *** 4,8 **** * * Copyright (c) 1999-2006 Ethan Galstad (na...@na...) ! * Last Modified: 10-09-2006 * * License: --- 4,8 ---- * * Copyright (c) 1999-2006 Ethan Galstad (na...@na...) ! * Last Modified: 12-21-2006 * * License: *************** *** 90,93 **** --- 90,94 ---- sched_info scheduling_info; + extern unsigned long check_result_buffer_slots; *************** *** 644,648 **** /* assume a 100% (2x) service check burst for service check reaper */ ! max_reaper_interval=floor((double)SERVICE_BUFFER_SLOTS/scheduling_info.service_inter_check_delay); if(max_reaper_interval<2.0) max_reaper_interval=2.0; --- 645,649 ---- /* assume a 100% (2x) service check burst for service check reaper */ ! max_reaper_interval=floor((double)check_result_buffer_slots/scheduling_info.service_inter_check_delay); if(max_reaper_interval<2.0) max_reaper_interval=2.0; Index: commands.c =================================================================== RCS file: /cvsroot/nagios/nagios/base/commands.c,v retrieving revision 1.62 retrieving revision 1.62.2.1 diff -C2 -d -r1.62 -r1.62.2.1 *** commands.c 23 Dec 2005 19:31:36 -0000 1.62 --- commands.c 22 Dec 2006 01:43:17 -0000 1.62.2.1 *************** *** 4,8 **** * * Copyright (c) 1999-2005 Ethan Galstad (na...@na...) ! * Last Modified: 12-14-2005 * * License: --- 4,8 ---- * * Copyright (c) 1999-2005 Ethan Galstad (na...@na...) ! * Last Modified: 12-21-2005 * * License: *************** *** 86,89 **** --- 86,90 ---- extern pthread_t worker_threads[TOTAL_WORKER_THREADS]; extern circular_buffer external_command_buffer; + extern unsigned long external_command_buffer_slots; *************** *** 155,159 **** /* adjust tail counter and number of items */ ! external_command_buffer.tail=(external_command_buffer.tail + 1) % COMMAND_BUFFER_SLOTS; external_command_buffer.items--; --- 156,160 ---- /* adjust tail counter and number of items */ ! external_command_buffer.tail=(external_command_buffer.tail + 1) % external_command_buffer_slots; external_command_buffer.items--; Index: nagiostats.c =================================================================== RCS file: /cvsroot/nagios/nagios/base/nagiostats.c,v retrieving revision 1.24.2.10 retrieving revision 1.24.2.11 diff -C2 -d -r1.24.2.10 -r1.24.2.11 *** nagiostats.c 28 Nov 2006 02:29:05 -0000 1.24.2.10 --- nagiostats.c 22 Dec 2006 01:43:19 -0000 1.24.2.11 *************** *** 8,12 **** * Copyright (c) 2003-2006 Ethan Galstad (na...@na...) * ! * Last Modified: 11-27-2006 * * License: --- 8,12 ---- * Copyright (c) 2003-2006 Ethan Galstad (na...@na...) * ! * Last Modified: 12-21-2006 * * License: *************** *** 50,53 **** --- 50,54 ---- int status_service_entries=0; int status_host_entries=0; + unsigned long nagios_pid=0L; double min_service_state_change=0.0; *************** *** 140,143 **** --- 141,149 ---- int active_hosts_checked_last_1hour=0; + unsigned long max_external_command_buffer_slots=0L; + unsigned long used_external_command_buffer_slots=0L; + unsigned long max_check_result_buffer_slots=0L; + unsigned long used_check_result_buffer_slots=0L; + *************** *** 214,218 **** if(mrtg_mode==FALSE){ printf("\nNagios Stats %s\n",PROGRAM_VERSION); ! printf("Copyright (c) 2003-2005 Ethan Galstad (www.nagios.org)\n"); printf("Last Modified: %s\n",PROGRAM_MODIFICATION_DATE); printf("License: GPL\n\n"); --- 220,224 ---- if(mrtg_mode==FALSE){ printf("\nNagios Stats %s\n",PROGRAM_VERSION); ! printf("Copyright (c) 2003-2006 Ethan Galstad (www.nagios.org)\n"); printf("Last Modified: %s\n",PROGRAM_MODIFICATION_DATE); printf("License: GPL\n\n"); *************** *** 256,259 **** --- 262,276 ---- printf("\n"); printf("MRTG DATA VARIABLES (-d option):\n"); + printf(" PROGRUNTIME string with time Nagios process has been running.\n"); + printf(" PROGRUNTIMETT time Nagios process has been running (time_t format).\n"); + printf(" STATUSFILEAGE string with age of status data file.\n"); + printf(" STATUSFILEAGETT string with age of status data file (time_t format).\n"); + printf(" NAGIOSVERSION string with Nagios version.\n"); + printf(" NAGIOSPID pid number of Nagios deamon.\n"); + printf(" NAGIOSVERPID string with Nagios version and PID.\n"); + printf(" MAXCMDBUF number of external command buffer slots available.\n"); + printf(" USEDCMDBUF number of external command buffer slots currently in use.\n"); + printf(" MAXCHKBUF number of check result buffer slots available.\n"); + printf(" USEDCHKBUF number of check result buffer slots currently in use.\n"); printf(" NUMSERVICES total number of services.\n"); printf(" NUMHOSTS total number of hosts.\n"); *************** *** 285,292 **** printf(" xxxPSVHSTPSC MIN/MAX/AVG passive host check %% state change.\n"); printf(" xxxHSTPSC MIN/MAX/AVG host check %% state change.\n"); ! printf(" NUMACTHSTCHKxM number of active host checks in last 1/5/15/60 minutes.\n"); ! printf(" NUMPSVHSTCHKxM number of passive host checks in last 1/5/15/60 minutes.\n"); ! printf(" NUMACTSVCCHKxM number of active service checks in last 1/5/15/60 minutes.\n"); ! printf(" NUMPSVSVCCHKxM number of passive service checks in last 1/5/15/60 minutes.\n"); printf("\n"); --- 302,309 ---- printf(" xxxPSVHSTPSC MIN/MAX/AVG passive host check %% state change.\n"); printf(" xxxHSTPSC MIN/MAX/AVG host check %% state change.\n"); ! printf(" NUMACTHSTCHKxM number of active host checks in last 1/5/15/60 minutes.\n"); ! printf(" NUMPSVHSTCHKxM number of passive host checks in last 1/5/15/60 minutes.\n"); ! printf(" NUMACTSVCCHKxM number of active service checks in last 1/5/15/60 minutes.\n"); ! printf(" NUMPSVSVCCHKxM number of passive service checks in last 1/5/15/60 minutes.\n"); printf("\n"); *************** *** 325,333 **** int display_mrtg_values(void){ char *temp_ptr; /* process all variables */ for(temp_ptr=strtok(mrtg_variables,",");temp_ptr!=NULL;temp_ptr=strtok(NULL,",")){ ! if(!strcmp(temp_ptr,"NUMSERVICES")) printf("%d\n",status_service_entries); else if(!strcmp(temp_ptr,"NUMHOSTS")) --- 342,393 ---- int display_mrtg_values(void){ char *temp_ptr; + time_t current_time; + unsigned long time_difference; + int days; + int hours; + int minutes; + int seconds; + + time(¤t_time); /* process all variables */ for(temp_ptr=strtok(mrtg_variables,",");temp_ptr!=NULL;temp_ptr=strtok(NULL,",")){ ! if(!strcmp(temp_ptr,"PROGRUNTIME")){ ! time_difference=(current_time-program_start); ! get_time_breakdown(time_difference,&days,&hours,&minutes,&seconds); ! printf("%dd %dh %dm %ds\n",days,hours,minutes,seconds); ! } ! else if(!strcmp(temp_ptr,"PROGRUNTIMETT")){ ! time_difference=(current_time-program_start); ! printf("%lu\n",time_difference); ! } ! else if(!strcmp(temp_ptr,"STATUSFILEAGE")){ ! time_difference=(current_time-status_creation_date); ! get_time_breakdown(time_difference,&days,&hours,&minutes,&seconds); ! printf("%dd %dh %dm %ds\n",days,hours,minutes,seconds); ! } ! else if(!strcmp(temp_ptr,"STATUSFILEAGETT")){ ! time_difference=(current_time-status_creation_date); ! printf("%lu\n",time_difference); ! } ! else if(!strcmp(temp_ptr,"NAGIOSVERSION")) ! printf("%s\n",status_version); ! else if(!strcmp(temp_ptr,"NAGIOSPID")) ! printf("%lu\n",nagios_pid); ! else if(!strcmp(temp_ptr,"NAGIOSVERPID")) ! printf("Nagios %s (pid=%lu)\n",status_version,nagios_pid); ! ! ! else if(!strcmp(temp_ptr,"MAXCMDBUF")) ! printf("%lu\n",max_external_command_buffer_slots); ! else if(!strcmp(temp_ptr,"USEDCMDBUF")) ! printf("%lu\n",used_external_command_buffer_slots); ! else if(!strcmp(temp_ptr,"MAXCHKBUF")) ! printf("%lu\n",max_check_result_buffer_slots); ! else if(!strcmp(temp_ptr,"USEDCHKBUF")) ! printf("%lu\n",used_check_result_buffer_slots); ! ! else if(!strcmp(temp_ptr,"NUMSERVICES")) printf("%d\n",status_service_entries); else if(!strcmp(temp_ptr,"NUMHOSTS")) *************** *** 525,528 **** --- 585,591 ---- get_time_breakdown(time_difference,&days,&hours,&minutes,&seconds); printf("Program Running Time: %dd %dh %dm %ds\n",days,hours,minutes,seconds); + printf("Nagios PID: %lu\n",nagios_pid); + printf("Used/Max External Command Buffers: %lu / %lu\n",used_external_command_buffer_slots,max_external_command_buffer_slots); + printf("Used/Max Check Result Buffers: %lu / %lu\n",used_check_result_buffer_slots,max_check_result_buffer_slots); printf("\n"); printf("Total Services: %d\n",status_service_entries); *************** *** 898,901 **** --- 961,974 ---- if(!strcmp(var,"program_start")) program_start=strtoul(val,NULL,10); + else if(!strcmp(var,"max_external_command_buffer_slots")) + max_external_command_buffer_slots=strtoul(val,NULL,10); + else if(!strcmp(var,"used_external_command_buffer_slots")) + used_external_command_buffer_slots=strtoul(val,NULL,10); + else if(!strcmp(var,"max_check_result_buffer_slots")) + max_check_result_buffer_slots=strtoul(val,NULL,10); + else if(!strcmp(var,"used_check_result_buffer_slots")) + used_check_result_buffer_slots=strtoul(val,NULL,10); + else if(!strcmp(var,"nagios_pid")) + nagios_pid=strtoul(val,NULL,10); break; |