Каталог решений - Мониторинг потребления памяти рабочими процессами rphost

Мониторинг потребления памяти рабочими процессами rphost

Мониторинг потребления памяти рабочими процессами rphost

В наличии

Организация мониторинга за потребляемой рабочими процессами 1С памятью.

Категория:

Описание

Увидел на просторах Инфостарта статью и решил сделать себе нечто подобное. Никакой цели, кроме исследовательской, не преследовал. Было интересно просто посмотреть на графики, какое количество памяти выделяется на процесс, сколько живут процессы и каково их количество на каждом сервере.

Для получения объема потребляемой памяти процессами:

1. Был написан скрипт на python

import sys
sys.path.append('C:\\Program Files\\Python38\\lib\\site-packages\\win32')
sys.path.append('C:\\Program Files\\Python38\\lib\\site-packages\\win32\\lib')
import wmi
import json


servers = ['server1', 'server2', 'server3'] # указываем серверы кластера 
response = [] #список словарей с результатом
for server in servers:
    try:
        c = wmi.WMI(server)
        for proc in c.Win32_Process():
            if proc.Description == 'rphost.exe':
                dict_res = {'server_name': server, 'values': {'name_rphost': f'rphost_{proc.ProcessID}', 'working_set_size': round(int(proc.WorkingSetSize) / 1048576, 2)}}
                response.append(dict_res)
    except wmi.x_wmi as err:
            error = err
            continue
print(json.dumps(response)) #создаем json из списка словарей с результатом

Формат полученных данных будет приблизительно такой

[{"server_name": "server1", "values": {"name_rphost": "rphost_58564", "working_set_size": 48145.27}}, {"server_name": "server1", "values": {"name_rphost": "rphost_32956", "working_set_size": 54529.21}}, {"server_name": "server1", "values": {"name_rphost": "rphost_28856", "working_set_size": 27538.9}}, {"server_name": "server2", "values": {"name_rphost": "rphost_15800", "working_set_size": 49021.79}}, {"server_name": "server2", "values": {"name_rphost": "rphost_24416", "working_set_size": 56346.69}}, {"server_name": "server2", "values": {"name_rphost": "rphost_14772", "working_set_size": 63873.95}}, {"server_name": "server3", "values": {"name_rphost": "rphost_16416", "working_set_size": 53725.92}}, {"server_name": "server3", "values": {"name_rphost": "rphost_2424", "working_set_size": 45330.21}}, {"server_name": "server3", "values": {"name_rphost": "rphost_20116", "working_set_size": 48531.26}}, {"server_name": "server3", "values": {"name_rphost": "rphost_52112", "working_set_size": 33326.7}}]

 

2. Положил этот скрипт в папку для внешних скриптов Zabbix, настроил user_parameters и добавил элемент данных на сервер, на котором будет выполняться этот скрипт.

 

 

3. Создал правило обнаружения для этого элемента данных

 

 

и в макросах указал переменные, которые мы будем забирать из полученного в основном элементе данных json’a

 

4. В созданном правиле обнаружения создал прототип элементов данных

 

И добавил шаг предобработки JSONPath c параметром 

$[?(@.server_name=='{#SERVER_NAME}’)].[?(@.name_rphost=='{#NAME_RPHOST}’)].working_set_size.first()

 

 

5. Добавил прототип триггера, который будет срабатывать, если объем памяти рабочего процесса будет превышать 50 Гб

 

 

6. Добавил график в Grafana и наслаждался красотой

 

 

И вот такая картина за 7 дней, видно, как в один из дней все процессы резко умерли, это связано с рестартом кластера 1С

 

has been added to your cart:
Оформление заказа