Регистратор, подключенный к CloudWatch, не работает при попытке отправить журналы с помощью localstack внутри модульногоPython

Программы на Python
Ответить
Anonymous
 Регистратор, подключенный к CloudWatch, не работает при попытке отправить журналы с помощью localstack внутри модульного

Сообщение Anonymous »

Я пытался отправить журналы в локальный контейнер Docker внутри Dagster Unit/Integration Test со следующими конфигурациями:
Для пользовательского средства ведения журнала:
@logger(
{
"name": Field(str, is_required=False, default_value="dagster"),
"log_level": Field(str, is_required=False, default_value="DEBUG"),
"log_group_name": Field(str, description="The name of the log group"),
"log_stream_name": Field(
str, description="The prefix of the log stream name"
),
},
description="A CloudWatch console logger.",
)
def cloudwatch_logger(init_context: "InitLoggerContext"):
"""Logger that emits dagster logs to AWS CloudWatch.

Parameters
----------
init_context : InitLoggerContext

Returns
-------
logging.Logger
"""
level = coerce_valid_log_level(init_context.logger_config["log_level"])
name = init_context.logger_config["name"]
logger_class = logging.getLoggerClass()
logger = logger_class(name, level=level)
handler = CloudwatchLogsHandler(
init_context.logger_config["log_group_name"],
init_context.logger_config["log_stream_name"],
level=level,
)
handler.setFormatter(JsonLogFormatter())
logger.addHandler(handler)
return logger

Файл conftest.py:
import pytest
import subprocess
import os
import boto3
import logging
from enum import IntEnum

@pytest.fixture(scope="session", autouse=True)
def initialize_localstack():
subprocess.run(
[
"docker-compose",
"up",
"localstack-service",
"-d",
"--build"
]
)

yield

subprocess.run(
[
"docker",
"rm",
"-f",
"localstack-service"
]
)

@pytest.fixture(scope="session", autouse=False)
def cloud_client(initialize_localstack):
# TODO: Obtain the environment variables using the 'settings' module.
cloudwatch_client = boto3.client(
"logs",
endpoint_url=os.environ.get("AWS__ENDPOINT_URL"),
region_name=os.environ.get("AWS__REGION_NAME"),
)

LOG_GROUP = "dagster-test-log-group"
LOG_STREAM = "dagster-test-log-stream"

try:
cloudwatch_client.create_log_group(logGroupName=LOG_GROUP)
cloudwatch_client.create_log_stream(
logGroupName=LOG_GROUP,
logStreamName=LOG_STREAM
)
except cloudwatch_client.exceptions.ResourceAlreadyExistsException:
pass

yield cloudwatch_client

cloudwatch_client.delete_log_stream(
logGroupName=LOG_GROUP,
logStreamName=LOG_STREAM
)

cloudwatch_client.delete_log_group(
logGroupName=LOG_GROUP
)


Файл tests.py:
def test_dummy_op(cloud_client):
context = build_init_logger_context(logger_config={
"name": "dagster-logger",
"log_level": "DEBUG",
"log_group_name": "dagster-test-log-group",
"log_stream_name": "dagster-test-log-stream",
}
)
test_logger = cloudwatch_logger(context)
test_logger.info("Hello from inside the test!")

Странная часть этого процесса заключается в том, что когда я запускаю Сервер Dagster, запускаю и op при такой конфигурации регистратора журналы успешно отправляются в CloudWatch, но когда я пытаюсь протестировать эти журналы в рамках предыдущего модульного теста, команда:
awslocal logs filter-log-events --log-group-name dagster-test-log-group

Возвращает ноль событий:
{
"events": [],
"searchedLogStreams": [
{
"logStreamName": "dagster-test-log-stream",
"searchedCompletely": true
},
{
"logStreamName": "dagster-test-log-stream/323032352d30312d30382d3136",
"searchedCompletely": true
}
]
}```

What's happening in here?


Подробнее здесь: https://stackoverflow.com/questions/793 ... sing-local
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»