Назад | Перейти на главную страницу

подчиненный клиент apcupsd продолжает терять и восстанавливать связь с главным ИБП

На 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