Делаем счётчик баз 1С в Zabbix.
Задача:
Сделать мониторинг количества баз в Zabbix. Всего и по шаблону.
Zabbix и его агенты уже развёрнуты и работают. Активные проверки (Active Checks) уже настроены.
Реализация:
- Разрешить использование локальных неподписанных скриптов на сервере приложений 1С:
%systemroot%system32WindowsPowerShellv1.0powershell -Command Set-ExecutionPolicy RemoteSigned
- Положить скрипт из публикации в C:Program Filesabbix AgentScripts.
- Создать в zabbix_agentd.conf новые параметры:
UserParameter=Total_1C_Bases_Count[*],PowerShell.exe -nologo -NoProfile -File "C:Program Filesabbix AgentScriptsC1PsZabbix.ps1" -Total 1
UserParameter=Special_1C_Bases_Count[*],PowerShell.exe -nologo -NoProfile -File "C:Program Filesabbix AgentScriptsC1PsZabbix.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 = '-ds+"([wd:\s]+?)"'
$re_Port = '{[wd]{8}-([wd]{4}-){3}[wd]{12},"*.*?"*,(d+)'
$re_C1_InfoBase = '{[wd]{8}-([wd]{4}-){3}[wd]{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 = "$C1SrvInfoDir1cv8wsrv.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
eg_"+$Matches[2]
$c1_cluster_content = Get-Content -Path "$c1_port_dir1CV8Clst.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
}
а что даст этот счетчик в практическом смысле кроме того что сервер станет открыт для неподписанных
шрифтовсприптов?(1) Мне, в практическом смысле, он даёт именно то, для чего задуман. Есть такая потребность — отслеживать количество баз.
(2) Сервер используется разработчиками или сервисниками, где может разворачиваться произвольное количество баз?
(3) В том числе, да.
(4) Просто хотелось бы хорошо понимать прикладной сценарий описанного в статье 🙂 А об этом автор скромно умолчал 😉
(5) Понятно. Автор делал под свои задачи и решил выложить для community.
(6) Скажем так, меня очень интересуют различные сценарии использования 1С + Zabbix и их практическое применение.
Т.е. не просто «смотрите, можно сделать так …», а «смотрите, можно сделать так …, я этим пользуюсь для …».