Portál AbcLinuxu, 30. dubna 2025 16:51
Pro získání statistik na serveru používám monitorovací nástroj Munin. Po nainstalování defaultních pluginů jsem některé nepotřebné odebral. Chyběly mi statistiky Bind serveru a také mě štvaly nefunkční statistiky Apache serveru.
Problémem Apache statistik bylo, že nastavení virtualhostů kolidovalo s defaultním nastavení mod_status. Řešení jsem našel zde a prostě jsem všechny virtualhosty nastavil na IP adresu serveru. Doufám, že to bude dlouhodobě funkční a nebude se to tlouct s nějakým budoucím plánem.
Pro Bind jsem našel několik pluginů, ale většina mi nefungovala správně nebo bylo přímo řečeno, že byly dlouho neaktualizované. V perlu bohužel neumím nic a tak sem je nechtěl upravovat. Inspiroval jsem se principem pluginu bind_rndc a naspal vlastní v bashi. Po nastavení Bindu tak, aby logoval pouze dotazy do speciálního souboru je tento plugin možno použít. Princip pluginu je takový, že v pomocném souboru je uložen počet řádek logovacího souboru. Při spuštění pluginu je zjištěn aktuální počet řádek logovacího souboru a odečteno číslo z pomocného souboru. Toto číslo je pak předáno jako výstup do RRD grafu. To znamená, že se loguje pouze počet řádek, což jistě nemusí být počet skutečných dotazů.
Plugin má mnoho nedostatků, kterých jsem si vědom. Určitě by šel napsat mnohem efektivněji. Jednoznačně by chtělo log soubor nějak parsovat například podle typu dotazu. Až si zas budu chtít hrát, tak zkusim tyto nedostatky vymazat. Pokud máte nějaké nápady jak kód zkvalitnit, prosím napište je v diskuzi
#!/bin/bash
#Munin plugin to store number of queries per time
# location of log file
QUERYLOG=/var/log/bind9/query.log
# location of help file
HELPFILE=/var/lib/munin/plugin-state/bind_queries.state
# Write config setting
if [ "$1" = "config" ]; then
echo graph_title Bind queries
echo 'graph_args --base 1000 -l 0'
echo 'graph_category bind'
echo "graph_vlabel queries per time"
echo "queries.label queries"
exit 0
fi
# Write autoconf setting
if [ "$1" = "autoconf" ] ; then
if [ ! -r $QUERYLOG ] ; then
echo no
echo "Cannot read from querylog"
exit -1
elif [ ! -r $HELPFILE ] ; then
echo no
echo "Cannot read from helpfile"
exit -1
elif [ ! -w $HELPFILE ] ; then
echo no
echo "Cannot write to helpfile"
exit -1
else
echo yes
exit 0
fi
fi
# Old count of lines from helpfile
exec < $HELPFILE
read old
# Save new count of lines from querylog to helpfile
wc -l $QUERYLOG | cut -d " " -f 1 > $HELPFILE
# New count of lines from helpfile
exec < $HELPFILE
read new
# Write a result string
echo -n "queries.value "
if [ $new -ge $old ]; then
minus=$(($new-$old));
echo $minus
else
echo $new
fi
Tiskni
Sdílej:
Já mám tohle, můžu případně poskytnout source a nastavení bindu.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.