Данный документ содержит описание работы и информацию о развертке микросервиса предназначенного для сохранения логов работы всех микросервисов.
Название: logger
Структура сервиса:
Файл | Описание |
---|---|
logger.py |
Код микросервиса |
config.yml |
Конфигурационный файл со строкой подключения к RabbitMQ и MongoDB |
run.sh |
Файл для запуска сервиса из Docker контейнера |
requirements.txt |
Верхнеуровневые зависимости |
Dockerfile |
Описание сборки контейнера сервиса |
docker-compose.yml |
Изолированная развертка сервиса вместе с (RabbitMQ, MongoDB) |
README.md |
Описание микросервиса |
Для добавления логов в микрос нужно импортировать RpcProxy
, если его еще нет:
from nameko.rpc import RpcProxy
В поле класса микросервиса добавить:
logger_rpc = RpcProxy('logger')
После этого нужных местах вызывать соответствующий метод:
self.logger_rpc.log(<имя микросервиса>, <имя текущего метода>, <аргументы метода>, <статус>, <описание лога>)
- Имя микросервиса:
self.name
- Имя текущего метода:
self.<method>._name__
- Если метод не имеет аргументов -
None
, если аргумент один - сам аргумент, если аргументов несколько - список этих аргументов. Все аргументы должны быть json сериализуемы! - Статус:
Info
- информационное сообщение,Error
- ошибка. - Описание лога: строка с описанием произошедшего.
Для получения логов можно использовать один из двух методов:
- Полная версия логов с аргументами:
GET http://localhost:8013/full_logs HTTP/1.1
- Урезанная версия логов без аргументов:
GET http://localhost:8013/short_logs HTTP/1.1
Для локального запуска микросервиса требуется запустить контейнер с RabbitMQ и MongoDB.
docker-compose up -d
Затем из папки микросервиса вызвать
nameko run logger
Для проверки rpc
запустите в командной строке:
nameko shell
После чего откроется интерактивная Python среда. Обратитесь к сервису одной из команд, представленных выше в разделе rpc
Чтобы запустить микросервис в контейнере вызовите команду:
docker-compose up
если вы не хотите просмотривать логи, добавьте флаг
-d
в конце
Микросервис запустится вместе с RabbitMQ в контейнере.
Во всех случаях запуска вместе с MongoDB также разворачивается mongo-express - инструмент, с помощью которого можно просматривать и изменять содержимое подключенной базы (подключение в контейнерах сконфигурировано и производится автоматически). Сервис хостится локально на порту 8081.