mmv1/products/monitoring/UptimeCheckConfig.yaml (510 lines of code) (raw):
# Copyright 2024 Google Inc.
# 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.
---
name: 'UptimeCheckConfig'
description:
This message configures which resources and services to monitor for
availability.
references:
guides:
'Official Documentation': 'https://cloud.google.com/monitoring/uptime-checks/'
api: 'https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.uptimeCheckConfigs'
docs:
id_format: '{{name}}'
base_url: 'v3/projects/{{project}}/uptimeCheckConfigs'
self_link: 'v3/{{name}}'
update_verb: 'PATCH'
update_mask: true
mutex: 'stackdriver/groups/{{project}}'
import_format:
- '{{project}} {{name}}'
- '{{name}}'
timeouts:
insert_minutes: 20
update_minutes: 20
delete_minutes: 20
custom_code:
encoder: 'templates/terraform/encoders/uptime_check_config.go.tmpl'
constants: 'templates/terraform/constants/monitoring_uptime_check_config.go.tmpl'
custom_delete: 'templates/terraform/custom_delete/monitoring_uptime_check_config.go.tmpl'
custom_import: 'templates/terraform/custom_import/self_link_as_name.tmpl'
error_retry_predicates:
- 'transport_tpg.IsMonitoringConcurrentEditError'
examples:
- name: 'uptime_check_config_http'
primary_resource_id: 'http'
vars:
display_name: 'http-uptime-check'
test_env_vars:
project_id: 'PROJECT_NAME'
- name: 'uptime_check_config_http_password_wo'
primary_resource_id: 'http'
vars:
display_name: 'http-uptime-check'
test_env_vars:
project_id: 'PROJECT_NAME'
- name: 'uptime_check_config_status_code'
primary_resource_id: 'status_code'
vars:
display_name: 'http-uptime-check'
test_env_vars:
project_id: 'PROJECT_NAME'
- name: 'uptime_check_config_https'
primary_resource_id: 'https'
vars:
display_name: 'https-uptime-check'
test_env_vars:
project_id: 'PROJECT_NAME'
- name: 'uptime_check_tcp'
primary_resource_id: 'tcp_group'
vars:
display_name: 'tcp-uptime-check'
group_display_name: 'uptime-check-group'
- name: 'uptime_check_config_synthetic_monitor'
primary_resource_id: 'synthetic_monitor'
vars:
display_name: 'synthetic_monitor'
function_name: 'synthetic_function'
zip_path: 'synthetic-fn-source.zip'
bucket_name: 'gcf-source'
test_env_vars:
project_id: 'PROJECT_NAME'
test_vars_overrides:
'zip_path': '"./test-fixtures/synthetic-fn-source.zip"'
parameters:
properties:
- name: 'name'
type: String
description:
A unique resource name for this UptimeCheckConfig. The format is
`projects/[PROJECT_ID]/uptimeCheckConfigs/[UPTIME_CHECK_ID]`.
output: true
- name: 'uptimeCheckId'
type: String
description: The id of the uptime check
api_name: id
output: true
custom_flatten: 'templates/terraform/custom_flatten/id_from_name.tmpl'
- name: 'displayName'
type: String
description:
A human-friendly name for the uptime check configuration. The display name
should be unique within a Stackdriver Workspace in order to make it easier
to identify; however, uniqueness is not enforced.
required: true
- name: 'period'
type: String
description:
How often, in seconds, the uptime check is performed. Currently, the only
supported values are 60s (1 minute), 300s (5 minutes), 600s (10 minutes),
and 900s (15 minutes). Optional, defaults to 300s.
default_value: "300s"
- name: 'timeout'
type: String
description:
The maximum amount of time to wait for the request to complete (must be
between 1 and 60 seconds). [See the accepted formats](
https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.Duration)
required: true
- name: 'contentMatchers'
type: Array
description:
The expected content on the page the check is run against. Currently, only
the first entry in the list is supported, and other entries will be
ignored. The server will look for an exact match of the string in the page
response's content. This field is optional and should only be specified if
a content match is required.
item_type:
type: NestedObject
properties:
- name: 'content'
type: String
description: String or regex content to match (max 1024 bytes)
required: true
- name: 'matcher'
type: Enum
description:
The type of content matcher that will be applied to the server
output, compared to the content string when the check is run.
default_value: "CONTAINS_STRING"
enum_values:
- 'CONTAINS_STRING'
- 'NOT_CONTAINS_STRING'
- 'MATCHES_REGEX'
- 'NOT_MATCHES_REGEX'
- 'MATCHES_JSON_PATH'
- 'NOT_MATCHES_JSON_PATH'
- name: 'jsonPathMatcher'
type: NestedObject
description:
Information needed to perform a JSONPath content match. Used for
`ContentMatcherOption::MATCHES_JSON_PATH` and
`ContentMatcherOption::NOT_MATCHES_JSON_PATH`.
properties:
- name: 'jsonPath'
type: String
description:
JSONPath within the response output pointing to the expected
`ContentMatcher::content` to match against.
required: true
- name: 'jsonMatcher'
type: Enum
description: Options to perform JSONPath content matching.
default_value: "EXACT_MATCH"
enum_values:
- 'EXACT_MATCH'
- 'REGEX_MATCH'
- name: 'selectedRegions'
type: Array
description:
The list of regions from which the check will be run. Some regions contain
one location, and others contain more than one. If this field is
specified, enough regions to include a minimum of 3 locations must be
provided, or an error message is returned. Not specifying this field will
result in uptime checks running from all regions.
item_type:
type: String
- name: 'logCheckFailures'
type: Boolean
description: Specifies whether to log the results of failed probes to Cloud Logging.
- name: 'checkerType'
type: Enum
description:
The checker type to use for the check. If the monitored resource type is
`servicedirectory_service`, `checker_type` must be set to `VPC_CHECKERS`.
immutable: true
default_from_api: true
enum_values:
- 'STATIC_IP_CHECKERS'
- 'VPC_CHECKERS'
- name: 'userLabels'
type: KeyValuePairs
description:
User-supplied key/value data to be used for organizing and
identifying the `UptimeCheckConfig` objects.
The field can contain up to 64 entries. Each key and value is limited to
63 Unicode characters or 128 bytes, whichever is smaller. Labels and
values can contain only lowercase letters, numerals, underscores, and
dashes. Keys must begin with a letter.
- name: 'httpCheck'
type: NestedObject
description: Contains information needed to make an HTTP or HTTPS check.
properties:
- name: 'requestMethod'
type: Enum
description:
The HTTP request method to use for the check. If set to
`METHOD_UNSPECIFIED` then `request_method` defaults to `GET`.
immutable: true
default_value: "GET"
enum_values:
- 'METHOD_UNSPECIFIED'
- 'GET'
- 'POST'
- name: 'contentType'
type: Enum
description: The content type to use for the check.
enum_values:
- 'TYPE_UNSPECIFIED'
- 'URL_ENCODED'
- 'USER_PROVIDED'
- name: 'customContentType'
type: String
description:
A user provided content type header to use for the check. The invalid
configurations outlined in the `content_type` field apply to
custom_content_type`, as well as the following
1. `content_type` is `URL_ENCODED` and `custom_content_type` is set.
2. `content_type` is `USER_PROVIDED` and `custom_content_type` is not
set.
- name: 'authInfo'
type: NestedObject
description:
The authentication information using username and password.
Optional when creating an HTTP check; defaults to empty.
Do not use with other authentication fields.
at_least_one_of:
- 'http_check.0.auth_info'
- 'http_check.0.port'
- 'http_check.0.headers'
- 'http_check.0.path'
- 'http_check.0.use_ssl'
- 'http_check.0.mask_headers'
properties:
- name: 'password'
type: String
description: The password to authenticate.
exactly_one_of:
- 'password'
- 'password_wo'
sensitive: true
custom_flatten: 'templates/terraform/custom_flatten/uptime_check_http_password.tmpl'
- name: 'passwordWo'
type: String
description: The password to authenticate.
exactly_one_of:
- 'passwordWo'
- 'password'
required_with:
- 'http_check.0.auth_info.0.password_wo_version'
write_only: true
- name: 'passwordWoVersion'
type: String
immutable: true
ignore_read: true
description: The password write-only version.
required_with:
- 'http_check.0.auth_info.0.password_wo'
- name: 'username'
type: String
description: The username to authenticate.
required: true
- name: 'serviceAgentAuthentication'
type: NestedObject
description: The authentication information using the Monitoring Service Agent.
Optional when creating an HTTPS check; defaults to empty.
Do not use with other authentication fields.
properties:
- name: 'type'
type: Enum
description: The type of authentication to use.
enum_values:
- 'SERVICE_AGENT_AUTHENTICATION_TYPE_UNSPECIFIED'
- 'OIDC_TOKEN'
- name: 'port'
type: Integer
description:
The port to the page to run the check against. Will be combined with
`host` (specified within the [`monitored_resource`](#nested_monitored_resource))
and path to construct the full URL. Optional (defaults to 80 without
SSL, or 443 with SSL).
default_from_api: true
at_least_one_of:
- 'http_check.0.auth_info'
- 'http_check.0.port'
- 'http_check.0.headers'
- 'http_check.0.path'
- 'http_check.0.use_ssl'
- 'http_check.0.mask_headers'
- name: 'headers'
type: KeyValuePairs
description:
The list of headers to send as part of the uptime check request. If
two headers have the same key and different values, they should be
entered as a single header, with the value being a comma-separated
list of all the desired values as described in
[RFC 2616 (page 31)](https://www.w3.org/Protocols/rfc2616/rfc2616.txt).
Entering two separate headers with the same key in a Create call will
cause the first to be overwritten by the second. The maximum number
of headers allowed is 100.
default_from_api: true
at_least_one_of:
- 'http_check.0.auth_info'
- 'http_check.0.port'
- 'http_check.0.headers'
- 'http_check.0.path'
- 'http_check.0.use_ssl'
- 'http_check.0.mask_headers'
- name: 'path'
type: String
description:
The path to the page to run the check against. Will be combined with
the host (specified within the MonitoredResource) and port to
construct the full URL. If the provided path does not begin with `/`,
a `/` will be prepended automatically. Optional (defaults to `/`).
at_least_one_of:
- 'http_check.0.auth_info'
- 'http_check.0.port'
- 'http_check.0.headers'
- 'http_check.0.path'
- 'http_check.0.use_ssl'
- 'http_check.0.mask_headers'
diff_suppress_func: 'resourceMonitoringUptimeCheckConfigHttpCheckPathDiffSuppress'
default_value: "/"
- name: 'useSsl'
type: Boolean
description: If true, use HTTPS instead of HTTP to run the check.
at_least_one_of:
- 'http_check.0.auth_info'
- 'http_check.0.port'
- 'http_check.0.headers'
- 'http_check.0.path'
- 'http_check.0.use_ssl'
- 'http_check.0.mask_headers'
- name: 'validateSsl'
type: Boolean
description:
Boolean specifying whether to include SSL certificate validation as a
part of the Uptime check. Only applies to checks where
`monitored_resource` is set to `uptime_url`. If `use_ssl` is `false`, setting
`validate_ssl` to `true` has no effect.
- name: 'maskHeaders'
type: Boolean
description:
Boolean specifying whether to encrypt the header information.
Encryption should be specified for any headers related to
authentication that you do not wish to be seen when retrieving the
configuration. The server will be responsible for encrypting the
headers. On Get/List calls, if `mask_headers` is set to `true` then the
headers will be obscured with `******`.
at_least_one_of:
- 'http_check.0.auth_info'
- 'http_check.0.port'
- 'http_check.0.headers'
- 'http_check.0.path'
- 'http_check.0.use_ssl'
- 'http_check.0.mask_headers'
- name: 'body'
type: String
description:
The request body associated with the HTTP POST request. If `content_type`
is `URL_ENCODED`, the body passed in must be URL-encoded. Users can
provide a `Content-Length` header via the `headers` field or the API will
do so. If the `request_method` is `GET` and `body` is not empty, the API will
return an error. The maximum byte size is 1 megabyte. Note - As with
all bytes fields JSON representations are base64 encoded. e.g.
`foo=bar` in URL-encoded form is `foo%3Dbar` and in base64 encoding is
`Zm9vJTI1M0RiYXI=`.
- name: 'acceptedResponseStatusCodes'
type: Array
description:
If present, the check will only pass if the HTTP response status code
is in this set of status codes. If empty, the HTTP status code will
only pass if the HTTP status code is 200-299.
item_type:
type: NestedObject
properties:
- name: 'statusValue'
type: Integer
description: A status code to accept.
- name: 'statusClass'
type: Enum
description: A class of status codes to accept.
enum_values:
- 'STATUS_CLASS_1XX'
- 'STATUS_CLASS_2XX'
- 'STATUS_CLASS_3XX'
- 'STATUS_CLASS_4XX'
- 'STATUS_CLASS_5XX'
- 'STATUS_CLASS_ANY'
- name: 'pingConfig'
type: NestedObject
description:
Contains information needed to add pings to an HTTP check.
properties:
- name: 'pingsCount'
type: Integer
description:
Number of ICMP pings. A maximum of 3 ICMP pings is currently supported.
required: true
- name: 'tcpCheck'
type: NestedObject
description: Contains information needed to make a TCP check.
properties:
- name: 'port'
type: Integer
description:
The port to the page to run the check against. Will be combined with
host (specified within the `monitored_resource`) to construct the full
URL.
required: true
- name: 'pingConfig'
type: NestedObject
description:
Contains information needed to add pings to a TCP check.
properties:
- name: 'pingsCount'
type: Integer
description:
Number of ICMP pings. A maximum of 3 ICMP pings is currently supported.
required: true
- name: 'resourceGroup'
type: NestedObject
description: The group resource associated with the configuration.
immutable: true
exactly_one_of:
- 'monitored_resource'
- 'resource_group'
- 'synthetic_monitor'
properties:
- name: 'resourceType'
type: Enum
description: The resource type of the group members.
immutable: true
at_least_one_of:
- 'resource_group.0.resource_type'
- 'resource_group.0.group_id'
enum_values:
- 'RESOURCE_TYPE_UNSPECIFIED'
- 'INSTANCE'
- 'AWS_ELB_LOAD_BALANCER'
- name: 'groupId'
type: ResourceRef
description:
The group of resources being monitored. Should be the `name` of a
group
immutable: true
at_least_one_of:
- 'resource_group.0.resource_type'
- 'resource_group.0.group_id'
custom_flatten: 'templates/terraform/custom_flatten/group_id_to_name.tmpl'
custom_expand: 'templates/terraform/custom_expand/resource_from_self_link.go.tmpl'
resource: 'Group'
imports: 'name'
- name: 'monitoredResource'
type: NestedObject
description: |
The [monitored resource]
(https://cloud.google.com/monitoring/api/resources) associated with the
configuration. The following monitored resource types are supported for
uptime checks:
* `aws_ec2_instance`
* `aws_elb_load_balancer`
* `gae_app`
* `gce_instance`
* `k8s_service`
* `servicedirectory_service`
* `uptime_url`
immutable: true
exactly_one_of:
- 'monitored_resource'
- 'resource_group'
- 'synthetic_monitor'
properties:
- name: 'type'
type: String
description:
The monitored resource type. This field must match the type field of a
[`MonitoredResourceDescriptor`](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.monitoredResourceDescriptors#MonitoredResourceDescriptor)
object. For example, the type of a Compute Engine VM instance is
`gce_instance`. For a list of types, see [Monitoring resource types](https://cloud.google.com/monitoring/api/resources)
and [Logging resource types](https://cloud.google.com/logging/docs/api/v2/resource-list).
required: true
immutable: true
- name: 'labels'
type: KeyValuePairs
description:
Values for all of the labels listed in the associated monitored
resource descriptor. For example, Compute Engine VM instances use the
labels `project_id`, `instance_id`, and `zone`.
required: true
immutable: true
diff_suppress_func: 'resourceMonitoringUptimeCheckConfigMonitoredResourceLabelsDiffSuppress'
- name: 'syntheticMonitor'
type: NestedObject
description:
A Synthetic Monitor deployed to a Cloud Functions V2 instance.
immutable: true
exactly_one_of:
- 'monitored_resource'
- 'resource_group'
- 'synthetic_monitor'
properties:
- name: 'cloudFunctionV2'
type: NestedObject
description:
Target a Synthetic Monitor GCFv2 Instance
required: true
immutable: true
exactly_one_of:
- 'cloud_function_v2'
properties:
- name: 'name'
type: String
description:
The fully qualified name of the cloud function resource.
required: true
immutable: true