сollectd

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 19:17, 8 января 2018.

Сollectd
Mmm2.png
Создатели: Флориан Фостер
Выпущена: 8 July 2005 года; 13 years ago (2005-07-08)
Состояние разработки: активный
Написана на: C
Локализация: Английский
Тип ПО: UNIX-подобная
Лицензия: GNU GPL v2
Веб-сайт collectd.org

collectd - один из демонов UNIX, с помощью которого выполняется сбор, передача и хранение данных, связанных с функциональными характеристиками компьютеров и сетевого оборудования. Полученные данные призваны помочь системным администраторам отслеживать использование имеющихся ресурсов и выявлять как существующие узкие места, так и те, которые могут возникнуть в будущем.

Первая версия демона была написана в 2005 году Флорианом Форстером (Florian Forster) и получила дальнейшее развитие как бесплатный проект с открытым исходным кодом. Другими разработчиками были написаны различные улучшения и расширения, которые включены в проект. Большинство файлов исходного кода лицензировано по лицензии GNU General Public License, версия 2 (GPLv2), остальные файлы распространяются под другими открытыми лицензиями. [Источник 1].

Принцип работы

collectd использует модульную конструкцию, т.е. сам демон реализует только инфраструктуру для фильтрации и ретрансляции данных, а также вспомогательные функции, и требует очень мало ресурсов, работая даже на встраиваемых устройствах под управлением OpenWrt. Получение и хранение данных осуществляется с помощью плагинов в виде библиотек, таким образом, демон универсален и не привязан к специфическим особенностям конкретной операционной системы.. Плагины могут иметь свои собственные зависимости, например, конкретную операционную систему или программные библиотеки. Другие задачи, выполняемые плагинами, включают обработку уведомлений и ведение логов.

Сбор данных подключаемые модули, называемые "чтения плагинов" в документации по collectd, можно условно подразделяются на три категории:

  • Плагины для операционной системы, собирающие информацию об использовании процессора, памяти, количестве пользователей, зарегистрированных в системе, и др. Они, как правило, должны быть портированы на каждую конкретную ОС. Не все такие плагины доступны для всех операционных систем.
  • Плагины, собирающие данные о производительности или о приложении, работающем на том же самом или удаленном компьютере, например Apache HTTP Server. Эти плагины часто используют библиотеки программного обеспечения, в противном случае они независимы от операционной системы.
  • Общие плагины предлагают основные функции, которые пользователь может использовать для выполнения конкретных задач. Примеры - запросы сетевого оборудования с помощью SNMP, выполнение пользовательских программ или сценариев.

Так называемые "пишущие плагины" предлагают возможность хранить собранные данные на диске с помощью RRD или CSV файлов либо передавать их по сети на удаленный экземпляр демона.

Работа в сети

В распределении исходного кода collectd ключевую роль играет особый сетевой (network) плагин, который может использоваться для обмена данными с другими экземплярами демона. В типичной сетевой установке демон будет работать на каждом наблюдаемом узле сети (клиенте) с сетевым плагином, сконфигурированным для передачи собранных данных на один или несколько сетевых адресов. На одном или нескольких серверах тот же демон должен работать под другой конфигурацией, так что сетевой плагин получает данные вместо их отправки. Для хранения данных о производительности на серверах часто используется RRD. [Источник 2].

Плагин использует двоичный сетевой протокол над UDP. IPv4 и IPv6 поддерживаются в качестве сетевого уровня. Можно использовать как одностороннюю (точка-точка), так и мультивещательную (точка-группа) адресацию. К протоколу была добавлена аутентификация и шифрование, начиная с версии 4.7.0, выпущенной в мае 2009 года.

Установка

Ставим его через пакетный установщик emerge/yum/apt-get. Для debian. В стандартных портах collectd нет, для этого нам надо подключить backports. Делается это достаточно просто: [Источник 3]. Добавляем строчку

deb http://backports.debian.org/debian-backports squeeze-backports main

в ваш sources.list (либо создадим новый файл с этой строчкой в /etc/apt/sources.list.d/) После чего запустим apt-get update

Далее, чтобы установить пакет из backports пишем команду

apt-get -t squeeze-backports install "package"

ну или через aptitude

aptitude -t squeeze-backports install "package"

В генте есть маленький нюанс. Во первых оно замаскировано ~x86, во вторых поумолчанию ставятся только несколько плагинов. Чтобы указать какие плагины ставить надо их указать либо в package.use (типа collectd_plugin_memory) либо в make.conf в переменной COLLECTD_PLUGINS="";

COLLECTD_PLUGINS="apache cpu df disk interface load memory network ntpd processes notify_email ping logfile syslog rrdtool swap hddtemp exec filecount java sensors target_notification target_set target_replace"##!i##

Опять же в генте весь конфиг в одном файле, который находится в /etc/collectd.conf. В дебиане оно ставится в красивый путь /etc/collectd/collectd.conf, так же отдельные части конфигурации типа filters и thresholds вынесены в отдельные файлы, что не может не радовать. Вообщем я у себя на генте сделал примерно такую же конфигурацию, немножко ее изменив. В частности подключение нужных мне плагинов вынес в отдельную директорию и каждый плагин (точнее его конфигурацию) так же в отдельный файл. Вот как он стал выглядеть:

##i### Config file for collectd(1).
#
# Some plugins need additional configuration and are disabled by default.
# Please read collectd.conf(5) for details.
#
# You should also read /usr/share/doc/collectd-core/README.Debian.plugins
# before enabling any more plugins.

