На VMWare ESXI 5.0.0 (vSphere Hypervisor - бесплатная версия) у меня есть три образа сервера. Все работает под управлением CentOS 6 - Linux. Все настроены для запуска apcupsd ( http://www.apcupsd.org/ ) демон для управления upses APC.
Один из серверов (главный) подключен с помощью кабеля USB к ИБП APC CS 350. apcupsd настроен на доступность сетевого сервера через порт 3551.
Два других (также виртуализированных) сервера имеют apcupsd, настроенный на получение статуса ИБП от главного.
Это работает, но я вижу много предупреждений от apcupsd на двух подчиненных устройствах. В окне терминала я вижу записи, говорящие
Широковещательное сообщение от root @ slavehostname (четверг, 1 ноября, 19:55:10 2012):
Предупреждение потеряна связь с ИБП masterhostname
Широковещательное сообщение от root @ slavehostname (четверг, 1 ноября, 19:55:47 2012):
Связь восстановлена с помощью ИБП masterhostname
В тот же день я вижу около 200 наборов потерянных / восстановленных сообщений. Днем они происходят намного чаще, чем ночью.
Я не получаю никаких предупреждений по мастеру.
Этим серверам доступно много памяти и ЦП. Обмен практически не происходит. Я не думаю, что они голодают. И вообще они не очень много работают.
Это основные настройки конфигурации (без учета настроек EPROM):
UPSCABLE usb
UPSTYPE usb
DEVICE
POLLTIME 10
LOCKFILE /var/lock
SCRIPTDIR /etc/apcupsd
PWRFAILDIR /etc/apcupsd
NOLOGINDIR /etc
ONBATTERYDELAY 6
BATTERYLEVEL 5
MINUTES 3
TIMEOUT 0
ANNOY 300
ANNOYDELAY 60
NOLOGON disable
KILLDELAY 0
NETSERVER on
NISIP 0.0.0.0
NISPORT 3551
EVENTSFILE /var/log/apcupsd.events
EVENTSFILEMAX 10
UPSCLASS standalone
UPSMODE disable
STATTIME 0
STATFILE /var/log/apcupsd.status
LOGSTATS off
DATATIME 0
А это настройки ведомого:
UPSCABLE ether
UPSTYPE net
DEVICE 192.168.0.59:3551
POLLTIME 10
LOCKFILE /var/lock
SCRIPTDIR /etc/apcupsd
PWRFAILDIR /etc/apcupsd
NOLOGINDIR /etc
ONBATTERYDELAY 12
BATTERYLEVEL 10
MINUTES 7
TIMEOUT 0
ANNOY 300
ANNOYDELAY 60
NOLOGON disable
KILLDELAY 0
NETSERVER on
NISIP 0.0.0.0
NISPORT 3551
EVENTSFILE /var/log/apcupsd.events
EVENTSFILEMAX 10
UPSCLASS standalone
UPSMODE disable
STATTIME 20
STATFILE /var/log/apcupsd.status
LOGSTATS off
DATATIME 0
Я хотел бы попросить помощи о том, как двигаться дальше. Как мне отладить это? Любые предложения о том, как я мог настроить свои серверы таким образом, чтобы это могло вызвать это.
Это не решает основной проблемы, но помогает немного очистить консоль:
Скрипт, который выводит эти сообщения, называется apccontrol
, а в моем Ubuntu 12.04.02 LTS boxen он живет в /etc/apcupsd
. Оно использует wall
для всех сообщений.
Но он также вызывает другие сценарии, если они существуют в этом каталоге, для вторичной обработки, например отправки электронной почты root при сбое связи. Вы можете отключить это, переместив сценарий или изменив его.
Также: если другой сценарий завершается с кодом состояния 99, то apccontrol
не будет вызывать действие по умолчанию, и вы не получите спама на стене.
Я просто использовал его, чтобы поместить все предупреждения о потере связи в системный журнал, а не на стену, и теперь он не загромождает все мои терминалы, которые я пытаюсь использовать. И я могу вернуть время опроса до значения по умолчанию 60, чтобы мой подчиненный блок все равно заметил, если ИБП сработает.
Я знаю, что это старый пост, но мой опыт может пригодиться ...
Первоначально я питал свой сервер через APC BackUPS 650CS. Это всегда хорошо работало.
Я обновился до APC BX1100CI-MS. Эта установка доставляла много проблем - сообщения «Связь потеряна» на ведомой машине, apcaccess часто занимал пять секунд или больше, чтобы произвести свой вывод. Еще одна странность заключается в том, что apcupsd сообщал о состоянии «отключено / восстановлено питание» примерно три раза в секунду в течение нескольких секунд, когда отключалось питание. Хуже всего то, что такая установка требовала замены батареи каждые два-три месяца. Компания APC трижды меняла местами весь блок, прежде чем сдаться и отдать мне BackUPS Pro BR1200 взамен.
Эта новая настройка не выдает ни единого сообщения «Связь потеряна», а генерирует только одно сообщение «Потеря мощности», а apcaccess производит мгновенный вывод. Жду посмотреть сколько хватит батареи.
Я подозреваю, что более поздние модели APC немного изменили протокол управления и apcupsd не справляется.
Испытывает то же самое. Похоже на ошибку в apcupsd. Попробуйте увеличить POLLTIME в ведомом устройстве, это резко снизит частоту ошибок.
В конфигурационном файле сервера, подключенного к ИБП
"UPSCLASS автономный"
вероятно должно быть
"UPSCLASS netmaster"
У меня аналогичная проблема на ведомом устройстве, у которого плохое сетевое соединение с ведущим. Поэтому мы получаем много писем «Связь с UPS утрачена / восстановлена».
Поскольку в нашем случае основная проблема с сетью не может быть решена быстро, я изменил сценарии, которые отправляют электронные письма, чтобы они не отправляли их, если прерывание достаточно короткое, чтобы его можно было игнорировать.
Я изменил 2 сценария: /etc/apcupsd/commfailure
и /etc/apcupsd/commok
.
Это /etc/apcupsd/commfailure
:
#!/bin/sh
#
# This shell script if placed in /etc/apcupsd
# will be called by /etc/apcupsd/apccontrol when apcupsd
# loses contact with the UPS (i.e. the serial connection is not responding).
# We send an email message to root to notify him.
#
HOSTNAME=`hostname`
MSG="$HOSTNAME Communications with UPS $1 lost"
wait=12
# Wait $wait seconds, and only send email
# if still not online
sleep $wait
status=$(/sbin/apcaccess status)
if echo "$status" | grep -q '^STATUS.*COMMLOST' ; then
logger -t apcupsd "commfailure for over $wait seconds. Sending mail"
(
echo "$MSG for over $wait seconds"
echo "$status"
) | $APCUPSD_MAIL -s "$MSG" $SYSADMIN
# ensure mail will also be sent on restore
rm -f /run/apcupsd.nomail
else
touch /run/apcupsd.nomail
logger -t apcupsd "commfailure for less than $wait seconds. Created nomail file, and not sending any email."
fi
exit 0
А это /etc/apcupsd/commok
:
#!/bin/sh
#
# This shell script if placed in /etc/apcupsd
# will be called by /etc/apcupsd/apccontrol when apcupsd
# restores contact with the UPS (i.e. the serial connection is restored).
# We send an email message to root to notify him.
#
# wait at least as long as the wait defined in commfailure
# so that we know if we need to send mail or not
wait=13
sleep $wait
if [ -f /run/apcupsd.nomail ]; then
logger -t apcupsd "Skip sending mail on restore (found nomail set by commfailure)"
exit
fi
HOSTNAME=`hostname`
MSG="$HOSTNAME Communications with UPS $1 restored"
#
(
echo "$MSG"
echo " "
/sbin/apcaccess status
) | $APCUPSD_MAIL -s "$MSG" $SYSADMIN
exit 0