MonitoringAlertPolicy

Property Value
Google Cloud Service Name Cloud Monitoring
Google Cloud Service Documentation /monitoring/docs/
Google Cloud REST Resource Name v3.projects.alertPolicies
Google Cloud REST Resource Documentation /monitoring/api/ref_v3/rest/v3/projects.alertPolicies
Config Connector Resource Short Names gcpmonitoringalertpolicy
gcpmonitoringalertpolicies
monitoringalertpolicy
Config Connector Service Name monitoring.googleapis.com
Config Connector Resource Fully Qualified Name monitoringalertpolicies.monitoring.cnrm.cloud.google.com
Can Be Referenced by IAMPolicy/IAMPolicyMember No

Custom Resource Definition Properties

Annotations

Fields
cnrm.cloud.google.com/project-id

Spec

Schema

  combiner: string
  conditions:
  - conditionAbsent:
      aggregations:
      - alignmentPeriod: string
        crossSeriesReducer: string
        groupByFields:
        - string
        perSeriesAligner: string
      duration: string
      filter: string
      trigger:
        count: integer
        percent: float
    conditionMonitoringQueryLanguage:
      duration: string
      query: string
      trigger:
        count: integer
        percent: float
    conditionThreshold:
      aggregations:
      - alignmentPeriod: string
        crossSeriesReducer: string
        groupByFields:
        - string
        perSeriesAligner: string
      comparison: string
      denominatorAggregations:
      - alignmentPeriod: string
        crossSeriesReducer: string
        groupByFields:
        - string
        perSeriesAligner: string
      denominatorFilter: string
      duration: string
      filter: string
      thresholdValue: float
      trigger:
        count: integer
        percent: float
    displayName: string
    name: string
  displayName: string
  documentation:
    content: string
    mimeType: string
  enabled: boolean
  notificationChannels:
  - external: string
    name: string
    namespace: string
  resourceID: string
Fields

combiner

Required

string

How to combine the results of multiple conditions to determine if an incident should be opened. Possible values: ["AND", "OR", "AND_WITH_MATCHING_RESOURCE"]

conditions

Required

list (object)

A list of conditions for the policy. The conditions are combined by AND or OR according to the combiner field. If the combined conditions evaluate to true, then an incident is created. A policy can have from one to six conditions.

conditions.[]

Required

object

conditions.[].conditionAbsent

Optional

object

A condition that checks that a time series continues to receive new data points.

conditions.[].conditionAbsent.aggregations

Optional

list (object)

Specifies the alignment of data points in individual time series as well as how to combine the retrieved time series together (such as when aggregating multiple streams on each resource to a single stream for each resource or when aggregating streams across all members of a group of resources). Multiple aggregations are applied in the order specified.

conditions.[].conditionAbsent.aggregations.[]

Optional

object

conditions.[].conditionAbsent.aggregations.[].alignmentPeriod

Optional

string

The alignment period for per-time series alignment. If present, alignmentPeriod must be at least 60 seconds. After per-time series alignment, each time series will contain data points only on the period boundaries. If perSeriesAligner is not specified or equals ALIGN_NONE, then this field is ignored. If perSeriesAligner is specified and does not equal ALIGN_NONE, then this field must be defined; otherwise an error is returned.

conditions.[].conditionAbsent.aggregations.[].crossSeriesReducer

Optional

string

The approach to be used to combine time series. Not all reducer functions may be applied to all time series, depending on the metric type and the value type of the original time series. Reduction may change the metric type of value type of the time series.Time series data must be aligned in order to perform cross- time series reduction. If crossSeriesReducer is specified, then perSeriesAligner must be specified and not equal ALIGN_NONE and alignmentPeriod must be specified; otherwise, an error is returned. Possible values: ["REDUCE_NONE", "REDUCE_MEAN", "REDUCE_MIN", "REDUCE_MAX", "REDUCE_SUM", "REDUCE_STDDEV", "REDUCE_COUNT", "REDUCE_COUNT_TRUE", "REDUCE_COUNT_FALSE", "REDUCE_FRACTION_TRUE", "REDUCE_PERCENTILE_99", "REDUCE_PERCENTILE_95", "REDUCE_PERCENTILE_50", "REDUCE_PERCENTILE_05"]

