我好久没有在这里分享我最近的一些体验。最近我看到了EdgeOne的征文活动,作为一名老用户,我觉得应该也要好好宣传一下EdgeOne的某一个产品。我是从个人版/基础版内测期间就开始使用EdgeOne,这半年来见证了EdgeOne的不断进步和完善,整体来说,我对腾讯云的新一代CDN非常满意。

首先,让我们来了解一下EdgeOne是什么。边缘安全加速平台 EO(Tencent cloud EdgeOne,简称为 EdgeOne)EdgeOne是腾讯云推出的一款全球分布式边缘加速产品,致力于提供更快、更稳定、更安全的网络加速服务。通过在全球部署的边缘节点,EdgeOne能够将用户请求的内容缓存到离用户最近的节点上,从而加快内容的传输速度,提高用户体验。

在功能特点方面,EdgeOne提供了丰富的功能,满足了不同场景下的需求,DIY性质不亚于友商网宿CDN Pro。EdgeOne的速度非常快,能够大大提高网站的加载速度和响应时间,从而提升用户体验。

作为一名老用户,我在使用EdgeOne的过程中有很多感受和看法。首先,我觉得EdgeOne的产品体验越来越好,功能越来越完善,也有认真倾听整体用户心声,尽可能满足用户来实现或者说开放某些功能。EdgeOne的价格也比较合理,能够满足不同用户的需求。

这不前段时间Edgeone开放了实时日志,下面来说一下EdgeOne实时日志来生成访客信息,下面也懒得废话了 直接进入主题,后续也会更新EdgeOne监控大屏的

注意

怎么样快速看到日志? 文档也写了 我建议使用CLS的话 也方便投递到第三方!

注意实时日志是增值服务!!!会有好几个计费项目!包含TEO增值费用和CLS费用 基本上不费钱的

注意实时日志是增值服务!!!会有好几个计费项目!包含TEO增值费用和CLS费用 基本上不费钱的

注意实时日志是增值服务!!!会有好几个计费项目!包含TEO增值费用和CLS费用 基本上不费钱的

记得购买CLS套餐包!!! 记得购买CLS套餐包!!! 记得购买CLS套餐包!!!

重要的社区说三遍

计费项目

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

计费项目

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

他是属于增值服务

计费见 https://cloud.tencent.com/document/product/1552/94161

日志也需要计费

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

具体见 https://cloud.tencent.com/document/product/614/78045

新建流程

但是官方预制的并不全面

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog
使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog
使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog
使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

哪里全面搞不懂一点 看了看EO的语句和参考CDN的计算方法 查了点资料写了一下

大概就是这样样子

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

那我们准备进入接入流程

首先打开Edgeone控制台

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog
使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

选择实时日志

新建名字和类型 选择要投递的域名

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

建议选择

通用

