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