Не удалось получить журналы CloudWatch без указанного LogStreamName - PullRequest
0 голосов
/ 01 ноября 2019

Я работаю с Python 3.6 и boto3 == 1.7.84. Я пытался получить журналы CloudWatch с помощью boto3 от AWS, но обнаружил, что количество возвращаемых событий намного меньше, чем то, что я вижу на странице аналитики CloudWatch. Я предполагал, что

import boto3
client = boto3.client('logs')
response = client.filter_log_events(
    logGroupName='/aws/batch/job',
    startTime=1572520000000,
    endTime=1572570000000,
    filterPattern='exceptions',
)

вернет все события, включая «исключения», независимо от имени потока задания. Однако ничего не вернулось. Но если бы я указал logStreamNames, как это

import boto3
client = boto3.client('logs')
response = client.filter_log_events(
    logGroupName='/aws/batch/job',
    logStreamNames=['training/default/[ASpecificID]'],
    startTime=1572520000000,
    endTime=1572570000000,
    filterPattern='exceptions',
)

, он вернул журналы, содержащие строку «исключения», с logStreamNames=['training/default/[ASpecificID]'].

Другая странная вещь состояла в том, что когда я сделал

import boto3
client = boto3.client('logs')
response = client.filter_log_events(
    logGroupName='/aws/batch/job',
    logStreamNamePrefix='training/default',
    startTime=1572520000000,
    endTime=1572570000000,
    filterPattern='exceptions',
)

журналы, содержащие строку «исключения» с logStreamNames=['training/default/[ASpecificID]'], не были возвращены. Некоторые журналы с logStreamNamePrefix='training/' действительно появлялись, но не все. Количество возвращенных событий намного меньше, чем я получил, выполнив

fields @timestamp, @message, @logStream
| filter @logStream like /training\/default/
| filter @message like /exceptions/
| limit 10000

с CloudWatch регистрирует синтаксис запроса статистики на странице аналитики CloudWatch. Я сделал что-то не так с boto3, что привело к этому несоответствию?

1 Ответ

0 голосов
/ 01 ноября 2019

Из документации boto3 ожидается.

logStreamNames (list) - Фильтрует результаты только в журналы из потоков журналов вэтот список.

Если указать значение как для logStreamNamePrefix, так и для logStreamNames, действие вернет ошибку InvalidParameterException.

Поле logStreamNames не является обязательным, но будет возвращать результат этого значенияи он принимает только значение списка.

Для вашего странного поведения logStreamNamePrefix, наконец-то потребуется /, но я не уверен.

logStreamNamePrefix (строка) - фильтрует результаты, чтобы включить в них только события из потоков журналов, имена которых начинаются с этого префикса.

Если вы указали значение для logStreamNamePrefix и logStreamNames, но значение для logStreamNamePrefix имеет значениене совпадает ни с одним из имен потоков журнала, указанных в logStreamNames, действие возвращает ошибку InvalidParameterException.

...