建议选择字段名称数据类型说明
String默认选择客户端请求的唯一标识 ID
EdgeServerIDString客户端访问到的 EdgeOne 服务器唯一标识
EdgeServerIPStringDNS 解析 Host 得到的 EdgeOne 服务器 IP 地址
EdgeSeverRegionString响应的EdgeOne节点IP解析出来的国家,使用ISO-3166-2标准
LogTimeString日志记录的时间,ISO-8601 格式
EdgeEndTimeString完成响应客户端请求的时间,使用ISO-8601
ParentRequestIDString父请求的 RequestID(若该请求是使用边缘函数发起的,否则为“-

客户端信息

建议选择字段名称数据类型说明
ClientIPString客户端请求的唯一标识 ID客户端 IP
ClientRegionString客户端 IP 解析出来的国家/地域。格式标准:ISO-3166-2
ClientStateString客户端IP解析出国家下一级的行政划分
ClientISPString通过客户端访问ip解析出,运营商信息,如果为无即为Other。
ClientDeviceTypeString客户端请求设备类型

请求信息

建议选择字段名称数据类型说明
RequestTimeString客户端请求时间,时区:UTC +00:00,格式标准:ISO-8601
RequestHostString客户端请求的 Host
RequestBytesInt客户端请求的大小,单位:Byte
RequestMethodString客户端请求的 HTTP Method
RequestUrlString客户端请求的 URL
RequestUrlQueryStringString客户端请求的 URL 携带的查询参数
RequestUAString客户端请求的 User-Agent 信息
RequestRangeString客户端请求的 Range 参数信息
RequestRefererString客户端请求的 Referer 信息
RequestProtocolString客户端请求的应用层协议:HTTP/1.0,HTTP/1.1,HTTP/2.0,HTTP/3,WebSocket
RemotePortIntTCP 协议下客户端与节点建立连接的端口,若无则为 -
RequestSSLProtocolString客户端的使用的SSL(TLS)协议,若取值为“-”,则没有请求没有SSL握手

通用

建议选择字段名称数据类型说明
OriginDNSResponseDurationDouble接收到源站DNS解析响应的耗时,若没有回源,记录为"-1",单位:ms
OriginIPString回源访问的源站IP,若没有回源,记录为"-"
OriginRequestHeaderSendDurationDouble向源站发送请求头的耗时,一般是0,若没有回源,记录为"-1",单位:ms
OriginSSLProtocolString请求源站使用的 SSL 协议版本,若没有回源,记录为"-"
OriginTCPHandshakeDurationDouble请求源站时,完成TCP握手的耗时,若没有回源,记录为"-1",单位:ms;注意:当连接重复利用时为0
OriginTLSHandshakeDurationDouble请求源站时,完成TLS握手的耗时,若没有回源,记录为"-1",单位:ms;注意:当连接重复利用时为0
OriginResponseHeaderDurationDouble向源站发送请求头到接受到源站响应头的耗时,若没有回源,记录为"-1",单位:ms
OriginResponseStatusCodeInt源站响应状态码,若没有回源,记录为"-1"
建议选择字段名称数据类型说明
EdgeCacheStatusString客户端请求是否命中节点缓存:HIT(资源由节点缓存提供),MISS(资源可缓存,但由源站提供),Dynamic(资源不可缓存)
EdgeResponseStatusCodeInt节点响应返回给客户端的状态码
EdgeResponseBytesInt节点响应返回给客户端的大小,单位:Byte
EdgeResponseTimeInt从 EdgeOne 接收到客户端发起的请求开始,到客户端接收到服务器端的响应结束,这个过程所耗费的时间;单位:ms
EdgeInternalTimeInt从 EdgeOne 接收到客户端发起的请求开始,到响应给客户端的第一个字节,整一个过程的耗时;单位:ms
EdgeResponseBodyBytesInt节点响应返回给客户端的body大小,单位:Byte

安全防护

建议选择字段名称数据类型说明
BotClassAttackerString基于近期IP情报数据,请求客户端IP有攻击(如 DDoS,高频恶意请求、站点攻击等)行为的风险等级:"high" 对应高风险,"medium" 对应中等风险,"low" 对应一般风险,"-" 对应无历史数据
BotClassProxyString基于近期IP情报数据,请求客户端IP开放可疑代理端口、并且被用作网络代理(包括秒拨IP)的风险等级:"high" 对应高风险,"medium" 对应中等风险,"low"对应一般风险,"-" 对应无历史数据
BotClassScannerString基于近期IP情报数据,请求客户端IP有攻击已知漏洞的扫描器行为的风险等级:"high" 对应高风险,"medium" 对应中等风险,"low" 对应一般风险,"-" 对应无历史数据
BotClassAccountTakeOverString基于近期IP情报数据,请求客户端IP有恶意破解登陆,发起账号接管攻击的风险等级:"high" 对应高风险,"medium" 对应中等风险,"low" 对应一般风险,"-" 对应无历史数据
BotClassMaliciousBotString基于近期IP情报数据,请求客户端IP有恶意爬虫、刷量和暴力破解行为的风险等级:"high" 对应高风险,"medium" 对应中等风险,"low" 对应一般风险,"-" 对应无历史数据
使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

需要注意的是根据《中华人民共和国网络安全法》根据该法第二十一条,网络运营者应按照规定留存相关的网络日志不少于六个月,安全起见在这里建议大于等于180天,也希望按照相关法律法规使用该功能

然后访问一下你网站,等待推送日志(5分钟左右延迟)

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

查看日志是否成功 如上图有数据就是没问题的

准备接入报表了

打开 CLS

https://console.cloud.tencent.com/cls/dashboard

搜索EdgeOne

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

复制到把他们俩新的表

目前还不能直接复制到新表,到时候我会找相关CLS产品侧处理一下,到时候就可以直接是允许复制系统模板的子模块,目前其他CLS的子模块可以直接复制或者说修改模板,EdgeOne 现阶段好像还不支持,只可以一个一个点击查看来手动复制,非常麻烦,

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog
使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

新建一个模板,先基本架构解决一下

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

当然也可以借鉴以下模板

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

只需要选择对应字段替换

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

具体替换字符可以看关键词来和我上面的字段来替换

可能会出现部分查询失败的问题,这个是因为语句不一样或者说算法不一样导致的,有的要进去重新改一下

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog
使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

粘贴合适的语法 选择合适的现实格式!

复制在编辑方便一点方便计划和排版位置!

我只补充 系统中不全面的!!!!

我们可以手动添加一下sql语句代码 其中 --是注释 可以不用要

宽带类

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

其中平均下载速度是自带的在这里就不过多解释了

实时带宽

代码语言:sql

复制

* | SELECT   
    SUM(EdgeResponseBytes)/300.00*8 AS "实时带宽",   
    HISTOGRAM(CAST(__TIMESTAMP__ AS TIMESTAMP), INTERVAL 5 MINUTE) AS "时间"   
GROUP BY "时间"   
ORDER BY "时间" DESC   
LIMIT 10000

--LIMIT 10000,获得最近的10000个5分钟间隔的数据点,300.00然后乘以8。
--将字节转换为比特(8比特=1字节),并确保得到的结果是以Kbps(每秒千比特)为单位的
--"实时"的定义:那么你最多只能得到5分钟前的"实时"数据更新一次

峰值宽带

代码语言:sql

复制

* | SELECT    
    EdgeServerID,    
    MAX(EdgeResponseBytes * 1.0) AS "峰值宽带"    
GROUP BY    
    EdgeServerID    
ORDER BY    
    "峰值宽带"  
    -- 找出每个EdgeServerID的EdgeResponseBytes的最大值,这可以被视为"峰值宽带"

总流量

代码语言:sql

复制

* | SELECT   
    SUM(EdgeResponseBytes * 1.0) AS "总流量"
      -- 计算EdgeResponseBytes的总和,这可以被视为"总流量"。
      

缓存命中率

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

针对目录/文件测试指定缓存率

代码语言:sql

复制

* | SELECT   
  ROUND(  
    SUM(CASE WHEN EdgeCacheStatus LIKE '%hit%' THEN 1.00 ELSE 0.00 END) /   
    CAST(COUNT(*) AS DOUBLE) * 100,  
    1  
  ) AS "缓存命中率"  
WHERE   
  (RequestUrl LIKE '/A%' OR RequestUrl LIKE '/B%' OR RequestUrl LIKE '/%.js OR RequestUrl LIKE '/%.css')  
  AND EdgeResponseStatusCode < 400
  -- 为了计算特定请求URL模式(以/A开始,以/B开始,或任何.js文件,还有任何.css文件)的缓存命中率
  -- 同时只考虑那些返回的HTTP状态码小于400的请求

因为缓存是大部分情况下是静态,CDN是计算整体对于非缓存文件来说不公平会降低整体缓存率

请求协议

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

TLS请求协议

代码语言:sql

复制

* | SELECT   
    COUNT(*) AS cnt,  
    "RequestProtocol",  
    HISTOGRAM(__TIMESTAMP__, INTERVAL ${__interval}) AS analytic_time  
WHERE   
    "RequestProtocol" IN (  
        SELECT "RequestProtocol"   
        GROUP BY "RequestProtocol"   
        ORDER BY COUNT(*) DESC   
        LIMIT 5  
    )  
GROUP BY   
    analytic_time, "RequestProtocol"  

或者

代码语言:sql

复制

* | SELECT   
    CASE   
     WHEN REGEXP_LIKE(RequestSSLProtocol, 'TLS1.0') THEN 'TLS1.0' 
     WHEN REGEXP_LIKE(RequestSSLProtocol, 'TLS1.1') THEN 'TLS1.1'
     WHEN REGEXP_LIKE(RequestSSLProtocol, 'TLS1.2') THEN 'TLS1.2'
     WHEN REGEXP_LIKE(RequestSSLProtocol, 'TLS1.3') THEN 'TLS1.3'
        ELSE '其他'  
    END AS "TLS握手情况",  
    SUM(EdgeResponseBytes) AS "总次数"  
GROUP BY "TLS握手情况"  
ORDER BY "总次数" DESC  
LIMIT 20
 -- 获取前指定TLS请求协议

HTTP协议

代码语言:sql

复制

* | SELECT   
    COUNT(*) AS cnt,  
    "RequestProtocol",  
    HISTOGRAM(__TIMESTAMP__, INTERVAL ${__interval}) AS analytic_time  
WHERE   
    "RequestProtocol" IN (  
        SELECT "RequestProtocol"   
        GROUP BY "RequestProtocol"   
        ORDER BY COUNT(*) DESC   
        LIMIT 5  
    )  
GROUP BY   
    analytic_time, "RequestProtocol"  
     -- 获取前指定TLS请求协议

或者

代码语言:sql

复制

* | SELECT   
    CASE   
     WHEN REGEXP_LIKE(RequestProtocol, 'HTTP/1.0') THEN 'HTTP/1.0' 
     WHEN REGEXP_LIKE(RequestProtocol, 'HTTP/1.1') THEN 'HTTP/1.0'
     WHEN REGEXP_LIKE(RequestProtocol, 'HTTP/2.0') THEN 'HTTP/1.0'
     WHEN REGEXP_LIKE(RequestProtocol, 'HTTP/3.0') THEN 'HTTP/1.0'
        ELSE '其他'  
    END AS "HTTP协议",  
    SUM(EdgeResponseBytes) AS "总次数"  
GROUP BY "HTTP协议"  
ORDER BY "总次数" DESC  
LIMIT 20
 -- 获取前指定TLS请求协议

获取Referer

并且忽略?以后参数

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

代码语言:sql

复制

* | SELECT   
  REGEXP_REPLACE("RequestReferer", '\?.*$', '') AS "RequestReferer",   
  COUNT(*) AS requests   
WHERE   
  "RequestReferer" IS NOT NULL   
GROUP BY   
  "RequestReferer"   
ORDER BY   
  requests DESC   
  -- 获取Referer 并且忽略?以后参数

取用户浏览器

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

获取用户浏览器 (不太全面大部分都是Chrome内核·一定要在后面)

代码语言:sql

复制

* | SELECT     
    CASE     
        WHEN strpos(lower(RequestUA), 'edge') > 0 THEN 'Microsoft Edge'    
        WHEN strpos(lower(RequestUA), 'firefox') > 0 THEN 'Firefox'    
        WHEN strpos(lower(RequestUA), 'ie') > 0 THEN 'Internet Explorer'    
        WHEN strpos(lower(RequestUA), 'opera') > 0 THEN 'Opera'    
        WHEN strpos(lower(RequestUA), 'brave') > 0 THEN 'Brave'    
        WHEN strpos(lower(RequestUA), 'vivaldi') > 0 THEN 'Vivaldi'    
        WHEN strpos(lower(RequestUA), 'uc') > 0 THEN 'UC Browser' 
         WHEN strpos(lower(RequestUA), 'via') > 0 THEN 'via Browser' 
        WHEN strpos(lower(RequestUA), 'mqqbrowser') > 0 THEN 'QQ Browser'    
        WHEN strpos(lower(RequestUA), 'maxthon') > 0 THEN 'Maxthon'    
        WHEN strpos(lower(RequestUA), '360SE') > 0 THEN '360 Browser'    
        WHEN strpos(lower(RequestUA), 'torb') > 0 THEN 'Tor Browser'    
        WHEN strpos(lower(RequestUA), 'waterfox') > 0 THEN 'Waterfox'    
        WHEN strpos(lower(RequestUA), 'palemoon') > 0 THEN 'Pale Moon'    
        WHEN strpos(lower(RequestUA), 'seamonkey') > 0 THEN 'SeaMonkey'    
        WHEN strpos(lower(RequestUA), 'k-melon') > 0 THEN 'K-Melon'    
        WHEN strpos(lower(RequestUA), 'lunascape') > 0 THEN 'Lunascape'    
        WHEN strpos(lower(RequestUA), 'comodo dragon') > 0 THEN 'Comodo Dragon'    
        WHEN strpos(lower(RequestUA), 'srware iron') > 0 THEN 'SRWare Iron'    
        WHEN strpos(lower(RequestUA), 'blackberry') > 0 THEN 'BlackBerry Browser'    
        WHEN strpos(lower(RequestUA), 'baidu') > 0 THEN 'Baidu Browser'    
        WHEN strpos(lower(RequestUA), 'sogou') > 0 THEN 'Sogou Explorer'    
        WHEN strpos(lower(RequestUA), 'tencent') > 0 THEN 'Tencent Traveler'    
        WHEN strpos(lower(RequestUA), 'mibrowser') > 0 THEN 'Mi Browser'    
        WHEN strpos(lower(RequestUA), 'huawei') > 0 THEN 'Huawei Browser'     
        WHEN strpos(lower(RequestUA), 'micromessenger') > 0 THEN 'WeChat Browser'    
        WHEN strpos(lower(RequestUA), 'wxwork') > 0 THEN 'WeCom Browser'    
        WHEN strpos(lower(RequestUA), 'vivo') > 0 THEN 'Vivo Browser'   
        WHEN strpos(lower(RequestUA), 'oppo') > 0 THEN 'OPPO Browser'   
         WHEN strpos(lower(RequestUA), 'chromium') > 0 THEN 'Chromium'  
        WHEN strpos(lower(RequestUA), 'chrome') > 0 THEN 'Chrome'   
        ELSE '未知'    
    END AS Browser,    
    COUNT(*) AS Visits    
GROUP BY     
    Browser    
ORDER BY     
    Visits DESC
    -- 列出浏览器UA关键词

列出用户 操作系统/环境 (支持华为鸿蒙OS 小米澎湃官方承认基于Android所以说在这里就不在额外拿出来计算成澎湃OS)

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

代码语言:sql

复制

* | SELECT   
    CASE   
        WHEN REGEXP_LIKE(RequestUA, 'Windows NT 10.1') THEN 'Windows 11'  
        WHEN REGEXP_LIKE(RequestUA, 'Windows NT 10.0') THEN 'Windows 10'  
        WHEN REGEXP_LIKE(RequestUA, 'Windows NT 6.3') THEN 'Windows 8.1'  
        WHEN REGEXP_LIKE(RequestUA, 'Windows NT 6.2') THEN 'Windows 8'  
        WHEN REGEXP_LIKE(RequestUA, 'Windows NT 6.1') THEN 'Windows 7'  
        WHEN REGEXP_LIKE(RequestUA, 'Windows NT 5.1') THEN 'Windows XP'
        WHEN REGEXP_LIKE(RequestUA, 'idm') THEN 'IDM'
        WHEN REGEXP_LIKE(RequestUA,'iPhone|iPad|iPod') THEN  'IOS'
        WHEN strpos(lower(RequestUA), 'chromiumos') > 0 THEN 'ChromiumOS'  
        WHEN strpos(lower(RequestUA), 'netbsd') > 0 THEN 'NetBSD'  
        WHEN REGEXP_LIKE(RequestUA,'Mac') THEN  'MAC OS' 
        WHEN REGEXP_LIKE(RequestUA,' Ubuntu') THEN  ' Ubuntu' 
        WHEN REGEXP_LIKE(RequestUA,' python') THEN  ' python'
        WHEN REGEXP_LIKE(RequestUA,'bot') THEN  'bot' 
        WHEN REGEXP_LIKE(RequestUA,'curl') THEN  'curl' 
        WHEN REGEXP_LIKE(RequestUA,'CFNetwork') THEN  'CFNetwork' 
        WHEN REGEXP_LIKE(RequestUA,'BitComet') THEN  'BitComet' 
        WHEN REGEXP_LIKE(RequestUA,'RSS') THEN  'RSS' 
        WHEN REGEXP_LIKE(RequestUA,'Clash') THEN  'Clash' 
        WHEN REGEXP_LIKE(RequestUA, 'Android 10; HarmonyOS')  THEN 'Harmony OS 2' 
        WHEN REGEXP_LIKE(RequestUA, 'Android 11; HarmonyOS')  THEN 'Harmony OS 3'  
        WHEN REGEXP_LIKE(RequestUA, 'Android 12; HarmonyOS')  THEN 'Harmony OS 4'  
        WHEN REGEXP_LIKE(RequestUA, 'Android 15') THEN 'Android 15'
        WHEN REGEXP_LIKE(RequestUA, 'Android 14') THEN 'Android 14'
        WHEN REGEXP_LIKE(RequestUA, 'Android 13') THEN 'Android 13'
        WHEN REGEXP_LIKE(RequestUA, 'Android 12') THEN 'Android 12'
        WHEN REGEXP_LIKE(RequestUA, 'Android 11') THEN 'Android 11'
        WHEN REGEXP_LIKE(RequestUA, 'Android 10') THEN 'Android 10'
        WHEN REGEXP_LIKE(RequestUA, 'Android 9') THEN 'Android 9'
        WHEN REGEXP_LIKE(RequestUA, 'Android 8') THEN 'Android 8'
        WHEN REGEXP_LIKE(RequestUA, 'Android 7') THEN 'Android 7'
        WHEN REGEXP_LIKE(RequestUA, 'Android 6') THEN 'Android 6'
        WHEN REGEXP_LIKE(RequestUA, 'Android 5') THEN 'Android 5'
        WHEN REGEXP_LIKE(RequestUA, 'Android 4') THEN 'Android 4'
        WHEN REGEXP_LIKE(RequestUA, 'BlackBerry') THEN 'BlackBerry'  
        WHEN REGEXP_LIKE(RequestUA, 'Symbian') THEN 'Symbian'  
        WHEN REGEXP_LIKE(RequestUA, 'webOS') THEN 'webOS'  
        WHEN REGEXP_LIKE(RequestUA, 'Meego') THEN 'Meego'  
        WHEN REGEXP_LIKE(RequestUA, 'Bada') THEN 'Bada'  
        WHEN REGEXP_LIKE(RequestUA, 'Tizen') THEN 'Tizen'  
        WHEN REGEXP_LIKE(RequestUA, 'Sailfish OS') THEN 'Sailfish OS'  
        WHEN REGEXP_LIKE(RequestUA, 'tv') THEN 'tv'  
        WHEN REGEXP_LIKE(RequestUA, 'Apache') THEN 'Apache' 
        WHEN REGEXP_LIKE(RequestUA, 'aria2') THEN 'aria2' 
        WHEN REGEXP_LIKE(RequestUA, 'ZhihuHybrid') THEN 'Zhihu'
        WHEN REGEXP_LIKE(RequestUA, 'Wget') THEN 'Wget'
        WHEN REGEXP_LIKE(RequestUA, 'qBittorrent') THEN 'qBittorrent'
        WHEN REGEXP_LIKE(RequestUA, 'Dalvik') THEN 'Dalvik'    
        WHEN REGEXP_LIKE(RequestUA, 'Linux') THEN 'Linux'    
        ELSE '未知'  
    END AS OperatingSystem,  
    COUNT(*) AS Visits  
GROUP BY   
    OperatingSystem  
ORDER BY   
    Visits DESC
    -- 变量报错 先这样吧 获取用户具体操作系统或环境

获取流量排行榜 省/市

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

添加描述

代码语言:sql

复制

* | SELECT   
    ip_to_province("ClientIP") AS "省份",   
    SUM(EdgeResponseBytes) AS "总流量"   
GROUP BY "省份"   
HAVING "省份" <> '-1'   
ORDER BY "总流量" DESC   
LIMIT 20
-- 获取前20名流量大省消耗了多少流NULL为ipv6 

代码语言:sql

复制

* | SELECT   
    ip_to_city("ClientIP") AS "城市",   
    SUM(EdgeResponseBytes) AS "总流量"   
GROUP BY "城市"   
HAVING "城市" <> '-1'   
ORDER BY "总流量" DESC   
LIMIT 20
-- 获取前20名流量城市消耗了多少流NULL为ipv6 

搜索引擎来路

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

代码语言:sql

复制

* |  SELECT   
    CASE   
        WHEN REGEXP_LIKE(RequestUA, 'Googlebot') THEN 'Google'  
        WHEN REGEXP_LIKE(RequestUA, 'Bingbot') THEN 'Bing'  
        WHEN REGEXP_LIKE(RequestUA, 'Yahoo') THEN 'Yahoo'  
        WHEN REGEXP_LIKE(RequestUA, 'Baiduspider') THEN 'Baidu'  
        WHEN REGEXP_LIKE(RequestUA, 'SogouSpider') THEN 'Sogou'  
        WHEN REGEXP_LIKE(RequestUA, '360Spider') THEN '360'  
        WHEN REGEXP_LIKE(RequestUA, 'Bytespider') THEN 'Toutiao'  
    END AS "搜索引擎",  
    COUNT(*) AS "请求次数"  
WHERE REGEXP_LIKE(RequestUA, 'Googlebot') OR  
      REGEXP_LIKE(RequestUA, 'Bingbot') OR  
      REGEXP_LIKE(RequestUA, 'Yahoo') OR  
      REGEXP_LIKE(RequestUA, 'Baiduspider') OR  
      REGEXP_LIKE(RequestUA, 'SogouSpider') OR  
      REGEXP_LIKE(RequestUA, '360Spider') OR  
      REGEXP_LIKE(RequestUA, 'Bytespider')  
GROUP BY "搜索引擎"  
ORDER BY "请求次数" DESC  
LIMIT 20
-- 搜索引擎来路的请求 ,也有可能是蜘蛛爬取,虽然说我学过SEO但是我不太关心SEO,,,

站外来路检测

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

代码语言:sql

复制

* | SELECT   
    CASE   
        WHEN RequestUA LIKE '%://%' THEN REGEXP_EXTRACT(RequestUA, 'https?://([^/]+)', 1)   
        ELSE '直接访问'   
    END AS "来路域名",  
    COUNT(*) AS "访问次数"  
GROUP BY "来路域名"  
ORDER BY "访问次数" DESC  
LIMIT 20
--  检测RequestUA字段的值是否包含'://',这是一个简单的判断URL是否存在的方法。如果包含'://'
-- 它将使用REGEXP_EXTRACT函数提取域名。
--如果不包含'://',它将返回'直接访问'。这样,所有不包含链接的RequestUA记录都将被归类为'直接访问'。

一件导入我的配置

全部完整json 可以直接下载导入

代码语言:text

复制

https://img.cuteapi.com/cls/json/Edgeone_senior.json
使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

EagleYaorzID 修改为

日志主题ID

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

dashboard-EagleYAO

修改为 仪表盘Id

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

导入完成需要修改缓存占比注释掉指定内目录或者文件看你们的具体情况(bushi

导入后整体预览

使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog
使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog
使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog
使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog
使用EdgeOne实时日志+cls 自动生成网站访客信息-鹰瑶の Blog

各有各的 有的更新了但是没更新截图大抵就是这样的罢了