| [42] | 1 | # File:    $Id: map,v 1.9 2005/10/08 05:55:08 sauber Exp $ | 
|---|
 | 2 | # Author:  (c) Soren Dossing, 2005 | 
|---|
 | 3 | # License: OSI Artistic License | 
|---|
 | 4 | #          http://www.opensource.org/licenses/artistic-license.php | 
|---|
 | 5 |  | 
|---|
 | 6 | ######################################################################## | 
|---|
 | 7 | # | 
|---|
 | 8 | # INSTRUCTIONS: | 
|---|
 | 9 | # | 
|---|
 | 10 | # This file contains several example of service types. Edit this file to  | 
|---|
 | 11 | # add more service types. The data string from Nagios is in $_ . Use  | 
|---|
 | 12 | # regular expressions to identify and extract data like the examples below | 
|---|
 | 13 | # below.  Match on either output: or perfdata: . The code is pure perl,  | 
|---|
 | 14 | # that will be run inside and eval{}. Results are expected in @s. The | 
|---|
 | 15 | # general format is: | 
|---|
 | 16 | #  | 
|---|
 | 17 | # /output|perfdata:<servicetype> <key>=<value> <key2=value2> .../ | 
|---|
 | 18 | # and push @s, [ <databasename>, | 
|---|
 | 19 | #                [ <key>,  GAUGE|DERIVE, <value>  ], | 
|---|
 | 20 | #                [ <key2>, GAUGE|DERIVE, <value2> ], | 
|---|
 | 21 | #                [ .       .              .        ], | 
|---|
 | 22 | #                [ .       .              .        ] ]; | 
|---|
 | 23 | #  | 
|---|
 | 24 | # But more advanced code is possible, as long as the resulting  | 
|---|
 | 25 | # datastructure is correct. | 
|---|
 | 26 | #  | 
|---|
 | 27 | ######################################################################## | 
|---|
 | 28 |  | 
|---|
 | 29 | # Service type: ping | 
|---|
 | 30 | #   output:PING OK - Packet loss = 0%, RTA = 0.00 ms | 
|---|
 | 31 | /output:PING.*?(\d+)%.+?([.\d]+)\sms/ | 
|---|
 | 32 | and push @s, [ "ping", | 
|---|
 | 33 |                [ "losspct", GAUGE, $1      ], | 
|---|
 | 34 |                [ "rta",     GAUGE, $2/1000 ] ]; | 
|---|
 | 35 |  | 
|---|
 | 36 | # Service type: single disk | 
|---|
 | 37 | #  output:DISK OK - free space: /tmp 663 MB (90%): | 
|---|
 | 38 | /output:DISK.*free space: (\S+) (\d+) MB \((\d+)\%\)/ | 
|---|
 | 39 | and push @s, [ $1, | 
|---|
 | 40 |                [ "bytesfree", GAUGE, $2*1024**2 ], | 
|---|
 | 41 |                [ "bytesmax", GAUGE, $3 ? $2*1024**2/$3*100 : 'U' ], | 
|---|
 | 42 |                [ "pctfree", GAUGE, $3 ] ]; | 
|---|
 | 43 |  | 
|---|
 | 44 | # Service type: all unix-disk | 
|---|
 | 45 | # Note: nagiosplugin requires the inode patch | 
|---|
 | 46 | #   ouput:DISK OK - free space: / 12372 mB (77% inode=96%): /raid 882442 mB (88% inode=91%): | 
|---|
 | 47 | #   perfdata: /=12372mB;14417;15698;96;16019 /raid=882441mB;999780;999780;91;999780 | 
