[1093] | 1 | # |
---|
| 2 | # the current cnagios.pl for UW-HEP |
---|
| 3 | # |
---|
| 4 | |
---|
| 5 | use strict; |
---|
| 6 | |
---|
| 7 | #------------------------------------------------------------------ |
---|
| 8 | |
---|
| 9 | sub host_plugin_hook { |
---|
| 10 | local($_) = $_[0]; |
---|
| 11 | |
---|
| 12 | s/\(Host assumed to be up\)/assumed up/; |
---|
| 13 | s/\(Host check timed out\)/timed out/; |
---|
| 14 | s/\(Not enough data to determine host status yet\)/none/; |
---|
| 15 | s/\(No Information Returned From Host Check\)/none/; |
---|
| 16 | s/Ping .*? - (\d+)% packet loss.*/$1% pkt loss/; |
---|
| 17 | |
---|
| 18 | return $_; |
---|
| 19 | } |
---|
| 20 | |
---|
| 21 | #------------------------------------------------------------------ |
---|
| 22 | |
---|
| 23 | sub service_plugin_hook { |
---|
| 24 | local($_) = $_[0]; |
---|
| 25 | |
---|
| 26 | # generic... |
---|
| 27 | s/Plugin timed out after \d+ seconds/timed out/; |
---|
| 28 | |
---|
| 29 | # check_pingwithperl... |
---|
| 30 | s/.* (\d+)% packet loss, \d+.\d+ ms ave rtt/$1% pkt loss/; |
---|
| 31 | |
---|
| 32 | # check_tcp... |
---|
| 33 | s/.* (\d+\.\d+) second[s]? response time.*/$1 sec response/; |
---|
| 34 | s/.* (\d+) second[s]? response time.*/$1 sec response/; |
---|
| 35 | s/.* (\d+\.\d+) sec[s]? response time.*/$1 sec response/; |
---|
| 36 | |
---|
| 37 | # check_ftp |
---|
| 38 | s/.*Invalid response from host/bad response/; |
---|
| 39 | |
---|
| 40 | # chech_ssh... |
---|
| 41 | s/.* (.*?OpenSSH.*?) .*/$1/; |
---|
| 42 | s/.*OpenSSH_3.5p1.*/OpenSSH_3.5p1/; |
---|
| 43 | s/.*Connection refused.*/connection refused/i; |
---|
| 44 | |
---|
| 45 | # check_netsnmp_disk & check_netsnmp_bigdisk... |
---|
| 46 | # also works for check_dcache_usage... |
---|
| 47 | while ( $_ =~ /(\d+\.\d+) TB/ ) { |
---|
| 48 | my $tb = $1; |
---|
| 49 | # WARNING: will fail for > 9999 GB... |
---|
| 50 | my $gb = sprintf("%4.4s",int($tb *1024)); |
---|
| 51 | $_ =~ s/$tb TB/$gb GB/; |
---|
| 52 | } |
---|
| 53 | while ( $_ =~ /(\d+\.\d+) GB/ ) { |
---|
| 54 | my $gb = $1; |
---|
| 55 | # WARNING: will fail for > 9999 GB... |
---|
| 56 | my $gb_new = sprintf("%4.4s",int($gb)); |
---|
| 57 | $_ =~ s/$gb GB/$gb_new GB/; |
---|
| 58 | } |
---|
| 59 | s/.*?(\d+ GB total,).*?,(\s*\d+ GB avail)/$1$2/; |
---|
| 60 | |
---|
| 61 | # check_netsnmp_loadave... |
---|
| 62 | s/.* load average: (\d+\.\d+).*/$1 loadave/; |
---|
| 63 | |
---|
| 64 | # check_ntp... |
---|
| 65 | s/.* Offset ([-]*\d+\.\d+) secs.*/$1 sec offset/; |
---|
| 66 | s/.* stratum (\d+), offset ([-]*\d+\.\d+).*/stratum $1, $2 sec offset/; |
---|
| 67 | s/.*Jitter\s+too high.*/jittering/; |
---|
| 68 | s/.*desynchronized peer server.*/desynchronized peer server/i; |
---|
| 69 | s/.*probably down.*/down/; |
---|
| 70 | |
---|
| 71 | # check_dhcp et al... |
---|
| 72 | s/.* Received \d+ DHCPOFFER.*max lease time = (\d+) sec.*/$1 sec lease time/; |
---|
| 73 | s/.* \d+ in use, (\d+) free/$1 free leases/; |
---|
| 74 | if ( s/DHCP problem: (.*)/$1/ ) { $_ = lc($_); } |
---|
| 75 | |
---|
| 76 | # check_afs_*... |
---|
| 77 | s/File Server Performance/Performance/; |
---|
| 78 | s/.* (\d+ blocked) connections/$1/; |
---|
| 79 | s/(.*?) AFS (\/.*)/$1 $2/; |
---|
| 80 | s/(.*?) AFS Volume Quotas/$1 AFS Volumes/; |
---|
| 81 | s/(\d+) processes running normally/$1 ok processes/; |
---|
| 82 | s/one process running normally/one ok process/; |
---|
| 83 | s/% used/%/g; |
---|
| 84 | s/user.(.*?)/$1/g; |
---|
| 85 | s/(\d+) volumes under quota/$1 ok volumes/; |
---|
| 86 | s/db version (\d+.\d+)/db $1/; |
---|
| 87 | |
---|
| 88 | # check_condor_client... |
---|
| 89 | s/.* vm1 = .*?\/(\S+), vm2 = .*?\/(\S+),.*/$1\/$2/; |
---|
| 90 | s/.* vm1 = .*?\/(\S+), vm2 = .*?\/(\S+).*/$1\/$2/; |
---|
| 91 | s/.* cpu = (\S+)/$1/; |
---|
| 92 | s/CondorQueue.*?(\d+ job[s]?, \d+ running).*/$1/; |
---|
| 93 | s/.*?No condor status.*/no condor status/; |
---|
| 94 | |
---|
| 95 | # check_condor_pool... |
---|
| 96 | s/.*?(\d+) nodes.*/$1 nodes/; |
---|
| 97 | |
---|
| 98 | # check_condor_queue... |
---|
| 99 | s/.*?(\d+ idle, \d+ held)/$1/; |
---|
| 100 | |
---|
| 101 | # check_nsr... |
---|
| 102 | s/.*?(\d+\.\d+ GB), (\d+ saves) since.*/$1, $2/; |
---|
| 103 | s/.*?(\d+ GB), (\d+ saves) since.*/$1, $2/; |
---|
| 104 | s/(\d+ GB avail)able, \d+ GB total/$1/; |
---|
| 105 | |
---|
| 106 | # check_hpjd... |
---|
| 107 | s/.*? - \(\".*\"\)/printer okay/; |
---|
| 108 | if ( s/(.*)\s+\(\".*\"\)/$1/ ) { $_ = lc($_); } |
---|
| 109 | |
---|
| 110 | # check_LPRng_queue... |
---|
| 111 | s/(\d+) active job[s]?/$1 active/; |
---|
| 112 | s/(\d+) stalled job[s]?/$1 stalled/; |
---|
| 113 | s/(\d+) spooled job[s]?/$1 spooled/; |
---|
| 114 | s/(\d+) incoming job[s]?/$1 incoming/; |
---|
| 115 | s/(\d+) incoming job[s]?/$1 incoming/; |
---|
| 116 | |
---|
| 117 | # check_jug_*... |
---|
| 118 | s/(\d+) JugRPC processes.*/$1 processes/; |
---|
| 119 | s/.*JugJobs.*?(\d+) running.*/$1 running/; |
---|
| 120 | s/.*Jug Storage.*?(\d+) unassigned.*/$1 unassigned/; |
---|
| 121 | |
---|
| 122 | # check_dcache*... |
---|
| 123 | s/.*no status available.*/not found/; |
---|
| 124 | s/.*not found in the cellInfo.*/not found/; |
---|
| 125 | s/service is (.*)/$1/; |
---|
| 126 | s/.*(\d+) ms ave ping time/$1 ms ping time/; |
---|
| 127 | s/.*(\d+) ms ping time/$1 ms ping time/; |
---|
| 128 | |
---|
| 129 | # (my) check_traffic & check_ifHighSpeed_traffic... |
---|
| 130 | # makes columnized XXX.XX Mbps output... |
---|
| 131 | s/.*? (.*) Traffic/$1 Traffic/; |
---|
| 132 | s/Internet Traffic/Traffic/; |
---|
| 133 | if ( $_ =~ /(\d+\.\d+) Gbps in/ ) { |
---|
| 134 | my $rate = $1; |
---|
| 135 | my $gbps = sprintf("%6.6s",$rate); |
---|
| 136 | $_ =~ s/$rate Gbps in/$gbps Gbps in/; |
---|
| 137 | } |
---|
| 138 | if ( $_ =~ /(\d+\.\d+) Gbps out/ ) { |
---|
| 139 | my $rate = $1; |
---|
| 140 | my $gbps = sprintf("%6.6s",$rate); |
---|
| 141 | $_ =~ s/$rate Gbps out/$gbps Gbps out/; |
---|
| 142 | } |
---|
| 143 | if ( $_ =~ /(\d+\.\d+) Mbps in/ ) { |
---|
| 144 | my $rate = $1; |
---|
| 145 | my $mbps = sprintf("%6.6s",$rate); |
---|
| 146 | $_ =~ s/$rate Mbps in/$mbps Mbps in/; |
---|
| 147 | } |
---|
| 148 | if ( $_ =~ /(\d+\.\d+) Mbps out/ ) { |
---|
| 149 | my $rate = $1; |
---|
| 150 | my $mbps = sprintf("%6.6s",$rate); |
---|
| 151 | $_ =~ s/$rate Mbps out/$mbps Mbps out/; |
---|
| 152 | } |
---|
| 153 | while ( $_ =~ /(\d+\.\d+) Kbps/ ) { |
---|
| 154 | my $rate = $1; |
---|
| 155 | my $mbps = sprintf("%.2f",$rate/1000); |
---|
| 156 | $mbps = sprintf("%6.6s",$mbps); |
---|
| 157 | $_ =~ s/$rate Kbps/$mbps Mbps/; |
---|
| 158 | } |
---|
| 159 | s/\d+\.\d+ bps/ 0.00 Mbps/g; |
---|
| 160 | |
---|
| 161 | # check_airport... |
---|
| 162 | s/(.*? AirPort) Usage/$1/; |
---|
| 163 | s/no connected clients/no clients/; |
---|
| 164 | s/(\d+) connected clients/$1 clients/; |
---|
| 165 | |
---|
| 166 | # check_netsnmp_raid... |
---|
| 167 | s/.*connect failed.*/connect failed/; |
---|
| 168 | s/.*degraded.*/degraded/; |
---|
| 169 | s/.*degraded/degraded/; |
---|
| 170 | s/.*rebuilding.*/rebuilding/; |
---|
| 171 | s/.*rebuilding/rebuilding/; |
---|
| 172 | s/.*built.*/building/; |
---|
| 173 | s/.*built/building/; |
---|
| 174 | s/.*optimal.*/optimal/; |
---|
| 175 | s/.*optimal/optimal/; |
---|
| 176 | |
---|
| 177 | # check_ip_routing_with_mtr |
---|
| 178 | s/\S+ to \S+ hop not found, first hop out is (\S+)/hop is $1/i; |
---|
| 179 | |
---|
| 180 | # check_phedex |
---|
| 181 | s/.*(\d+ UP agents).*/$1/; |
---|
| 182 | |
---|
| 183 | # plugin generic... |
---|
| 184 | s/.*no response.*/connection timed out/i; |
---|
| 185 | s/.*no route to host.*/no route to host/i; |
---|
| 186 | s/Socket timeout.*/socket timed out/; |
---|
| 187 | |
---|
| 188 | # nagios generic... |
---|
| 189 | s/\(Service Check Timed Out\)/check timed out/; |
---|
| 190 | s/\(No output returned from plugin\)/no output from plugin/; |
---|
| 191 | s/Service check scheduled for.*/none/; |
---|
| 192 | s/No data yet.*/no data yet/; |
---|
| 193 | s/\.$//; |
---|
| 194 | |
---|
| 195 | # generic generic... |
---|
| 196 | s/.*?OK - //i; |
---|
| 197 | s/.*?WARNING - //i; |
---|
| 198 | s/.*?CRITICAL - //i; |
---|
| 199 | s/.*?UNKNOWN - //i; |
---|
| 200 | |
---|
| 201 | return $_; |
---|
| 202 | |
---|
| 203 | } |
---|
| 204 | |
---|
| 205 | #------------------------------------------------------------------ |
---|
| 206 | |
---|
| 207 | # this sub is used for host/service/plugin-output |
---|
| 208 | # filtering... it should not change... |
---|
| 209 | |
---|
| 210 | sub regex_hook { |
---|
| 211 | my($str,$regex,$mode) = @_; |
---|
| 212 | if ( $mode == 0 ) { |
---|
| 213 | if ( $str =~ /$regex/ ) { return 0 } else { return 1 } |
---|
| 214 | } |
---|
| 215 | if ( $mode == 1 ) { |
---|
| 216 | if ( $str !~ /$regex/ ) { return 0 } else { return 1 } |
---|
| 217 | } |
---|
| 218 | return 2; |
---|
| 219 | } |
---|
| 220 | |
---|