Skip to main content

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.async_handler.AsyncLoggerHandler",  # Для асинхронного логгера или 'apmlogger.logger.sync_handler.SyncLoggerHandler' для синхронного
            "rabbit_host": "localhost",
            "rabbit_port": 5672,
            "rabbit_user": "user",
            "rabbit_password": "password",
            "server_name": "my_server",  # Название вашего сервера
        },
        "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.sync_apm import SyncAPMHandler

# Создаем обработчик APM
APMHandler = SyncAPMHandler(
    rabbit_host="localhost",
    rabbit_port=5672,
    rabbit_user="user",
    rabbit_password="password",
    server_name="my_server"
)

@APMHandler.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())

Обязательные параметры

  1. RabbitMQ параметры:

    • rabbit_host — Адрес сервера RabbitMQ.
    • rabbit_port — Порт сервера RabbitMQ.
    • rabbit_user — Логин для подключения.
    • rabbit_password — Пароль для подключения.
  2. Серверное имя (server_name):

    • Полезно для идентификации, с какого сервера были отправлены метрики или логи.

Лицензия

Этот проект лицензирован под MIT License.


Обратная связь

Если у вас есть вопросы, предложения или вы нашли ошибку, создайте issue в GitHub репозитории.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rabbit_logger-0.1.11.tar.gz (9.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rabbit_logger-0.1.11-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file rabbit_logger-0.1.11.tar.gz.

File metadata

  • Download URL: rabbit_logger-0.1.11.tar.gz
  • Upload date:
  • Size: 9.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.3

File hashes

Hashes for rabbit_logger-0.1.11.tar.gz
Algorithm Hash digest
SHA256 cc7ac72a50993e28806cf67f581adcd0fd3829d0ac8fc4d8dd75360643581607
MD5 2094be093a999b6a4cbb97fc7aa708e8
BLAKE2b-256 35c79a7d156ff3129c062e50496407bc85001d3afc665d56efb17c1ba0266a15

See more details on using hashes here.

File details

Details for the file rabbit_logger-0.1.11-py3-none-any.whl.

File metadata

  • Download URL: rabbit_logger-0.1.11-py3-none-any.whl
  • Upload date:
  • Size: 10.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.3

File hashes

Hashes for rabbit_logger-0.1.11-py3-none-any.whl
Algorithm Hash digest
SHA256 21608fd13a738513d42a107457afd18c2a6abdb0b002e136d33f3def66b960d8
MD5 219a9aaccdab8efb8e08c34e1d696714
BLAKE2b-256 cf560fe06c4a6cc74808c7a00d9fa55283f4c12dbdf2dbe448bdda621f7ae296

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page