|---|
 | 48 | /output:DISK.*inode=/ and do { | 
|---|
 | 49 |   my @_pct = /: (\/.*?) .*?(\d+)% inode=(\d+)%/g; | 
|---|
 | 50 |   while ( my($_d,$_b,$_i) = splice @_pct,0,3 ) { | 
|---|
 | 51 |     my @_s; | 
|---|
 | 52 |     /perfdata:.*$_d=(\d+)\w*?;(\d+);(\d+);(\d+);(\d+)/; | 
|---|
 | 53 |     push @s, [ $_d, | 
|---|
 | 54 |                [ "free",     GAUGE, $1*1024**2  ], | 
|---|
 | 55 |                [ "user",     GAUGE, $2*1024**2  ], | 
|---|
 | 56 |                [ "root",     GAUGE, $3*1024**2  ], | 
|---|
 | 57 |                [ "max",      GAUGE, $5*1024**2  ], | 
|---|
 | 58 |                [ "blockpct", GAUGE, $_b ], | 
|---|
 | 59 |                [ "inodepct", GAUGE, $_i ] ]; | 
|---|
 | 60 |   } | 
|---|
 | 61 | }; | 
|---|
 | 62 |  | 
|---|
 | 63 | # Service type: unix-dns | 
|---|
 | 64 | #   output:DNS OK - 0.008 seconds response time (test.test.1M IN A192.169.0.47) | 
|---|
 | 65 | #   perfdata:time=8260us;;;0 | 
|---|
 | 66 | /output:DNS.*?([.0-9]+) sec/ | 
|---|
 | 67 | and push @s, [ "dns", | 
|---|
 | 68 |                [ "response",  GAUGE, $1 ] ]; | 
|---|
 | 69 |  | 
|---|
 | 70 | # Service type: unix-imap | 
|---|
 | 71 | #   output:IMAP OK - 0.009 second response time on port 143 | 
|---|
 | 72 | /output:IMAP.*?([-.0-9]+) sec/ | 
|---|
 | 73 | and push @s, [ "imap", | 
|---|
 | 74 |                [ "response", GAUGE, $1 ] ]; | 
|---|
 | 75 |  | 
|---|
 | 76 | # Service type: unix-ldap | 
|---|
 | 77 | #   ouput:LDAP OK - 0.004 seconds response time | 
|---|
 | 78 | #   perfdata:time=3657us;;;0 | 
|---|
 | 79 | /output:LDAP.*?([.0-9]+) sec/ | 
|---|
 | 80 | and push @s, [ "ldap", | 
|---|
 | 81 |                [ "response", GAUGE, $1 ] ]; | 
|---|
 | 82 |  | 
|---|
 | 83 | # Service type: unix-load | 
|---|
 | 84 | #   output: OK - load average: 0.66, 0.70, 0.73 | 
|---|
 | 85 | #   perfdata:load1=0;15;30;0 load5=0;10;25;0 load15=0;5;20;0 | 
|---|
 | 86 | /output:.*load average: ([.0-9]+), ([.0-9]+), ([.0-9]+)/ | 
|---|
 | 87 | and push @s, [ "load", | 
|---|
 | 88 |                [ "avg1min",  GAUGE, $1 ], | 
|---|
 | 89 |                [ "avg5min",  GAUGE, $2 ], | 
|---|
 | 90 |                [ "avg15min", GAUGE, $3 ] ]; | 
|---|
 | 91 |  | 
|---|
 | 92 | # Service type: unix-mailq | 
|---|
 | 93 | #   output:WARNING: mailq is 5717 (threshold w = 5000) | 
|---|
 | 94 | #   perfdata:unsent=5717;5000;10000;0 | 
|---|
 | 95 | /perfdata:unsent=(\d+);(\d+);(\d+);(\d+)/ | 
|---|
 | 96 | and push @s, [ "mailq", | 
|---|
 | 97 |                [ "qsize", GAUGE, $1 ], | 
|---|
 | 98 |                [ "qwarn", GAUGE, $2 ], | 
|---|
 | 99 |                [ "qcrit", GAUGE, $3 ] ]; | 
|---|
 | 100 |  | 
|---|
 | 101 | # Service type: unix-netstat | 
|---|
 | 102 | #   output:OK | 
|---|
 | 103 | #   perfdata:udpInDatagrams=46517147, udpOutDatagrams=46192507, udpInErrors=0,  | 
