APM and logging library with RabbitMQ integration
Project description
Rabbit-logger
rabbit-logger — это библиотека для интеграции APM (Application Performance Monitoring) и логирования с RabbitMQ. Она предоставляет интерфейс для отслеживания метрик функций и удобное логирование через синхронные и асинхронные обработчики. Логи и метрики записываются в RabbitMq и в дальнейшем вы можете развернуть у себя образ из Dockerhub [клик] (тут будет ссылка), где данные логи будут записываться в БД clickhouse, и с помощью интерфейса Metabase вы сможете просматривать логи и информацию о своих функциях из своих сервисов.
Установка
Установите библиотеку с помощью pip:
pip install rabbit-logger
Настройка логирования
Добавьте обработчики в конфигурацию LOGGING. Вы можете выбрать синхронный или асинхронный обработчик.
Пример настройки:
from logging.config import dictConfig
import logging
LOGGING = {
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"verbose": {"format": "%(levelname)s %(asctime)s %(module)s %(message)s"},
"simple": {"format": "%(levelname)s %(message)s"},
},
"handlers": {
"rabbit-logger": {
"level": "INFO",
"class": "rabbit_logger.logger.udp_handler.UDPSyncLoggerHandler",
"udp_host": "0.0.0.0",
"udp_port": 9999,
"server_name": "test", # Название вашего сервера
},
"console": {
"level": "DEBUG", # Уровень логов для консоли
"class": "logging.StreamHandler",
"formatter": "simple", # Форматирование логов в консоли
},
},
"loggers": {
"my_app": {
"handlers": ["rabbit-logger", "console"], # Используем rabbit-logger и консольный обработчики
"level": "INFO", # Уровень логов для логгера
"propagate": True,
},
},
}
# Применяем конфигурацию
dictConfig(LOGGING)
# Создаем логгер
logger = logging.getLogger("my_app")
logger.setLevel(logging.DEBUG)
# Пример использования
logger.info("Это информационное сообщение!")
logger.error("Ошибка!")
Использование APM
Синхронный APM
Для синхронного мониторинга создайте экземпляр SyncAPMHandler:
from rabbit_logger.apm.udp_apm import UdpAPMHandler
# Создаем обработчик APM
UDPHandler = UdpAPMHandler(
udp_host="localhost",
udp_port=9999,
server_name="test"
)
@UDPHandler.apm
def my_sync_function():
print("Выполнение функции...")
time.sleep(2)
return "Готово!"
result = my_sync_function()
print(result)
Асинхронный APM
Для асинхронного мониторинга используйте AsyncAPMHandler:
import asyncio
from rabbit_logger.apm.async_apm import AsyncAPMHandler
# Создаем обработчик APM
APMHandler = AsyncAPMHandler(
rabbit_host="localhost",
rabbit_port=5672,
rabbit_user="user",
rabbit_password="password",
server_name="my_server"
)
async def main():
await APMHandler.connect()
@APMHandler.apm
async def my_async_function():
print("Выполнение асинхронной функции...")
await asyncio.sleep(2)
return "Готово!"
result = await my_async_function()
print(result)
await APMHandler.close()
asyncio.run(main())
Обязательные параметры
-
RabbitMQ параметры:
rabbit_host— Адрес сервера RabbitMQ.rabbit_port— Порт сервера RabbitMQ.rabbit_user— Логин для подключения.rabbit_password— Пароль для подключения.
-
Серверное имя (
server_name):- Полезно для идентификации, с какого сервера были отправлены метрики или логи.
Лицензия
Этот проект лицензирован под MIT License.
Обратная связь
Если у вас есть вопросы, предложения или вы нашли ошибку, создайте issue в GitHub репозитории.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rabbit_logger-1.0.0.tar.gz.
File metadata
- Download URL: rabbit_logger-1.0.0.tar.gz
- Upload date:
- Size: 9.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5e6af4256dd58723b9879b35918f9b4ec3349f346c287717d7897f2a8751ab97
|
|
| MD5 |
42ffb0e6892761f024a444f1ad9532c1
|
|
| BLAKE2b-256 |
96a03a5589bf0cb7f42b9fd131a7f729df42da166b3039edb372c9bee1a88a66
|
File details
Details for the file rabbit_logger-1.0.0-py3-none-any.whl.
File metadata
- Download URL: rabbit_logger-1.0.0-py3-none-any.whl
- Upload date:
- Size: 13.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
89a5a50ca4d8671f6b0b06f8ccd1083086bb0d58a6647925b7c26d84663b0024
|
|
| MD5 |
44dfc3de0b9c66abdc70dc7a2d094d29
|
|
| BLAKE2b-256 |
aa75dbb652480a621922fb162a18877688a4e24296d7ccd7bdf50fed77f465de
|