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

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

  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-1.0.0.tar.gz (9.6 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-1.0.0-py3-none-any.whl (13.2 kB view details)

Uploaded Python 3

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

Hashes for rabbit_logger-1.0.0.tar.gz
Algorithm Hash digest
SHA256 5e6af4256dd58723b9879b35918f9b4ec3349f346c287717d7897f2a8751ab97
MD5 42ffb0e6892761f024a444f1ad9532c1
BLAKE2b-256 96a03a5589bf0cb7f42b9fd131a7f729df42da166b3039edb372c9bee1a88a66

See more details on using hashes here.

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

Hashes for rabbit_logger-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 89a5a50ca4d8671f6b0b06f8ccd1083086bb0d58a6647925b7c26d84663b0024
MD5 44dfc3de0b9c66abdc70dc7a2d094d29
BLAKE2b-256 aa75dbb652480a621922fb162a18877688a4e24296d7ccd7bdf50fed77f465de

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