Cloud CDN 性能监控是跟踪和测量 Cloud CDN 性能的重要手段,包括监控 Cloud  CDN 的速度、可靠性和可用性,性能监控对于确保 Cloud  CDN 满足业务需求非常重要。通过监控 CDN 的性能您可以识别并解决可能出现的任何问题。这有助于提高网站或应用程序的整体性能。

概览

Cloud CDN 性能监控可以使用多种工具和技术来完成。一些常用工具包括:

     Cloud Logging:日志文件可用于跟踪对 Cloud  CDN 发出的单一客户请求、响应时间和响应状态。

    BigQuery: 可以作为大规模日志文件分析工具,对请求日志数据库进行统计分析和日志查询。

    Cloud Monitoring:可用于在无日志记录情况下,对 Cloud CDN 的性能数据进行准实时监控,例如出向流量带宽,缓存命中率,响应代码总量和比例等等。

    Alerting:可以设置警报以在 Cloud CDN 出现问题时通知。

以下是有效监控 Cloud CDN 性能的一些基本流程和思路:

    根据您的需要选择合适的工具和技术,比如 Cloud Logging,BigQuery,Cloud Monitoring,可以复合性的进行选择。

    分析数据以确定流量趋势和模式。

    设置警报以及时反应问题,并持续监控。

本文将列出一些常用的监控场景,详细描述如何使用 Cloud Monitoring 进行性能监控以及设置告警。

默认监控

通过 Google Cloud 的 Console 控制台的菜单选项 Network Services->Cloud CDN 可以进入到如下界面:



在右边的菜单选项中点击进入具体的 Origin:



点击 Monitoring 直接获取到该业务的 CDN 出向吞吐率,缓存命中率,回源,响应代码构成,每秒请求数,该监控面板可以满足对 Cloud CDN 初级的监控需求,如需要对每一个指标单独进行细项维度监控,可以点击下图的图标:




此时页面将自动跳转到 Cloud Monitoring 的 Metric Explorer 界面,可以在此对 Monitoring Query Language (MQL) 语句进行调整:



MQL 语法相关的信息可以在 https://cloud.google.com/monitoring/mql 中找到。


Cloud Monitoring 监控

Google Cloud CDN 的默认监控主要基于业务维度进行,可以对单一业务的性能进行监控,但是在实际业务监控场景中,单一应用维度监控往往无法满足需求,很多客户需要对某一业务的客户端来源等维度进行进一步分析,这时候就需要 Google Cloud 另外一个工具 Cloud Monitoring,该工具基于 Google 内部的时序型数据库 Monarch,并使用 Monitoring Query Language (MQL) 语言对监控数据进行查找/过滤/聚合,有兴趣的同学可以阅读关于该平台的公开论文:


Monarch: Google’s Planet-Scale In-Memory Time Series Database

 

Google Cloud 的各项性能监控都在 Cloud Monitoring 中保存并且最大保存6周,详细的数据保留策略可以参考data retention policy,统计数据延迟<=4 分钟。

 

由于 Google Cloud CDN 和 Google Cloud LoadBalancer 是整合关系,Cloud CDN 的相关指标可以在 HTTP/S Load Balance 对应指标项目中获取到,通过下图的操作路径可以挑选指标进行准实时分析:



通过 Google Cloud 自带的控制台界面可以快速构建需要的监控报表:



也可以通过菜单中的 “MQL” 直接输入 MQL 查询语句得到更定制化的监控图表:



Cloud CDN 的监控 MQL 语句可以通过过滤器:

 

filter (resource.forwarding_rule_name == 'xxx')

以及:

 

filter (resource.backend_name == 'xxx')

 

定位到具体的一个 CDN 前端入口或者后端 Origin。

 

 

下面是几个常用的场景的 MQL 分享:

 

各国家缓存命中率

 

fetch https_lb_rule::loadbalancing.googleapis.com/https/request_count

|filter(metric.client_country == 'XXX')

| {

   filter metric.cache_result != 'MISS'

 ;

   ident

 }

group_by   [],[value_request_count_aggregateaggregate(value.request_count)]

outer_join 0

div

 

将上述 filter(metric.client_country == 'XXX') 中的XXX修改为其他国家名称即可得到对应国家的缓存命中率信息,进一步可以得到所有国家的缓存命中率曲线:

 

fetch https_lb_rule::loadbalancing.googleapis.com/https/request_count

| {

  filter metric.cache_result != 'MISS'

;

  ident

}

group_by [metric.client_country],[value_request_count_aggregateaggregate(value.request_count)]

outer_join 0

div

 

 

各国家日流量统计

 

fetch https_lb_rule

metric 'loadbalancing.googleapis.com/https/response_bytes_count'

window 1d

group_by [metric.client_country]

 

建议将展示图形修改为 stack bar chart, 并且拉长时间为 1W 以便获取到更好的显示效果。

进一步, 在实际运维中可能需要对 SKU 620D-FE53-4BA9 ,名称为 Networking Cloud CDN Traffic Cache Egress to Other 的用量进行监控,可以参考下面的 MQL:

 