|---|
 | 104 | #   tcpActiveOpens=1451583, tcpPassiveOpens=1076181, tcpAttemptFails=1909,  | 
|---|
 | 105 | #   tcpEstabResets=5045, tcpCurrEstab=6, tcpOutDataBytes=3162434373,  | 
|---|
 | 106 | #   tcpInDataBytes=1942718261, tcpRetransBytes=215439 | 
|---|
 | 107 | /perfdata:.*udpInDatagrams=(\d+), udpOutDatagrams=(\d+), udpInErrors=(\d+), tcpActiveOpens=(\d+), tcpPassiveOpens=(\d+), tcpAttemptFails=(\d+), tcpEstabResets=(\d+), tcpCurrEstab=(\d+), tcpOutDataBytes=(\d+), tcpInDataBytes=(\d+), tcpRetransBytes=(\d+)/ | 
|---|
 | 108 | and push @s, [ "udp", | 
|---|
 | 109 |                [ "InPkts",  DERIVE, int $1/300 ], | 
|---|
 | 110 |                [ "OutPkts", DERIVE, int $2/300 ], | 
|---|
 | 111 |                [ "Errors",  DERIVE, int $3/300 ] ], | 
|---|
 | 112 |              [ "tcp", | 
|---|
 | 113 |                [ "ActOpens",    DERIVE, int $4/300    ], | 
|---|
 | 114 |                [ "PsvOpens",    DERIVE, int $5/300    ], | 
|---|
 | 115 |                [ "AttmptFails", DERIVE, int $6/300    ], | 
|---|
 | 116 |                [ "OutBytes",    DERIVE, int $9/300*8  ], | 
|---|
 | 117 |                [ "InBytes",     DERIVE, int $10/300*8 ] ]; | 
|---|
 | 118 |  | 
|---|
 | 119 | # Service type: unix-ntp | 
|---|
 | 120 | #   output:NTP OK: Offset 0.001083 secs, jitter 14.84 msec, peer is stratum 1 | 
|---|
 | 121 | /output:NTP.*Offset ([-.0-9]+).*jitter ([-.0-9]+).*stratum (\d+)/ | 
|---|
 | 122 | and push @s, [ "ntp", | 
|---|
 | 123 |                [ "offset",  GAUGE, $1      ], | 
|---|
 | 124 |                [ "jitter",  GAUGE, $2/1000 ], | 
|---|
 | 125 |                [ "stratum", GAUGE, $3+1    ] ]; | 
|---|
 | 126 |  | 
|---|
 | 127 | # Service type: unix-pop | 
|---|
 | 128 | #   output:POP OK - 0.008 second response time on port 110 | 
|---|
 | 129 | /output:POP.*?([.0-9]+) second/ | 
|---|
 | 130 | and push @s, [ "pop3", | 
|---|
 | 131 |                [ "response", GAUGE, $1 ] ]; | 
|---|
 | 132 |  | 
|---|
 | 133 | # Service type: unix-procs | 
|---|
 | 134 | #   output:PROCS OK: 43 processes | 
|---|
 | 135 | /output:PROCS.*?(\d+) processes\n/ | 
|---|
 | 136 | and push @s, [ "procs", | 
|---|
 | 137 |                [ "procs", GAUGE, $1 ] ]; | 
|---|
 | 138 |  | 
|---|
 | 139 | # Service type: unix-smtp | 
|---|
 | 140 | #   output:SMTP OK - 0.187 sec. response time | 
|---|
 | 141 | /output:SMTP.*?([-.0-9]+) sec/ | 
|---|
 | 142 | and push @s, [ "smtp", | 
|---|
 | 143 |                [ "response", GAUGE, $1 ] ]; | 
|---|
 | 144 |  | 
|---|
 | 145 | # Service type: unix-swap | 
|---|
 | 146 | #   output:SWAP OK: 96% free (2616 MB out of 2744 MB) | 
|---|
 | 147 | #   perfdata:swap=2616MB;274;54;0;2744 | 
