log-facility local6
*.info;mail.none;authpriv.none;cron.none;local6.none /var/log/messages local6.* /var/log/dhcpd.log local6.* /var/log/dhcpd-stat.log
#!/bin/bash for HOST in dhcp1 dhcp2 do TARGET=/srv/www/noc.lds.net.ua/dhcp/$HOST mkdir -p $TARGET cd $TARGET scp $HOST:/var/log/dhcpd-stat.log ./ ssh $HOST "echo -n > /var/log/dhcpd-stat.log" if [ ! -f dhcpqueries.rrd ] then /usr/bin/rrdtool create dhcpqueries.rrd \ DS:request:GAUGE:600:0:10000000 \ DS:ack:GAUGE:600:0:10000000 \ DS:decline:GAUGE:600:0:10000000 \ DS:discover:GAUGE:600:0:10000000 \ DS:release:GAUGE:600:0:10000000 \ DS:nak:GAUGE:600:0:10000000 \ DS:info:GAUGE:600:0:10000000 \ DS:offer:GAUGE:600:0:10000000 \ RRA:AVERAGE:0.5:1:800 \ RRA:AVERAGE:0.5:6:800 \ RRA:AVERAGE:0.5:24:800 \ RRA:AVERAGE:0.5:288:800 \ RRA:MAX:0.5:1:800 \ RRA:MAX:0.5:6:800 \ RRA:MAX:0.5:24:800 \ RRA:MAX:0.5:288:800 fi out=$(awk ' BEGIN {request=0;ack=0;decline=0;discover=0;release=0;nak=0;info=0;offer=0} { if($6 == "DHCPREQUEST") {request = request + 1} if($6 == "DHCPACK") {ack = ack + 1} if($6 == "DHCPDECLINE") {decline = decline + 1} if($6 == "DHCPDISCOVER") {discover = discover + 1} if($6 == "DHCPRELEASE") {release = release + 1} if($6 == "DHCPNAK") {nak = nak + 1} if($6 == "DHCPINFORM") {info = info + 1} if($6 == "DHCPOFFER") {offer = offer + 1} } END {print request ":" ack ":" decline ":" discover ":" release ":" nak ":" info ":" offer} ' dhcpd-stat.log) /usr/bin/rrdtool update dhcpqueries.rrd --template \ request:ack:decline:discover:release:nak:info:offer \ N:$out /usr/bin/rrdtool graph dhcprequest.png \ -v "Requests/Minute" \ --rigid \ -l 0 \ --start -86400 \ DEF:a=dhcpqueries.rrd:request:AVERAGE \ DEF:b=dhcpqueries.rrd:ack:AVERAGE \ DEF:c=dhcpqueries.rrd:decline:AVERAGE \ DEF:d=dhcpqueries.rrd:discover:AVERAGE \ DEF:e=dhcpqueries.rrd:release:AVERAGE \ DEF:f=dhcpqueries.rrd:nak:AVERAGE \ DEF:g=dhcpqueries.rrd:info:AVERAGE \ DEF:h=dhcpqueries.rrd:offer:AVERAGE \ CDEF:cdefa=a,5,/ \ CDEF:cdefb=b,5,/ \ CDEF:cdefc=c,5,/ \ CDEF:cdefd=d,5,/ \ CDEF:cdefe=e,5,/ \ CDEF:cdeff=f,5,/ \ CDEF:cdefg=g,5,/ \ CDEF:cdefh=h,5,/ \ LINE1:cdefa#9C7BBD:DHCPREQUEST \ GPRINT:cdefa:LAST:" Cur\:%8.1lf" \ GPRINT:cdefa:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefa:MAX:"Max\:%8.1lf\n" \ LINE1:cdefb#3152A5:DHCPACK \ GPRINT:cdefb:LAST:" Cur\:%8.1lf" \ GPRINT:cdefb:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefb:MAX:"Max\:%8.1lf\n" \ LINE1:cdefc#750F7D:DHCPDECLINE \ GPRINT:cdefc:LAST:" Cur\:%8.1lf" \ GPRINT:cdefc:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefc:MAX:"Max\:%8.1lf\n" \ LINE1:cdefd#157419:DHCPDISCOVER \ GPRINT:cdefd:LAST:" Cur\:%8.1lf" \ GPRINT:cdefd:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefd:MAX:"Max\:%8.1lf\n" \ LINE1:cdefe#6DC8FE:DHCPRELEASE \ GPRINT:cdefe:LAST:" Cur\:%8.1lf" \ GPRINT:cdefe:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefe:MAX:"Max\:%8.1lf\n" \ LINE1:cdeff#FFAB00:DHCPNAK \ GPRINT:cdeff:LAST:" Cur\:%8.1lf" \ GPRINT:cdeff:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdeff:MAX:"Max\:%8.1lf\n" \ LINE1:cdefg#FF0000:DHCPINFORM \ GPRINT:cdefg:LAST:" Cur\:%8.1lf" \ GPRINT:cdefg:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefg:MAX:"Max\:%8.1lf\n" \ LINE1:cdefh#00FF00:DHCPOFFER \ GPRINT:cdefh:LAST:" Cur\:%8.1lf" \ GPRINT:cdefh:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefh:MAX:"Max\:%8.1lf\n" \ /usr/bin/rrdtool graph dhcprequest-weekly.png \ -v "Requests/Minute" \ --rigid \ -l 0 \ --start -604800 \ DEF:a=dhcpqueries.rrd:request:AVERAGE \ DEF:b=dhcpqueries.rrd:ack:AVERAGE \ DEF:c=dhcpqueries.rrd:decline:AVERAGE \ DEF:d=dhcpqueries.rrd:discover:AVERAGE \ DEF:e=dhcpqueries.rrd:release:AVERAGE \ DEF:f=dhcpqueries.rrd:nak:AVERAGE \ DEF:g=dhcpqueries.rrd:info:AVERAGE \ DEF:h=dhcpqueries.rrd:offer:AVERAGE \ CDEF:cdefa=a,5,/ \ CDEF:cdefb=b,5,/ \ CDEF:cdefc=c,5,/ \ CDEF:cdefd=d,5,/ \ CDEF:cdefe=e,5,/ \ CDEF:cdeff=f,5,/ \ CDEF:cdefg=g,5,/ \ CDEF:cdefh=h,5,/ \ LINE1:cdefa#9C7BBD:DHCPREQUEST \ GPRINT:cdefa:LAST:" Cur\:%8.1lf" \ GPRINT:cdefa:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefa:MAX:"Max\:%8.1lf\n" \ LINE1:cdefb#3152A5:DHCPACK \ GPRINT:cdefb:LAST:" Cur\:%8.1lf" \ GPRINT:cdefb:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefb:MAX:"Max\:%8.1lf\n" \ LINE1:cdefc#750F7D:DHCPDECLINE \ GPRINT:cdefc:LAST:" Cur\:%8.1lf" \ GPRINT:cdefc:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefc:MAX:"Max\:%8.1lf\n" \ LINE1:cdefd#157419:DHCPDISCOVER \ GPRINT:cdefd:LAST:" Cur\:%8.1lf" \ GPRINT:cdefd:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefd:MAX:"Max\:%8.1lf\n" \ LINE1:cdefe#6DC8FE:DHCPRELEASE \ GPRINT:cdefe:LAST:" Cur\:%8.1lf" \ GPRINT:cdefe:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefe:MAX:"Max\:%8.1lf\n" \ LINE1:cdeff#FFAB00:DHCPNAK \ GPRINT:cdeff:LAST:" Cur\:%8.1lf" \ GPRINT:cdeff:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdeff:MAX:"Max\:%8.1lf\n" \ LINE1:cdefg#FF0000:DHCPINFORM \ GPRINT:cdefg:LAST:" Cur\:%8.1lf" \ GPRINT:cdefg:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefg:MAX:"Max\:%8.1lf\n" \ LINE1:cdefh#00FF00:DHCPOFFER \ GPRINT:cdefh:LAST:" Cur\:%8.1lf" \ GPRINT:cdefh:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefh:MAX:"Max\:%8.1lf\n" \ /usr/bin/rrdtool graph dhcprequest-monthly.png \ -v "Requests/Minute" \ --rigid \ -l 0 \ --start -2592000 \ DEF:a=dhcpqueries.rrd:request:AVERAGE \ DEF:b=dhcpqueries.rrd:ack:AVERAGE \ DEF:c=dhcpqueries.rrd:decline:AVERAGE \ DEF:d=dhcpqueries.rrd:discover:AVERAGE \ DEF:e=dhcpqueries.rrd:release:AVERAGE \ DEF:f=dhcpqueries.rrd:nak:AVERAGE \ DEF:g=dhcpqueries.rrd:info:AVERAGE \ DEF:h=dhcpqueries.rrd:offer:AVERAGE \ CDEF:cdefa=a,5,/ \ CDEF:cdefb=b,5,/ \ CDEF:cdefc=c,5,/ \ CDEF:cdefd=d,5,/ \ CDEF:cdefe=e,5,/ \ CDEF:cdeff=f,5,/ \ CDEF:cdefg=g,5,/ \ CDEF:cdefh=h,5,/ \ LINE1:cdefa#9C7BBD:DHCPREQUEST \ GPRINT:cdefa:LAST:" Cur\:%8.1lf" \ GPRINT:cdefa:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefa:MAX:"Max\:%8.1lf\n" \ LINE1:cdefb#3152A5:DHCPACK \ GPRINT:cdefb:LAST:" Cur\:%8.1lf" \ GPRINT:cdefb:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefb:MAX:"Max\:%8.1lf\n" \ LINE1:cdefc#750F7D:DHCPDECLINE \ GPRINT:cdefc:LAST:" Cur\:%8.1lf" \ GPRINT:cdefc:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefc:MAX:"Max\:%8.1lf\n" \ LINE1:cdefd#157419:DHCPDISCOVER \ GPRINT:cdefd:LAST:" Cur\:%8.1lf" \ GPRINT:cdefd:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefd:MAX:"Max\:%8.1lf\n" \ LINE1:cdefe#6DC8FE:DHCPRELEASE \ GPRINT:cdefe:LAST:" Cur\:%8.1lf" \ GPRINT:cdefe:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefe:MAX:"Max\:%8.1lf\n" \ LINE1:cdeff#FFAB00:DHCPNAK \ GPRINT:cdeff:LAST:" Cur\:%8.1lf" \ GPRINT:cdeff:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdeff:MAX:"Max\:%8.1lf\n" \ LINE1:cdefg#FF0000:DHCPINFORM \ GPRINT:cdefg:LAST:" Cur\:%8.1lf" \ GPRINT:cdefg:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefg:MAX:"Max\:%8.1lf\n" \ LINE1:cdefh#00FF00:DHCPOFFER \ GPRINT:cdefh:LAST:" Cur\:%8.1lf" \ GPRINT:cdefh:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefh:MAX:"Max\:%8.1lf\n" \ /usr/bin/rrdtool graph dhcprequest-yearly.png \ -v "Requests/Minute" \ --rigid \ -l 0 \ --start -31536000 \ DEF:a=dhcpqueries.rrd:request:AVERAGE \ DEF:b=dhcpqueries.rrd:ack:AVERAGE \ DEF:c=dhcpqueries.rrd:decline:AVERAGE \ DEF:d=dhcpqueries.rrd:discover:AVERAGE \ DEF:e=dhcpqueries.rrd:release:AVERAGE \ DEF:f=dhcpqueries.rrd:nak:AVERAGE \ DEF:g=dhcpqueries.rrd:info:AVERAGE \ DEF:h=dhcpqueries.rrd:offer:AVERAGE \ CDEF:cdefa=a,5,/ \ CDEF:cdefb=b,5,/ \ CDEF:cdefc=c,5,/ \ CDEF:cdefd=d,5,/ \ CDEF:cdefe=e,5,/ \ CDEF:cdeff=f,5,/ \ CDEF:cdefg=g,5,/ \ CDEF:cdefh=h,5,/ \ LINE1:cdefa#9C7BBD:DHCPREQUEST \ GPRINT:cdefa:LAST:" Cur\:%8.1lf" \ GPRINT:cdefa:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefa:MAX:"Max\:%8.1lf\n" \ LINE1:cdefb#3152A5:DHCPACK \ GPRINT:cdefb:LAST:" Cur\:%8.1lf" \ GPRINT:cdefb:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefb:MAX:"Max\:%8.1lf\n" \ LINE1:cdefc#750F7D:DHCPDECLINE \ GPRINT:cdefc:LAST:" Cur\:%8.1lf" \ GPRINT:cdefc:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefc:MAX:"Max\:%8.1lf\n" \ LINE1:cdefd#157419:DHCPDISCOVER \ GPRINT:cdefd:LAST:" Cur\:%8.1lf" \ GPRINT:cdefd:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefd:MAX:"Max\:%8.1lf\n" \ LINE1:cdefe#6DC8FE:DHCPRELEASE \ GPRINT:cdefe:LAST:" Cur\:%8.1lf" \ GPRINT:cdefe:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefe:MAX:"Max\:%8.1lf\n" \ LINE1:cdeff#FFAB00:DHCPNAK \ GPRINT:cdeff:LAST:" Cur\:%8.1lf" \ GPRINT:cdeff:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdeff:MAX:"Max\:%8.1lf\n" \ LINE1:cdefg#FF0000:DHCPINFORM \ GPRINT:cdefg:LAST:" Cur\:%8.1lf" \ GPRINT:cdefg:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefg:MAX:"Max\:%8.1lf\n" \ LINE1:cdefh#00FF00:DHCPOFFER \ GPRINT:cdefh:LAST:" Cur\:%8.1lf" \ GPRINT:cdefh:AVERAGE:"Ave\:%8.1lf" \ GPRINT:cdefh:MAX:"Max\:%8.1lf\n" \ if [ ! -f index.shtml ] then cat > ./index.shtml << END <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML> <HEAD> <TITLE>$HOST</TITLE> <META HTTP-EQUIV="Refresh" CONTENT="300"> <META HTTP-EQUIV="Cache-Control" content="no-cache"> <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Expires" CONTENT="Mon, 04 Feb 2008 16:28:46 GMT"> <style type="text/css"> </style> </HEAD> <BODY bgcolor="#ffffff" text="#000000" link="#000000" vlink="#000000" alink="#000000"> <!--#include virtual="/menu.shtml" --> <CENTER><H1><B>$HOST</B></H1></CENTER> <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 align="center"> <tbody> <tr><td align="center"><b><h2>Query types</h2></b></td></tr> <tr> <td align="center"> <b>daily</B><br> <IMG BORDER=0 SRC="dhcprequest.png"><br> </td> </tr> <tr> <td align="center"> <b>weekly</B><br> <IMG BORDER=0 SRC="dhcprequest-weekly.png"><br> </td> </tr> <tr> <td align="center"> <b>monthly</B><br> <IMG BORDER=0 SRC="dhcprequest-monthly.png"><br> </td> </tr> <tr> <td align="center"> <b>yearly</B><br> <IMG BORDER=0 SRC="dhcprequest-yearly.png"><br> </td> </tr> </tbody> </table> </BODY> </HTML> END fi done
Source: https://habr.com/ru/post/267343/
All Articles