如何通过 MQL 获取 GCP 计算虚拟机实例的正常运行时间总数和百分比?

How to get uptime total and percentage of GCP compute vm instance through MQL?

我正在尝试获取包括重启在内的单个 GCP 计算虚拟机实例的总正常运行时间。我看过很多帖子,但没有一个是关于使用 MQL 的。

例如:在过去的 24 小时内,如果实例不是 运行 1 小时,我希望 mql 查询到 return 23 小时

在下面的快照中,代码片段图表要求显示最大正常运行时间但不考虑重启。我已经尝试将辅助聚合器与 max 一起使用,但查询仍然没有报告确切的值。

如果您对如何通过 MQL 获取过去 1 天的总正常运行时间信息有任何想法,那将非常有帮助。非常感谢任何指针。谢谢。

fetch gce_instance
| metric 'compute.googleapis.com/instance/uptime_total'
| group_by 1d, [value_uptime_total_max: max(value.uptime_total)]
| every 1d

您可以尝试使用 uptime 指标:

fetch gce_instance
| metric 'compute.googleapis.com/instance/uptime'
| filter (metric.instance_name == 'instance-1')
| align delta(1d)
| every 1d
| group_by [], [value_uptime_mean: mean(value.uptime)]

所以你得到一个类似于这个的图表:

GCP 计算 VM 指标 instace/uptime、instance/uptime_total 不可靠。而是通过正常运行时间检查跟踪正常运行时间,并使用以下 MQL 查询给出历史正常运行时间的确切值。

请将 30d 替换为合适的值 1d , 1h

fetch uptime_url
| metric 'monitoring.googleapis.com/uptime_check/check_passed'
| filter (metric.check_id == 'dev-uptime-test')
| group_by 30d,
    [value_check_passed_fraction_true: fraction_true(value.check_passed)]
| every 30d | mean 

group_bysum 聚合器中使用 sliding 进行计算。

fetch gce_instance
| metric 'compute.googleapis.com/instance/uptime_total'
| filter (metric.instance_name = "the instance name you need")
| group_by [], sliding(1d), [value_uptime_total_sum: sum(value.uptime_total)]