Differences between revisions 9 and 10
Revision 9 as of 2012-10-05 08:55:02
Size: 10284
Editor: ?zorg
Comment:
Revision 10 as of 2012-10-07 19:08:42
Size: 15875
Editor: ?zorg
Comment: добавил примеры
Deletions are marked like this. Additions are marked like this.
Line 97: Line 97:
Проверенно рабочий конфиг для материнки Sapphire IPC-E350M1W:

/etc/collectd/collectd.conf

Примечание - у меня сбоили показания через hddtemp, пришлось организовыывать сбор данных о температуре через плагин exec и утилитку smartctl
{{{
FQDNLookup true
LoadPlugin syslog
<Plugin syslog>
 LogLevel info
</Plugin>
LoadPlugin cpu
LoadPlugin cpufreq
LoadPlugin df
LoadPlugin disk
LoadPlugin dns
LoadPlugin exec
LoadPlugin filecount
LoadPlugin interface
LoadPlugin load
LoadPlugin memory
LoadPlugin rrdtool
LoadPlugin sensors
LoadPlugin uptime
LoadPlugin notify_email
<Plugin notify_email>
        SMTPServer "smtp.yandex.ru"
        SMTPPort 25
        SMTPUser "user@yandex.ru"
        SMTPPassword "password"
        From "ot-kogo-posilaem@yandex.ru"
        Subject "[collectd] %s on %s!"
        Recipient "tot-komu-posilaem@yandex.ru"
</Plugin>
<Plugin df>
 Device "/dev/mapper/sda2_crypt"
 Device "/dev/mapper/data"
 Device "/dev/mapper/cache"
</Plugin>
<Plugin disk>
 Disk "sda"
 Disk "sdb"
 Disk "sdc"
</Plugin>
<Plugin dns>
 Interface "eth0"
</Plugin>
<Plugin exec>
 Exec smart "/usr/local/bin/collsmart.sh"
</Plugin>
<Plugin filecount>
 <Directory "/mnt/cache/backup/private">
  Instance "backups"
 </Directory>
</Plugin>
<Plugin interface>
 Interface "eth0"
 Interface "eth1"
</Plugin>
<Plugin rrdtool>
 DataDir "/var/lib/collectd/rrd"
</Plugin>
Include "/etc/collectd/filters.conf"
Include "/etc/collectd/thresholds.conf"

}}}
Line 256: Line 321:
Проверенно рабочий конфиг для материнки Sapphire IPC-E350M1W:

/etc/collectd/thresholds.conf
{{{
<Threshold>
 <Plugin "cpu">
  <Type "cpu">
   Instance "user"
   WarningMax 85
   # 10 hits - 2 min
   Hits 50
  </Type>
 </Plugin>
 <Plugin "df">
                <Type "df">
                        instance "mnt-data"
   #Если занято свыше 400ГБ
   WarningMax 429496729600
                 #Percetage false
  </Type>
  <Type "df">
   instance "mnt-cache"
   # Если занято свыше 500ГБ
   WarningMax 536870912000
                 #Percentage false
  </Type>
  <Type "df">
   instance "root"
   # Если занято свыше 80%
   WarningMax 80
                 Percentage true
  </Type>
        </Plugin>
 <Plugin "sensors">
                instance "k10temp-pci-00c3"
                <Type "temperature">
                        instance "temp1"
                        DataSource "value"
   # Если температура процессора свыше 75 градусов по Цельсию
                        WarningMax 75
                </Type>
  instance "f71808e-isa-0290"
                <Type "temperature">
                        instance "temp1"
                        DataSource "value"
                        WarningMax 65
                </Type>
                <Type "temperature">
                        instance "temp2"
                        DataSource "value"
                        WarningMax 55
                </Type>
                <Type "voltage">
                        instance "in0"
                        DataSource "value"
                        WarningMax 3.4
   WarningMin 3.2
                </Type>
                <Type "voltage">
                        instance "in1"
                        DataSource "value"
                        WarningMax 1.35
   WarningMin 0.55
                </Type>
                <Type "voltage">
                        instance "in3"
                        DataSource "value"
                        WarningMax 1.65
   WarningMin 1.55
                </Type>
                <Type "voltage">
                        instance "in4"
                        DataSource "value"
                        WarningMax 1.15
   WarningMin 1.05
                </Type>
                <Type "voltage">
                        instance "in5"
                        DataSource "value"
                        WarningMax 1.85
   WarningMin 1.75
                </Type>
                <Type "voltage">
                        instance "in7"
                        DataSource "value"
                        WarningMax 3.45
   WarningMin 3.25
                </Type>
                <Type "voltage">
                        instance "in8"
                        DataSource "value"
                        WarningMax 3.25
   WarningMin 3.05
                </Type>
        </Plugin>
 <Plugin "exec">
  # Температура жёских дисков по Цельсию
                instance "smart"
                <Type "temperature">
                        instance "sda"
                        DataSource "value"
                        WarningMax 50
                </Type>
  <Type "temperature">
                        instance "sdb"
                        DataSource "value"
                        WarningMax 43
                </Type>
  <Type "temperature">
                        instance "sdc"
                        DataSource "value"
                        WarningMax 43
                </Type>
        </Plugin>
 <Plugin "memory">
  <Type "memory">
   Instance "used"
   # Если занято свыше 1ГБ
   WarningMax 1073741824
  </Type>
 </Plugin>
</Threshold>
}}}

