当用户从互联网访问网站时,后端服务器收到流量后,负载均衡会自动将HTTP请求的日志记录到Cloud Logging中,用户可以在GCP控制台的日志查看器中查看记录。 要分析大量数据,需要将数据导出到BigQuery以进行进一步的数据探索。
日志查看器可以浏览所有HTTP请求记录
展开其中一条IP记录后,可以看到更详细的记录内容。
2.将日志导出到BigQuery
接下来,将 HTTP 请求从日志查看器导入 BigQuery。 通过创建接收器(sink),当负载均衡接收到新的访问时,接收器会将日志发送到指定的BigQuery数据集进行存储。
用户需要在BigQuery中预先构建数据集作为接收者的目的地。
当接收方收到数据时,BigQuery会生成一个数据表来存储日志记录,用户可以通过BigQuery的SQL语法分析数据表的内容。
然而,要做到这一点,我们没有办法直接分析HTTP请求数据的地理位置。 原因是我们的ip地址数据还没有转换,所以我们需要通过GCP外部工具来分析数据。
3. 分析IP地址
将IP地址转换为经纬度数据
首先我们先添加一个GCP虚拟机
在其中,可以安装用户喜欢的编程语言,然后可以从BigQuery中提取日志数据进行分析。 在执行分析程序之前,我们需要先安装BigQuery API Client Library,以便程序可以直接从BigQuery访问数据; 然后,我们可以使用第三方地理信息转换工具(如:ipstack API)来让程序对导入的ip数据进行转换。
在使用ipstack API之前,您需要在官网注册并获取API Access Key。 (您可以申请免费使用进行测试)
第二步安装ipstack库
(该库的使用方法请参考文档)
pip install ipstack
第三步,执行Python程序调用API,将IP地址发送给API进行分析,获取经纬度数据。
from ipstack import GeoLookup
geo_lookup = GeoLookup("你的 API KEY")
def parsing(ip_address):
location = geo_lookup.get_location(ip_address)
lat_long = str(location["latitude"])+","+ \
str(location["longitude"])
return lat_long
当程序将ip地址的数据发送给API时,API会将ip对应的地理信息返回给程序。
在示例程序中,API将返回json格式的数据。 为了检索经纬度,我在程序中指定API只会返回整理好的经纬度数据。
lat_long = str(location["latitude"])+","+ \ str(location["longitude"])
return lat_long
获取经纬度数据的目的是为了在地理图表中进行定位分析。 所以需要通过调用API进行转换。
转换后的经纬度数据必须合并在一个字段中,并且必须按照先纬后经的顺序排列(示例程序中已经完成合并),因为地理信息字段的格式必须符合数据工作室经度和纬度数据格式。 格式要求。
最后,以编程方式将数据从虚拟机传递回 BigQuery(也使用 BigQuery 的客户端库返回)会生成一个包含纬度和经度数据的新表。
4. 生成地理图表
如果我们想要将BigQuery的地理数据可视化,我们可以使用Google的可视化报告生成工具Data Studio来完成。 因为我们已经有了转换后的经纬度数据,只要将数据设置为Data Studio可以识别的字段类型和统计条件,我们就可以在Geo Chart上看到访客的地理分布情况。
将数据导出到 Data Studio
在BigQuery存储地理信息的数据表中,点击导出,直接进入数据洞察界面。
进入Data Studio界面,开始设置我们的地理图表功能。
选择图表类型
从图表中选择气泡图:气泡图可以利用地图中圆圈的大小和数量来呈现地理位置的分布。
设置维度和指标
a.Dimension设置为经纬度的字段名
将经纬度组合字段设置为“维度”,并将该字段的属性更改为“地理 > 纬度,经度”,以便 Data Studio 能够识别。
b. 指标设置为记录计数
Data Studio会利用经纬度地理信息的数量来确定地图中圆圈的大小
完成以上设置后,就可以在Data Studio上生成第一个HTTP Request地理分布图了!
以上就是使用BigQuery结合Data Studio分析经纬度数据的介绍。 如有疑问,请在文章底部留言,共同讨论。
官方网站: