Неочікувані сюрпризи підкидує нам часом мережа. Раз за разом вечорами в різний час починав в нас жутко лагати інтернет, причому вільного каналу було багато, та і первинний аналіз перегрузки методом "пінг" ніяких проблем не показав. На щастя в нас малюються гнафіки на все до чого можна дотягнутись, зокрема на запити до ДНС. Bindgraph скоренько показав що коди в нас проблеми є надмірна кількість запитів до сервера, через яку він, ясна річ, потихеньку загинався і не віддавав вчасно імена вузлів. Знаючи проблему локалізація порушників зайняла надзвичайно мало часу:)
Сьогодні я розкажу Вам як легко встановити bindgraph на серевер під управлінням FreeBSD. В мене, на момент написання цієї статті, стоїть 11 версія ОС, але не думаю що щось з часом зміниться (ставив я його і на 9 з портів)
Отож Bindgraph - це утиліта для побудови графіків запитів до DNS сервера BIND. Вона малює графіки за годину/день/тиждень/місяць/рік. Для відмальовування графіка і зберігання даних використовує RRD. Написана мовою Perl.
Щоб утилітка могла читати дані, треба щоб BIND їх записував. Для цього в конфігу /etc/namedb/named.conf прописуємо секцію logging:
logging {
channel "querylog" {
file "/var/log/query.log" versions 50 size 20m;
print-time yes;
};
category queries { querylog; };
};
тут ми попросили BIND писати лог запитів в файл /var/log/query.log, який при досягненні 20 мегабайтного розміру ротуватиметься і кількість зберігаємих файлів ротацій буде 50.
Якщо ж у вас вже настроєне логування то файл логів можна буде підключити в rc.conf.
Установка пакунка (pkg)
Встановлення через менеджер пакетів трохи скоріше ніж встановлення з портів. Командами
pkg update
pkg install bindgraph
ми оновлюємо базу пакунків і встановлюємо власне Bindgraph.
Установка з портів
Для встановлення з системи портів пишемо:
cd /usr/ports/dns/bindgraph && make install clean && rehash
команда переносить нас в директорію порта, тоді встановлює порт і очищає тимчасові файли що створились під час компіляції (рекомендується так робити щоб потім при оновленні не було проблем, да і взагалі так диск чистіший) і в кінці перехешовує шляхи (щоб зразу можна було вводити команду а не шлях до файла).
Налаштування
Спочатку додаємо Bindgraph в rc.conf:
echo '# Bindgraph' >> /etc/rc.conf
echo 'bindgraph_enable="YES"' >> /etc/rc.conf
Як я писав вище, якщо у вас шлях до логу не станартний "/var/log/query.log", а якийсь свій, наприклад "/var/named/var/log/query.log", то треба додати ще один пункт в rc.conf
echo 'bindgraph_flags="--logfile /var/named/log/queries"' >> /etc/rc.conf
Запуск
Тепер можемо сміло запускати демона, який збиратиме інформацію з лог-файлу і писатиме її в RRD файли:
service bindgraph start
Налаштуємо аліас в apache:
Alias /bindgraph/ /usr/local/www/cgi-bin/
<Directory /usr/local/www/cgi-bin>
Options Includes ExecCGI
DirectoryIndex bindgraph.cgi
AddHandler cgi-script .cgi
Order allow,deny
Allow from All
</Directory>
Профіт!
Всім бобра)
Коментарі