| [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 |  | 
|---|