Как показывает практика — бoльшая часть клиентов никак не мониторит используемые ресурсы, арендуемых ими услуг (особенно это заметно на дешевых услугах VPS от 3$).То есть, после установки системы и настройки необходимого для проекта софта, дальнейшая судьба сервера отдается на откуп случаю. И, когда появляются проблемы с работоспособностью сервера, информации для анализа не слишком много.

Кроме установленного и настроенного логирования в atop (который так же встречается не часто), логов системы, хотелось бы иметь больше информации с которой можно работать.

В данной статье будет описана процедура установки и настройки collectd и collectd-web на примере ОС семейства Debian.

Немного общей информации.


Collectd — легковесный демон, который собирает статистику по использованию ресурсов (и не только), и складывает информацию в формате rrd. По сути, сам collectd только собирает статистику, для просмотра и анализа собранной информации нужно устанавливать web интерфейс. Полный список front-end'ов для collectd можно посмотреть тут.

Большим плюсом является то что для collectd существует большое множество плагинов, под различные задачи.

Стоит учесть что collectd умеет настройку «мастер сервер и ноды» — данные с наблюдаемых серверов отсылаются на мастер, который их хранит и отрисовывает графики.

Стоит учесть что разные web-интерфейсы реализованы на разных фреймворках. В зависимости от Ваших пристрастий и софта, установленного для проекта, можно выбрать наиболее оптимальный для себя вариант.


Сам процесс установки


Обновим список пакетов, доступных в репозиториях.
# apt-get update 


Устанавливаем сам collectd.

# apt-get install collectd


Запускаем collectd после установки.
# service collectd start


Collectd установлен и запущен, теперь переходим к установке веб интерфейса.

Для начала стоит установить git.
# apt-get install git


Устанавливаем необходимые модули.
# apt-get install librrds-perl libjson-perl libhtml-parser-perl


Ставим веб сервер.
# apt-get install apache2


После установки apache переходим в дефолтную директорию его виртуалхоста.
# cd /var/www/html


Приступаем к установке самого web-интерфейс.
# git clone https://github.com/httpdss/collectd-web.git
# chmod +x /var/www/html/collectd-web/cgi-bin/graphdefs.cgi


Для запуска cgi скриптов collect-web, расположенных по дефолтному пути (в данном случае — /var/www/html/collectd-web/), нужно явно указать в конфиге. Редактируем дефолтный конфиг виртуалхоста.
# nano /etc/apache2/sites-available/000-default.conf


Добавляем данный блок после строки с директивой DocumentRoot.

<Directory /var/www/html/collectd-web/cgi-bin>
                Options Indexes ExecCGI
                AllowOverride All
                AddHandler cgi-script .cgi
                Require all granted
</Directory>    





Включаем apache CGI модуль.
# a2enmod cgi cgid


Перегружаем веб сервер для вступления изменений в силу.
# service apache2 restart


Теперь collectd доступен извне по web.
http://xxx.xxx.xxx.xxx/collectd-web/




Выставлять его в таком виде в мир — плохая идея, нужно ограничить доступ к нему.
Можно воспользоваться штатными утилитами apache — htpasswd.

Для начала устанавливаем их, если они не подтянулись при установке веб сервера.
# apt-get install apache2-utils 


Генерируем файл с паролями.
# htpasswd -c /var/www/html/collectd-web/.htpasswd  username
New password: 
Re-type new password: 
Adding password for user username

Теперь надо научить апач пускать в коллектд по паролю. Для этого редактируем нужный виртуалхост.
# nano /etc/apache2/sites-enabled/000-default.conf 

Добавляем еще блок.
<Directory /var/www/html/collectd-web >
                AuthType Basic
                AuthName "Collectd Restricted Page"
                AuthBasicProvider file
                AuthUserFile /var/www/html/collectd-web/.htpasswd
                Require valid-user
</Directory>





Выходим ctrl + x, на вопрос сохранить ли изменения отвечаем yes + enter.

Дергаем apache для того, чтобы изменения вступили в силу.
# service apache2 restart


Проверяем, что нигде не ошиблись, и наш collectd теперь не пускает кого попало.



Готово, теперь в случае проблем с сервером или избытка свободного времени и отсутствия планов, Вы можете открыть collectd-web, проанализировать используемые ресурсы сервера, возможные узкие места и оценить тенденцию роста.

Ну или просто можно будет полюбоваться красивыми графиками.

Комментарии (13)


  1. dmitriylyalyuev
    09.12.2015 10:16
    -3

    Apache2 в 2015 году? Это вы серьезно? Зачем мне его держать ради одного collectd?


    1. FantazyM
      09.12.2015 10:33
      +11

      Вам и не обязательно устанавливать apache только ради collectd.
      Collectd-web может быть запущен и скриптом на python (runserver.py) который будет находится в корне web-интерфейса.


      1. dmitriylyalyuev
        09.12.2015 10:34
        +3

        Вот это уже интереснее. Спасибо.


  1. zapimir
    09.12.2015 12:32
    -2

    А не проще для таких новичков поставить New Relic Servers?
    И ставится значительно проще и халявный, и интерфейс намного удобнее и красивее. Плюс есть довольно удобное приложение для Android и iOS.
    Как-то приветом из прошлого выглядят эти графики в виде картинок, когда есть современные JS графики, с масштабированием (причем синхронизированным по разным метрикам) и прочими плюшками.

    Еще интересный вариант мониторинга nixstats.com


    1. FantazyM
      09.12.2015 12:52

      Спасибо, нужно будет опробовать.
      Какие ограничения на бесплатный аккаунт (количество хостов, проверок, плагины)?


      1. zapimir
        09.12.2015 13:27

        У New Relic ограничение по хранению данных в 24 часа. По количеству нет (у меня 5 vps'ок), данные мониторятся раз в минуту, плагинов куча разных, я юзал nginx и redis.
        Если нужна история то nixstats можно попробовать, но там пока плагинов маловато.


  1. winox
    09.12.2015 12:34

    Вот этого мне не хватало. Взял на вооружение
    Но есть webmin вроде


  1. petro25
    09.12.2015 16:35

    Я б порекомендовал попробовать www.observium.org — очень даже не плохая рисовалка графиков + есть модули для отрисовки статистики веб-сервера, ntpd, MySQL и т.д. + бесплатный. Ставится тоже легко и все интуитивно понятно.


    1. glmonarch
      11.12.2015 16:40

      Главный и, пожалуй, единственный минус его бесплатной версии — отсутствие возможности слать алерты куда-либо.


  1. Arvur
    09.12.2015 17:57

    Без веских причин я бы не стал устанавливать front-end с коммитами двухлетней давности и мертвым сайтом проекта ;-)
    А причин этих в статье нет. И ее ценность с моей точки зрения от этого падает.

    В описанной ситуации я бы рекомендовал ставить Collectd Graph Panel: github.com/pommi/CGP


  1. igor_suhorukov
    09.12.2015 21:51

    collectd — достаточно мощный «конструктор». пакет есть даже под IoT решения на MIPS платформе (openwrt)


  1. Maklaut
    10.12.2015 11:05

    Можно настроить collectd + influxdb + grafana. Правда дашборды придется самому настраивать.


  1. rhamdeew
    15.12.2015 13:23
    +1

    Странно что еще не упомянули munin. Возможности схожие, плагины довольно просто можно написать самим. Можно настроить сбор метрик с нод на один сервер.