Настройка мониторинга состояния ИБП APC Back-UPS RS 900G
05 Jul 2018
local_offer
Windows
local_offer
monitoring
Продолжение серии постов о мониторинге состояния ИБП. Предыдущий пост: Настройка мониторинга состояния ИБП SNR серии Element в Windows.

ups.conf
[ups-apc900br]
driver = usbhid-ups
port = auto
vendorid = 051d
productid = 0002
ignorelb
override.battery.charge.low = 10
override.battery.charge.warning = 30
override.battery.runtime.low = 120
nut.conf
MODE=standalone
upsd.conf
LISTEN 0.0.0.0 3493
upsd.users
[admin]
password=pass
actions=SET
instcmds=ALL
upsmon master
[upsmon_local]
password=pass
upsmon master
[upsmon_remote]
password=pass
upsmon slave
upsmon.conf
MONITOR ups-apc900br@localhost 1 upsmon_local pass master
MINSUPPLIES 1
POWERDOWNFLAG "C:\\killpower"
#SHUTDOWNCMD "shutdown -s -t 0 -d 6:12"
SHUTDOWNCMD "C:\\Windows\\SysWOW64\\WindowsPowerShell\\v1.0\\powershell.exe C:\\ProgramData\\icinga2\\scripts\\icinga2\\Invoke-UPSShutdownSystem.ps1"
NOTIFYCMD "C:\\Windows\\SysWOW64\\WindowsPowerShell\\v1.0\\powershell.exe C:\\ProgramData\\icinga2\\scripts\\icinga2\\Send-UPSNotify.ps1"
NOTIFYMSG ONLINE "\"'UPS %s on line power'\""
NOTIFYMSG ONBATT "\"'UPS %s on battery'\""
NOTIFYMSG LOWBATT "\"'UPS %s battery is low'\""
NOTIFYMSG FSD "\"'UPS %s: forced shutdown in progress'\""
NOTIFYMSG COMMOK "\"'Communications with UPS %s established'\""
NOTIFYMSG COMMBAD "\"'Communications with UPS %s lost'\""
NOTIFYMSG SHUTDOWN "\"'Auto logout and shutdown proceeding'\""
NOTIFYMSG REPLBATT "\"'UPS %s battery needs to be replaced'\""
NOTIFYMSG NOCOMM "\"'UPS %s is unavailable'\""
NOTIFYMSG NOPARENT "\"'upsmon parent process died - shutdown impossible'\""
NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
NOTIFYFLAG FSD SYSLOG+EXEC
NOTIFYFLAG COMMOK SYSLOG+EXEC
NOTIFYFLAG COMMBAD SYSLOG+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+EXEC
NOTIFYFLAG REPLBATT SYSLOG+EXEC
NOTIFYFLAG NOCOMM SYSLOG+EXEC
NOTIFYFLAG NOPARENT SYSLOG+EXEC
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
Параметры ИБП APC Back-UPS RS 900G
c:\NUT\bin>upsc.exe apc900br
battery.charge: 100
battery.charge.low: 50
battery.charge.warning: 80
battery.date: 2001/09/25
battery.mfr.date: 2018/02/19
battery.runtime: 5105
battery.runtime.low: 120
battery.type: PbAc
battery.voltage: 27.3
battery.voltage.nominal: 24.0
device.mfr: American Power Conversion
device.model: Back-UPS RS 900G
device.serial: 4B1808P00130
device.type: ups
driver.flag.ignorelb: enabled
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.parameter.productid: 0002
driver.parameter.vendorid: 051d
driver.version: Windows-v2.6.5-5-7-g72f380c
driver.version.data: APC HID 0.95
driver.version.internal: 0.38
input.sensitivity: medium
input.transfer.high: 294
input.transfer.low: 176
input.transfer.reason: input voltage out of range
input.voltage: 242.0
input.voltage.nominal: 230
ups.beeper.status: enabled
ups.delay.shutdown: 20
ups.firmware: 879.L4 .I
ups.firmware.aux: L4
ups.load: 13
ups.mfr: American Power Conversion
ups.mfr.date: 2018/02/19
ups.model: Back-UPS RS 900G
ups.productid: 0002
ups.realpower.nominal: 540
ups.serial: 4B1808P00130
ups.status: OL
ups.test.result: No test initiated
ups.timer.reboot: 0
ups.timer.shutdown: -1
ups.vendorid: 051d
Send-UPSNotify.ps1
<#
.SYNOPSIS
Скрипт для Icinga 2 - Отправка push-сообщения от ИБП.
.DESCRIPTION
.PARAMETER UPSMessage
Текст сообщения от ИБП
.EXAMPLE
Send-UPSNotify -UPSMessage "UPS apc900br battery is low"
.LINK
https://webnote.satin-pl.ru/2018/07/05/win_nut_part2/
.NOTES
Version: 0.1
Author: Pavel Satin
Email: plsatin@yandex.ru
Creation Date: 08.07.2018
Purpose/Change: Initial script development
#>
Param(
[Parameter(Mandatory = $true)]
[string]$UPSMessage
)
# [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
# $ErrorActionPreference = "SilentlyContinue"
#Отправка pushover сообщения
$uri = "https://api.pushover.net/1/messages.json"
$parameters = @{
token = "PUSHOVER_TOKEN"
user = "PUSHOVER_USER"
message = "NUT: $UPSMessage"
}
$pushoverreq = $parameters | Invoke-RestMethod -Uri $uri -Method Post
Invoke-UPSShutdownSystem.ps1
<#
.SYNOPSIS
Скрипт для Icinga 2 - Выключение удаленного хоста (для NUT)
.DESCRIPTION
.PARAMETER ComputerName
Имя компьютера
.LINK
https://webnote.satin-pl.ru
.NOTES
Version: 0.1
Author: Pavel Satin
Email: plsatin@yandex.ru
Creation Date: 12.07.2018
Purpose/Change: Initial script development
#>
Param(
[Parameter(Mandatory = $false)]
[string]$ComputerName = "."
)
$returnStateOK = 0
$returnStateWarning = 1
$returnStateCritical = 2
$returnStateUnknown = 3
if ($ComputerName -eq ".") {
$result = $true
} else {
$result = Test-Connection -ComputerName $ComputerName -Count 2 -Quiet
}
if ((Get-WmiObject -Class Win32_ComputerSystem).PartOfDomain) {
$myFQDN = (Get-WmiObject win32_computersystem).DNSHostName+"."+(Get-WmiObject win32_computersystem).Domain
$myFQDN = $myFQDN.ToLower()
Write-Verbose "FQDN HostName: $myFQDN"
} else {
$myFQDN = (Get-WmiObject win32_computersystem).DNSHostName
$myFQDN = $myFQDN.ToLower()
Write-Verbose "FQDN HostName: $myFQDN"
}
if ($result) {
$UPSSutdownMessage = "System (FQDN: $myFQDN) forced shutdown by NUT"
$uri = "https://api.pushover.net/1/messages.json"
$parameters = @{
token = "PUSHOVER_TOKEN"
user = "PUSHOVER_USER"
message = "NUT: $UPSSutdownMessage"
}
$pushoverreq = $parameters | Invoke-RestMethod -Uri $uri -Method Post
# Здесь должны быть какие то действия, например выключение виртуальных машин
$haltResult = (Get-WmiObject -Class Win32_OperatingSystem -ComputerName $ComputerName).Win32Shutdowntracker(10, $UPSSutdownMessage, 0x00060000, 12)
if ($haltResult.ReturnValue -eq 0) {
Write-Host "OK - Command send"
[System.Environment]::Exit($returnStateOK)
} else {
Write-Host "UNKNOWN - Command sent, but something went wrong!"
[System.Environment]::Exit($returnStateUnknown)
}
} else {
Write-Host "Host $ComputerName is not available."
[System.Environment]::Exit($returnStateUnknown)
}
System Events (для анализа выключений)
- 1074 - Инициация процесса выключения
- 6008 - Событие: Предыдущее завершение работы системы ... было неожиданным.
Ссылки
- APC Back-UPS Pro 900 ВА, с автоматической регулировкой напряжения, 230 В, СНГ
- Яндекс.Маркет: Интерактивный ИБП APC by Schneider Electric Back-UPS Pro BR900G-RS
- PowerChute Personal Edition v3.0.2
- Обзор программы APC PowerChute Personal Edition: ПО для взаимодействия с ИБП серий APC Back-UPS и Back-UPS Pro
- Win32ShutdownTracker method of the Win32_OperatingSystem class
- System Shutdown Reason Codes