conditions.[].conditionAbsent.aggregations.[].groupByFields

Optional

list (string)

The set of fields to preserve when crossSeriesReducer is specified. The groupByFields determine how the time series are partitioned into subsets prior to applying the aggregation function. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The crossSeriesReducer is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains resource.type. Fields not specified in groupByFields are aggregated away. If groupByFields is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If crossSeriesReducer is not defined, this field is ignored.

conditions.[].conditionAbsent.aggregations.[].groupByFields.[]

Optional

string

conditions.[].conditionAbsent.aggregations.[].perSeriesAligner

Optional

string

The approach to be used to align individual time series. Not all alignment functions may be applied to all time series, depending on the metric type and value type of the original time series. Alignment may change the metric type or the value type of the time series.Time series data must be aligned in order to perform cross- time series reduction. If crossSeriesReducer is specified, then perSeriesAligner must be specified and not equal ALIGN_NONE and alignmentPeriod must be specified; otherwise, an error is returned. Possible values: ["ALIGN_NONE", "ALIGN_DELTA", "ALIGN_RATE", "ALIGN_INTERPOLATE", "ALIGN_NEXT_OLDER", "ALIGN_MIN", "ALIGN_MAX", "ALIGN_MEAN", "ALIGN_COUNT", "ALIGN_SUM", "ALIGN_STDDEV", "ALIGN_COUNT_TRUE", "ALIGN_COUNT_FALSE", "ALIGN_FRACTION_TRUE", "ALIGN_PERCENTILE_99", "ALIGN_PERCENTILE_95", "ALIGN_PERCENTILE_50", "ALIGN_PERCENTILE_05", "ALIGN_PERCENT_CHANGE"]

conditions.[].conditionAbsent.duration

Required*

string

The amount of time that a time series must fail to report new data to be considered failing. Currently, only values that are a multiple of a minute--e.g. 60s, 120s, or 300s --are supported.

conditions.[].conditionAbsent.filter

Optional

string

A filter that identifies which time series should be compared with the threshold.The filter is similar to the one that is specified in the MetricService.ListTimeSeries request (that call is useful to verify the time series that will be retrieved / processed) and must specify the metric type and optionally may contain restrictions on resource type, resource labels, and metric labels. This field may not exceed 2048 Unicode characters in length.

conditions.[].conditionAbsent.trigger

Optional

object

The number/percent of time series for which the comparison must hold in order for the condition to trigger. If unspecified, then the condition will trigger if the comparison is true for any of the time series that have been identified by filter and aggregations.

conditions.[].conditionAbsent.trigger.count

Optional

integer

The absolute number of time series that must fail the predicate for the condition to be triggered.

conditions.[].conditionAbsent.trigger.percent

Optional

float

The percentage of time series that must fail the predicate for the condition to be triggered.

conditions.[].conditionMonitoringQueryLanguage

Optional

object

A Monitoring Query Language query that outputs a boolean stream

conditions.[].conditionMonitoringQueryLanguage.duration

Required*

string

The amount of time that a time series must violate the threshold to be considered failing. Currently, only values that are a multiple of a minute--e.g., 0, 60, 120, or 300 seconds--are supported. If an invalid value is given, an error will be returned. When choosing a duration, it is useful to keep in mind the frequency of the underlying time series data (which may also be affected by any alignments specified in the aggregations field); a good duration is long enough so that a single outlier does not generate spurious alerts, but short enough that unhealthy states are detected and alerted on quickly.

conditions.[].conditionMonitoringQueryLanguage.query

