summaryrefslogtreecommitdiffstats
path: root/web/attachments/46039-check_nwstat.diff
blob: 7f02eac5ba50ad0252d280e8e20be04927b84622 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
*** nagios-plugins-1.3.0/plugins/check_nwstat.c	Sat Feb 15 13:48:45 2003
--- nagios-plugins-1.3.0-patched/plugins/check_nwstat.c	Wed Mar 26 19:02:28 2003
***************
*** 63,68 ****
--- 63,73 ----
       VKNP<vol> = KB of not yet purgeable space on volume <vol>\n\
       ABENDS   = number of abended threads (NW 5.x only)\n\
       CSPROCS  = number of current service processes (NW 5.x only)\n\
+      TSYNC    = timesync status \n\
+      LRUS     = LRU sitting time in seconds\n\
+      DCB      = dirty cache buffers as a percentage of the total\n\
+      TCB      = dirty cache buffers as a percentage of the original\n\
+ 
  -w, --warning=INTEGER\n\
    Threshold which will result in a warning status\n\
  -c, --critical=INTEGER\n\
***************
*** 84,90 ****
    extension for NetWare be loaded on the Novell servers you wish to check.\n\
    (available from http://www.engr.wisc.edu/~drews/mrtg/)\n\
  - Values for critical thresholds should be lower than warning thresholds\n\
!   when the following variables are checked: VPF, VKF, LTCH, CBUFF, and LRUM.\n"
  
  #include "config.h"
  #include "common.h"
--- 89,95 ----
    extension for NetWare be loaded on the Novell servers you wish to check.\n\
    (available from http://www.engr.wisc.edu/~drews/mrtg/)\n\
  - Values for critical thresholds should be lower than warning thresholds\n\
!   when the following variables are checked: VPF, VKF, LTCH, CBUFF, DCB, TCB, LRUS and LRUM.\n"
  
  #include "config.h"
  #include "common.h"
***************
*** 114,119 ****
--- 119,128 ----
  #define CHECK_VPNP          20 /* check % not yet purgeable space on volume */
  #define CHECK_ABENDS        21 /* check abended thread count */
  #define CHECK_CSPROCS       22 /* check number of current service processes */
+ #define CHECK_TSYNC         23 /* check timesync status 0=no 1=yes in sync to the network */
+ #define CHECK_LRUS          24 /* check LRU sitting time in seconds */
+ #define CHECK_DCB           25 /* check dirty cache buffers as a percentage of the total */
+ #define CHECK_TCB           26 /* check total cache buffers as a percentage of the original */
  
  #define PORT 9999
  
***************
*** 140,145 ****
--- 149,157 ----
  	char *temp_buffer=NULL;
  	char *netware_version=NULL;
  
+ 	int total_cache_buffers=0;
+ 	int dirty_cache_buffers=0;
+         int time_sync_status=0;
  	int open_files=0;
  	int abended_threads=0;
  	int max_service_processes=0;
***************
*** 602,607 ****
--- 614,683 ----
  
  		asprintf(&output_message,"%d current service processes (%d max)",current_service_processes,max_service_processes);
  
+ 	/* check # Timesync Status */
+         } else if (vars_to_check==CHECK_TSYNC) {
+ 
+ 	        asprintf(&send_buffer,"S22\r\n");
+ 		result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+ 		if(result!=STATE_OK)
+ 		        return result;
+ 
+ 		time_sync_status=atoi(recv_buffer);
+ 
+ 		if(time_sync_status==0) {
+ 		        result=STATE_CRITICAL;
+ 			asprintf(&output_message,"Critical: Time not in sync with network!");
+ 		}
+ 		else {
+ 		        asprintf(&output_message,"OK! Time in sync with network!");
+ 		}
+ 
+ 	/* check LRU sitting time in secondss */
+ 	} else if (vars_to_check==CHECK_LRUS) {
+ 
+ 		send_buffer = strscpy(send_buffer,"S4\r\n");
+ 		result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+ 		if(result!=STATE_OK)
+ 			return result;
+ 		lru_time=strtoul(recv_buffer,NULL,10);
+ 
+ 		if(check_critical_value==TRUE && lru_time <= critical_value)
+ 			result=STATE_CRITICAL;
+ 		else if(check_warning_value==TRUE && lru_time <= warning_value)
+ 			result=STATE_WARNING;
+ 		asprintf(&output_message,"LRU sitting time = %lu seconds",lru_time);
+ 
+ 
+ 	/* check % dirty cache buffers as a percentage of the total*/
+ 	} else if (vars_to_check==CHECK_DCB) {
+ 
+ 		send_buffer = strscpy(send_buffer,"S6\r\n");
+ 		result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+ 		if(result!=STATE_OK)
+ 			return result;
+ 		dirty_cache_buffers=atoi(recv_buffer);
+ 
+ 		if(check_critical_value==TRUE && dirty_cache_buffers <= critical_value)
+ 			result=STATE_CRITICAL;
+ 		else if(check_warning_value==TRUE && dirty_cache_buffers <= warning_value)
+ 			result=STATE_WARNING;
+ 		asprintf(&output_message,"dirty cache buffers = %d%% of the total",dirty_cache_buffers);
+ 
+ 	/* check % total cache buffers as a percentage of the original*/
+ 	} else if (vars_to_check==CHECK_TCB) {
+ 
+ 		send_buffer = strscpy(send_buffer,"S7\r\n");
+ 		result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+ 		if(result!=STATE_OK)
+ 			return result;
+ 		total_cache_buffers=atoi(recv_buffer);
+ 
+ 		if(check_critical_value==TRUE && total_cache_buffers <= critical_value)
+ 			result=STATE_CRITICAL;
+ 		else if(check_warning_value==TRUE && total_cache_buffers <= warning_value)
+ 			result=STATE_WARNING;
+ 		asprintf(&output_message,"total cache buffers = %d%% of the original",total_cache_buffers);
+ 		
  	} else {
  
  		output_message = strscpy(output_message,"Nothing to check!\n");
***************
*** 706,717 ****
--- 782,799 ----
  					vars_to_check=CHECK_CONNS;
  				else if(!strcmp(optarg,"LTCH"))
  					vars_to_check=CHECK_LTCH;
+ 				else if(!strcmp(optarg,"DCB"))
+ 					vars_to_check=CHECK_DCB;
+ 				else if(!strcmp(optarg,"TCB"))
+ 					vars_to_check=CHECK_TCB;
  				else if(!strcmp(optarg,"CBUFF"))
  					vars_to_check=CHECK_CBUFF;
  				else if(!strcmp(optarg,"CDBUFF"))
  					vars_to_check=CHECK_CDBUFF;
  				else if(!strcmp(optarg,"LRUM"))
  					vars_to_check=CHECK_LRUM;
+ 				else if(!strcmp(optarg,"LRUS"))
+ 					vars_to_check=CHECK_LRUS;
  				else if(strncmp(optarg,"VPF",3)==0){
  					vars_to_check=CHECK_VPF;
  					volume_name = strscpy(volume_name,optarg+3);
***************
*** 769,774 ****
--- 851,858 ----
  					vars_to_check=CHECK_ABENDS;
  				else if(!strcmp(optarg,"CSPROCS"))
  					vars_to_check=CHECK_CSPROCS;
+ 				else if(!strcmp(optarg,"TSYNC"))
+ 					vars_to_check=CHECK_TSYNC;
  				else
  					return ERROR;
  				break;