Hostname "gen-collectd-master.local"
FQDNLookup true
BaseDir "/data/collectd"
#PluginDir "/usr/lib/collectd"
#TypesDB "/usr/share/collectd/types.db" "/etc/collectd/my_types.db"
#Interval 10
#Timeout 2
#ReadThreads 5

LoadPlugin logfile
LoadPlugin syslog

<Plugin logfile>
        LogLevel "info"
        File "/data/collectd/collectd.log"
        Timestamp true
        PrintSeverity true
</Plugin>

<Plugin syslog>
        LogLevel info
</Plugin>

LoadPlugin network
<Plugin network>
    Listen "192.168.56.130" "8085"
</Plugin>

Include "/etc/collectd/inst/*.active"
Include "/etc/collectd/conf/*.conf"

Include "/etc/collectd/filters.conf"
Include "/etc/collectd/thresholds.conf"

JFYI Так же обратите внимание на параметр FQDNLookup true — если у вас в hostname чтото прописано, то оно должно ресолвиться! В противном случае оно вылетит с ошибкой, другое решение — выставить этот параметр в false.

В каталоге inst находятся файлы конфигурации плагинов:

total 32
drwxr-xr-x 2 root root 4096 Nov 26 20:57 .
drwxr-xr-x 4 root root 4096 Nov 26 21:00 ..
-rw-r--r-- 1 root root   15 Nov 26 13:54 cpu.active
-rw-r--r-- 1 root root  125 Nov 26 13:54 if.active
-rw-r--r-- 1 root root   16 Nov 26 13:54 load.active
-rw-r--r-- 1 root root   18 Nov 26 13:54 memory.active
-rw-r--r-- 1 root root  122 Nov 26 18:25 mounts.active
-rw-r--r-- 1 root root  133 Nov 26 20:57 ping-hosts.active

Далее, в каталоге conf содержится 2 файла, один для настройки плагина notify_email, второй для настройки rrdtool

total 16
drwxr-xr-x 2 root root 4096 Nov 26 20:30 .
drwxr-xr-x 4 root root 4096 Nov 26 21:00 ..
-rw-r--r-- 1 root root  425 Nov 26 20:30 mail.conf
-rw-r--r-- 1 root root   83 Nov 26 13:54 rrdtool.conf

Содержимое файла conf/mail.conf:

<Plugin notify_email>
        SMTPServer "stmp.mail.ru"
        SMTPPort 25
        SMTPUser "collectd@mail.ru"
        SMTPPassword "my-super-password-for-mail"
        From "collectd@mail.ru"
#       # <WARNING/FAILURE/OK> on <hostname>.
#       # Beware! Do not use not more than two placeholders (%)!
        Subject "[collectd] %s on %s!"
        Recipient "recipient@mail.ru"
</Plugin>

Настройка плагинов

У collectd множество встроенных плагинов. [Источник 4].

Mkm4.jpg

Плагин cpu

<Type "cpu">
     Instance "user"
     WarningMax 85
     Hits 1
</Type>l##!i##

Тут можно не писать перед блоком Type блок Plugin. Мы указываем, что нужно следить за значением user (пользовательские процессы) и если оно достигнет значения 85, то выслать предупреждение. Hits — количество попаданий в это значение за один Interval (см настройку основного конфига), в нашем случае равно 1, т.е. если в течение 10 секунд значение будет >= 85, то будет сгенерирована нотификация. Тут можно поставить значение больше, например на 6, т.е.если в течение одной минуты значение будет такое, то тогда есть о чем беспокоиться.

Плагин ping

<Plugin "ping">
    <Type "ping_droprate">
        FailureMax 0.9
    </Type>
</Plugin>##!i##

Как тут видно мы задаем для плагина ping тип, равный ping_droprate. Эта таблица содержит значение либо 0 либо 1. Соответственно задаем генерацию типа Failure если значение превысит 0.9. Если задать 1, то не будет работать.

Плагин memory

<Plugin "memory">
    <Type "memory">
        Instance "free"
        WarningMin 25000000
    </Type>
</Plugin>##!i##

Выбираем instance free, поскольку мы следим за свободной паматью, тут чем меньше значение free тем хуже, мы выставляем WarningMin. Если значение достигнет или станет меньше указанного значения, то будет сгенерирована нотификация.

Плагин df

<Plugin "df">
    Instance "root"
    <Type "df_complex-used">
#       DataSource "value"
        WarningMax 4025360000
        FailureMax 6025360000
        Percentage false
    </Type>
</Plugin>##!i##

Instance — указываем к графику для какого раздела обращаться Type - df_complex-used — df_complex всегда и обязательно, после тире в нашем случае задается поиск данных по использованному месту. Теперь DataSource можно не указывать, так как таблица имеет только одно поле value. WarningMax/FailureMax — к сожалению по непонятной причине для этого плагина невозможно использовать процентные данные, поэтому для каждого хоста придется этот плагин забивать конкретными значениями. Так же ниже мы четко указываем, что не использовать процентные значения.

Ссылки

Источники

  1. Collectd // Wikipedia. Дата обновления: 10.08.2017. URL: https://en.wikipedia.org/wiki/Collectd (дата обращения: 20.10.2017).
  2. Документация // Collectd. URL: https://collectd.org/documentation.shtml (дата обращения: 20.10.2017).
  3. Настройка и установка // ХабрХабр. Дата обновления: 10.12.2012. URL: https://habrahabr.ru/post/162087/ (дата обращения: 20.10.2017).
  4. Настройка и установка плагинов // ХабрХабр. Дата обновления: 7.06.2016. URL: https://habrahabr.ru/post/302840/ (дата обращения: 20.10.2017).