Required*

string

Monitoring Query Language query that outputs a boolean stream.

conditions.[].conditionMonitoringQueryLanguage.trigger

Optional

object

The number/percent of time series for which the comparison must hold in order for the condition to trigger. If unspecified, then the condition will trigger if the comparison is true for any of the time series that have been identified by filter and aggregations, or by the ratio, if denominator_filter and denominator_aggregations are specified.

conditions.[].conditionMonitoringQueryLanguage.trigger.count

Optional

integer

The absolute number of time series that must fail the predicate for the condition to be triggered.

conditions.[].conditionMonitoringQueryLanguage.trigger.percent

Optional

float

The percentage of time series that must fail the predicate for the condition to be triggered.

conditions.[].conditionThreshold

Optional

object

A condition that compares a time series against a threshold.

conditions.[].conditionThreshold.aggregations

Optional

list (object)

Specifies the alignment of data points in individual time series as well as how to combine the retrieved time series together (such as when aggregating multiple streams on each resource to a single stream for each resource or when aggregating streams across all members of a group of resources). Multiple aggregations are applied in the order specified.This field is similar to the one in the MetricService.ListTimeSeries request. It is advisable to use the ListTimeSeries method when debugging this field.

conditions.[].conditionThreshold.aggregations.[]

Optional

object

conditions.[].conditionThreshold.aggregations.[].alignmentPeriod

Optional

string

The alignment period for per-time series alignment. If present, alignmentPeriod must be at least 60 seconds. After per-time series alignment, each time series will contain data points only on the period boundaries. If perSeriesAligner is not specified or equals ALIGN_NONE, then this field is ignored. If perSeriesAligner is specified and does not equal ALIGN_NONE, then this field must be defined; otherwise an error is returned.

conditions.[].conditionThreshold.aggregations.[].crossSeriesReducer

Optional

string

The approach to be used to combine time series. Not all reducer functions may be applied to all time series, depending on the metric type and the value type of the original time series. Reduction may change the metric type of value type of the time series.Time series data must be aligned in order to perform cross- time series reduction. If crossSeriesReducer is specified, then perSeriesAligner must be specified and not equal ALIGN_NONE and alignmentPeriod must be specified; otherwise, an error is returned. Possible values: ["REDUCE_NONE", "REDUCE_MEAN", "REDUCE_MIN", "REDUCE_MAX", "REDUCE_SUM", "REDUCE_STDDEV", "REDUCE_COUNT", "REDUCE_COUNT_TRUE", "REDUCE_COUNT_FALSE", "REDUCE_FRACTION_TRUE", "REDUCE_PERCENTILE_99", "REDUCE_PERCENTILE_95", "REDUCE_PERCENTILE_50", "REDUCE_PERCENTILE_05"]

conditions.[].conditionThreshold.aggregations.[].groupByFields

Optional

list (string)

The set of fields to preserve when crossSeriesReducer is specified. The groupByFields determine how the time series are partitioned into subsets prior to applying the aggregation function. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The crossSeriesReducer is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains resource.type. Fields not specified in groupByFields are aggregated away. If groupByFields is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If crossSeriesReducer is not defined, this field is ignored.

conditions.[].conditionThreshold.aggregations.[].groupByFields.[]

Optional

string

conditions.[].conditionThreshold.aggregations.[].perSeriesAligner

Optional

string

