File: 078critfirst.t

package info (click to toggle)
monitoring-plugins-check-logfiles 4.1.1-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,024 kB
  • sloc: perl: 19,496; sh: 3,422; makefile: 72; awk: 41
file content (161 lines) | stat: -rw-r--r-- 6,066 bytes parent folder | download | duplicates (2)
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
#!/usr/bin/perl -w
#
# ~/check_logfiles/test/078critfirst.t
#
#  Test that all the Perl modules we require are available.
#

use strict;
use Test::More tests => 2;
use Cwd;
use lib "../plugins-scripts";
use Nagios::CheckLogfiles::Test;
use constant TESTDIR => ".";

my $configfile = <<'EOCFG';
@searches = ({
  tag => 'critfirst',
  logfile => 'var/tmp/eventlog',
  #type => 'eventlog',
  #eventlog => {
  #  eventlog => 'application',
  #  include => {
  #    eventtype => 'error,warning',
  #  },
  #},
  # 'winwarncrit' mappt windows Kritikalitaet auf Nagios: ERROR->CRITICAL, WARNING->WARNING
  options => 'supersmartscript,winwarncrit,noperfdata,noprotocol,preferredlevel=critical,eventlogformat="(id:%i/so:%s) - %m"',
  script => \&reformat_output,
  criticalpatterns => [
      # hier stehen die Events (die im Eventlog vom Typ Warning oder Error sein koennen)
      # bei deren Auftauchen sofort gehandelt werden muss, die also Nagios-seitig
      # als CRITICAL eingestuft werden sollen.
      'id:1069 so:ClusSvc .* msg:Cluster Resource .* in Ressourcengruppe .* ist fehlgeschlagen',
  ],
	# TODO: Dies ist nur ein Beispiel, wie man ein durch winwarncrit kritisches Event
	# wieder auf Warning zurueckstufen kann:
	criticalexceptions => [
	'id:.* so:.* ca:.* msg:.*Faulting application.*',
	'id:.* so:.* ca:.* msg:.*Tivoli\\\TSM\\\baclient\\\jvm60\\\jre\\\bin\\\unpack.dll.*',
	'id:.* so:.* ca:.* msg:.*Tivoli\\\TSM\\\baclient\\\jvm60\\\jre\\\bin\\\unpack200.exe.*',
	'id:.* so:AdsmClientService ca:.* msg:.*',
	'id:.* so:Perflib ca:.* msg:.*',
	'id:.* so:Userenv ca:.* msg:.*',
	'id:0010 so:.* ca:.* msg:.*',
	'id:0020 so:OCS_INVENTORY_SERVICE ca:.* msg:.*',
	'id:0033 so:SideBySide ca:.* msg:.*',
	'id:0050 so:ProIsam ca:.* msg:.*',
	'id:0109 so:.* ca:.* msg:.*',
	'id:0215 so:.* ca:.* msg:.*',
	'id:0502 so:Folder Redirection ca:.* msg:.*',
	'id:1000 so:.* ca:.* msg:.*',
	'id:1002 so:.* ca:.* msg:.*',
	'id:1026 so:.* ca:.* msg:.*',
	'id:1306 so:BCAAA ca:.* msg:.*',
	'id:1308 so:BCAAA ca:.* msg:.*',
	'id:1313 so:BCAAA ca:.* msg:.*',
	'id:1325 so:.* ca:.* msg:.*',
	'id:1529 so:Microsoft-Windows-User_Profiles_Service ca:.* msg:Roaming user profiles across forests are disabled.*',
	'id:4096 so:.* ca:.* msg:.*',
	'id:4187 so:mgmtagnt ca:2 msg:.*',
	],
	warningexceptions => [
	# die hier aufgeführten Events, sollen nicht weiter beachtet werden. 
	# \ mit \\\ angeben sonst gibt es Fehlermeldungen
	# '.* .* .* msg:.*\\\Registry\\\User.*',
	'id:.* so:.* ca:.* msg:.*Tivoli\\\TSM\\\baclient\\\jvm60\\\jre\\\bin\\\unpack.dll.*',
	'id:.* so:.* ca:.* msg:.*Tivoli\\\TSM\\\baclient\\\jvm60\\\jre\\\bin\\\unpack200.exe.*',
	'id:.* so:TCLINKLN  ca:.* msg:.*',
	'id:.* so:TCLINKSC  ca:.* msg:.*',
	'id:.* so:TCLINKSCT  ca:.* msg:.*',
	'id:0010 so:.* ca:.* msg:.*',
	'id:0020 so:OCS_INVENTORY_SERVICE  ca:.* msg:.*',
	'id:0033 so:SideBySide ca:.* msg:',
	'id:0050 so:ProIsam  ca:.* msg:.*',
	'id:0502 so:ERA_SERVER  ca:.* msg:.*',
	'id:0502 so:Folder Redirection  ca:.* msg:.*',
	'id:1000 so:.* ca:.* msg:.*',
	'id:1002 so:.* ca:.* msg:.*',
	'id:1026 so:.* ca:.* msg:.*',
	'id:1030 so:Userenv  ca:.* msg:.*',
	'id:1055 so:Userenv  ca:.* msg:.*',
	'id:1058 so:Userenv  ca:.* msg:.*',
	'id:1109 so:Userenv  ca:.* msg:.*',
	'id:11312 so:FSPeripheryApplication  ca:.* msg:.*',
	'id:1306 so:BCAAA ca:.* msg:.*',
	'id:1309 so:ASP.Net_xxx  ca:.* msg:.*',
	'id:1313 so:BCAAA ca:.* msg:.*',
	'id:1325 so:.* ca:.* msg:.*',
	'id:1516 so:Userenv  ca:.* msg:.*',
	'id:1517 so:Userenv  ca:.* msg:.*',
	'id:1524 so:Userenv  ca:.* msg:.*',
	'id:1529 so:Microsoft-Windows-User_Profiles_Service ca:.* msg:Roaming user profiles across forests are disabled.*',
	'id:1529 so:Userenv  ca:.* msg:.*',
	'id:1530 so:User Profile Service  ca:.* msg:.*',
	'id:16022 so:TCOSS  ca:.* msg:.*',
	'id:2003 so:Perflib  ca:.* msg:.*',
	'id:4096 so:Server_Intelligence_Agent  ca:.* msg:.*',
	'id:4097 so:AdsmClientService  ca:.* msg:.*',
	'id:4099 so:AdsmClientService  ca:.* msg:.*',
	'id:4100 so:AdsmClientService  ca:.* msg:.*',
	'id:4101 so:AdsmClientService  ca:.* msg:.*',
	'id:4103 so:AdsmClientService  ca:.* msg:.*',
	'id:4187 so:mgmtagnt ca:2 msg:.*',
	],
	# saemtliche anderen Events (auch solche, die noch niemals vorgekommen sind)
	# erscheinen in Nagios als WARNING.
	warningpatterns => [
	  '.*',
	],
},);

