- Разрешить использование локальных неподписанных скриптов на сервере приложений 1С:
%systemroot%\system32\WindowsPowerShell\v1.0\powershell -Command Set-ExecutionPolicy RemoteSigned
- Положить скрипт из публикации в C:\Program Files\Zabbix Agent\Scripts\.
- Создать в zabbix_agentd.conf новые параметры:
UserParameter=Total_1C_Bases_Count[*],PowerShell.exe -nologo -NoProfile -File "C:\Program Files\Zabbix Agent\Scripts\C1PsZabbix.ps1" -Total 1
UserParameter=Special_1C_Bases_Count[*],PowerShell.exe -nologo -NoProfile -File "C:\Program Files\Zabbix Agent\Scripts\C1PsZabbix.ps1" -Special 1
- Перезапустить Zabbix Agent.
- С Zabbix-сервера проверяем корректность работы:
zabbix_get -s 1c_server -p 10050 -k Total_1C_Bases_Count
zabbix_get -s 1c_server -p 10050 -k Special_1C_Bases_Count
- Настраиваем счётчики для хоста (или кладём себе в шаблон) как на скрине
- Profit!
Код powershell-скрипта из раздела загрузки:
Param(
$Total, # выводить общее количество
$Special # выводить количество по шаблону $re_special_pattern
)
$re_SrvInfo = '-d\s+"([\w\d\:\\\s]+?)"'
$re_Port = '{[\w\d]{8}-([\w\d]{4}-){3}[\w\d]{12},"*.*?"*,(\d+)'
$re_C1_InfoBase = '{[\w\d]{8}-([\w\d]{4}-){3}[\w\d]{12},"*(.*?)"*,.*?DB=.*?DBMS='
$re_special_pattern = 'нужный или не нужный вам шаблон в виде регулярного выражения'
$c1_bases_total = 0
$c1_bases_special = 0
$C1CommandLine = Get-WmiObject Win32_Process -Filter "name = 'ragent.exe'" | Select-Object CommandLine
$C1CommandLine | % {
if ($_ -match $re_SrvInfo){
$C1SrvInfoDir = $Matches[1]
$C1_1cv8wsrv = "$C1SrvInfoDir\1cv8wsrv.lst"
$C1_1cv8wsrv_content = Get-Content -Path $C1_1cv8wsrv -Encoding UTF8
foreach($line in $C1_1cv8wsrv_content -match $re_Port){
if($line -match $re_Port){
$c1_port_dir = "$C1SrvInfoDir\reg_"+$Matches[2]
$c1_cluster_content = Get-Content -Path "$c1_port_dir\1CV8Clst.lst" -Encoding UTF8
foreach($base in $c1_cluster_content -match $re_C1_InfoBase){
$c1_bases_total += 1
if($base -match $re_C1_InfoBase){
if($Matches[2] -match $re_special_pattern){
$c1_bases_special += 1
}
}
}
}
}
}
}
if($Total){
$c1_bases_total
}
if($Special){
$c1_bases_special
}