The approach to be used to align individual time series. Not all alignment functions may be applied to all time series, depending on the metric type and value type of the original time series. Alignment may change the metric type or the value type of the time series.Time series data must be aligned in order to perform cross- time series reduction. If crossSeriesReducer is specified, then perSeriesAligner must be specified and not equal ALIGN_NONE and alignmentPeriod must be specified; otherwise, an error is returned. Possible values: ["ALIGN_NONE", "ALIGN_DELTA", "ALIGN_RATE", "ALIGN_INTERPOLATE", "ALIGN_NEXT_OLDER", "ALIGN_MIN", "ALIGN_MAX", "ALIGN_MEAN", "ALIGN_COUNT", "ALIGN_SUM", "ALIGN_STDDEV", "ALIGN_COUNT_TRUE", "ALIGN_COUNT_FALSE", "ALIGN_FRACTION_TRUE", "ALIGN_PERCENTILE_99", "ALIGN_PERCENTILE_95", "ALIGN_PERCENTILE_50", "ALIGN_PERCENTILE_05", "ALIGN_PERCENT_CHANGE"]

conditions.[].conditionThreshold.comparison

Required*

string

The comparison to apply between the time series (indicated by filter and aggregation) and the threshold (indicated by threshold_value). The comparison is applied on each time series, with the time series on the left-hand side and the threshold on the right-hand side. Only COMPARISON_LT and COMPARISON_GT are supported currently. Possible values: ["COMPARISON_GT", "COMPARISON_GE", "COMPARISON_LT", "COMPARISON_LE", "COMPARISON_EQ", "COMPARISON_NE"]

conditions.[].conditionThreshold.denominatorAggregations

Optional

list (object)

Specifies the alignment of data points in individual time series selected by denominatorFilter as well as how to combine the retrieved time series together (such as when aggregating multiple streams on each resource to a single stream for each resource or when aggregating streams across all members of a group of resources).When computing ratios, the aggregations and denominator_aggregations fields must use the same alignment period and produce time series that have the same periodicity and labels.This field is similar to the one in the MetricService.ListTimeSeries request. It is advisable to use the ListTimeSeries method when debugging this field.

conditions.[].conditionThreshold.denominatorAggregations.[]

Optional

object

conditions.[].conditionThreshold.denominatorAggregations.[].alignmentPeriod

Optional

string

The alignment period for per-time series alignment. If present, alignmentPeriod must be at least 60 seconds. After per-time series alignment, each time series will contain data points only on the period boundaries. If perSeriesAligner is not specified or equals ALIGN_NONE, then this field is ignored. If perSeriesAligner is specified and does not equal ALIGN_NONE, then this field must be defined; otherwise an error is returned.

conditions.[].conditionThreshold.denominatorAggregations.[].crossSeriesReducer

Optional

string

The approach to be used to combine time series. Not all reducer functions may be applied to all time series, depending on the metric type and the value type of the original time series. Reduction may change the metric type of value type of the time series.Time series data must be aligned in order to perform cross- time series reduction. If crossSeriesReducer is specified, then perSeriesAligner must be specified and not equal ALIGN_NONE and alignmentPeriod must be specified; otherwise, an error is returned. Possible values: ["REDUCE_NONE", "REDUCE_MEAN", "REDUCE_MIN", "REDUCE_MAX", "REDUCE_SUM", "REDUCE_STDDEV", "REDUCE_COUNT", "REDUCE_COUNT_TRUE", "REDUCE_COUNT_FALSE", "REDUCE_FRACTION_TRUE", "REDUCE_PERCENTILE_99", "REDUCE_PERCENTILE_95", "REDUCE_PERCENTILE_50", "REDUCE_PERCENTILE_05"]

conditions.[].conditionThreshold.denominatorAggregations.[].groupByFields

Optional

list (string)

The set of fields to preserve when crossSeriesReducer is specified. The groupByFields determine how the time series are partitioned into subsets prior to applying the aggregation function. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The crossSeriesReducer is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains resource.type. Fields not specified in groupByFields are aggregated away. If groupByFields is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If crossSeriesReducer is not defined, this field is ignored.

conditions.[].conditionThreshold.denominatorAggregations.[].groupByFields.[]

Optional

string

conditions.[].conditionThreshold.denominatorAggregations.[].perSeriesAligner

Optional

string