{

fetch https_lb_rule

metric 'loadbalancing.googleapis.com/https/response_bytes_count'

filter (metric.client_country=='Georgia'||metric.client_country=='Iraq'||metric.client_country=='Israel'||metric.client_country=='Jordan'||metric.client_country=='Kuwait'||metric.client_country=='Lebanon'||metric.client_country=='Oman'||metric.client_country=='Qatar'||metric.client_country=='Saudi Arabia'||metric.client_country=='State of Palestine'||metric.client_country=='Syrian Arab Republic'||metric.client_country=='Turkey'||metric.client_country=='United Arab Emirates'||metric.client_country=='Yemen');

fetch https_lb_rule

metric 'loadbalancing.googleapis.com/https/response_bytes_count'

filter (metric.client_country=='Kenya'||metric.client_country=='Madagascar'||metric.client_country=='Malawi'||metric.client_country=='Mauritius'||metric.client_country=='Mayotte'||metric.client_country=='Mozambique'||metric.client_country=='Réunion'||metric.client_country=='Rwanda'||metric.client_country=='Seychelles'||metric.client_country=='Somalia'||metric.client_country=='South Sudan'||metric.client_country=='Uganda'||metric.client_country=='United Republic of Tanzania'||metric.client_country=='Zambia'||metric.client_country=='Zimbabwe'||metric.client_country=='Angola'||metric.client_country=='Cameroon'||metric.client_country=='Central African Republic'||metric.client_country=='Chad'||metric.client_country=='Congo');

fetch https_lb_rule

metric 'loadbalancing.googleapis.com/https/response_bytes_count'

filter (metric.client_country=='Democratic Republic of the   Congo'||metric.client_country=='Equatorial Guinea'||metric.client_country=='Gabon'||metric.client_country=='Sao Tome and Principe'||metric.client_country=='Botswana'||metric.client_country=='Eswatini'||metric.client_country=='Lesotho'||metric.client_country=='Namibia'||metric.client_country=='South Africa'||metric.client_country=='Benin'||metric.client_country=='Burkina Faso'||metric.client_country=='Cabo Verde'||metric.client_country=='Côte d’Ivoire'||metric.client_country=='Gambia'||metric.client_country=='Ghana'||metric.client_country=='Guinea'||metric.client_country=='Guinea-Bissau'||metric.client_country=='Liberia'||metric.client_country=='Mali'||metric.client_country=='Mauritania'||metric.client_country=='Niger'||metric.client_country=='Nigeria');

fetch https_lb_rule

metric 'loadbalancing.googleapis.com/https/response_bytes_count'

filter (metric.client_country=='Saint Helena'||metric.client_country=='Senegal'||metric.client_country=='Sierra Leone'||metric.client_country=='Togo'||metric.client_country=='Belize'||metric.client_country=='Costa Rica'||metric.client_country=='El Salvador'||metric.client_country=='Guatemala'||metric.client_country=='Honduras'||metric.client_country=='Mexico'||metric.client_country=='Nicaragua'||metric.client_country=='Panama'||metric.client_country=='Armenia'||metric.client_country=='Azerbaijan'||metric.client_country=='Bahrain'||metric.client_country=='Cyprus')

}

|union

|window 1d

|group_by [metric.client_country],

   [value_response_bytes_count_aggregate:

      sum(value.response_bytes_count)]

 

各国家下载日成功率

 

fetch https_lb_rule::loadbalancing.googleapis.com/https/request_count

| {

filter metric.response_code_class == 200

;

ident

}

every 1d

group_by [metric.client_country]

outer_join 0

div

 

可在 Filter 中添加 |filter(metric.client_country == 'xxx)  查找单个国家的下载成功率,如:

 

fetch https_lb_rule::loadbalancing.googleapis.com/https/request_count

|

Filter (metric.client_country == 'Japan')

|

filter metric.response_code_class == 200

;

ident

}

every 1d

group_by [metric.client_country]

outer_join 0

div

 

告警设置

Google Cloud 中可以对 Cloud Monitoring 中的性能指标进行实时监控,并提供多渠道的告警,可以使用 SMS 或者邮件的方式及时了解性能指标出现的异常。具体的操作流程为,打开 Monitoring 中的 Alerting 菜单,点击 CREATE Policy,创建告警策略,如下图:



在 Select a metric 中选择一个监控指标:



又或者在界面的最右上部分,点击 MQL 自定义一个告警指标提取语法:



输入对应的 MQL 语句,如:

 

fetch https_lb_rule

metric 'loadbalancing.googleapis.com/https/response_bytes_count'

filter (resource.forwarding_rule_name == 'http-lb-demo-forwarding-rule')

window 1h

group_by ['bytes'],[sum(val())]

condition gt(val(),100'GBy')

 

上述语句表示如一个小时的累计流量超过 100GB,则触发告警,如使用自定义 MQL 请确保在执行 NEXT 操作之前,在 Alert 配置界面运行一次,然后选择触发策略:



选择告警触发渠道:



最后输入自定义的 Alert Policy Name 即可。

 

 

对 Cloud CDN 进行有效的监控可以跟踪应用程序的性能并识别任何潜在问题,这可以帮助快速解决可能发生的任何问题,从而有助于确保网站或应用程序始终可供用户使用,并且以最佳状态运行。

相关推荐