2024-04-13 04:19:51 +03:00
|
|
|
|
# Mem checker
|
|
|
|
|
|
|
|
|
|
[![Static Badge](https://img.shields.io/badge/pi3c_nao-green?style=for-the-badge&logo=telegram&label=Telegram)](https://t.me/pi3c_nao)
|
2024-04-13 04:21:03 +03:00
|
|
|
|
|
2024-04-13 04:12:33 +03:00
|
|
|
|
[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit)
|
2024-04-13 04:19:51 +03:00
|
|
|
|
|
|
|
|
|
## Задание
|
|
|
|
|
Написать bash или python или groovy скрипт, который будет контролировать потребление памяти и генерировать alarm путем отправки http запроса на API
|
2024-04-16 14:08:57 +03:00
|
|
|
|
|
|
|
|
|
## Описание
|
|
|
|
|
Скрипт использует только стандартную библиотеку python и не требует установки зависимостей.
|
|
|
|
|
Утилиты free и df используются для получения данных о свободной памяти.
|
|
|
|
|
|
|
|
|
|
Реализованы несколько классов.
|
|
|
|
|
Абстрактный класс Command предоставляет базовый(общий для наследников) функционал.
|
|
|
|
|
С наследованием от Сommand реализованы классы интеракторов, для работы с указанными выше утилитами.
|
|
|
|
|
|
|
|
|
|
Функция send_alert, отправляет POST запрос со списком alert сообщений, требующих внимания.
|
|
|
|
|
Ендпоинт для отправки и уровни срабатывания настраиваются в коде.
|
|
|
|
|
|
|
|
|
|
Для запуска на продакшен сервере, необходимо настроить планировщик(cron, любой другой) на запуск скрипта
|
|
|
|
|
через необходимые промежутки времени.
|
|
|
|
|
|
|
|
|
|
Для тестирования возможен запуск скрипта с ключем --test-mode,
|
|
|
|
|
Данный способ запуска предназначен только ДЛЯ ТЕСТИРОВАНИЯ работоспособности и не рекомендуется для постоянной
|
|
|
|
|
работы.
|
|
|
|
|
|
|
|
|
|
## Установка и запуск
|
|
|
|
|
|
|
|
|
|
Клонируем:
|
|
|
|
|
`git clone https://git.pi3c.ru/pi3c/mem_checker.git`
|
|
|
|
|
|
|
|
|
|
Запускаем в тестовом режиме
|
|
|
|
|
`cd ./mem_checker`
|
|
|
|
|
`python ./mem_checker/mem_checker.py --test-mode`
|
|
|
|
|
|
|
|
|
|
Проверка отправки
|
|
|
|
|
Для полного тестирования необходим работающий ендпоинт на сервере, способный принимать POST запросы.
|
|
|
|
|
json формат отправляемых данных, которые должен обработать ендпоинт:
|
|
|
|
|
[
|
|
|
|
|
{
|
|
|
|
|
type_msg: str,
|
|
|
|
|
message: str
|
|
|
|
|
detail: str,
|
|
|
|
|
}
|
|
|
|
|
]
|
2024-04-16 15:12:44 +03:00
|
|
|
|
|
|
|
|
|
##ToDo
|
|
|
|
|
- Написать логирование
|
|
|
|
|
- Добавить обработку исключений при парсинге stdout
|
|
|
|
|
- Вынести глобальные переменные в конфигурационные файлы
|