eFusion 24 ноября 2019
2
1914

Как осуществить online-мониторинг нагрузки на сервере?

Быть в курсе текущей ситуации на сервере катастрофически важно: то DDOS, то турецкие хакеры, то сетевушка умерла… Бери на заметку!

Может, ты хочешь возразить, сказать, что есть ATOP/HTOP и прочие товарищи. Но посмотреть все интересующие параметры удобнее онлайн, не используя SSH, правда?

Для наблюдений за состоянием железа обычно мониторится процессор, оперативка, жесткий диск, количество различного типа трафика (реже температура отдельных узлов, а также температура "внутренностей") и средние значения по этим же показателям. Итак, погнали шерстить инструменты!

Scout realtime

Scout realtime – опенсорсный программный продукт. Позиционируется как удобная альтернатива консоли с выводом обновляемых графиков в реальном времени. Сделать какие-то выводы, анализируя график, проще, чем мерцающие цифры, которые постоянно меняются в терминале.

Эта штуковина получает данные для отрисовки из procfs, поэтому пользователи FreeBSD и MacOS не смогут оценить всю прелесть данного софта.

Установить и запустить продукт можно так (все забиндится на 5555 порту):

            gem install scout_realtime

scout_realtime start 
        

Чтобы начать просмотр, создай SSH-туннель:

            ssh -NL 5555:localhost:5555 пользователь@ip-шник сервера 
        

После этих действий открывай браузер: http://localhost:5555/.

Если firewall блокирует все подряд, то попроси его тебя пропустить (но тогда твою стату смогут видеть все):

            sudo iptables -A INPUT -p tcp --dport 5555 -j ACCEPT 
        

Nagios

Самая распространенная система для наблюдения за железом. Очень мощный инструмент, позволяющий мониторить практически любой узел в сети: DVR-ку, камеру, ноут, коммутатор, телефон и даже дорогущий пограничный роутер за 750 000 р. Софтина построена на наборе конфигов для каждой группы событий или объектов. Рулит этим всем движок, а движком – ты, через веб-морду.

Для установки сделай следующее:

            sudo apt update
sudo apt install build-essential apache2 php7.0 openssl perl make php7.0-gd libgd2-xpm-dev libapache2-mod-php7.0 libperl-dev libssl-dev daemon wget apache2-utils unzip 
        

Создай юзера и группу для запуска нагоиса:

            sudo useradd nagios sudo groupadd nagcmd 
        

Теперь создай юзера для запуска Apache:

            sudo usermod -a -G nagcmd nagios sudo usermod -a -G nagcmd www-data 
        

Далее скачай свеженькую версию по ссылке выше, разархивируй и начинай компилить:

            ./configure --with-nagios-group=nagios --with-command-group=nagcmd --with-httpd_conf=/etc/apache2/sites-enabled/ make all sudo make install sudo make install-init sudo make install-config sudo make install-commandmode sudo make install-webconf 
        

В /usr/local/nagios/etc/ найди contact.cfg (контакты для оповещений) и заполни его:

            define contact { 
contact_name nagiosadmin ;  
use generic-contact ; 
alias Nagios Admin ; 
email admin@losst.ru ;  
твоя почта 
} 
        

После этого создай пароль nagiosadmin, чтобы он смог попасть на веб-морду:

            sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin 
        

Включи на веб-сервере поддержку cgi и перезагрузи сервак:

            sudo a2enmod cgi

sudo service apache2 restart 
        

А теперь запусти Nagios:

            sudo systemctl stat nagios 
        

Проследуй по адресу http://localhost/nagios.

Munin

Здесь используется RRDTool и Perl. Допиливать что-то свое (плагины, модули и прочее) можно на любом языке. Munin имеет архитектуру master/node – мастер коннектится ко всем нодам и опрашивает их через постоянные промежутки времени. Все полученные данные он сохраняет в RRD-файлах и (при необходимости) обновляет графики. Одним из преимуществ софта является простота создания графиков.

Для установки мастера сделай следующее:

            sudo apt-get update
sudo apt-get install munin 
        

В файлике nano /etc/munin/munin.conf найди строку [localhost.localdomain] и отредактируй по своему усмотрению (это отображаемое имя хоста на графиках). Например, так: srv-01.proglib.io

Это сделай на всех нодах:

            sudo apt-get update
sudo apt-get install munin-node 
        

В файлике nano /etc/munin/munin-node.conf найди строку #host_name localhost.localdomain. Раскомментируй ее и впиши туда имя сервака и имя ноды (host_name srv-01.proglib.io).

Настрой nginx:

            location /munin {
    alias /var/www/munin;
    autoindex on;
    auth_basic "Munin Statistics";
    auth_basic_user_file /etc/munin/.passwd;
} 
        

Перезагрузи его:

            service nginx restart 
        

И создай юзера:

            htpasswd -c /etc/munin/.passwd adminus 
        

