У меня есть сервер Lighttpd (на Centos), и я хотел бы отобразить 4 графика: трафик lighttpd, запросы lighttpd в секунду, использование ЦП и использование MEM. Я установил место для базы данных rrd для конфигурации lighttpd следующим образом:
rrdtool.binary = "/usr/bin/rrdtool"
rrdtool.db-name = "/var/www/lighttpd.rrd"
И поместил в мой WWW cgi-bin файл sh, который получает данные из файла lighttpd RRD и создает графики трафика и запросов в секунду следующим образом:
#!/bin/sh
RRDTOOL=/usr/bin/rrdtool
OUTDIR=//var/www/graphs
INFILE=/var/www/lighttpd.rrd
OUTPRE=lighttpd-traffic
WIDTH=400
HEIGHT=100
DISP="-v bytes --title TrafficWebserver \
DEF:binraw=$INFILE:InOctets:AVERAGE \
DEF:binmaxraw=$INFILE:InOctets:MAX \
DEF:binminraw=$INFILE:InOctets:MIN \
DEF:bout=$INFILE:OutOctets:AVERAGE \
DEF:boutmax=$INFILE:OutOctets:MAX \
DEF:boutmin=$INFILE:OutOctets:MIN \
CDEF:bin=binraw,-1,* \
CDEF:binmax=binmaxraw,-1,* \
CDEF:binmin=binminraw,-1,* \
CDEF:binminmax=binmaxraw,binminraw,- \
CDEF:boutminmax=boutmax,boutmin,- \
AREA:binmin#ffffff: \
STACK:binmax#f00000: \
LINE1:binmin#a0a0a0: \
LINE1:binmax#a0a0a0: \
LINE2:bin#efb71d:incoming \
GPRINT:bin:MIN:%.2lf \
GPRINT:bin:AVERAGE:%.2lf \
GPRINT:bin:MAX:%.2lf \
AREA:boutmin#ffffff: \
STACK:boutminmax#00f000: \
LINE1:boutmin#a0a0a0: \
LINE1:boutmax#a0a0a0: \
LINE2:bout#a0a735:outgoing \
GPRINT:bout:MIN:%.2lf \
GPRINT:bout:AVERAGE:%.2lf \
GPRINT:bout:MAX:%.2lf \
"
$RRDTOOL graph $OUTDIR/$OUTPRE-hour.png -a PNG --start -14400 $DISP -w $WIDTH -h $HEIGHT
$RRDTOOL graph $OUTDIR/$OUTPRE-day.png -a PNG --start -86400 $DISP -w $WIDTH -h $HEIGHT
$RRDTOOL graph $OUTDIR/$OUTPRE-month.png -a PNG --start -2592000 $DISP -w $WIDTH -h $HEIGHT
OUTPRE=lighttpd-requests
DISP="-v req --title RequestsperSecond -u 1 \
DEF:req=$INFILE:Requests:AVERAGE \
DEF:reqmax=$INFILE:Requests:MAX \
DEF:reqmin=$INFILE:Requests:MIN \
CDEF:reqminmax=reqmax,reqmin,- \
AREA:reqmin#ffffff: \
STACK:reqminmax#00f000: \
LINE1:reqmin#a0a0a0: \
LINE1:reqmax#a0a0a0: \
LINE2:req#00a735:requests"
$RRDTOOL graph $OUTDIR/$OUTPRE-hour.png -a PNG --start -14400 $DISP -w $WIDTH -h $HEIGHT
$RRDTOOL graph $OUTDIR/$OUTPRE-day.png -a PNG --start -86400 $DISP -w $WIDTH -h $HEIGHT
$RRDTOOL graph $OUTDIR/$OUTPRE-month.png -a PNG --start -2592000 $DISP -w $WIDTH -h $HEIGHT
В основном это не мой сценарий, я его взял откуда-то из Интернета. Теперь я хотел бы сделать то же самое для использования процессора и использования MEM. Не люблю использовать дополнительные пакеты!
Как видите, lighttpd заполняет файл lighttpd.rrd данными о трафике и запросами в секунду. Теперь я хочу, чтобы система заполнила второй файл rrd с использованием ЦП и MEM, чтобы я мог добавить в файл sh код для создания графиков для этих данных.
Как я могу заполнить файл RRD данными об использовании ЦП и MEM? Пожалуйста, НИКАКИХ СТОРОННИХ инструментов!
Итак, если вы действительно хотите контролировать это самостоятельно, вам сначала нужно определить свой собственный файл rrd для этих данных, что означает, что вам нужно знать, что вы хотите хранить, как долго. Затем вы должны заполнить это, вероятно, из сценария. Данные, которые вы ищете, находятся в / proc / meminfo и / proc / loadavg, вы должны проанализировать эти данные и передать их в rrdtool.
Как определить и заполнить свой собственный файл rrd - прекрасно задокументирован создателями rrdtool, поэтому я просто отсылаю вас к этой документации.
Может быть, стоит посмотреть, как это делает collectd (небольшой демон C, собирающий статистику в файлы rrd):
Здесь вы можете узнать, как это читается /proc/stat
и анализирует его содержимое, после чего вы можете легко написать сценарий bash.