The approach to be used to align individual time series. Not all alignment functions may be applied to all time series, depending on the metric type and value type of the original time series. Alignment may change the metric type or the value type of the time series.Time series data must be aligned in order to perform cross- time series reduction. If crossSeriesReducer is specified, then perSeriesAligner must be specified and not equal ALIGN_NONE and alignmentPeriod must be specified; otherwise, an error is returned. Possible values: ["ALIGN_NONE", "ALIGN_DELTA", "ALIGN_RATE", "ALIGN_INTERPOLATE", "ALIGN_NEXT_OLDER", "ALIGN_MIN", "ALIGN_MAX", "ALIGN_MEAN", "ALIGN_COUNT", "ALIGN_SUM", "ALIGN_STDDEV", "ALIGN_COUNT_TRUE", "ALIGN_COUNT_FALSE", "ALIGN_FRACTION_TRUE", "ALIGN_PERCENTILE_99", "ALIGN_PERCENTILE_95", "ALIGN_PERCENTILE_50", "ALIGN_PERCENTILE_05", "ALIGN_PERCENT_CHANGE"]

conditions.[].conditionThreshold.denominatorFilter

Optional

string

A filter that identifies a time series that should be used as the denominator of a ratio that will be compared with the threshold. If a denominator_filter is specified, the time series specified by the filter field will be used as the numerator.The filter is similar to the one that is specified in the MetricService.ListTimeSeries request (that call is useful to verify the time series that will be retrieved / processed) and must specify the metric type and optionally may contain restrictions on resource type, resource labels, and metric labels. This field may not exceed 2048 Unicode characters in length.

conditions.[].conditionThreshold.duration

Required*

string

The amount of time that a time series must violate the threshold to be considered failing. Currently, only values that are a multiple of a minute--e.g., 0, 60, 120, or 300 seconds--are supported. If an invalid value is given, an error will be returned. When choosing a duration, it is useful to keep in mind the frequency of the underlying time series data (which may also be affected by any alignments specified in the aggregations field); a good duration is long enough so that a single outlier does not generate spurious alerts, but short enough that unhealthy states are detected and alerted on quickly.

conditions.[].conditionThreshold.filter

Optional

string

A filter that identifies which time series should be compared with the threshold.The filter is similar to the one that is specified in the MetricService.ListTimeSeries request (that call is useful to verify the time series that will be retrieved / processed) and must specify the metric type and optionally may contain restrictions on resource type, resource labels, and metric labels. This field may not exceed 2048 Unicode characters in length.

conditions.[].conditionThreshold.thresholdValue

Optional

float

A value against which to compare the time series.

conditions.[].conditionThreshold.trigger

Optional

object

The number/percent of time series for which the comparison must hold in order for the condition to trigger. If unspecified, then the condition will trigger if the comparison is true for any of the time series that have been identified by filter and aggregations, or by the ratio, if denominator_filter and denominator_aggregations are specified.

conditions.[].conditionThreshold.trigger.count

Optional

integer

The absolute number of time series that must fail the predicate for the condition to be triggered.

conditions.[].conditionThreshold.trigger.percent

Optional

float

The percentage of time series that must fail the predicate for the condition to be triggered.

conditions.[].displayName

Required

string

A short name or phrase used to identify the condition in dashboards, notifications, and incidents. To avoid confusion, don't use the same display name for multiple conditions in the same policy.

conditions.[].name

Optional

string

The unique resource name for this condition. Its syntax is: projects/[PROJECT_ID]/alertPolicies/[POLICY_ID]/conditions/[CONDITION_ID] [CONDITION_ID] is assigned by Stackdriver Monitoring when the condition is created as part of a new or updated alerting policy.

displayName

Required

string

A short name or phrase used to identify the policy in dashboards, notifications, and incidents. To avoid confusion, don't use the same display name for multiple policies in the same project. The name is limited to 512 Unicode characters.

documentation

Optional

object

Documentation that is included with notifications and incidents related to this policy. Best practice is for the documentation to include information to help responders understand, mitigate, escalate, and correct the underlying problems detected by the alerting policy. Notification channels that have limited capacity might not show this documentation.

documentation.content

Optional

string

The text of the documentation, interpreted according to mimeType. The content may not exceed 8,192 Unicode characters and may not exceed more than 10,240 bytes when encoded in UTF-8 format, whichever is smaller.

documentation.mimeType

Optional

string

The format of the content field. Presently, only the value "text/markdown" is supported.

enabled

Optional

boolean

Whether or not the policy is enabled. The default is true.

notificationChannels

Optional

list (object)

notificationChannels.[]

Optional

object

Identifies the notification channels to which notifications should be sent when incidents are opened or closed or when new violations occur on an already opened incident.

notificationChannels.[].external

Optional

string

The name of a MonitoringNotificationChannel.

notificationChannels.[].name

Optional

string

Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

notificationChannels.[].namespace

Optional

string

Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/

resourceID

Optional

string

Immutable. Optional. The service-generated name of the resource. Used for acquisition only. Leave unset to create a new resource.

* Field is required when parent field is specified

Status

Schema

  conditions:
  - lastTransitionTime: string
    message: string
    reason: string
    status: string
    type: string
  creationRecord:
  - mutateTime: string
    mutatedBy: string
  name: string
  observedGeneration: integer
Fields
conditions

list (object)

Conditions represent the latest available observation of the resource's current state.

conditions.[]

object

conditions.[].lastTransitionTime

string

Last time the condition transitioned from one status to another.

conditions.[].message

string

Human-readable message indicating details about last transition.

conditions.[].reason

string

Unique, one-word, CamelCase reason for the condition's last transition.

conditions.[].status

string

Status is the status of the condition. Can be True, False, Unknown.

conditions.[].type

string

Type is the type of the condition.

creationRecord

list (object)

A read-only record of the creation of the alerting policy. If provided in a call to create or update, this field will be ignored.

creationRecord.[]

object

creationRecord.[].mutateTime

string

When the change occurred.

creationRecord.[].mutatedBy

string

The email address of the user making the change.

name

string

The unique resource name for this policy. Its syntax is: projects/[PROJECT_ID]/alertPolicies/[ALERT_POLICY_ID]

observedGeneration

integer

ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.

Sample YAML(s)

