Мониторинг работы IT-инфраструктуры (сервера, службы, железо, боты, сайты)
По мере роста IT-инфраструктуры, увеличения количества серверов, служб, ботов, баз данных, сайтов и прочих компонентов выполняющих различные бизнес процессы, возникает потребность в инструменте их мониторинга, который на мой взгляд должен удовлетворять следующим критериям: — иметь единую панель отображения статусов работы компонентов, иметь возможность отправки экстренных уведомлений на E-Mail или в мессенджер(в случае сбоя), позволять легко подключать новые компоненты для мониторинга(как локальные, так и сетевые, включая службы работающие на других серверах) без ограничений, легкость и простота в использовании, и желательно укладываться в разумный бюджет. К сожалению поиски в сети, ничего подходящего не дали, все решения что мне попадались имеют один их трех(или все сразу) ключевых недостатка: — дороговизна, ограниченный функционал, ресурсоемкие системные требования. Поэтому было принято решение разработать свою систему мониторинга IT-инфраструктуры, что из этого получилось читайте дальше.
Мониторинг

Начну пожалуй с самой основной функции — Мониторинга, вот как это выглядит(на скриншоте ниже), окно со списком всех компонентов. Добавлять можно любые компоненты с любым функционалом по отслеживанию состояния того или иного бизнес процесса, логики работы или чего угодно, в плоть до показателей бухгалтерии или отдела кадров. Каждая строка это отслеживаемый компонент вашей IT-инфраструктуры(но как я уже подметил, это может быть любой параметр вашего бизнеса). В строке указывается название компонента, его текущие показатели, статус и время его актуальности(время последней проверки). Наверное у вас возник вопрос — Как же научить данный софт отслеживать, например показатели бухгалтерии? Ведь речь шла об службах, ботах, серверах, а тут вроде совсем что-то из другой области. Все просто — За каждый отслеживаемый компонент, отвечает скрипт написанный на любом языке программирования, который подключается к БД(SSH, FTP, HTTP или иному источнику данных), выполняет нужные действия и проверяет состояние данных(производит вычисления), после чего отправляет статус на панель мониторинга. Отсюда следует: А) Под каждый отслеживаемый параметр нужно написать скрипт(обращайтесь ко мне!), Б) Колоссальная гибкость системы — отслеживать можно всё!

Модульная система
Модульная система — то есть, для мониторинга каждого компонента используется отдельный модуль, который может быть написан на любом языке программирования, например я использую как PHP так и Python. Суть задачи модуля(считай скрипта) проста, он должен осуществить проверку тех или иных параметров, и сохранить результат проверки в json файл, который потом и будет прочитан программой мониторинга.
Кстати сама программа также написана на Python, вот батник (.bat файл), который запускает её (в системе должен быть предустановлен pythonw):
@echo off title Total Monitor cd /d "%~dp0" start /B pythonw.exe ./total_monitor.v.1.3.py exity |
А вот так выглядит JSON файл который считывается программой, и строка со статусом отображается в общем листинге:
{
"name": "Проверка доступности сайта",
"period": 30,
"status": true,
"active": true,
"update": 1789991972
} |
Значение переменных думаю понятно из их названий, name — описание компонента, period — периодичность опроса, status — успех / неуспех, active — активен ли вообще данный компонент, update — время последнего обновления данных. Все файлы со статусом проверки лежат в директории ./statuses
Пример скрипта на PHP, который осуществляет проверку свободного места на диске, на удаленном сервере по SSH, у меня это Virtual Drive /dev/vda2.
$config = []; // Конфиг с параметрами подключения по SSH // Имя JSON файла (пусть будет аналогично имени скрипта) $file_json = get_json_name(__FILE__); // Подключаемся к SSH $ssh = new SSHClient($config['host'], $config['port'], $config['login'], $config['password']); // Получаем процент использования $output = $ssh->exec("df -h | grep '/dev/vda2' | awk '{print $5}' | sed 's/%//'"); $usage = (int)trim($output); // Формируем статус $status = [ 'name' => ".109 | TG Disk Space Use: {$usage}%", 'period' => 30, 'status' => ($usage <= 95), 'active' => true, 'update' => time() ]; // Сохраняем if (!is_dir('../statuses/')) mkdir('../statuses/', 0755, true); file_put_contents('../statuses/' . $file_json, json_encode($status, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)); echo "Использовано: {$usage}% - " . ($status['status'] ? "OK" : "CRITICAL (>95%)") . "\n"; // Отключаемся от SSH $ssh->disconnect(); |
Установка и настройка
- Скачать архив с программой тут, распаковать;
- Скачайте последнюю версию Python с официального сайта python.org;
- Запустите установщик;
- Важно: На первом же экране обязательно отметьте галочку «Add Python to PATH» (Добавить Python в переменные среды);
- Затем нажмите «Customize installation» (Настроить установку);
- На следующем экране убедитесь, что все компоненты выбраны, и нажмите «Next»;
- В самом низу появится опция «Install for all users» (Установить для всех пользователей). Обязательно отметьте ее;
- Нажмите «Install». После завершения установки pythonw.exe должен появиться в папке с Python (например, C:\Program Files\Python3xx).
- Запустить total_monitor.bat, добавить устройства для отслеживания.
Планировщик
Для работы системы мониторинга, нужно настроить планировщик заданий в Windows или CRON в Linux, который будет с периодичностью запускать скрипт ./wroker/index.bat, который в свою будет поочередно будет запускать скрипты компонентов, которые будут выполнять свою работу и записывать данные в JSON, а вы же, будите наблюдать всю статистику по работе вашей IT-инфраструктуры в удобном для вас интерфейсе.
Откройте Win+R → taskschd.msc → Создать задачу → Триггеры → «Однократно» + «Повторять каждые: 2 минуты» + «Бессрочно» → Действия → «Запуск программы» → укажи полный путь к index.bat (например, C:\project\wroker\index.bat) и в «Рабочая папка» укажи C:\project\wroker → Параметры → «Если задача уже выполняется — Не запускать новый экземпляр».
Заключение
Возможно решение не совсем User Friendly — Но оно таким быть и не должно, где вы вообще в корпоративной среде видели масштабные программные комплексы заточенные под дружелюбное взаимодействие с простым пользователем? Этот софт предполагает некоторые навыки, чтобы интегрировать его в IT-инфраструктуру. Но зато какие преимущества? — основной софт совершенно бесплатен, дешевая стоимость внедрения, бесконечное масштабирование, производительность! Я думаю этот перечень преимуществ стоит этого самого пресловутого User Friendly. Более того, вы всегда можете обратиться ко мне, и я с радостью займусь интеграцией решения в ваш бизнес, так же возможны любые доработки и написание скриптов. Обращайтесь!

Автор:






