Журналы Splunk AWS ALB не обрабатываются должным образом

Я пытаюсь загрузить свои журналы AWS ALB в Splunk. В конце концов, я мог искать свои журналы ALB в Splunk. Но все равно события не разбираются должным образом. У кого-нибудь была аналогичная проблема или какие-либо предложения?

Вот мой prop.conf

[aws:alb:accesslogs]
SHOULD_LINEMERGE=false
FIELD_DELIMITER = whitespace
pulldown_type=true
FIELD_NAMES=type,timestamp,elb,client_ip,client_port,target,request_processing_time,target_processing_time,response_processing_time,elb_status_code,target_status_code,received_bytes,sent_bytes,request,user_agent,ssl_cipher,ssl_protocol,target_group_arn,trace_id
EXTRACT-elb = ^\s*(?P<type>[^\s]+)\s+(?P<timestamp>[^\s]+)\s+(?P<elb>[^\s]+)\s+(?P<client_ip>[0-9.]+):(?P<client_port>\d+)\s+(?P<target>[^\s]+)\s+(?P<request_processing_time>[^\s]+)\s+(?P<target_processing_time>[^\s]+)\s+(?P<response_processing_time>[^\s]+)\s+(?P<elb_status_code>[\d-]+)\s+(?P<target_status_code>[\d-]+)\s+(?P<received_bytes>\d+)\s+(?P<sent_bytes>\d+)\s+"(?P<request>.+)"\s+"(?P<user_agent>.+)"\s+(?P<ssl_cipher>[-\w]+)\s*(?P<ssl_protocol>[-\w\.]+)\s+(?P<target_group_arn>[^\s]+)\s+(?P<trace_id>[^\s]+)
EVAL-rtt = request_processing_time + target_processing_time + response_processing_time

Примеры данных

https 2020-08-20T12:40:00.274478Z app/my-aws-alb/e7538073dd1a6fd8 162.158.26.188:21098 172.0.51.37:80 0.000 0.004 0.000 405 405 974 424 "POST https://my-aws-alb-domain:443/api/ps/fpx/callback HTTP/1.1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.2840.91 Safari/537.36" ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 arn:aws:elasticloadbalancing:ap-southeast-1:111111111111:targetgroup/my-aws-target-group/41dbd234b301e3d84 "Root=1-5f3e6f20-3fdasdsfffdsf" "api.mydomain.com" "arn:aws:acm:ap-southeast-1:11111111111:certificate/be4344424-a40f-416e-8434c-88a8a3b072f5" 0 2020-08-20T12:40:00.270000Z "forward" "-" "-" "172.0.51.37:80" "405" "-" "-"


person hlesnt395    schedule 20.08.2020    source источник
comment
Пожалуйста, поделитесь некоторыми примерами данных, чтобы мы могли сравнить их с вашими настройками props.conf. Кроме того, какие события не извлекаются должным образом?   -  person RichG    schedule 20.08.2020
comment
Спасибо за ответ @RichG. Здесь я приложил образцы логов в исходном вопросе.   -  person hlesnt395    schedule 20.08.2020
comment
В основном ничего не разбирается должным образом. Он просто показывает те же журналы при поиске. Извлекаются только поля host, source, sourcetype и splunk_server.   -  person hlesnt395    schedule 20.08.2020
comment
Это выражение EXTRACT работает в regex101.com, поэтому я удивлен, что оно не работает в Splunk. Вы установили файл props.conf в поисковую головку и перезапустили Splunk?   -  person RichG    schedule 20.08.2020
comment
Должен ли я сделать это и в кластере заголовков поиска? Обычно я делаю это только на узлах HF и IDX (через главный индексатор).   -  person hlesnt395    schedule 20.08.2020
comment
Поскольку EXTRACT - это настройка времени поиска, файл props.conf должен быть установлен на ваших SH. Если вам нужно извлечение во время индексации, используйте TRANSFORMS на HF и индексаторах.   -  person RichG    schedule 20.08.2020
comment
Большое спасибо за совет. Не могли бы вы помочь мне, как сделать TRANSFORMS именно для этого? Я новичок в Splunk и ничего не имею об этом.   -  person hlesnt395    schedule 20.08.2020
comment
Я поступил точно так же, как вы упомянули в Ответе. Но все равно не повезло. Позвольте мне проверить, не совершал ли я других ошибок, и буду держать вас в курсе. Между тем, пожалуйста, посоветуйте, если вы видите какие-либо изменения, которые необходимо внести. Спасибо за поддержку.   -  person hlesnt395    schedule 20.08.2020
comment
Привет @RichG, Хотели бы уточнить у вас, есть ли еще какой-нибудь совет, который вы могли бы дать? Тем не менее моя проблема не была решена: (   -  person hlesnt395    schedule 21.08.2020
comment
Позвольте нам продолжить это обсуждение в чате.   -  person RichG    schedule 21.08.2020


Ответы (1)


Использовать преобразования довольно просто. Начните с строфы в transforms.conf.

[elb]
REGEX = ^\s*(?P<type>[^\s]+)\s+(?P<timestamp>[^\s]+)\s+(?P<elb>[^\s]+)\s+(?P<client_ip>[0-9.]+):(?P<client_port>\d+)\s+(?P<target>[^\s]+)\s+(?P<request_processing_time>[^\s]+)\s+(?P<target_processing_time>[^\s]+)\s+(?P<response_processing_time>[^\s]+)\s+(?P<elb_status_code>[\d-]+)\s+(?P<target_status_code>[\d-]+)\s+(?P<received_bytes>\d+)\s+(?P<sent_bytes>\d+)\s+"(?P<request>.+)"\s+"(?P<user_agent>.+)"\s+(?P<ssl_cipher>[-\w]+)\s*(?P<ssl_protocol>[-\w\.]+)\s+(?P<target_group_arn>[^\s]+)\s+(?P<trace_id>[^\s]+)

Затем обратитесь к преобразованию в props.conf

[aws:alb:accesslogs]
TIME_PREFIX = https\s
TIME_FORMAT = %Y-%m-%dT%H:%M:%S.%6N%Z
MAX_TIMESTAMP_LOOKAHEAD = 32
SHOULD_LINEMERGE=false
NO_BINARY_CHECK=true
TRANSFORMS-elb = elb
EVAL-rtt = request_processing_time + target_processing_time + response_processing_time
person RichG    schedule 20.08.2020