添加CloudFront标准日志Grok模式失败,报编译错误
问题:CloudFront日志Grok模式编译失败
原始Grok模式
%{DATE:date}\s%{TIME:time}\s%{DATA:x_edge_location}\s%{INT:sc_bytes:int}\s%{IP:client_ip}\s%{WORD:cs_method}\s%{HOSTNAME:cs_host}\s%{NOTSPACE:cs_uri_stem}\s%{INT:sc_status:int}\s%{DATA:cs_referer}\s%{DATA:cs_user_agent}\s%{DATA:cs_uri_query}\s%{DATA:cs_cookie}\s%{DATA:x_edge_result_type}\s%{DATA:x_edge_request_id}\s%{DATA:x_host_header}\s%{INT:cs_protocol:int}\s%{INT:cs_bytes:int}\s%{NUMBER:time_taken:float}\s%{DATA:x_forwarded_for}\s%{DATA:ssl_protocol}\s%{DATA:ssl_cipher}\s%{INT:x_edge_response_result_type:int}\s%{DATA:cs_protocol_version}\s%{DATA:fle_status}\s%{DATA:fle_encrypted_fields}\s%{INT:c_port:int}\s%{DATA:time_to_first_byte}\s%{DATA:x_edge_detailed_result_type}\s%{DATA:sc_content_type}\s%{DATA:sc_content_len}\s%{DATA:sc_range_start}\s%{DATA:sc_range_end}
报错信息
{"message":"Grok pattern cannot be compiled.","code":"InvalidInputException","time":"2023-05-04T14:58:30.719Z","requestId":"884ba448-8975-4cab-9ec7-992cbb13f5e8","statusCode":400,"retryable":false}
问题排查与修复
编译失败的核心原因是字段类型与Grok模式不匹配,以下是修正后的Grok模式:
%{DATE:date}\s%{TIME:time}\s%{DATA:x_edge_location}\s%{INT:sc_bytes:int}\s%{IP:client_ip}\s%{WORD:cs_method}\s%{HOSTNAME:cs_host}\s%{NOTSPACE:cs_uri_stem}\s%{INT:sc_status:int}\s%{DATA:cs_referer}\s%{DATA:cs_user_agent}\s%{DATA:cs_uri_query}\s%{DATA:cs_cookie}\s%{DATA:x_edge_result_type}\s%{DATA:x_edge_request_id}\s%{DATA:x_host_header}\s%{DATA:cs_protocol}\s%{INT:cs_bytes:int}\s%{NUMBER:time_taken:float}\s%{DATA:x_forwarded_for}\s%{DATA:ssl_protocol}\s%{DATA:ssl_cipher}\s%{DATA:x_edge_response_result_type}\s%{DATA:cs_protocol_version}\s%{DATA:fle_status}\s%{DATA:fle_encrypted_fields}\s%{INT:c_port:int}\s%{NUMBER:time_to_first_byte:float}\s%{DATA:x_edge_detailed_result_type}\s%{DATA:sc_content_type}\s%{INT:sc_content_len:int}\s%{INT:sc_range_start:int}\s%{INT:sc_range_end:int}
修改说明
cs_protocol:原模式用INT类型,但该字段实际是HTTP/1.1、HTTP/2这类字符串,改为DATA类型x_edge_response_result_type:原模式用INT类型,但该字段是Hit、Miss、Error等字符串值,改为DATA类型time_to_first_byte:原模式用DATA,该字段实际是数值(如0.012),改为NUMBER:float更精准sc_content_len、sc_range_start、sc_range_end:原模式用DATA,这些字段是整数型数值,改为INT:int类型以匹配实际值类型
内容的提问来源于stack exchange,提问作者JoaMika
相关产品推荐
相关产品推荐

