RUM最佳实践:内网IP地址映射地图地理位置场景
场景概述
随着公司规模的扩大和业务的扩展,越来越多的企业更关注用户体验情况,因此,为了衡量和提升用户体验,我们通常采用观测云的用户体验监控的观测手段,简称 RUM 。对于中大型的集团公司,业务分布在全国各地,乃至世界各地,有些业务是对外开放的,公网地址是可以直接映射成地理位置的,但是也有很多业务是供内部员工的生产运作使用的,在这种场景下,为了更好的衡量和查看内部不同基地的用户访问体验,我们需要对内网用户体验的监控数据进行处理,使内网地址映射到地图上的地理位置,从而在地图上展示像公网一样的地理位置,更好的查看各个站点基地用户访问的性能体验情况。
前提条件
- 使用观测云产品的 RUM 监控,即用户体验监控。
- 对内网地址进行划分,内网网段分别代表哪个地理位置
场景实现
- 实现方式:使用观测云用户访问 pipeline 处理
- 实现原理:对用户访问的内网 ip 地址进行 pipeline 处理,定义好内网 cidr 网段代表某个地理位置,为了能与地图匹配上,需要填正确的 city,country,province 地址名称或代号,经过 pipeline 处理后,即可在地图上进行展示不同基地的用户访问体验情况了。
操作步骤
1、编写 pipeline 处理脚本
#内网代表地理位置定义,如下只定义了两个网段(示例为随便写的公网网段),请自行添加更多内网网段
idr_data = {
"178.237.236.0/24": {"city": "Shenzhen", "province": "Guangdong", "country": "CN"},
"202.168.78.0/24": {"city": "Shanghai", "province": "Shanghai", "country": "CN"},
}#将用户体验的IP字段匹配到对应的地理位置
for x in cidr_data {if cidr(ip, x) {location=cidr_data[x]add_key(city, location["city"])add_key(province, location["province"])add_key(country,location["country"])}
}
2、设置用户访问的 pipeline 来处理用户访问的视图,资源,操作,会话等数据,如下图,设置好 pipeline 后通过一键获取样本查看岩本数据处理情况,看到内网 ip 处理后,出现对应的 city,province,country 字段值即为成功。
3、地图上用户访问性能展示
IP 工具使用
通常,在我们定义内网 IP 网段代表某个地理位置时,不知道地理位置的 city,province,country 字段值具体名称或者代号是什么,此时可以使用 DataKit IP 工具,DataKit 是观测云统一的数据采集探针,同时在安装了 DataKit 后,可通过 datakit install --ipdb iploc 命令安装/更新 IP 地理信息库,如果查看某个 IP 的地理位置信息,可使用 datakit tool --ipinfo 1.2.3.4 ,如下输出:
datakit tool --ipinfo 1.2.3.4ip: 1.2.3.4city: Brisbaneprovince: Queenslandcountry: AUisp: unknown
举例,若我想知道中国 广东省深圳市的 country,province,city 字段值或代号是什么,即可随便找一深圳的公网 IP 来输出其名称或代号,如随便找一深圳的公网 IP:183.238.104.98 ,通过 datakit tool --ipinfo 183.238.104.98 输出如下图,即可知道 country,province,city 字段值在内网段定义地理位置时的名称或代号书写。