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.12.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.12-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: rabbit_logger-0.1.12.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.12.tar.gz
Algorithm Hash digest
SHA256 948ba45287d670bc6430679211016194e6b3ca18badfb1a0753aed7ec5889914
MD5 4e0e78d697b927a04b55644750fea9ec
BLAKE2b-256 cf727547dfb939e56f9d3d290b02b3b5f6e068c8ae09b85fb8adadedc0eadfb5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rabbit_logger-0.1.12-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.12-py3-none-any.whl
Algorithm Hash digest
SHA256 d55abf92d2ff01f75ed67702a822dec7ed688cbbb1b194bacad3966783f0ac55
MD5 d47e751ee6a149e631edb470db224ec5
BLAKE2b-256 d84832cf47098adc347f9173a1080c1316ada77cd1cfe16e12e72c5ad6dfe06c

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