http://www.debian.org/logos/openlogo-nd-50.png http://www.debian.org/Pics/debian.png

Translation(s): - Русский


Сollectd - Cистема сбора статистики

Этот раздел поможет наглядно в пошаговом режиме поможет подготовить Debian к полноценному использованию системы сбора статистики. Каждый блок проверен, теория, практика и описания подаются кратко, без излишеств. Если мало, подробности ищите в Google.


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


Если есть что добавить, то смело дополняйте разделы новой информацией. Наши опечатки и ошибки в статье также правте смело, не нужно сообщать об этом на почту, просьба соблюдать стилевое оформление этой страницы и использовать разделители разделов (серые линии различной толщины).



Теория


Для установки системы в ниже рассмотренном варианте нам понадобятся

  • Дистрибутив collectd из официального репозитория.
  • Web сервер Lighttpd
  • Модули Perl librrds-perl libconfig-general-perl libhtml-parser-perl libregexp-common-perl


Базовая установка


Устанавливаем collectd: - основной пакет.

aptitude install сollectd

collectd сразу начнёт сбор статистики для плагинов включённых по-умолчанию.


Просмотр статистики


Подсистема отображения собранных данных в collectd отсуnствует. Для этого создано множество отдельных front-end. Полный список здесь


Сollection3


Достоинства:

  • Показывает данные любых модулей
  • Установка без "костылей"
  • Идет в комплекте с collectd
  • Гибкое масштабирование

Недостатки

  • Требует Web сервер с поддержкой CGI
  • Требует Perl + 4 модуля к нему
  • Архаичный интерфейс
  • Не умеет объединять графики
  • Не показывает мгновенные значения
  • Не запоминает настройки масштабирования
  • Нет автообновления

Устанавливаем Web-сервер

aptitude install lighttpd

Копируем файлы Web-интерфейса

cp -r /usr/share/doc/collectd/examples/collection3 /var/www/

Включаем исполнение CGI скриптов в Lighttpd

lighttpd-enable-mod cgi

Указываем обработчик для cgi файлов

echo "cgi.assign = (\".cgi\" => \"/usr/bin/perl\")" >> /etc/lighttpd/conf-available/10-cgi.conf

Перезапускаем Lighttpd

/etc/init.d/lighttpd force-reload

Устанавливаем модули perl

aptitude install librrds-perl libconfig-general-perl libhtml-parser-perl  libregexp-common-perl

Теперь смотрим статистику по адресу

http://адрес_сервера/collection3/bin/


Настройки модулей


Правим основной файл конфигурации

nano /etc/collectd/collectd.conf

Подробно о плагинах смотрим на официальном сайте

Для очистки всех графиков можно сделать так:

/etc/init.d/collectd stop
rm -fr /var/lib/collectd/rrd
/etc/init.d/collectd start

Проверенно рабочий конфиг для материнки Sapphire IPC-E350M1W:

/etc/collectd/collectd.conf

Примечание - у меня сбоили показания через hddtemp, пришлось организовыывать сбор данных о температуре через плагин exec и утилитку smartctl

FQDNLookup true
LoadPlugin syslog
<Plugin syslog>
        LogLevel info
</Plugin>
LoadPlugin cpu
LoadPlugin cpufreq
LoadPlugin df
LoadPlugin disk
LoadPlugin dns
LoadPlugin exec
LoadPlugin filecount
LoadPlugin interface
LoadPlugin load
LoadPlugin memory
LoadPlugin rrdtool
LoadPlugin sensors
LoadPlugin uptime
LoadPlugin notify_email
<Plugin notify_email>
        SMTPServer "smtp.yandex.ru"
        SMTPPort 25
        SMTPUser "user@yandex.ru"
        SMTPPassword "password"
        From "ot-kogo-posilaem@yandex.ru"
        Subject "[collectd] %s on %s!"
        Recipient "tot-komu-posilaem@yandex.ru"
