|
Size: 10284
Comment:
|
← Revision 10 as of 2012-10-07 19:08:42 ⇥
Size: 15875
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> }}} |
Translation(s): - Русский
Сollectd - Cистема сбора статистики
Этот раздел поможет наглядно в пошаговом режиме поможет подготовить Debian к полноценному использованию системы сбора статистики. Каждый блок проверен, теория, практика и описания подаются кратко, без излишеств. Если мало, подробности ищите в Google.
Страница находится в разработке, подробности добавляются по мере их изучения и отладки
Если есть что добавить, то смело дополняйте разделы новой информацией. Наши опечатки и ошибки в статье также правте смело, не нужно сообщать об этом на почту, просьба соблюдать стилевое оформление этой страницы и использовать разделители разделов (серые линии различной толщины).
Contents
Теория
Для установки системы в ниже рассмотренном варианте нам понадобятся
- Дистрибутив 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>