sub reformat_output{
	(my $out = $ENV{CHECK_LOGFILES_SERVICEOUTPUT}) =~ s/.*id:(.*)?so:(.*)?/ID:$1 SO:$2/;
	print $out;
	return $ENV{CHECK_LOGFILES_SERVICESTATEID};
}

$options = 'report=long';

EOCFG
my $testdir = TESTDIR;
$configfile =~ s/TESTDIR/"$testdir"/g;
open CCC, ">./etc/check_critfirst.cfg";
print CCC $configfile;
close CCC;

my $cl = Nagios::CheckLogfiles::Test->new({ cfgfile => "./etc/check_critfirst.cfg" });
my $critfirst = $cl->get_search_by_tag("critfirst");

$critfirst->delete_logfile();
$critfirst->delete_seekfile();
$critfirst->trace("deleted logfile and seekfile");

# 1 logfile will be created. there is no seekfile. position at the end of file
# and remember this as starting point for the next run.
$critfirst->trace(sprintf "+----------------------- test %d ------------------", 1);
$critfirst->logger(undef, undef, 2, "Failed password for invalid user1...");
sleep 2;
$critfirst->loggercrap(undef, undef, 100);
sleep 1;
$critfirst->trace("initial run");
$cl->run();
diag($cl->has_result());
diag($cl->{exitmessage});
ok($cl->expect_result(0, 0, 0, 0, 0));

# 2 now find the two criticals
$critfirst->trace(sprintf "+----------------------- test %d ------------------", 2);
$cl->reset();
#$critfirst->loggercrap(undef, undef, 10);
$critfirst->logger(undef, undef, 2, "EE_WW_TTid:1111 so:test msg:WinWarn");
$critfirst->logger(undef, undef, 2, "EE_CC_TTid:2222 so:test msg:WinCrit");
$critfirst->logger(undef, undef, 2, "EE_CC_TTid:1069 so:ClusSvc alarm msg:Cluster Resource CL1 in Ressourcengruppe CL ist fehlgeschlagen");
$critfirst->logger(undef, undef, 2, "EE_WW_TTid:1111 so:test msg:WinWarn");
sleep 1;
$cl->run();
diag($cl->has_result());
diag($cl->{exitmessage});
diag($cl->{long_exitmessage});
ok($cl->expect_result(0, 6, 2, 0, 2));