</Plugin>
<Plugin df>
        Device "/dev/mapper/sda2_crypt"
        Device "/dev/mapper/data"
        Device "/dev/mapper/cache"
</Plugin>
<Plugin disk>
        Disk "sda"
        Disk "sdb"
        Disk "sdc"      
</Plugin>
<Plugin dns>
        Interface "eth0"
</Plugin>
<Plugin exec>
        Exec smart "/usr/local/bin/collsmart.sh"
</Plugin>
<Plugin filecount>
        <Directory "/mnt/cache/backup/private">
                Instance "backups"
        </Directory>
</Plugin>
<Plugin interface>
        Interface "eth0"
        Interface "eth1"
</Plugin>
<Plugin rrdtool>
        DataDir "/var/lib/collectd/rrd"
</Plugin>
Include "/etc/collectd/filters.conf"
Include "/etc/collectd/thresholds.conf"


Сбор данных из любых источников


Иногда нужно собирать данные из собственного скрипта. На примере рассмотрим вариант сбора данных о температуре жёстких дисков через не поддерживаемый hddtemp контроллер. Подобные данные можно собрать c помощью smartctl. К сожалению, для работы smartctl требует права root.

Сперва решаем проблему прав с помощью sudo. В теории это не безопасно.

aptitude install sudo smartmontools

Создаём "пустого" пользователя и для надёжности выставляем ему пароль

useradd -c "smart" -M -g users smart -s /bin/bash
passwd smart

Разрешаем пользователю smart запускать smartctl. Добавляем строки

nano /etc/sudoers

...
Cmnd_Alias      SMARTCTL = /usr/sbin/smartctl -A /dev/sda, /usr/sbin/smartctl -A /dev/sdb, /usr/sbin/smartctl -A /dev/sdc
smart ALL = (root) NOPASSWD: SMARTCTL

Возможно следует перезагрузить компьютер.

Создаём скрипт сбора данных

nano /usr/local/bin/collsmart.sh

#!/bin/bash
HOSTNAME="${COLLECTD_HOSTNAME:-`hostname -f`}"
INTERVAL="${COLLECTD_INTERVAL:-60}"

while sleep "$INTERVAL"
do
TEMP=$((sudo smartctl -A /dev/sda | grep Temperature_Celsius | awk '{ print $10; }') 2>/dev/null);
if [ $? -ne 0 ]
        then
                TEMP="U"
        fi
echo "PUTVAL $HOSTNAME/exec-smart/temperature-sda interval=$INTERVAL N:$TEMP"

TEMP=$((sudo smartctl -A /dev/sdb | grep Temperature_Celsius | awk '{ print $10; }') 2>/dev/null);
if [ $? -ne 0 ]
        then
                TEMP="U"
fi
echo "PUTVAL $HOSTNAME/exec-smart/temperature-sdb interval=$INTERVAL N:$TEMP"
 
TEMP=$((sudo smartctl -A /dev/sdc | grep Temperature_Celsius | awk '{ print $10; }') 2>/dev/null);
if [ $? -ne 0 ]
        then
                TEMP="U"
        fi
echo "PUTVAL $HOSTNAME/exec-smart/temperature-sdc interval=$INTERVAL N:$TEMP"
done

Делаем скрипт исполняемым

chmod +x /usr/local/bin/collsmart.sh

Настраиваем модуль exec

nano /etc/collectd/collectd.conf

LoadPlugin exec
<Plugin exec>                                                         
        Exec smart "/usr/local/bin/collsmart.sh" 
</Plugin>                                    

Перезапускаем collectd

/etc/init.d/collectd restart

Если что-то не работает, то нужно смотреть syslog


Уведомления на e-mail


В случаем выхода указанного параметра за рамки диапазона мы получим на почту письмо WARNING или FAILURE, и когда значение вернётся к нормальным значением получим письмо OKAY

Устанавливаем библиотеку для отпрaвки почты

aptitude install libesmtp5

Настраиваем параметры почтового соединения - добавляем в конец файла строки

Например, так:

nano /etc/collectd/collectd.conf

LoadPlugin notify_email
<Plugin notify_email>
        SMTPServer "smtp.yandex.ru"
        SMTPPort 25
        SMTPUser "login"
        SMTPPassword "password"
        From "mailbox@yandex.ru"
#       # <WARNING/FAILURE/OK> on <hostname>.
#       # Beware! Do not use not more than two placeholders (%)!
        Subject "[collectd] %s on %s!"
        Recipient "mailbox@yandex.ru"
