Как анализировать смешанный текст и записи журнала JSON в AWS CloudWatch для фильтра метрик журнала

Я пытаюсь проанализировать записи журнала, которые представляют собой смесь текста и JSON. Первая строка - это текстовое представление, а следующие строки - это полезная нагрузка события в формате JSON. Один из возможных примеров:

2016-07-24T21:08:07.888Z [INFO] Command completed lessonrecords-create
{
  "key": "lessonrecords-create",
  "correlationId": "c1c07081-3f67-4ab3-a5e2-1b3a16c87961",
  "result": {
    "id": "9457ce88-4e6f-4084-bbea-14fff78ce5b6",
    "status": "NA",
    "private": false,
    "note": "Test note",
    "time": "2016-02-01T01:24:00.000Z",
    "updatedAt": "2016-07-24T21:08:07.879Z",
    "createdAt": "2016-07-24T21:08:07.879Z",
    "authorId": null,
    "lessonId": null,
    "groupId": null
  }
}

Для этих записей я пытаюсь определить фильтр метрик журнала для а) сопоставления записей б) выбора данных или измерений, если это возможно.

Согласно документации AWS шаблон JSON должен выглядеть так:

{ $.key = "lessonrecords-create" }

однако он ни к чему не подходит. Я предполагаю, что из-за смешивания текста и JSON в одной записи журнала.

Итак, вопросы: 1. Можно ли определить шаблон, который будет соответствовать этому формату журнала? 2. Можно ли извлечь размеры, значения из такого формата журнала? 3. Помогите с выкройкой сделать это.


person Mike Chaliy    schedule 24.07.2016    source источник
comment
Удалось ли вам создать фильтр показателей?   -  person ln9187    schedule 16.07.2018


Ответы (4)


Если вы настроите метрический фильтр так, как вы определили, тест не будет регистрировать никаких совпадений (у меня также была эта проблема), однако, когда вы развертываете метрический фильтр, он все равно будет регистрировать совпадения (по крайней мере, мой). Просто имейте в виду, что нет способа (насколько мне известно) запустить этот фильтр показателей НАЗАД (т.е. он будет захватывать данные только с момента их создания). [Если вы пытаетесь получить статистику по прошлым данным, лучше использовать запросы анализа журнала]

В настоящее время я экспериментирую с различными операторами синтаксического анализа, чтобы попытаться извлечь данные (это также смесь JSON и текста), этот поток МОЖЕТ помочь вам (это не для меня) Amazon Cloudwatch Logs Insights с полями JSON.

ОБНОВЛЕНИЕ! Я нашел способ разобрать текст, но он немного неуклюжий. Если вы экспортируете журналы cloudwatch с помощью функции lamda в SumoLogic, их инструмент поиска позволяет НАМНОГО лучше манипулировать журналами и позволяет анализировать поля JSON (если вы обрабатываете всю запись как текст). SumoLogic также очень полезен, потому что вы можете просто извлечь результаты поиска в виде CSV. Для своих целей я анализирую все сообщение журнала в SumoLogic, извлекаю все журналы в виде CSV, а затем я использовал регулярное выражение в Python для фильтрации и извлечения нужных мне значений.

person David A    schedule 04.02.2019

Вы можете использовать CloudWatch Events для этой цели (также известные как фильтры подписки), что вам нужно будет сделать, это определить правило облачного наблюдения, которое использует выражение выражения для соответствия вашим журналам. Здесь я позволю вам прочитать все:

https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SubscriptionFilters.html

https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/Create-CloudWatch-Events-Scheduled-Rule.html

:)

person Aye_baybae    schedule 05.08.2020

Разделите сообщение на 3 поля, и третье поле будет действительным json. Я думаю в твоем случае это было бы

fields @timestamp, @message 
| parse @message '[] * {"*"}' as field1, field2, field3
| limit 50

field3 - это действительный файл json. [ИНФОРМАЦИЯ} будет первым полем.

person vsingh    schedule 06.04.2021

вы можете использовать fluentd agent для отправки журналов в Cloudwatch. Создайте собственный шаблон Grok на основе вашего метрического фильтра.

Шаги:

  • Установите fluentd agent на свой сервер
  • Установите плагин fluent-plugin-cloudwatch-logs и плагин fluent-plugin-grok-parser
  • напишите свой собственный шаблон Grok на основе вашего формата журнала

    обратитесь к этому блог для получения дополнительной информации

person Suganya G    schedule 11.02.2020