Использование шаблона фильтра в журналах AWS-CLI

Я пытаюсь отфильтровать события журнала из журналов просмотра облака AWS с помощью awscli. Я использую следующий шаблон в веб-консоли cloudwatch.

[ip, user, username, timestamp, request, status_code != 2*, bytes]

Какой эквивалентный шаблон фильтра я должен использовать в awscli? Я пробовал aws logs filter-log-events --log-group-name *** --log-stream-name *** --filter-pattern "[ip, user, username, timestamp, request, status_code != 2*, bytes]", но ничего не отфильтровал.


person Kapil    schedule 01.06.2017    source источник


Ответы (2)


Я бы попробовал что-то вроде этого:

aws logs filter-log-events \
--start-time `date -j -f "%a %b %d %T %Z %Y" "Mon Apr 16 14:25:43 PDT 2018" "+%s"`000 \
--end-time `date -j -f "%a %b %d %T %Z %Y" "Mon Apr 16 14:45:43 PDT 2018" "+%s"`000 \
--log-group-name <log-group-name> \
--filter-pattern "[ip, user, username, timestamp, request, status_code != 2*, bytes]" \
--output text

Замените соответствующие значения.

person Karen    schedule 17.04.2018

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

# Purpose: Collect postfix mail relay CloudWatch Logs for the last day
# Arguments:
#  1 is the AWS region, defaults to $DATA_CENTER
#  2 is the AWS log-group-name to use
# Dependencies: aws cli
function getCloudWatchLogs {
  region=${1:-$DATA_CENTER}
  log-group-name=${2:-"mail_out/postfix"}
  aws logs filter-log-events --log-group-name ${log-group-name} \
    --start-time $(date --date "yesterday 00:00:00" +%s%N | cut -b1-13) \
    --end-time $(date --date "yesterday 23:59:59" +%s%N | cut -b1-13) \
    --filter-pattern='[month, day, time, instance, process="*]:", id="*:", recipient="to=<*>,", message!="*status=sent*"]' \
    --region ${region} --output text \
    | awk -F"\t" '{print $5}'|cut -d" " -f6- \
    > $mail_dir/postfixmaillog_${region}.out
}
person Josiah    schedule 14.03.2019
comment
Если кто-то сделает это лучше, опубликуйте свои изменения. Я уверен, что это возможно. - person Josiah; 14.03.2019