mem_checker/README.md

52 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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)
[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit)
## Задание
Написать bash или python или groovy скрипт, который будет контролировать потребление памяти и генерировать alarm путем отправки http запроса на API
## Описание
Скрипт использует только стандартную библиотеку 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,
}
]
## ToDo
- Написать логирование
- Добавить обработку исключений при парсинге stdout
- Вынести глобальные переменные в конфигурационные файлы