Skip to main content

APM and logging library with UDP 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

udp_mongo_logger-1.0.2.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

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

udp_mongo_logger-1.0.2-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file udp_mongo_logger-1.0.2.tar.gz.

File metadata

  • Download URL: udp_mongo_logger-1.0.2.tar.gz
  • Upload date:
  • Size: 8.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for udp_mongo_logger-1.0.2.tar.gz
Algorithm Hash digest
SHA256 794f18fcf9cefb5dc87d590d9837deccb5a1ba2c49b19abf005abb21e21d5a73
MD5 944e05e4c0ae4dafa99bf405a6bcf9f0
BLAKE2b-256 b13e61fdad7e52af9f6e09a370508e4a6253f9792af98f859dba81e7b845f189

See more details on using hashes here.

File details

Details for the file udp_mongo_logger-1.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for udp_mongo_logger-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0e5e62b072b476462dac9611b349b8b8e567e8e9bfbcd7be4112300398b10b8e
MD5 cb2a8e0c9140c3148d3c21490ef6e9c6
BLAKE2b-256 74dd66f2380e5477434f3d8d429f0762a51190b90353515a5549dcdbf4fcc3e3

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