我有包含以下模式的nginx日志文件:
111.111.111.xxx - - [16 / Sep / 2017:00:00:00 +0000]“GET /some.php?action_name=&idsite=4430 HTTP / 1.1”200 290 .....
我需要将它导入BigQuery。或者首先我将日志转换为json格式,然后BigQuery可以轻松地摄取它。
任何方便的解决方案?
答案 0 :(得分:0)
用于解析日志:您可以使用logstash logstash grok过滤器解析日志。
Logstash输出插件:BigQuery插件可用于将日志发送到BigQuery。为了向BigQuery发送数据,数据应该是高度结构化的,因此,我建议解析并将其转换为键值对,然后使用BigQuery Filter发送给BigQuery。
答案 1 :(得分:0)
您可以将Nginx访问日志配置为使用json格式:
log_format json '{ '
'"time": "$time_local", '
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"request_url": "$request", '
'"request_time": "$request_time", '
'"response_status": "$status", '
'"response_size": "$body_bytes_sent", '
'"referrer": "$http_referer", '
'"agent": "$http_user_agent", '
'"forwarded_for": "$http_x_forwarded_for", '
'"host": "$host" '
'}';
access_log /var/log/nginx/access.log json;
您可以使用Fluentd对其进行解析并将其直接流式传输到BigQuery中。这是示例存储库:https://github.com/markhilton/docker-fluent-bigquery
另一种选择是将标准Nginx日志流式传输到BigQuery中,然后使用REGEXP_EXTRACT对其进行解析并提取特定的数据字段。
我使用GKE Nginx Ingress将日志流式传输到BigQuery,并作为数据源连接到Google Data Studio以呈现报告。在Data Studio中,我使用REGEXP_EXTRACT添加了自定义公式字段,以从Nginx日志有效负载访问特定指标。