Instance Performance Alert Policy

  # Copyright 2020 Google LLC
  #
  # Licensed under the Apache License, Version 2.0 (the "License");
  # you may not use this file except in compliance with the License.
  # You may obtain a copy of the License at
  #
  #     http://www.apache.org/licenses/LICENSE-2.0
  #
  # Unless required by applicable law or agreed to in writing, software
  # distributed under the License is distributed on an "AS IS" BASIS,
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  # See the License for the specific language governing permissions and
  # limitations under the License.
  
  apiVersion: monitoring.cnrm.cloud.google.com/v1beta1
  kind: MonitoringAlertPolicy
  metadata:
    labels:
      checking: instance-performance-bug
      oncall-treatment: urgent-meltdown
    name: monitoringalertpolicy-sample-instanceperformance
  spec:
    displayName: Sample Computing Instance Performance Alert Policy
    enabled: true
    notificationChannels:
      - name: monitoringalertpolicy-dep-instanceperformance
    combiner: AND_WITH_MATCHING_RESOURCE
    conditions:
    - displayName: CPU usage is extremely high
      conditionThreshold:
        filter: metric.type="compute.googleapis.com/instance/cpu/utilization" AND resource.type="gce_instance"
        aggregations:
        - perSeriesAligner: ALIGN_MAX
          alignmentPeriod: 60s
          crossSeriesReducer: REDUCE_MEAN
          groupByFields:
          - project
          - resource.label.instance_id
          - resource.label.zone
        comparison: COMPARISON_GT
        thresholdValue: 0.9
        duration: 900s
        trigger:
          count: 1
    - displayName: CPU usage is increasing at a high rate
      conditionThreshold:
        filter: metric.type="compute.googleapis.com/instance/cpu/utilization" AND resource.type="gce_instance"
        aggregations:
        - alignmentPeriod: 900s
          perSeriesAligner: ALIGN_PERCENT_CHANGE
        comparison: COMPARISON_GT
        thresholdValue: 0.5
        duration: 180s
        trigger:
          count: 1
    - displayName: Process 'nginx' is not running
      conditionThreshold:
        filter: select_process_count("has_substring(\"nginx\")", "www") AND resource.type="gce_instance"
        comparison: COMPARISON_LT
        thresholdValue: 1
        duration: 300s
    documentation:
      content: |-
        This sample is an amalgamation of policy samples found at https://cloud.google.com/monitoring/alerts/policies-in-json. It is meant to give an idea of what is possible rather than be a completely realistic alerting policy in and of itself.
  
        Combiner AND_WITH_MATCHING_RESOURCE
        While more general policies will use an OR combiner, triggering an incident when any of their conditions are met, AND combiners only trigger when all of their conditions are met, allowing for specification of very specific circumstances.
        AND_WITH_MATCHING_RESOURCE combiners go one step further and only trigger when all conditions are met for the same resource, in this case, a GCE instance.
  
        Metric-threshold condition
        The first condition in this policy, "CPU usage is extremely high", tests average CPU usage in a group of VMs.
  
        Rate-of-change condition
        The second condition in this policy, "CPU usage is increasing at a high rate" tests if the rate of CPU utilization is increasing rapidly.
  
        Process-health condition
        The third condition in this policy, "Process 'nginx' is not running", tests if there is no process matching the string nginx and running as user www available for more than 5 minutes.
  
        All together, this policy would monitor for a situation where the lack of an 'nginx' process caused a spike in CPU usage in the same instance and elevated CPU usage across all instances in its group.
  ---
  apiVersion: monitoring.cnrm.cloud.google.com/v1beta1
  kind: MonitoringNotificationChannel
  metadata:
    name: monitoringalertpolicy-dep-instanceperformance
  spec:
    type: sms
    labels:
      number: "12025550196"

