| 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 ]]; | 
|---|