New Relic

New Relic – не сильно популярная система в наших русских кругах, но весьма хороший инструмент, правда, платный. С помощью него можно отслеживать все – от потребления ресурсов каким-либо приложением и состояния железа до уровня удовлетворенности посетителей.

Установить продукт можно на любую систему, даже на Android/iOS и в облако. Есть поддержка горы ЯП, среди них: Java, Python, C, Go и т. д.

Для установки создай конфиг и добавь в него следующее:

            echo "license_key: твой_ключ" | sudo tee -a /etc/newrelic-infra.yml 
        

Потом активируй GPG-ключ:

            curl https://download.newrelic.com/infrastructure_agent/gpg/newrelic-infra.gpg | sudo apt-key add 
        

Создай репозиторий агента, используя команду:

            printf "deb [arch=amd64] https://download.newrelic.com/infrastructure_agent/linux/apt trusty main" | sudo tee -a /etc/apt/sources.list.d/newrelic-infra.list 
        

Обнови apt-кеш:

            sudo apt-get update 
        

И запусти установку:

            sudo apt-get install newrelic-infra -y 
        

Готово!

Zabbix

Одна из популярнейших систем мониторинга. Она работает в связке MySQL + PHP (хотя с легкостью можно юзать и PostgreSQL, SQLite или Oracle). Эта штука не просто попискивает в динамики, чтобы тебя, уснувшего, поднять с клавиатуры, так еще и смс-ки может отправлять, стучаться на почту и во всякие мессенджеры, а также выполнить определенное задание при срабатывании триггера. Графики, карта сети и комплексные отчеты – это вообще не обсуждается.

Для установки сделай следующее:

            sudo apt update && sudo apt upgrade

sudo apt install mysql-server mysql-client apache2 
        

С официального сайта стянем пакетик:

            sudo wget http://repo.zabbix.com/zabbix/3.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.2-1+xenial_all.deb 
        

И добавим репу:

            sudo dpkg -i zabbix-release_3.2-1+xenial_all.deb 
        

Далее установи пакет для Zabbix с поддержкой MySQL:

            sudo apt install zabbix-server-mysql zabbix-frontend-php 
        

Создай базу и специального юзера:

            create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix_test'; 
        

В папке со скачанным пакетом найди и запусти скрипт, который создаст тебе структуру БД:

            sudo zcat create.sql.gz | mysql -uroot zabbix –p 
        

Перезагрузи все:

            sudo systemctl start apache2.service

sudo systemctl status apache2.service

sudo systemctl restart apache2.service 
        

Теперь можно перейти на IP-адрес сервера/zabbix и увидеть веб-морду.

Collectd

Collectd – это простенькая система сбора инфы с машины, на которой она стоит. Обычно собранную инфу отправляют в Graphite. У данного продукта есть невероятное количество модулей и плагинов, которые расширяют функционал – это большой плюс. Установим же!

            sudo apt-get install collectd collectd-utils 
        

Для дальнейшей настройки останови демон:

            sudo service collectd stop 
        

Далее редактируем файлик /etc/collectd/collectd.conf:

            Hostname "graph_host"

FQDNLookup true 
        

В этот же конфиг внеси настройки мускли:

            LoadPlugin mysql

<Plugin mysql>

 <Database DataBaseName>

   Host "хост или IP"

   Port "3306"

   User "UserName"

   Password "PassWord"

   Database "databasename"

   MasterStats true

 </Database>

</Plugin> 
        

На очереди Nginx. Поставь последнюю версию (или обновись) и отредактируй /etc/nginx/conf.d/your.domain.conf:

            server {

  listen 80;

  server_name your.domain.com;

location / {

  # Тут настройка на твое усмотрение, есть очень много мануалов.

}

location /nginx_status {

  stub_status on;

  access_log off;

  allow IP-адрес; # IP Nginx

  deny all; 
}

} 
        

После этого в конфиг выше добавь такое:

            LoadPlugin nginx

<Plugin nginx>

  URL "http://your.domain.com/nginx_status"

  VerifyPeer false

  VerifyHost false

</Plugin> 
        

Готово!

Monitorix

Еще одно простое решение для мониторинга. Поможет тебе следить как за аппаратными ресурсами, так и за софтом. Ты сможешь получать данные от: сетевушек, термодатчиков, памяти, процессора и практически любого ПО на сервере.

Для установки сделай следующее:

            sudo apt update && sudo apt upgrade
apt-get install monitorix 
        

После установки все запустится само. Для добавления/редактирования хостов используй конфиг: /etc/monitorix/monitorix.conf.

В конце перегрузи софтину:

            service monitorix restart 
        

И проследуй по адресу: http://localhost:8080/monitorix

Чем-то из этого уже пользовался? Как тебе?

РУБРИКИ В СТАТЬЕ

Комментарии 2

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

BUG