Library for monitoring of Monique components.
Для того чтобы монитроинговый компонент Monique мог работать, на машине, на которой он запускается, должна быть установлена MongoDB.
Если на машине установлен докер, то сделать это можно простой командой:
docker run -it --name monique -p <порт>:27017 -d mongo --auth
Порт в данной команде должен соответствовать порту, указанному пользователем в config.json в поле port секции "deploy -> mongo".
В самой базе данных необходимо создать пользователя, который обладает правами на чтение из запись. По умолчанию имя и пароль пользователя совпадают с названием базы данных.
Для создания пользователя в самой MongoDB необходимо выполнить описанные ниже шаги.
- Если база абсолютно новая и в ней нет пользователей категории admin, то необходимо создать такового:
# Подключиться к контейнеру через bash
sudo docker exec -it monique bash
# Подключиться к локальной для контейнера монге
mongo
# Создать первого админа
use admin
db.createUser({user:"root",pwd:"root",roles:[{role:"root",db:"admin"}]})
# Выйти из MongoDB
exit
# Выйти из контейнера
exit
- После того, как у нас появился пользователь категории admin, можно сделать следующее:
# Подключиться к MongoDB с авторизацией под admin
mongo -u "root" -p "root" localhost --authenticationDatabase "admin"
# Создать дефолтного пользователя для базы monique
use monique
db.createUser({user:"monique", pwd:"monique",roles:["readWrite"]})
Мониторинговый компонент, ответственный за сбор и запись мониторинговых сообщений в базу, запускается следующей последовательностью команд:
stack build
stack exec mq-monitoring
Данные будут записываться в коллекцию monitoring схемы monique.
На машине с запущенным монитринговым компонентом, кроме него самого, предлагается поднимать ручку, которая общается с внешним миром по REST-протоколу и предоставляет удобный интерфейс взаимодействия с базой мониторинговых сообщений.
Ручка поднимается следующими командами:
stack build
stack exec mq-monitoring-handler
По умолчанию ручка поднимается на 3000 порту. Чтобы изменить порт, нужно соответствующим образом поменять поле port секции "params -> mq_monitoring_handler" в config.json:
"params": {
"mq_monitoring_handler": {
"port": <мой_порт>
}
}
Ручка предоставляет пользователю возможность по GET запросу получать мониторинговые сообщения из базы.
У запроса monitoring есть следующие параметры:
- name определяет то, к какому компоненту будут относиться возвращённые сообщения; если параметр name не заполнен, то будут возвращены сообщения от всех компонентов;
- since представляет из себя UNIX Timestamp в миллисекундах и определяет то, за какой период времени мы хотим получить мониторинговые сообщения; если параметр since не заполнен, то будут возвращены сообщения за последние 24 часа;ы
- last является не принимающим никаких параметров флагом, наличие которого ограничивает выдачу сообщений для выбранного name самым последним сообщением; если параметр name не заполнен, то будут возвращены последние сообщения от всех компонентов.
Запрос формируется следующим образом:
# Все сообщения от компонента с заданного момента времени
<хост>:<порт>/v1/monitoring?name=<имя_компонента>&since=<нижняя_временная_отсечка>
# Последнее сообщение от заданного компонента
<хост>:<порт>/v1/monitoring?name=<имя_компонента>&last
# Последнее сообщение от каждого из компонентов
<хост>:<порт>/v1/monitoring?last