Network Connectivity Alert Policy

  # Copyright 2020 Google LLC
  #
  # Licensed under the Apache License, Version 2.0 (the "License");
  # you may not use this file except in compliance with the License.
  # You may obtain a copy of the License at
  #
  #     http://www.apache.org/licenses/LICENSE-2.0
  #
  # Unless required by applicable law or agreed to in writing, software
  # distributed under the License is distributed on an "AS IS" BASIS,
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  # See the License for the specific language governing permissions and
  # limitations under the License.
  
  apiVersion: monitoring.cnrm.cloud.google.com/v1beta1
  kind: MonitoringAlertPolicy
  metadata:
    labels:
      checking: website-health
      oncall-treatment: stay-aware
    name: monitoringalertpolicy-sample-networkconnectivity
  spec:
    displayName: Sample Website Aetwork Connectivity Alert Policy
    enabled: true
    notificationChannels:
      - name: monitoringalertpolicy-dep1-networkconnectivity
      - name: monitoringalertpolicy-dep2-networkconnectivity
    combiner: OR
    conditions:
    - displayName: Failure of uptime check_id uptime-check-for-google-cloud-site
      conditionThreshold:
        filter: metric.type="monitoring.googleapis.com/uptime_check/check_passed" AND metric.label.check_id="uptime-check-for-google-cloud-site" AND resource.type="uptime_url"
        aggregations:
        - perSeriesAligner: ALIGN_NEXT_OLDER
          alignmentPeriod: 1200s
          crossSeriesReducer: REDUCE_COUNT_FALSE
          groupByFields:
          - resource.label.*
        comparison: COMPARISON_GT
        thresholdValue: 1
        duration: 600s
        trigger:
          count: 1
    - displayName: SSL Certificate for google-cloud-site expiring soon
      conditionThreshold:
        filter: metric.type="monitoring.googleapis.com/uptime_check/time_until_ssl_cert_expires" AND metric.label.check_id="uptime-check-for-google-cloud-site" AND resource.type="uptime_url"
        aggregations:
        - alignmentPeriod: 1200s
          perSeriesAligner: ALIGN_NEXT_OLDER
          crossSeriesReducer: REDUCE_MEAN
          groupByFields:
          - resource.label.*
        comparison: COMPARISON_LT
        thresholdValue: 15
        duration: 600s
        trigger:
          count: 1
    - displayName: Uptime check running
      conditionAbsent:
        filter: metric.type="monitoring.googleapis.com/uptime_check/check_passed" AND metric.label.check_id="uptime-check-for-google-cloud-site" AND resource.type="uptime_url"
        duration: 3900s
    - displayName: Ratio of HTTP 500s error-response counts to all HTTP response counts
      conditionThreshold:
        filter: metric.label.response_code>="500" AND metric.label.response_code<"600" AND metric.type="appengine.googleapis.com/http/server/response_count" AND resource.type="gae_app"
        aggregations:
        - alignmentPeriod: 300s
          perSeriesAligner: ALIGN_DELTA
          crossSeriesReducer: REDUCE_SUM
          groupByFields:
          - project
          - resource.label.module_id
          - resource.label.version_id
        denominatorFilter: metric.type="appengine.googleapis.com/http/server/response_count" AND resource.type="gae_app"
        denominatorAggregations:
        - alignmentPeriod: 300s
          perSeriesAligner: ALIGN_DELTA
          crossSeriesReducer: REDUCE_SUM
          groupByFields:
          - project
          - resource.label.module_id
          - resource.label.version_id
        comparison: COMPARISON_GT
        thresholdValue: 0.5
        duration: 0s
        trigger:
          count: 1
    documentation:
      content: |-
        This sample is a synthesis of policy samples found at https://cloud.google.com/monitoring/alerts/policies-in-json. It is meant to give an idea of what is possible rather than be a completely realistic alerting policy in and of itself.
  
        Combiner OR
        OR combiner policies will trigger an incident when any of their conditions are met. They should be considered the default for most purposes.
  
        Uptime-check conditions
        The first three conditions in this policy involve an uptime check with the ID 'uptime-check-for-google-cloud-site'.
  
        The first condition, "Failure of uptime check_id uptime-check-for-google-cloud-site", tests if the uptime check fails.
        The second condition, "SSL Certificate for google-cloud-site expiring soon", tests if the SSL certificate on the Google Cloud site will expire in under 15 days.
  
        Metric-absence condition
        The third condition in this policy, "Uptime check running" tests if the aforementioned uptime check is not written to for a period of approximately an hour.
        Note that unlike all the conditions so far, the condition used here is conditionAbsent, because the test is for the lack of a metric.
  
        Metric ratio
        The fourth and last condition in this policy, "Ratio of HTTP 500s error-response counts to all HTTP response counts", tests that 5XX error codes do not make up more than half of all HTTP responses. It targets a different set of metrics through appengine.
        
        All together, this policy would monitor for a situation where any of the above conditions threatened the health of the website.
  ---
  apiVersion: monitoring.cnrm.cloud.google.com/v1beta1
  kind: MonitoringNotificationChannel
  metadata:
    name: monitoringalertpolicy-dep1-networkconnectivity
  spec:
    type: sms
    labels:
      number: "12025550196"
  ---
  apiVersion: monitoring.cnrm.cloud.google.com/v1beta1
  kind: MonitoringNotificationChannel
  metadata:
    name: monitoringalertpolicy-dep2-networkconnectivity
  spec:
    type: email
    labels:
      email_address: dev@example.com