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_aggregate: aggregate(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_aggregate: aggregate(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 进行有效的监控可以跟踪应用程序的性能并识别任何潜在问题,这可以帮助快速解决可能发生的任何问题,从而有助于确保网站或应用程序始终可供用户使用,并且以最佳状态运行。
文章信息
相关推荐
