В связи с производственной необходимостью пришлось найти несколько примеров
использования MRTG - графическое представление правил FreeBSD IPFW, мониторинг DNS
и Spamd, надеюсь, что они будут интересны и вам.
Создание графических отчетов IPFW с помощью MRTG
Построение графических отчетов будет осуществляться с помощью IPA - Pluggable Accounting System.
Установка IPA сводится к выполнению следующих команд:
cd /usr/port/sysutils/ipa
make install && make clean
cd /usr/ports/databases/ipa_sdb
make install && make clean
cd /usr/ports/net/ipa_ipfw
make install && make clean
cd /usr/local/etc/rc.d/
cp ipa.sh.sample ipa-run.sh
chmod 755 ipa-run.sh
Если вы хотите проверить, что IPA запускается без ошибок, выполните команду
'ipa -d'.
Если получена ошибка
'config error: /usr/local/etc/ipa.conf:5: parameter "ac_mod": module ipa_ipfw.so must not be pthread safe',
то откройте файл
/var/db/ports/ipa_ipfw/options и измените
'WITH_PTHREAD=true' на
'WITHOUT_PTHREAD=true',
а затем выполните
'portupgrade -f ipa_ipfw'.
Для конфигурации IPA скопируйте файлы
ipa.conf,
ipa.user и
ipastat.conf в
/usr/local/etc/
и отредактируйте сообразно своей ситуации:
cd /usr/local/etc/
fetch http://alex.kruijff.org/files/freebsd/ipa.conf
fetch http://alex.kruijff.org/files/freebsd/ipa.user
fetch http://alex.kruijff.org/files/freebsd/ipastat.conf
Файл конфигурации
mrtg.cfg в процессе работы вызывает сценарии
ipa-rate.pl и
ipa-total.pl для получения
текущего и общего использования полосы пропускания. Скопируйте эти три файла в
/usr/local/etc/mrtg/
и отредактируйте под ваши нужды.
Мониторинг DNS с помощью MRTG
В файле конфигурации MRTG должны присутствовать следущие строки:
Target[mydomain_DNS]: `/etc/mrtg/dnsstats.pl`
Options[mydomain_DNS]: gauge,growright,nopercent,integer,unknaszero
Title[mydomain_DNS]: DNS Server
RouterUptime[mydomain_DNS]: public@localhost
MaxBytes[mydomain_DNS]: 32000
AbsMax[mydomain_DNS]: 64000
WithPeak[mydomain_DNS]: wmy
Colours[mydomain_DNS]: YELLOW #F9C000,RED #F90000,LIGHT YELLOW #FFFFBB,LIGTH RED #FF8080
ShortLegend[mydomain_DNS]:queries/m
YLegend[mydomain_DNS]: Qs per Minute
Legend1[mydomain_DNS]: Queries received over 1 minute
Legend2[mydomain_DNS]: Failed Queries received over 1 minute
Legend3[mydomain_DNS]: Maximal Queries over 5 minutes
Legend4[mydomain_DNS]: Maximal Failed Queries over 5 minutes
LegendI[mydomain_DNS]: Queries:
LegendO[mydomain_DNS]: Failures:
PageTop[mydomain_DNS]: <H1>DNS Info</H1>
<TABLE>
<TR><TD>System:</TD> <TD>mydomain</TD></TR>
<TR><TD>Maintainer:</TD> <TD>Ram Prasad (ram@mydomain)</TD></TR>
<TR><TD>Description:</TD><TD>DNS Monitor</TD></TR>
<TR><TD>Details:</TD> <TD>Query Monitor</TD>
</TABLE>
Для работы необходим следущий
скрипт.
Мониторинг Spamd с помощью MRTG
В файл
/etc/services добавьте следущую строку:
spam-stats 7300/tcp # spam-stats
На машине spamd установите скрипт
spam-stats.pl, который занимается обработкой
лог-файла. Вам необходимо создать каталог
/var/local/spam-stats/ или внести изменения в
переменные $statfile и $offsetfile. Затем, необходимо дать доступ в сеть spam-stats, внеся в
/etc/inetd.conf
следущую строку:
spam-stats stream tcp nowait root /usr/local/sbin/spam-stats.pl counts
Установите
spamstats.pl в каталог
/usr/local/mrtg/ (или любой другой), машины, на
которой установлен MRTG. Этот сценарий подключается к машине, на которой запущен spamd, обрабатывает и
выводит статистику в виде, понятном MRTG.
Файл конфигурации MRTG выглядит следующим образом:
#---------------------------------------------------------------
#
# show number of messages that were spam, total number of
# messages _processed_ by spamd
#
Target[spam_spam]: `/usr/local/mrtg/spamstats.pl host.name.here spam`
MaxBytes[spam_spam]: 100000
Options[spam_spam]: growright,nopercent,perminute
Title[spam_spam]: Spam Statistics
PageTop[spam_spam]: SA-identified spam, SA-processed email
XSize[spam_spam]: 500
YSize[spam_spam]: 200
WithPeak[spam_spam]: dwmy
YLegend[spam_spam]: No. of messages
ShortLegend[spam_spam]: messages
LegendI[spam_spam]: spam:
LegendO[spam_spam]: total:
#---------------------------------------------------------------
#
# show number of messages that were not spam and total number of
# messages _processed_ by spamd
#
Target[spam_clean]: `/usr/local/mrtg/spamstats.pl host.name.here nonspam`
MaxBytes[spam_clean]: 100000
Options[spam_clean]: growright,nopercent,perminute
Title[spam_clean]: Spam Statistics
PageTop[spam_clean]: SA-identified clean, SA-processed email
XSize[spam_clean]: 500
YSize[spam_clean]: 200
WithPeak[spam_clean]: dwmy
YLegend[spam_clean]: No. of messages
ShortLegend[spam_clean]: messages
LegendI[spam_clean]: nonspam:
LegendO[spam_clean]: total:
#---------------------------------------------------------------
#
# show number of messages skipped (large messages) total # _submitted_
Target[spam_skipped]: `/usr/local/mrtg/spamstats.pl host.name.here skipped`
MaxBytes[spam_skipped]: 100000
Options[spam_skipped]: growright,nopercent,perminute
Title[spam_skipped]: Spam Statistics
PageTop[spam_skipped]: Messages skipped due to large size, total messages submitted
XSize[spam_skipped]: 500
YSize[spam_skipped]: 200
WithPeak[spam_skipped]: dwmy
YLegend[spam_skipped]: No. of messages
ShortLegend[spam_skipped]: messages
LegendI[spam_skipped]: skipped:
LegendO[spam_skipped]: total:
#---------------------------------------------------------------
#
# show percentage of spam messages
Target[spam_percent_spam]: `/usr/local/mrtg/spamstats.pl host.name.here spam`
MaxBytes[spam_percent_spam]: 100000
Options[spam_percent_spam]: growright,gauge,nopercent,dorelpercent,noi,noo
Title[spam_percent_spam]: Spam Statistics
PageTop[spam_percent_spam]: Percent of messages tagged as spam
XSize[spam_percent_spam]: 500
YSize[spam_percent_spam]: 200
WithPeak[spam_percent_spam]: dwmy
YLegend[spam_percent_spam]: percent of messages
ShortLegend[spam_percent_spam]: messages
LegendI[spam_percent_spam]: skipped:
LegendO[spam_percent_spam]: total:
#---------------------------------------------------------------
#
# show percentage of non-spam messages
Target[spam_percent_nonspam]: `/usr/local/mrtg/spamstats.pl host.name.here nonspam`
MaxBytes[spam_percent_nonspam]: 100000
Options[spam_percent_nonspam]: growright,gauge,nopercent,dorelpercent,noi,noo
Title[spam_percent_nonspam]: Spam Statistics
PageTop[spam_percent_nonspam]: Percent of messages tagged as non-spam
XSize[spam_percent_nonspam]: 500
YSize[spam_percent_nonspam]: 200
WithPeak[spam_percent_nonspam]: dwmy
YLegend[spam_percent_nonspam]: percent of messages
ShortLegend[spam_percent_nonspam]: messages
LegendI[spam_percent_nonspam]: skipped:
LegendO[spam_percent_nonspam]: total:
Original: