全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 更多
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 智能硬件
日志服务

IP地理函数

更新时间:2018-03-08 17:16:43

IP 识别函数,可以识别一个IP是内网IP还是外网IP,也可以判断IP所属的国家、省份、城市。

函数名 含义 样例
ip_to_domain(ip) 判断IP所在的域,是内网还是外网。返回intranet或internet。 SELECT ip_do_domain(ip)
ip_to_country(ip) 判断IP所在的国家。 SELECT ip_to_country(ip)
ip_to_province(ip) 判断IP所在的省份,如果是外国,则返回国家名称。 SELECT ip_to_province(ip)
ip_to_city(ip) 判断IP所在的城市,如果是外国,则返回国家名称。 SELECT ip_to_city(ip)
ip_to_geo(ip) 判断IP所在的经纬度,返回的是高精度经纬度数据,范围结果格式为纬度,经度 SELECT ip_to_geo(ip)
ip_to_city_geo(ip) 判断IP所在的城市的经纬度,返回的是城市经纬度,每个城市只有一个经纬度,范围结果格式为纬度,经度 SELECT ip_to_city_geo(ip)
ip_to_provider(ip) 获取IP对应的网络运营商。 SELECT ip_to_provider(ip)
ip_to_country(ip,'en') 判断IP所在的国家,返回国际码。 SELECT ip_to_country(ip,'en')
ip_to_country_code(ip) 判断IP所在的国家,返回国际码。 SELECT ip_to_country_code(ip)
ip_to_province(ip,'en') 判断IP所在的省份,返回英文省名或者中文拼音。 SELECT ip_to_province(ip,'en')
ip_to_city(ip,'en') 判断IP所在的城市,返回英文城市名或者中文拼音。 SELECT ip_to_city(ip,'en')

使用样例

1. 在查询中过滤掉内网访问请求,看请求总数

  1. * | select count(1) where ip_to_domain(ip) !='intranet'

2. 查看top10的访问省份

  1. * | SELECT count(1) as pv, ip_to_province(ip) as province GROUP BY province order by pv desc limit 10

响应结果样例

  1. [
  2. {
  3. "__source__": "",
  4. "__time__": "1512353137",
  5. "province": "浙江省",
  6. "pv": "4045"
  7. }, {
  8. "__source__": "",
  9. "__time__": "1512353137",
  10. "province": "上海市",
  11. "pv": "3727"
  12. }, {
  13. "__source__": "",
  14. "__time__": "1512353137",
  15. "province": "北京市",
  16. "pv": "954"
  17. }, {
  18. "__source__": "",
  19. "__time__": "1512353137",
  20. "province": "内网IP",
  21. "pv": "698"
  22. }, {
  23. "__source__": "",
  24. "__time__": "1512353137",
  25. "province": "广东省",
  26. "pv": "472"
  27. }, {
  28. "__source__": "",
  29. "__time__": "1512353137",
  30. "province": "福建省",
  31. "pv": "71"
  32. }, {
  33. "__source__": "",
  34. "__time__": "1512353137",
  35. "province": "阿联酋",
  36. "pv": "52"
  37. }, {
  38. "__source__": "",
  39. "__time__": "1512353137",
  40. "province": "美国",
  41. "pv": "43"
  42. }, {
  43. "__source__": "",
  44. "__time__": "1512353137",
  45. "province": "德国",
  46. "pv": "26"
  47. }, {
  48. "__source__": "",
  49. "__time__": "1512353137",
  50. "province": "吉隆坡",
  51. "pv": "26"
  52. }
  53. ]

在上述结果中包含了内网IP,有时候,我们开发自己的测试是从内网发出的,为了过滤掉这部分访问请求,我们可以使用下边的分析语句:

3. 过滤掉内网请求,查看top 10的网络访问省份

  1. * | SELECT count(1) as pv, ip_to_province(ip) as province WHERE ip_to_domain(ip) != 'intranet' GROUP BY province ORDER BY pv desc limit 10

4. 查看不同国家的平均响应延时,最大响应延时,最大延时对应的request

  1. * | SELECT AVG(latency),MAX(latency),MAX_BY(requestId, latency) ,ip_to_country(ip) as country group by country limit 100

5. 查看不同网络运营商的平均延时

  1. * | SELECT AVG(latency) , ip_to_provider(ip) as provider group by provider limit 100

6. 查看IP的经纬度,绘制地图

  1. * | select count(1) as pv , ip_to_geo(ip) as geo group by geo order by pv desc

返回的格式为:

pv geo
100 35.3284,-80.7459
本文导读目录