本页面介绍为何某些提醒政策的行为方式与预期不同,并针对这些情况提供了可能的补救方法。
如需了解可通过选择重新测试窗口等方式影响提醒政策的变量,请参阅基于指标的提醒政策的行为。
磁盘利用率政策产生意外突发事件
您创建了一个提醒政策,用于监控系统中磁盘的“已用”容量。此政策会监控指标 agent.googleapis.com/disk/percent_used
。您预期仅在任何物理磁盘的利用率超过您在条件中设置的阈值时收到通知。但是,此政策会在每个物理磁盘的磁盘利用率低于阈值时创建突发事件。
这些政策的意外突发事件的已知原因是此类条件不限于监控物理磁盘。这些政策会改为监控所有磁盘,包括环回设备等虚拟磁盘。如果构建了一个虚拟磁盘,使其利用率达到 100%,则会导致创建政策的突发事件。
例如,请考虑 Linux df
命令的以下输出,其中显示一个系统所装载的文件系统上的磁盘可用空间:
$ df /dev/root 9983232 2337708 7629140 24% / devtmpfs 2524080 0 2524080 0% /dev tmpfs 2528080 0 2528080 0% /dev/shm ... /dev/sda15 106858 3934 102924 4% /boot/efi /dev/loop0 56704 56704 0 100% /snap/core18/1885 /dev/loop1 129536 129536 0 100% /snap/google-cloud-sdk/150 ...
对于此系统,应将磁盘利用率提醒政策配置为过滤掉环回设备 /dev/loop0
和 /dev/loop1
的时间序列。 例如,您可以添加过滤条件 device !=~ ^/dev/loop.*
,以排除其 device
标签与正则表达式 ^/dev/loop.*
不匹配的所有时序。
异常突发事件的常见原因
您创建了一个提醒政策,该政策似乎过早创建或错误地创建了突发事件。
由于多种原因,您可能会收到看似不正确的事件通知:
如果数据中存在缺口,尤其对于存在指标缺失或“小于”阈值条件的提醒政策,则可能创建看似异常的突发事件。有时突发事件不会显示数据缺口,有时数据缺口会自动纠正:
例如,在图表中,缺口可能不会显示,因为缺失数据的值会被插值。即使缺少几分钟的数据,图表也会连接缺失的点,以获得视觉上的连续性。提醒政策中的此类缺口可能足以让提醒政策创建突发事件。
如果基于日志的指标中的数据点出现延迟,系统可能会对其进行回填(针对过去最长 10 分钟的数据点进行回填)。回填行为可以有效地纠正缺口;当数据最终到达时,会填补缺口。因此,基于日志的指标中一个再也看不见的缺口可能已经导致了提醒政策创建突发事件。
指标缺失和“小于”阈值条件会实时评估,查询延迟时间很短。在评估条件到相应突发事件在 Monitoring 中可见这段时间内,条件的状态可能会发生变化。
配置为针对单个测量创建突发事件的条件可能会导致看似过早或不正确的突发事件。为了避免这种情况,请将条件的重新测试窗口设置为超过指标的采样率的两倍,确保在创建突发事件之前需要进行多次测量。
例如,如果指标每 60 秒采样一次,请将重新测试窗口设置为至少 3 分钟。如果您将重新测试窗口设置为最近的值(或相当于 0 秒),则单个测量结果可能会导致创建突发事件。
修改提醒政策的条件时,更改可能需要几分钟才能在提醒政策基础架构中传播。在此期间,您可能会收到满足原来的提醒政策条件的突发事件通知。
时间序列数据到达时,数据可能需要一分钟才能传播到整个提醒基础架构。在此过程中,即使时序数据尚未传播到时序图表,提醒政策也可能会评估是否满足条件。因此,即使图表未表明已满足条件,您也可能会收到通知。为减少出现这种情况的可能性,请使用至少五分钟的校准时间段。
将 App Hub 标签
metadata.system_labels.apphub_host_project_id
重命名为metadata.system_labels.apphub_application_container
可能会导致生成一些新的突发事件,并且一些未结突发事件不会关闭。您无需采取任何措施。在自动关闭时长到期后,当数据停止到达时,提醒会自动关闭。如需了解详情,请参阅部分指标数据。
数据停止到达时,突发事件未关闭
您可以按照部分指标数据中的指导操作,并配置提醒政策,以便在数据停止到达时关闭突发事件。在某些情况下,数据停止到达,但未结突发事件不会自动关闭。
如果提醒政策所监控的底层资源包含 metadata.system_labels.state
标签,并且该政策不是使用 Monitoring Query Language 编写的,则 Monitoring 可以确定该资源的状态。如果资源的状态已知处于已停用状态,则当数据停止到达时,Monitoring 不会自动关闭突发事件。但是,您可以手动关闭这些突发事件。
由于权限错误,导致无法查看突发事件详情
导航到 Google Cloud Console 中的突发事件页面,然后选择要查看的突发事件。您应能打开详情页面。但是,详情页面无法打开,并显示“权限遭拒”的消息。
如需查看除指标数据以外的其他所有突发事件详情,请确保您具有 Identity and Access Management (IAM) 角色 Monitoring Cloud Console Incident Viewer (roles/monitoring.cloudConsoleIncidentViewer
) 和 Stackdriver Accounts Viewer (roles/stackdriver.accounts.viewer
)。
如需查看所有突发事件详情(包括指标数据),并能够确认或关闭突发事件,请确保您具有 IAM 角色 Monitoring Viewer (roles/monitoring.viewer
) 和 Monitoring Cloud Console Incident Editor (roles/monitoring.cloudConsoleIncidentEditor
)。
自定义角色无法授予查看突发事件详情所需的权限。
满足条件时未创建突发事件
您创建了一个包含一个条件的提醒政策。提醒政策的图表显示,所监控的数据违反了条件,但您未收到通知,并且未创建突发事件。
如果在满足提醒政策条件后符合以下任一条件,Monitoring 不会开启突发事件。
- 提醒政策已延后。
- 提醒政策已停用。
- 提醒政策已达到可同时开启的突发事件数量上限。
提醒政策监控的资源的状态已知处于已停用状态。如果资源包含
metadata.system_labels.state
标签且提醒政策未使用 Monitoring Query Language 编写,Monitoring 可以确定资源的状态。
突发事件详情列出了错误的项目
您收到通知,其中的状况摘要列出了在其中创建突然事件的 Google Cloud 项目,即列出了范围限定项目。但是,您希望突发事件列出存储导致 Monitoring 创建突发事件的时序的 Google Cloud 项目的名称。
提醒政策条件中指定的聚合选项用于确定通知中引用的 Google Cloud 项目:
如果聚合选项消除了存储项目 ID 的标签,则突发事件信息会列出范围限定项目。例如,如果您仅按可用区对数据进行分组,则在分组后,存储项目 ID 的标签会被移除。
如果聚合选项保留存储项目 ID 的标签,则突发事件通知会包含存储导致突发事件发生的时序的 Google Cloud 项目的名称。如需保留项目 ID 标签,请在分组字段中添加标签
project_id
,或者不对时序进行分组。
无法手动结束突发事件
您收到系统突发事件通知。转到突发事件详情页面,然后点击结束突发事件。突发事件应能结束;但是您收到以下错误消息:
Unable to close incident with active conditions.
只有在最近的提醒期内没有收到任何观察结果时,您才能结束突发事件。提醒期(通常默认为 5 分钟)作为提醒政策条件的一部分进行定义,并且可以对其进行配置。上一条错误消息表明在提醒期内收到数据。
如果突发事件因内部错误而无法关闭,则会发生以下错误:
Unable to close incident. Please try again in a few minutes.
当您看到上一条错误消息时,可以重试关闭操作,或者让 Monitoring 自动关闭突发事件。
如需了解详情,请参阅管理突发事件。
多条件政策创建多个通知
您创建了一个包含多个条件的提醒政策,并使用逻辑 AND
连接这些条件。您希望在满足所有条件时收到一条通知并创建一个突发事件。但您会收到多个通知,还会发现存在多个突发事件。
Monitoring 会针对使条件得到满足的每个时序发送通知并创建突发事件。因此,如果您的提醒政策包含多个条件,则对于使联接条件得到满足的每个时序,您都可能会收到一条通知和突发事件。
例如,您有一个包含两个条件的提醒政策,每个条件监控 3 个时序。只有在同时满足这两个条件时,政策才会发送通知。满足政策的条件后,您可能会收到 2 个(每个条件下满足一个时序)到 6 个(每个条件下满足所有时序)通知和突发事件。
您无法将 Monitoring 配置为创建单个突发事件并发送单个通知。
如需了解详情,请参阅每次事件的通知数。
指标标签的变量为 null
您创建了提醒政策,并向文档部分添加了指标标签的变量。您希望通知显示该变量的值;但该值设置为 null
。
如需解决此问题,请尝试以下操作:
确保提醒政策的聚合设置保留您要显示的标签。
例如,假设您创建了一个提醒政策,用于监控虚拟机实例写入的磁盘字节数。您希望文档列出导致通知的设备,因此您在文档字段中添加了以下内容:
device: ${metric.label.device}
。您还必须确保聚合设置保留
device
标签的值。您可以通过将聚合函数设置为none
或确保分组选择包含device
来保留此标签。验证变量的语法和适用性。如需了解语法信息,请参阅使用用户定义的文档为通知添加注解。
例如,只有基于日志的提醒政策支持变量
log.extracted_label.KEY
。如果提醒政策监控指标(即使是基于日志的指标),此变量始终会呈现为null
。
更改指标定义后没有新数据
您更改了用户定义指标的定义(例如,通过修改您在基于日志的指标中使用的过滤条件),而提醒政策未反映您对指标定义所做的更改。
如需解决此问题,请通过修改提醒政策的显示名称来强制更新提醒政策。
由于缺少指标,API 中的提醒政策创建失败
您最近创建了一个指标,然后尝试在 Cloud Monitoring API 中创建提醒政策时引用了该指标。但是,API 命令会失败并显示以下错误:
Error 404: Cannot find metric(s) that match type = "METRIC_NAME". If a metric was created recently, it could take up to 10 minutes to become available. Please try again soon.
如需解决此问题,请等待至少 10 分钟,然后重新提交 API 请求。
提醒政策图表未显示违反阈值的情况
您收到了针对提醒政策开启的突发事件的通知。但是,当您前往该政策的详情页面时,图表不会表明违反了阈值。
如需解决此问题,请尝试缩短图表的时间范围。您可以使用工具栏中的时间范围选择器,或使用指针突出显示图表上的时间范围,从而缩短时间范围。
图表的分辨率受限,可能无法显示某些时间范围内的每次测量。