Количество баз 1С как счетчик в Zabbix


Делаем счётчик баз 1С в Zabbix.
Задача:
Сделать мониторинг количества баз в Zabbix. Всего и по шаблону.
Zabbix и его агенты уже развёрнуты и работают. Активные проверки (Active Checks) уже настроены.
 
Реализация:
  1. Разрешить использование локальных неподписанных скриптов на сервере приложений 1С:
    %systemroot%system32WindowsPowerShellv1.0powershell -Command Set-ExecutionPolicy RemoteSigned
     
  2. Положить скрипт из публикации в C:Program Filesabbix AgentScripts.
     
  3. Создать в 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
     
  4. Перезапустить Zabbix Agent.
     
  5. С 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
     
  6. Настраиваем счётчики для хоста (или кладём себе в шаблон) как на скрине

     
  7.   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
}

 

7 Comments

  1. VmvLer

    а что даст этот счетчик в практическом смысле кроме того что сервер станет открыт для неподписанных шрифтов сприптов?

    Reply
  2. MrWonder

    (1) Мне, в практическом смысле, он даёт именно то, для чего задуман. Есть такая потребность — отслеживать количество баз.

    Reply
  3. Sloth

    (2) Сервер используется разработчиками или сервисниками, где может разворачиваться произвольное количество баз?

    Reply
  4. MrWonder

    (3) В том числе, да.

    Reply
  5. Sloth

    (4) Просто хотелось бы хорошо понимать прикладной сценарий описанного в статье 🙂 А об этом автор скромно умолчал 😉

    Reply
  6. MrWonder

    (5) Понятно. Автор делал под свои задачи и решил выложить для community.

    Reply
  7. Sloth

    (6) Скажем так, меня очень интересуют различные сценарии использования 1С + Zabbix и их практическое применение.

    Т.е. не просто «смотрите, можно сделать так …», а «смотрите, можно сделать так …, я этим пользуюсь для …».

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *