
Research
/Security News
Critical Vulnerability in NestJS Devtools: Localhost RCE via Sandbox Escape
A flawed sandbox in @nestjs/devtools-integration lets attackers run code on your machine via CSRF, leading to full Remote Code Execution (RCE).
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("Ошибка!")
Для синхронного мониторинга создайте экземпляр 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)
Для асинхронного мониторинга используйте 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 репозитории.
FAQs
APM and logging library with UDP integration
We found that udp-mongo-logger demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
/Security News
A flawed sandbox in @nestjs/devtools-integration lets attackers run code on your machine via CSRF, leading to full Remote Code Execution (RCE).
Product
Customize license detection with Socket’s new license overlays: gain control, reduce noise, and handle edge cases with precision.
Product
Socket now supports Rust and Cargo, offering package search for all users and experimental SBOM generation for enterprise projects.