</Plugin>

Добавляем простейшую новую реакцию на событие (триггер) - например, процессор загружен пользовательским процессом свыше 85 % - добавляем в конец файла строки.

nano /etc/collectd/thresholds.conf
<Threshold>
        <Type "cpu">
                Instance "user"
                WarningMax 85
                Hits 6
        </Type>
</Threshold>

Перезапускаем collectd

/etc/init.d/collectd restart

Нагрузить процессор очень просто - ставим cpuburn:

aptitude install cpuburn

Грузим процессор

burnP6

И проверяем почту - письмо-уведомление должно быть.

Далее не забываем отключить нагрузку Ctrl+C

Или варианты оповещения посложнее - нигде в интернет подобных работоспособных примеров найдено не было, нащупал сам 8)

Отсылаем письмо, если скорость передачи данных на сервер (rx) превысит 9 мегабит в секунду (грубо) или если температура процессора на материнке Sapphire IPC-?E350M1) превысит 50 градусов.

nano /etc/collectd/thresholds.conf
<Threshold>
<Host "gtx.home">
        <Plugin "interface">
                <Type "if_octets">
                        Instance "eth0"
                        DataSource "rx"
                        WarningMax 9000000
                </Type>
        </Plugin>
        <Plugin "sensors">
                instance "k10temp-pci-00c3"
                <Type "temperature">
                        instance "temp1"
                        DataSource "value"
                        WarningMax 50
                </Type>
        </Plugin>
</Host> 
</Threshold>

Проверенно рабочий конфиг для материнки Sapphire IPC-E350M1W:

/etc/collectd/thresholds.conf

<Threshold>
        <Plugin "cpu">
                <Type "cpu">
                        Instance "user"
                        WarningMax 85
                        # 10 hits - 2 min
                        Hits 50
                </Type>
        </Plugin>
        <Plugin "df">
                <Type "df">
                        instance "mnt-data"
                        #Если занято свыше 400ГБ
                        WarningMax 429496729600
                        #Percetage false
                </Type>
                <Type "df"> 
                        instance "mnt-cache"
                        # Если занято свыше 500ГБ                       
                        WarningMax 536870912000
                        #Percentage false                                          
                </Type>
                <Type "df"> 
                        instance "root"
                        # Если занято свыше 80%                 
                        WarningMax 80
                        Percentage true                                    
                </Type>
        </Plugin>
        <Plugin "sensors">
                instance "k10temp-pci-00c3"
                <Type "temperature">
                        instance "temp1"
                        DataSource "value"
                        # Если температура процессора свыше 75 градусов по Цельсию
                        WarningMax 75
                </Type>
                instance "f71808e-isa-0290"
                <Type "temperature">
                        instance "temp1"
                        DataSource "value"
                        WarningMax 65
                </Type>
                <Type "temperature">
                        instance "temp2"
                        DataSource "value"
                        WarningMax 55
                </Type>
                <Type "voltage">
                        instance "in0"
                        DataSource "value"
                        WarningMax 3.4
                        WarningMin 3.2
                </Type>
                <Type "voltage">
                        instance "in1"
                        DataSource "value"
                        WarningMax 1.35
                        WarningMin 0.55
                </Type>
                <Type "voltage">
                        instance "in3"
                        DataSource "value"
                        WarningMax 1.65
                        WarningMin 1.55
                </Type>
                <Type "voltage">
                        instance "in4"
                        DataSource "value"
                        WarningMax 1.15
                        WarningMin 1.05
                </Type>
                <Type "voltage">
                        instance "in5"
                        DataSource "value"
                        WarningMax 1.85
                        WarningMin 1.75
                </Type>
                <Type "voltage">
                        instance "in7"
                        DataSource "value"
                        WarningMax 3.45
                        WarningMin 3.25
                </Type>
                <Type "voltage">
                        instance "in8"
                        DataSource "value"
                        WarningMax 3.25
                        WarningMin 3.05
                </Type>
        </Plugin>
        <Plugin "exec">
                # Температура жёских дисков по Цельсию          
                instance "smart"
                <Type "temperature">
                        instance "sda"
                        DataSource "value"
                        WarningMax 50
                </Type>
                <Type "temperature">
                        instance "sdb"
                        DataSource "value"
                        WarningMax 43
                </Type>
                <Type "temperature">
                        instance "sdc"
                        DataSource "value"
                        WarningMax 43
                </Type>
        </Plugin>
        <Plugin "memory">
                <Type "memory">
                        Instance "used"
                        # Если занято свыше 1ГБ
                        WarningMax 1073741824
                </Type>
        </Plugin>
</Threshold>