|---|
 | 148 | /perfdata:swap=(\d+)MB;(\d+);(\d+);\d+;(\d+)/ | 
|---|
 | 149 | and push @s, [ "swap", | 
|---|
 | 150 |                [ "swapfree", GAUGE, $1*1024**2 ], | 
|---|
 | 151 |                [ "swapwarn", GAUGE, $2*1024**2 ], | 
|---|
 | 152 |                [ "swapcrit", GAUGE, $3*1024**2 ], | 
|---|
 | 153 |                [ "swapmax",  GAUGE, $4*1024**2 ] ]; | 
|---|
 | 154 |  | 
|---|
 | 155 | # Service type: unix-users | 
|---|
 | 156 | #   output:USERS OK - 4 users currently logged in | 
|---|
 | 157 | #   perfdata:users=4;5;10;0  | 
|---|
 | 158 | /perfdata:users=(\d+);(\d+);(\d+)/ | 
|---|
 | 159 | and push @s, [ "procs", | 
|---|
 | 160 |                [ "users", GAUGE, $1 ], | 
|---|
 | 161 |                [ "uwarn",  GAUGE, $2 ], | 
|---|
 | 162 |                [ "ucrit",  GAUGE, $3 ] ]; | 
|---|
 | 163 |  | 
|---|
 | 164 | # Service type: unix-zombies | 
|---|
 | 165 | #   ouput:PROCS OK: 0 processes with STATE = Z | 
|---|
 | 166 | /output:PROCS.*?(\d+) processes.*Z/ | 
|---|
 | 167 | and push @s, [ "zombie", | 
|---|
 | 168 |                [ "zombies", GAUGE, $1 ] ]; | 
|---|
 | 169 |  | 
|---|
 | 170 | # Service type: unix-www | 
|---|
 | 171 | #   ouput:HTTP OK HTTP/1.1 200 OK - 1456 bytes in 0.003 seconds | 
|---|
 | 172 | /output:HTTP.*?(\d+) byte.*?([.0-9]+) sec/ | 
|---|
 | 173 | and push @s, [ "http", | 
|---|
 | 174 |                [ "bps", GAUGE, $1/$2 ] ]; | 
|---|
 | 175 |  | 
|---|
 | 176 | # Service type: unix-tcp | 
|---|
 | 177 | #   output:TCP OK - 0.061 second response time on port 22 | 
|---|
 | 178 | #   perfdata:time=0.060777s;0.000000;0.000000;0.000000;10.000000 | 
|---|
 | 179 | /output:TCP.*?on port (\d+)\s*perfdata:time=(\d+\.\d+).*(\d+\.\d+)\D*(\d+\.\d+)\D*(\d+\.\d+)\D*(\d+\.\d+)/ | 
|---|
 | 180 | and push @s, [ "tcp_$1", | 
|---|
 | 181 |                [ 'connect_time',   GAUGE, $2 ], | 
|---|
 | 182 |                [ 'warning_time',   GAUGE, $3 ], | 
|---|
 | 183 |                [ 'critical_time',  GAUGE, $4 ], | 
|---|
 | 184 |                [ 'socket_timeout', GAUGE, $6 ], | 
|---|
 | 185 |              ]; | 
|---|
 | 186 |  | 
|---|
 | 187 | # Service type: mysql | 
|---|
 | 188 | #   output: Uptime: 1659115  Threads: 1  Questions: 6424617  Slow queries: 0  Opens: 0  Flush tables: 1  Open tables: 512  Queries per second avg: 3.872 Slave IO: Yes Slave SQL: Yes Seconds Behind Master: 0 | 
|---|
 | 189 | /output:Uptime.*Questions: (\d+).*Queries per second avg: (\d+\.?\d+)/ | 
|---|
 | 190 | and push @s, [ "mysql", | 
|---|
 | 191 |                 [ 'qps', DERIVE, $1 ], | 
|---|
 | 192 |                 [ 'avgqps', GAUGE, $2 ]]; | 
|---|