[pkg-nagios-changes] [Git][nagios-team/monitoring-plugins][experimental] Adding d/p/33_check_procs_exclude-process from upstream

Jan Wagner (@waja) gitlab at salsa.debian.org
Fri Mar 24 19:07:23 GMT 2023



Jan Wagner pushed to branch experimental at Debian Nagios Maintainer Group / monitoring-plugins


Commits:
6f89be83 by Jan Wagner at 2023-03-24T19:04:52+00:00
Adding d/p/33_check_procs_exclude-process from upstream

- - - - -


2 changed files:

- + debian/patches/33_check_procs_exclude-process
- debian/patches/series


Changes:

=====================================
debian/patches/33_check_procs_exclude-process
=====================================
@@ -0,0 +1,168 @@
+From 691376d3a16da06e34740593d9a1de0e00cbffb8 Mon Sep 17 00:00:00 2001
+From: Christian Kujau <lists at nerdbynature.de>
+Date: Mon, 20 Mar 2023 11:35:01 +0100
+Subject: [PATCH 1/2] check_procs: Implement --exclude-process to exclude
+ specific processes.
+
+Signed-off-by: Christian Kujau <lists at nerdbynature.de>
+---
+ plugins/check_procs.c | 47 +++++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 45 insertions(+), 2 deletions(-)
+
+diff --git a/plugins/check_procs.c b/plugins/check_procs.c
+index a025ee891..d672dd44e 100644
+--- a/plugins/check_procs.c
++++ b/plugins/check_procs.c
+@@ -70,6 +70,7 @@ int options = 0; /* bitmask of filter criteria to test against */
+ #define PCPU 256
+ #define ELAPSED 512
+ #define EREG_ARGS 1024
++#define EXCLUDE_PROGS 2048
+ 
+ #define KTHREAD_PARENT "kthreadd" /* the parent process of kernel threads:
+ 							ppid of procs are compared to pid of this proc*/
+@@ -93,6 +94,9 @@ int rss;
+ float pcpu;
+ char *statopts;
+ char *prog;
++char *exclude_progs;
++char **exclude_progs_arr = NULL;
++char exclude_progs_counter = 0;
+ char *args;
+ char *input_filename = NULL;
+ regex_t re_args;
+@@ -250,6 +254,25 @@ main (int argc, char **argv)
+ 				continue;
+ 			}
+ 
++			/* Ignore excluded processes by name */
++			if(options & EXCLUDE_PROGS) {
++			  int found = 0;
++			  int i = 0;
++
++			  for(i=0; i < (exclude_progs_counter); i++) {
++			    if(!strcmp(procprog, exclude_progs_arr[i])) {
++			      found = 1;
++			    }
++			  }
++			  if(found == 0) {
++			    resultsum |= EXCLUDE_PROGS;
++			  } else
++			  {
++			    if(verbose >= 3)
++			      printf("excluding - by ignorelist\n");
++			  }
++			}
++
+ 			/* filter kernel threads (childs of KTHREAD_PARENT)*/
+ 			/* TODO adapt for other OSes than GNU/Linux
+ 					sorry for not doing that, but I've no other OSes to test :-( */
+@@ -409,6 +432,7 @@ process_arguments (int argc, char **argv)
+ 		{"input-file", required_argument, 0, CHAR_MAX+2},
+ 		{"no-kthreads", required_argument, 0, 'k'},
+ 		{"traditional-filter", no_argument, 0, 'T'},
++		{"exclude-process", required_argument, 0, 'X'},
+ 		{0, 0, 0, 0}
+ 	};
+ 
+@@ -417,7 +441,7 @@ process_arguments (int argc, char **argv)
+ 			strcpy (argv[c], "-t");
+ 
+ 	while (1) {
+-		c = getopt_long (argc, argv, "Vvhkt:c:w:p:s:u:C:a:z:r:m:P:T",
++		c = getopt_long (argc, argv, "Vvhkt:c:w:p:s:u:C:a:z:r:m:P:T:X:",
+ 			longopts, &option);
+ 
+ 		if (c == -1 || c == EOF)
+@@ -490,6 +514,23 @@ process_arguments (int argc, char **argv)
+ 			          prog);
+ 			options |= PROG;
+ 			break;
++		case 'X':
++			if(exclude_progs)
++			  break;
++			else
++			  exclude_progs = optarg;
++			xasprintf (&fmt, _("%s%sexclude progs '%s'"), (fmt ? fmt : ""), (options ? ", " : ""),
++				   exclude_progs);
++			char *p = strtok(exclude_progs, ",");
++
++			while(p){
++			  exclude_progs_arr = realloc(exclude_progs_arr, sizeof(char*) * ++exclude_progs_counter);
++			  exclude_progs_arr[exclude_progs_counter-1] = p;
++			  p = strtok(NULL, ",");
++			}
++
++			options |= EXCLUDE_PROGS;
++			break;
+ 		case 'a':									/* args (full path name with args) */
+ 			/* TODO: allow this to be passed in with --metric */
+ 			if (args)
+@@ -745,6 +786,8 @@ print_help (void)
+   printf ("   %s\n", _("Only scan for processes with args that contain the regex STRING."));
+   printf (" %s\n", "-C, --command=COMMAND");
+   printf ("   %s\n", _("Only scan for exact matches of COMMAND (without path)."));
++  printf (" %s\n", "-X, --exclude-process");
++  printf ("   %s\n", _("Exclude processes which match this comma seperated list"));
+   printf (" %s\n", "-k, --no-kthreads");
+   printf ("   %s\n", _("Only scan for non kernel threads (works on Linux only)."));
+ 
+@@ -786,5 +829,5 @@ print_usage (void)
+   printf ("%s\n", _("Usage:"));
+ 	printf ("%s -w <range> -c <range> [-m metric] [-s state] [-p ppid]\n", progname);
+   printf (" [-u user] [-r rss] [-z vsz] [-P %%cpu] [-a argument-array]\n");
+-  printf (" [-C command] [-k] [-t timeout] [-v]\n");
++  printf (" [-C command] [-X process_to_exclude] [-k] [-t timeout] [-v]\n");
+ }
+
+From 7b7037280c36279ea51de07f9a4efea10bcfa24c Mon Sep 17 00:00:00 2001
+From: Christian Kujau <lists at nerdbynature.de>
+Date: Tue, 21 Mar 2023 11:26:03 +0100
+Subject: [PATCH 2/2] check_procs: add a test for the newly added -X option.
+
+$ make test
+[...]
+perl -I .. -I .. ../test.pl
+No application (check_curl) found for test harness (check_curl.t)
+No application (check_snmp) found for test harness (check_snmp.t)
+./t/check_procs.t ...... ok
+./tests/check_nt.t ..... ok
+./tests/check_procs.t .. ok
+All tests successful.
+Files=4, Tests=73,  8 wallclock secs ( 0.05 usr  0.02 sys +  0.38 cusr
+0.22 csys =  0.67 CPU)
+Result: PASS
+
+Signed-off-by: Christian Kujau <lists at nerdbynature.de>
+---
+ plugins/tests/check_procs.t | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/plugins/tests/check_procs.t b/plugins/tests/check_procs.t
+index 3af218f50..b3a0a3015 100755
+--- a/plugins/tests/check_procs.t
++++ b/plugins/tests/check_procs.t
+@@ -8,7 +8,7 @@ use Test::More;
+ use NPTest;
+ 
+ if (-x "./check_procs") {
+-	plan tests => 52;
++	plan tests => 54;
+ } else {
+ 	plan skip_all => "No check_procs compiled";
+ }
+@@ -34,9 +34,13 @@ is( $result->return_code, 0, "Checking no threshold breeched" );
+ is( $result->output, "PROCS OK: 95 processes | procs=95;100;200;0;", "Output correct" );
+ 
+ $result = NPTest->testCmd( "$command -C launchd -c 5" );
+-is( $result->return_code, 2, "Checking processes filtered by command name" );
++is( $result->return_code, 2, "Checking processes matched by command name" );
+ is( $result->output, "PROCS CRITICAL: 6 processes with command name 'launchd' | procs=6;;5;0;", "Output correct" );
+ 
++$result = NPTest->testCmd( "$command -X bash -c 5" );
++is( $result->return_code, 2, "Checking processes excluded by command name" );
++is( $result->output, "PROCS CRITICAL: 95 processes with exclude progs 'bash' | procs=95;;5;0;", "Output correct" );
++
+ SKIP: {
+     skip 'user with uid 501 required', 4 unless getpwuid(501);
+ 


=====================================
debian/patches/series
=====================================
@@ -11,3 +11,4 @@
 30_check_radius_radcli_1.3.1_support
 31_checl_mailq_separate_submission_queue
 32_check_disk_add_ignore_missing
+33_check_procs_exclude-process



View it on GitLab: https://salsa.debian.org/nagios-team/monitoring-plugins/-/commit/6f89be83806b412706bd45e1ffaeb57431d2ae32

-- 
View it on GitLab: https://salsa.debian.org/nagios-team/monitoring-plugins/-/commit/6f89be83806b412706bd45e1ffaeb57431d2ae32
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-nagios-changes/attachments/20230324/5eba6bb1/attachment-0001.htm>


More information about the pkg-nagios-changes mailing list