Огляд безкоштовних програм моніторингу серверів та комп’ютерної мережі
Системи моніторингу серверів та комп'ютерних мереж
Сьогодні я хочу поговорити про моніторинг серверів та комп'ютерних мереж. Все сказане - моя особиста думка, яка ні до кого не відноситься і описує тільки мій особистий досвід.
Будь-який системний адміністратор знає, що моніторинг є важливим. Іноді — дуже важливий. Є, звичайно, крайність, коли фахівець сподівається дізнатися про аварійну ситуацію за дзвінками розлючених клієнтів, але ця крайність швидко переходить або на розуміння попередньої фрази, або на швидке розлучення з цим фахівцем. Можу провести аналогію: «Або системний адміністратор використовує моніторинг роботи серверів та мереж, або у нього з'являється дуже багато вільного часу та дуже мало грошей». Тож зупиняємось на тому, що моніторинг має бути. Але тут є безліч розгалужень, створені задля вибору системи. І ось ми наближаємося до найцікавішого питання.
Що можна використовувати із безкоштовних програм моніторингу?
Ідеальних систем моніторингу комп'ютерних мереж та серверів немає. На жаль. Доводиться працювати з декількома системами, які мають свої переваги та недоліки, але у результаті перекривають слабкі місця одне одного.
Nagios
Раніше я використав його більш активно, зараз же у мене це друга система, яка стежить за важливими сервісами та за основною моніторинговою системою (так, це необхідно, тому що відсутність аварій може означати і відмову системи, яка повідомляє про ці аварії). Застаріла система зі стародавнім інтерфейсом. Звіти близькі до нуля. Моніторинг переважно у вигляді пробників, що запускаються з сервера. Знімати дані з віддалених серверів (наприклад, пам'ять/диск) можна, але мені не подобається занадто багато рухів. Конфігурувати нудно, все відбувається редагуванням конфігів (є і сторонні утиліти для адміністрування через інтерфейс, але мені вони не припали до вподоби). Нема графіків. Зазвичай потрібно бачити графіки завантаження каналів, використання пам'яті, кількості префіксів BGP, але цього Nagios немає. Він повідомляє про перевищення порогів – і все. Така собі залізобетонна система, яка виконує свою основну функцію - стежить за різними сервісами.
Zabbix
Тепер це моя основна система моніторингу. Трохи монструозна. Поки зрозумієш принцип, можна мізки вивихнути. Зате потім моніторить багато. Мені особливо подобається те, що досить поставити на сервер агент, сказати, який шаблон використовувати і все - автоматично створилися правила знімання даних, тригери, графіки. Потрібно хіба що відключити непотрібні послуги, а краще зробити шаблони під себе.
Моніторить не тільки сервера, але й пристрої з SNMP, запускає зовнішні проби типу пінгу, перевірки, чи порт відгукується. Є надзвичайно важлива функція для хостинг-провайдера - можна створювати правила стеження за Web-сайтами, причому ці правила можуть бути комплексні та емулювати роботу користувача. Зайти на сторінку, покласти товар у кошик, зробити замовлення. І на кожному кроці перевірити код повернення та фрагмент тексту, який має бути на сторінці. Зазвичай достатньо і простого запиту-відповіді. Дуже зручно. Єдине, що потрібно мати на увазі – проби запускаються часто (це налаштовується, і це плюс для оперативності), але трафіку генерується багато.
Кілька років тому я використав Zabbix для проби на кількох своїх проектах, і був здивований, чому на віртуальному сервері закінчився трафік. А виявилося, що це Zabbix дуже завзято стежив за сайтами. Варто заздалегідь продумати цей момент. Нотифікації хороші, є можливість відсилати їх не лише по email, але й на jabber та SMS. За графіками можна будувати висновки про різні параметри, можна будувати графіки за декількома змінними.
Мінус - агенти періодично помирають (принаймні на дистрибутивах FC 10-13×86_64), і потрібно або робити проактивний моніторинг, запускаючи скрипти перезапуску, або вручну перезапускати агента.
Великий плюс - можна намалювати карту мережі. Можна настроїти прийом SMNP-трепів. Nagios-у далеко до Zabbix.
Cacti
Графіки у Zabbix хороші, але для добирання до них потрібно постаратися. Можна зробити сторінку з основними показниками, але мені реалізація не сподобалася. І тут хороша Cacti — система побудови графіків для моніторингу різноманітних параметрів. Використовується rrdtools, можна зводити безліч змінних. Дискретність хороша - дані видно протягом двох хвилин. Для зменшення навантаження на CPU варто використовувати зовнішній колектор spine. Можна розбивати графіки по деревах, групувати пристрої або виводити конкретні графіки. Підтримується SNMP, і що дуже корисно — зовнішні скрипти. Зняв довільним чином десяток параметрів, передав їх через скрипт, візуалізував і все видно. Є глюки. У певних випадках непередбачувано не сприймається одна або кілька змінних набору. Доводиться лізти в налаштування графіка і перевіряти, чи всі параметри сприймаються.
Плюс - можна вказати цікавий діапазон часу і побачити всю картину. Можна мишкою виділити ділянку і збільшити. Зручно для аналізу проблем.
Мінус — проводиться округлення і хвилинна розбивка через добу вже недоступна, все наводиться до 5-10 хвилинної розбивки.
Мінус — Cacti служить для візуалізації. Контроль параметрів у межах заданих меж не проводиться. Це завдання Zabbix.
Мінус — щоб використовувати Cacti, потрібно теж зламати голову, і розуміти процес створення графіків.
Повторюся - Cacti потрібно використовувати.
Munin
Вказані вище системи моніторингу хороші. Але якщо потрібно зрозуміти, що відбувається з десятком-другим серверів, причому з деталізацією до конкретних додатків, то Zabbix потрібно довго налаштовувати. Cacti – тим паче. Якщо ж хочеться швидко додати кілька серверів, побачити на графіках деталі використання пам'яті (buffers/swap/slab/inactive), побачити переривання по конкретних пристроях, подивитися детальну статистику MySQL, Memcached, Nginx, Apache, подивитися iostat, vmstat, то тут на допомогу приходить Munin. Дуже хороша система. Є можливість надсилання нотифікацій по email у разі виходу параметрів за межі. Можна видавати аларми у Nagios.
Мінус — навантажує сервер моніторингу. Не можна зробити «drill-down», відзначивши інтервал часу і подивившись деталі.
Monit
Усі перелічені вище системи візуалізували та стежили загалом. Є одна дуже корисна утиліта - monit, яка спостерігає за сервісами і в разі потреби їх перезапускає. Наприклад, nginx став генерувати помилку "502 bad gateway" через те, що відвалився php, запущений через fastcgi. Monit це бачить та перезапускає fastcgi. Або в сервері swap підійшов до кінця (наприклад, апачі заполонили всю планету), і ось-ось oom_killer стане роздавати kill'и, але це ні до чого не приведе і сервер помре до його ручного перезапуску. І тут допоможе monit — він може превентивно перезавантажити сервер. П'ять хвилин — це не година відсутності сервісу.
Rancid
Мережеве обладнання містить конфіги. Об'ємні та комплексні конфіги. На які витрачено навіть не години, а тижні роботи, поки вони не були до кінця вилизані. І ось у тому ж Cisco вмирає флеш. І тут системний адміністратор розуміє, що бекап було зроблено рік тому. І все. Клієнти відвалилися, дзвонять, вимагають відновлення сервісу, а фахівці носяться та шукають договори, в яких описані адреси, vpi/vci та подібні параметри. Буває? Буває. Саме тому потрібні бекапи конфігурацій. Можна написати збирач конфігів, можна використовувати монстра виду CiscoWorks Resource Manager, а можна встановити rancid. Програма щогодини збирає конфіги з усіх мережевих елементів і поміщає в систему контролю версій CVS. Так, CVS — це стандарт, напевно, часів Modern Talking, і краще за git/mercurial або хоча б SVN, але це працює.
Плюс — генеруються diff'и конфігів і завжди видно хто що зробив.
Плюс - можна підключити не тільки Cisco, але і HP, Juniper і т.., в загальному все, до чого можна отримати доступ по telnet / etc, а не тільки через GUI.
Теж рекомендую.
etckeeper
І насамкінець — система зберігання конфігів. / etc розміщується в репозиторії системи контролю версій (підтримуються практично всі популярні, я ж використовую git). Завжди можна побачити, що саме змінювалося у конфігураціях. І це дуже корисно. Якщо сервіс перестав працювати, бекапа немає, змінювалося багато параметрів (все це неправильно), то у звичайній ситуації доведеться у стресі згадувати, що саме змінювалося. А так - git log/git show покажуть все і дозволять витягнути останню робочу версію конфіга. Ще хотілося згадати потужні системи управління конфігураціями типу cfengine/puppet/chef, але це окрема тема і більше відноситься до серверів, ніж до провайдингу.
Моніторинг серверів та комп'ютерних мереж - Висновок
Якщо до питання підійти з розумом, то можна побудувати потужну та гнучку систему моніторингу мереж та серверів на базі безкоштовних програм. Було б бажання й спеціалісти відповідного рівня. Тоді проблема видно заздалегідь, а не по шквалу дзвінків, що, в свою чергу, призводить до значного поліпшення якості сервісу.
До речі, дуже зручно моніторити сервери та мережі з хмари UNU Cloud. У такому випадку система моніторингу не прив'язана до серверів та вашої мережі. Ви завжди дізнаєтеся про аварійну ситуацію навіть у разі серйозних проблем.
При розміщенні IT-обладнання в Дата-центрі United DC на колокейшн можна легко з'єднати віртуальні сервери в одну мережу з фізичними серверами та незалежно моніторити все своє обладнання. Якщо через якийсь час система моніторингу не справлятиметься з навантаженням, то в кілька кліків з панелі керування хмарою можна додати ресурси.
Oleg Serdyukov, The Apple Geek
Дата: 20.08.2021