AWS Cloudwatch Log Insights - Фильтруйте записи по фильтрам JSON в событиях журнала JSON - PullRequest
0 голосов
/ 26 мая 2019

У меня есть группа журналов, которая накапливает журналы JSON для каждого из своих потоков. Эти журналы JSON выглядят следующим образом.

enter image description here

Я хочу отфильтровать логи, где "user" = "keet". Документация AWS объясняет Использование метрических фильтров для извлечения значений из событий журнала JSON . Я попробовал это с помощью AWS SDK, и он отлично работал для следующего кода в NodeJS.

let params = {
    logGroupName: 'log-goupe-name', /* required */
    filterPattern: '{$.user=keet}',

};
cloudwatchlogs.filterLogEvents(params, function(err, data) {
    if (err) console.log(err, err.stack); // an error occurred
    else     console.log(data);           // successful response
});

Вопрос

Точно так же я хочу знать, возможно ли то же самое на AWS Cloudwatch Insights Dashboard, на консоли AWS? Я знаю, что сопоставление с образцом строки возможно. Но я хочу знать, возможно ли сопоставление полей JSON на информационной панели Insights, используя @filter. Запрос по умолчанию выглядит следующим образом.

fields @timestamp, @message
| sort @timestamp desc
| limit 20

Я пытался следовать этому ответу на Stackoverflow , но это все равно не помогло. Это только для разбора данных. Мое требование - фильтровать журналы по значению в журналах JSON.

Заранее спасибо.

1 Ответ

1 голос
/ 27 мая 2019

Вы можете проанализировать пользователя из json следующим образом:

parse @message '"user":"*"' as user

В зависимости от того, что вы хотите видеть на панели инструментов, вы можете отфильтровать только определенных пользователей с помощью:

fields @message 
| parse @message '"user":"*"' as user
| filter user == "keet"

Результат будет:

#    @message                            user
----------------------------------------------                            
1    info - {"user":"keet","age":30 }    keet
2    info - {"user":"keet","age":30 }    keet  
3    info - {"user":"keet","age":30 }    keet
4    info - {"user":"keet","age":30 }    keet

Также попробуйте просто:

filter user == 'keet'

возможно, Insights автоматически обнаружит поля. Вы можете увидеть список автоматически обнаруженных полей справа, в разделе Обнаруженные поля .

...