Probes Config
Configs: main | alerting | metrics | oauth | probes | rds | servers | surfacer | targets | tlsconfig | utils | validators
|
cloudprober.probes.AdditionalLabel #
key: <string># Value can either be a static value or can be derived from target's labels. # To get value from target's labels, use target.labels.<target's label key> # as value.value: <string>
cloudprober.probes.DebugOptions #
# Whether to log metrics or not.log_metrics: <bool>
cloudprober.probes.ProbeDef #
# Probe name. It should be unique across all probes.name: <string> type: (PING|HTTP|DNS|EXTERNAL|UDP|UDP_LISTENER|GRPC|TCP|EXTENSION|USER_DEFINED): <enum># Interval between two probe runs in milliseconds. # Only one of "interval" and "inteval_msec" should be defined. # Default interval is 2s.interval_msec: <int32># Interval between two probe runs in string format, e.g. 10s. # Only one of "interval" and "inteval_msec" should be defined. # Default interval is 2s.interval: <string># Timeout for each probe in milliseconds # Only one of "timeout" and "timeout_msec" should be defined. # Default timeout is 1s.timeout_msec: <int32># Timeout for each probe in string format, e.g. 10s. # Only one of "timeout" and "timeout_msec" should be defined. # Default timeout is 1s.timeout: <string># Targets for the probe. Targets are required for all probes except # for external, user_defined, and extension probe types.targets: <cloudprober.targets.TargetsDef># Latency distribution. If specified, latency is stored as a distribution.latency_distribution: <cloudprober.metrics.Dist># Latency unit. Any string that's parseable by time.ParseDuration. # Valid values: "ns", "us" (or "µs"), "ms", "s", "m", "h".latency_unit: <string> | default: us# Latency metric name. You may want to change the latency metric name, if: # you're using latency_distribution for some probes, and regular metric for # other probes, and you want to differentiate between the two. # For example: # probe { # name: "web1_latency" # latency_distribution: {...} # latency_metric_name: "latency_dist" # ... # } # probe { # name: "app1" # ... # }latency_metric_name: <string> | default: latency# Validators for this probe. Validators are run on the data returned by the # probe. See https://cloudprober.org/docs/how-to/validators/ for more info.validator: <cloudprober.validators.Validator># Set the source IP to send packets from, either by providing an IP address # directly, or a network interface.[source_ip <string> | source_interface <string>]: <oneof> ip_version: (IP_VERSION_UNSPECIFIED|IPV4|IPV6): <enum># How often to export stats. Probes usually run at a higher frequency (e.g. # every second); stats from individual probes are aggregated within # cloudprober until exported. In most cases, users don't need to change the # default. # # By default this field is set in the following way: # For all probes except UDP: # stats_export_interval=max(interval, 10s) # For UDP: # stats_export_interval=max(2*max(interval, timeout), 10s)stats_export_interval_msec: <int32># Additional labels to add to the probe results. Label's value can either be # static or can be derived from target's labels. # # Example: # additional_label { # key: "app" # value: "@target.label.app@" # } # (More detailed example at: examples/additional_label/cloudprober.cfg)additional_label: <cloudprober.probes.AdditionalLabel># (Experimental) If set, test is inversed, i.e. we count it as success if # target doesn't respond. This is useful, for example, that your firewall is # working as expected. # # This is currently implemented only by PING and TCP probes. # Note: This field is currently experimental, and may change in future.negative_test: <bool># Alerts configuration. If specified, cloudprober will generate alerts on # probe failures. You can specify multiple alerts. # Example: # alert { # name: "alert1" # condition {...} # notify { # pagerduty { ...} # } # } # alert { # name: "alert2" # notify { ... } # }alert: <cloudprober.alerting.AlertConf> [ping_probe <cloudprober.probes.ping.ProbeConf> | http_probe <cloudprober.probes.http.ProbeConf> | dns_probe <cloudprober.probes.dns.ProbeConf> | external_probe <cloudprober.probes.external.ProbeConf> | udp_probe <cloudprober.probes.udp.ProbeConf> | udp_listener_probe <cloudprober.probes.udplistener.ProbeConf> | grpc_probe <cloudprober.probes.grpc.ProbeConf> | tcp_probe <cloudprober.probes.tcp.ProbeConf> | user_defined_probe <string>]: <oneof># Which machines this probe should run on. If defined, cloudprober will run # this probe only if machine's hostname matches this value. This is useful # for large deployments, where you may want to use the same prober config # everywhere but run this probe only on a subset of machines.run_on: <string># Schedule for the probe. You can use a schedule to specify when a probe # should or should not run. This is useful for running probes only during # business hours. # # You can specify multiple schedules. Probe will not run if any of the # "DISABLE" schedules are active. If both "ENABLE" and "DISABLE" schedules # overlap, "DISABLE" takes precedence. # # For example, to disable a probe during weekends and on Tuesday between 7pm # and 8pm, e.g. for rollouts: # schdule { # type: DISABLE # start_weekday: FRIDAY # start_time: "20:00" # end_weekday: SUNDAY # end_time: "17:00" # timezone: "America/New_York" # } # schdule { # type: DISABLE # start_weekday: TUESDAY # start_time: "19:00" # end_weekday: TUESDAY # end_time: "20:00" # timezone: "America/New_York" # }schedule: <cloudprober.probes.Schedule># Debug options. Currently only used to enable logging metrics.debug_options: <cloudprober.probes.DebugOptions>
cloudprober.probes.Schedule #
type: (ScheduleType_UNSPECIFIED|ENABLE|DISABLE): <enum># Period start weekday. If not specified, it defaults to EVERYDAY.start_weekday: (EVERYDAY|SUNDAY|MONDAY|TUESDAY|WEDNESDAY|THURSDAY|FRIDAY|SATURDAY): <enum># Start time in 24 hour HH:MM format.start_time: <string> | default: 00:00# Period end weekday. If not specified, it defaults to EVERYDAY.end_weekday: (EVERYDAY|SUNDAY|MONDAY|TUESDAY|WEDNESDAY|THURSDAY|FRIDAY|SATURDAY): <enum># End time in 24 hour HH:MM format.end_time: <string> | default: 23:59# Timezone in which the probe should run. If not specified, it defaults to # UTC. Example: "America/New_York"timezone: <string> | default: UTC
cloudprober.probes.dns.ProbeConf #
# Domain to use when making DNS queriesresolved_domain: <string> | default: www.google.com.# DNS Query Typequery_type: (NONE|A|NS|CNAME|SOA|PTR|MX|TXT|RP|AFSDB|SIG|KEY|AAAA|LOC|SRV|NAPTR|KX|CERT|DNAME|APL|DS|SSHFP|IPSECKEY|RRSIG|NSEC|DNSKEY|DHCID|NSEC3|NSEC3PARAM|TLSA|HIP|CDS|CDNSKEY|OPENPGPKEY|TKEY|TSIG|URI|CAA|TA|DLV): <enum># Minimum number of answers expected. Default behavior is to return success # if DNS response status is NOERROR.min_answers: <uint32> | default: 0# Whether to resolve the target (target is DNS server here) before making # the request. If set to false, we hand over the target directly to the DNS # client. Otherwise, we resolve the target first to an IP address. By # default we resolve first if it's a discovered resource, e.g., a k8s # endpoint.resolve_first: <bool># Which DNS protocol is used for resolution.dns_proto: (UDP|TCP|TCP_TLS): <enum># Requests per probe. # Number of DNS requests per probe. Requests are executed concurrently and # each DNS request contributes to probe results. For example, if you run two # requests per probe, "total" counter will be incremented by 2.requests_per_probe: <int32> | default: 1# How long to wait between two requests to the same target. Only relevant # if requests_per_probe is also configured. # # This value should be less than (interval - timeout) / requests_per_probe. # This is to ensure that all requests are executed within one probe interval # and all of them get sufficient time. For example, if probe interval is 2s, # timeout is 1s, and requests_per_probe is 10, requests_interval_msec # should be less than 10ms.requests_interval_msec: <int32> | default: 0
cloudprober.probes.external.ProbeConf #
mode: (ONCE|SERVER): <enum># Command. For ONCE probes, arguments are processed for the following field # substitutions: # @probe@ Name of the probe # @target.name@ or @target@ Hostname of the target # @target.port@ or @port@ Port of the target # @target.ip@ IP address associated with target # @address@ Resolved IP address of the target, in case of # discovered targets, same as @target.ip@. # @target.label.<x>@ Label x of the target # # For example, for target ig-us-central1-a, /tools/recreate_vm -vm @target@ # will get converted to: /tools/recreate_vm -vm ig-us-central1-acommand: <string># Command environment variables. These are passed on to the external probe # process as environment variables.env_var: <cloudprober.probes.external.ProbeConf.EnvVarEntry> options: <cloudprober.probes.external.ProbeConf.Option># Export output as metrics, where output is the output returned by the # external probe process, over stdout for ONCE probes, and through ProbeReply # for SERVER probes. Cloudprober expects variables to be in the following # format in the output: # var1 value1 (for example: total_errors 589)output_as_metrics: <bool> | default: true output_metrics_options: <cloudprober.metrics.payload.OutputMetricsOptions># (Only applicable to ONCE mode). Disable streaming output metrics. By # default, external probe will export output metrics as they are available # on the stdout. If this option is set to true, output metrics will be # exported only after the probe has completed. # New in version 0.13.4. This was true by default in previous versions.disable_streaming_output_metrics: <bool> | default: false
cloudprober.probes.external.ProbeConf.EnvVarEntry #
key: <string> value: <string>
cloudprober.probes.external.ProbeConf.Option #
name: <string> value: <string>
cloudprober.probes.grpc.GenericRequest #
# Protoset contains descriptor source protos generated from the *.proto # files. You can use protoc to generate protoset files: # protoc --proto_path=. --descriptor_set_out=myservice.protoset \ # --include_imports my/custom/server/service.protoprotoset_file: <string># Note first 3 methods are valid only if descriptor source is not set.[list_services <bool> | list_service_methods <string> | describe_service_method <string> | call_service_method <string>]: <oneof># Request data (in JSON format) for the call_service_method request.body: <string>
cloudprober.probes.grpc.ProbeConf #
# Optional oauth config. For GOOGLE_DEFAULT_CREDENTIALS, use: # oauth_config: { bearer_token { gce_service_account: "default" } }oauth_config: <cloudprober.oauth.Config># If alts_config is provided, gRPC client uses ALTS for authentication and # encryption. For default alts configs, use: # alts_config: {}alts_config: <cloudprober.probes.grpc.ProbeConf.ALTSConfig># If TLSConfig is specified, it's used for authentication. # Note that only one of ALTSConfig and TLSConfig can be enabled at a time.tls_config: <cloudprober.tlsconfig.TLSConfig># if insecure_transport is set to true, TLS will not be used.insecure_transport: <bool> method: (ECHO|READ|WRITE|HEALTH_CHECK|GENERIC): <enum># Blob size for ECHO, READ, and WRITE methods.blob_size: <int32> | default: 1024# For HEALTH_CHECK, name of the service to health check.health_check_service: <string># For HEALTH_CHECK, ignore status. By default, HEALTH_CHECK test passes # only if response-status is SERVING. Setting the following option makes # HEALTH_CHECK pass regardless of the response-status.health_check_ignore_status: <bool># Request definition for the GENERIC method.request: <cloudprober.probes.grpc.GenericRequest># Number of connections to use. Default is 2 for ECHO, READ and WRITE # methods for backward compatibility. For HEALTH_CHECK and GENERIC, default # is 1.num_conns: <int32># If connect_timeout is not specified, reuse probe timeout.connect_timeout_msec: <int32># URI scheme allows gRPC to use different resolvers # Example URI scheme: "google-c2p:///" # See https://github.com/grpc/grpc/blob/master/doc/naming.md for more detailsuri_scheme: <string> headers: <cloudprober.probes.grpc.ProbeConf.Header>
cloudprober.probes.grpc.ProbeConf.ALTSConfig #
# If provided, ALTS verifies that peer is using one of the given service # accounts.target_service_account: <string># Handshaker service address. Default is to use the local metadata server. # For most of the ALTS use cases, default address should be okay.handshaker_service_address: <string>
cloudprober.probes.grpc.ProbeConf.Header #
name: <string> value: <string>
cloudprober.probes.http.ProbeConf #
# HTTP request scheme (Corresponding target label: "scheme"). If not set, we # use taget's 'scheme' label if present. # Note: protocol is deprecated, use scheme instead.[protocol: (HTTP|HTTPS) | scheme: (HTTP|HTTPS)]: <oneof># Relative URL (Corresponding target label: "path"). We construct the final # URL like this: # <scheme>://<host>:<port>/<relative_url>. # # Note that the relative_url should start with a '/'.relative_url: <string># Port for HTTP requests (Corresponding target field: port) # Default is to use the scheme specific port, but if this field is not # set and discovered target has a port (e.g., k8s services, ingresses), # we use target's port.port: <int32># Whether to resolve the target before making the request. If set to true, # we resolve the target first to an IP address and make a request using # that while passing target name (or 'host' label if present) as Host # header. # # This behavior is automatic for discovered targets if they have an IP # address associated with them. Usually you don't need to worry about this # field and you can left it unspecified. We'll ty to do the right thing.resolve_first: <bool># Export response (body) count as a metricexport_response_as_metrics: <bool> | default: false# HTTP request methodmethod: (GET|POST|PUT|HEAD|DELETE|PATCH|OPTIONS): <enum># HTTP request headers # It is recommended to use "header" instead of "headers" for new configs. # header { # key: "Authorization" # value: "Bearer {{env "AUTH_TOKEN"}}" # }headers: <cloudprober.probes.http.ProbeConf.Header> header: <cloudprober.probes.http.ProbeConf.HeaderEntry># Request body. This field works similar to the curl's data flag. If there # are multiple "body" fields, we combine their values with a '&' in between. # # Also, we try to guess the content-type header based on the data: # 1) If data appears to be a valid json, we automatically set the # content-type header to "application/json". # 2) If the final data string appears to be a valid query string, we # set content-type to "application/x-www-form-urlencoded". Content type # header can still be overridden using the header field above. # Example: # body: "grant_type=client_credentials" # body: "scope=transferMoney" # body: "clientId=aweseomeClient" # body: "clientSecret=noSecret"body: <string># Request body from file. This field is similar to the body field above, but # value is read from a file. # TODO(manugarg): We should consider providing a way to substitute environment # variables in the file.body_file: <string># Enable HTTP keep-alive. If set to true, underlying connection is reused # for further probes. Default is to close the connection after every request.keep_alive: <bool># OAuth Configoauth_config: <cloudprober.oauth.Config># Disable HTTP2 # Golang HTTP client automatically enables HTTP/2 if server supports it. This # option disables that behavior to enforce HTTP/1.1 for testing purpose.disable_http2: <bool># Disable TLS certificate validation. If set to true, any certificate # presented by the server for any host name will be accepted # Deprecation: This option is now subsumed by the tls_config below. To # disable cert validation use: # tls_config { # disable_cert_validation: true # }disable_cert_validation: <bool># TLS configtls_config: <cloudprober.tlsconfig.TLSConfig># Proxy URL, e.g. http://myproxy:3128proxy_url: <string># HTTP proxy connect headers. These headers are passed on to the CONNECT # requests to the HTTP proxies. Note that CONNECT method is used to fetch # HTTPS URLs via HTTP proxies.proxy_connect_header: <cloudprober.probes.http.ProbeConf.ProxyConnectHeaderEntry># User agent. Default user agent is Go's default user agent.user_agent: <string># Maximum idle connections to keep alivemax_idle_conns: <int32> | default: 256# The maximum amount of redirects the HTTP client will follow. # To disable redirects, use max_redirects: 0.max_redirects: <int32># Add latency breakdown to probe results. This will add latency breakdown # by various stages of the request processing, e.g., DNS resolution, TCP # connection, TLS handshake, etc. You can select stages individually or # specify "ALL_STAGES" to get breakdown for all stages. # # Example: # latency_breakdown: [ ALL_STAGES ] # latency_breakdown: [ DNS_LATENCY, CONNECT_LATENCY, TLS_HANDSHAKE_LATENCY ]latency_breakdown: (NO_BREAKDOWN|ALL_STAGES|DNS_LATENCY|CONNECT_LATENCY|TLS_HANDSHAKE_LATENCY|REQ_WRITE_LATENCY|FIRST_BYTE_LATENCY): <enum># Parse HTTP response as additional metrics. If configured, Cloudprober # will try to extract metrics from HTTP response and export them along with # the default success/total/latency metrics.response_metrics_options: <cloudprober.metrics.payload.OutputMetricsOptions># Interval between targets.interval_between_targets_msec: <int32> | default: 10# Requests per probe. # Number of HTTP requests per probe. Requests are executed concurrently and # each HTTP re contributes to probe results. For example, if you run two # requests per probe, "total" counter will be incremented by 2.requests_per_probe: <int32> | default: 1# How long to wait between two requests to the same target. Only relevant # if requests_per_probe is also configured. # # This value should be less than (interval - timeout) / requests_per_probe. # This is to ensure that all requests are executed within one probe interval # and all of them get sufficient time. For example, if probe interval is 2s, # timeout is 1s, and requests_per_probe is 10, requests_interval_msec # should be less than 10ms.requests_interval_msec: <int32> | default: 0
cloudprober.probes.http.ProbeConf.Header #
name: <string> value: <string>
cloudprober.probes.http.ProbeConf.HeaderEntry #
key: <string> value: <string>
cloudprober.probes.http.ProbeConf.ProxyConnectHeaderEntry #
key: <string> value: <string>
cloudprober.probes.ping.ProbeConf #
# Packets per probepackets_per_probe: <int32> | default: 2# How long to wait between two packets to the same targetpackets_interval_msec: <int32> | default: 25# Resolve targets after these many probesresolve_targets_interval: <int32> | default: 5# Ping payload size in bytes. It cannot be smaller than 8, number of bytes # required for the nanoseconds timestamp.payload_size: <int32> | default: 56# Use datagram socket for ICMP. # This option enables unprivileged pings (that is, you don't require root # privilege to send ICMP packets). Note that most of the Linux distributions # don't allow unprivileged pings by default. To enable unprivileged pings on # some Linux distributions, you may need to run the following command: # # sudo sysctl -w net.ipv4.ping_group_range="0 <large valid group id>" # # net.ipv4.ping_group_range system setting takes two integers that specify # the group id range that is allowed to execute the unprivileged pings. Note # that the same setting (with ipv4 in the path) applies to IPv6 as well. # # Note: This option is not supported on Windows and is automatically # disabled there.use_datagram_socket: <bool> | default: true# Disable integrity checks. To detect data courruption in the network, we # craft the outgoing ICMP packet payload in a certain format and verify that # the reply payload matches the same format.disable_integrity_check: <bool> | default: false# Do not allow OS-level fragmentation, only works on Linux systems.disable_fragmentation: <bool> | default: false
cloudprober.probes.tcp.ProbeConf #
# Port for TCP requests. If not specfied, and port is provided by the # targets (e.g. kubernetes endpoint or service), that port is used.port: <int32># Whether to resolve the target before making the request. If set to false, # we hand over the target golang's net.Dial module, Otherwise, we resolve # the target first to an IP address and make a request using that. By # default we resolve first if it's a discovered resource, e.g., a k8s # endpoint.resolve_first: <bool># Interval between targets.interval_between_targets_msec: <int32> | default: 10
cloudprober.probes.udp.ProbeConf #
# Port to send UDP Ping to (UDP Echo). If running with the UDP server that # comes with cloudprober, it should be same as # ProberConfig.udp_echo_server_port.port: <int32> | default: 31122# Number of sending side ports to use.num_tx_ports: <int32> | default: 16# message max to account for MTU.max_length: <int32> | default: 1300# Payload sizepayload_size: <int32># Changes the exported monitoring streams to be per port: # 1. Changes the streams names to total-per-port, success-per-port etc. # 2. Adds src_port and dst_port as stream labels. # Note that the field name is experimental and may change in the future.export_metrics_by_port: <bool> | default: false# Whether to use all transmit ports per probe, per target. # Default is to probe each target once per probe and round-robin through the # source ports. # Setting this field to true changes the behavior to send traffic from all # ports to all targets in each probe. # For example, if num_tx_ports is set to 16, in every probe cycle, we'll send # 16 packets to every target (1 per tx port). # Note that setting this field to true will increase the probe traffic.use_all_tx_ports_per_probe: <bool> | default: false# maxTargets is the maximum number of targets supported by this probe type. # If there are more targets, they are pruned from the list to bring targets # list under maxTargets. A large number of targets has impact on resource # consumption.max_targets: <int32> | default: 500
cloudprober.probes.udplistener.ProbeConf #
# Port to listen.port: <int32> | default: 32212 type: (INVALID|ECHO|DISCARD): <enum># Number of packets sent in a single probe.packets_per_probe: <int32> | default: 1
cloudprober.probes.AdditionalLabel #
key: <string># Value can either be a static value or can be derived from target's labels. # To get value from target's labels, use target.labels.<target's label key> # as value.value: <string>
cloudprober.probes.DebugOptions #
# Whether to log metrics or not.log_metrics: <bool>
cloudprober.probes.ProbeDef #
# Probe name. It should be unique across all probes.name: <string> type: (PING|HTTP|DNS|EXTERNAL|UDP|UDP_LISTENER|GRPC|TCP|EXTENSION|USER_DEFINED): <enum># Interval between two probe runs in milliseconds. # Only one of "interval" and "inteval_msec" should be defined. # Default interval is 2s.interval_msec: <int32># Interval between two probe runs in string format, e.g. 10s. # Only one of "interval" and "inteval_msec" should be defined. # Default interval is 2s.interval: <string># Timeout for each probe in milliseconds # Only one of "timeout" and "timeout_msec" should be defined. # Default timeout is 1s.timeout_msec: <int32># Timeout for each probe in string format, e.g. 10s. # Only one of "timeout" and "timeout_msec" should be defined. # Default timeout is 1s.timeout: <string># Targets for the probe. Targets are required for all probes except # for external, user_defined, and extension probe types.targets: <cloudprober.targets.TargetsDef># Latency distribution. If specified, latency is stored as a distribution.latency_distribution: <cloudprober.metrics.Dist># Latency unit. Any string that's parseable by time.ParseDuration. # Valid values: "ns", "us" (or "µs"), "ms", "s", "m", "h".latency_unit: <string> | default: us# Latency metric name. You may want to change the latency metric name, if: # you're using latency_distribution for some probes, and regular metric for # other probes, and you want to differentiate between the two. # For example: # probe { # name: "web1_latency" # latency_distribution: {...} # latency_metric_name: "latency_dist" # ... # } # probe { # name: "app1" # ... # }latency_metric_name: <string> | default: latency# Validators for this probe. Validators are run on the data returned by the # probe. See https://cloudprober.org/docs/how-to/validators/ for more info.validator: <cloudprober.validators.Validator># Set the source IP to send packets from, either by providing an IP address # directly, or a network interface.[source_ip <string> | source_interface <string>]: <oneof> ip_version: (IP_VERSION_UNSPECIFIED|IPV4|IPV6): <enum># How often to export stats. Probes usually run at a higher frequency (e.g. # every second); stats from individual probes are aggregated within # cloudprober until exported. In most cases, users don't need to change the # default. # # By default this field is set in the following way: # For all probes except UDP: # stats_export_interval=max(interval, 10s) # For UDP: # stats_export_interval=max(2*max(interval, timeout), 10s)stats_export_interval_msec: <int32># Additional labels to add to the probe results. Label's value can either be # static or can be derived from target's labels. # # Example: # additional_label { # key: "app" # value: "@target.label.app@" # } # (More detailed example at: examples/additional_label/cloudprober.cfg)additional_label: <cloudprober.probes.AdditionalLabel># (Experimental) If set, test is inversed, i.e. we count it as success if # target doesn't respond. This is useful, for example, that your firewall is # working as expected. # # This is currently implemented only by PING and TCP probes. # Note: This field is currently experimental, and may change in future.negative_test: <bool># Alerts configuration. If specified, cloudprober will generate alerts on # probe failures. You can specify multiple alerts. # Example: # alert { # name: "alert1" # condition {...} # notify { # pagerduty { ...} # } # } # alert { # name: "alert2" # notify { ... } # }alert: <cloudprober.alerting.AlertConf> [ping_probe <cloudprober.probes.ping.ProbeConf> | http_probe <cloudprober.probes.http.ProbeConf> | dns_probe <cloudprober.probes.dns.ProbeConf> | external_probe <cloudprober.probes.external.ProbeConf> | udp_probe <cloudprober.probes.udp.ProbeConf> | udp_listener_probe <cloudprober.probes.udplistener.ProbeConf> | grpc_probe <cloudprober.probes.grpc.ProbeConf> | tcp_probe <cloudprober.probes.tcp.ProbeConf> | user_defined_probe <string>]: <oneof># Which machines this probe should run on. If defined, cloudprober will run # this probe only if machine's hostname matches this value. This is useful # for large deployments, where you may want to use the same prober config # everywhere but run this probe only on a subset of machines.run_on: <string># Schedule for the probe. You can use a schedule to specify when a probe # should or should not run. This is useful for running probes only during # business hours. # # You can specify multiple schedules. Probe will not run if any of the # "DISABLE" schedules are active. If both "ENABLE" and "DISABLE" schedules # overlap, "DISABLE" takes precedence. # # For example, to disable a probe during weekends and on Tuesday between 7pm # and 8pm, e.g. for rollouts: # schdule { # type: DISABLE # start_weekday: FRIDAY # start_time: "20:00" # end_weekday: SUNDAY # end_time: "17:00" # timezone: "America/New_York" # } # schdule { # type: DISABLE # start_weekday: TUESDAY # start_time: "19:00" # end_weekday: TUESDAY # end_time: "20:00" # timezone: "America/New_York" # }schedule: <cloudprober.probes.Schedule># Debug options. Currently only used to enable logging metrics.debug_options: <cloudprober.probes.DebugOptions>
cloudprober.probes.Schedule #
type: (ScheduleType_UNSPECIFIED|ENABLE|DISABLE): <enum># Period start weekday. If not specified, it defaults to EVERYDAY.start_weekday: (EVERYDAY|SUNDAY|MONDAY|TUESDAY|WEDNESDAY|THURSDAY|FRIDAY|SATURDAY): <enum># Start time in 24 hour HH:MM format.start_time: <string> | default: 00:00# Period end weekday. If not specified, it defaults to EVERYDAY.end_weekday: (EVERYDAY|SUNDAY|MONDAY|TUESDAY|WEDNESDAY|THURSDAY|FRIDAY|SATURDAY): <enum># End time in 24 hour HH:MM format.end_time: <string> | default: 23:59# Timezone in which the probe should run. If not specified, it defaults to # UTC. Example: "America/New_York"timezone: <string> | default: UTC
cloudprober.probes.dns.ProbeConf #
# Domain to use when making DNS queriesresolved_domain: <string> | default: www.google.com.# DNS Query Typequery_type: (NONE|A|NS|CNAME|SOA|PTR|MX|TXT|RP|AFSDB|SIG|KEY|AAAA|LOC|SRV|NAPTR|KX|CERT|DNAME|APL|DS|SSHFP|IPSECKEY|RRSIG|NSEC|DNSKEY|DHCID|NSEC3|NSEC3PARAM|TLSA|HIP|CDS|CDNSKEY|OPENPGPKEY|TKEY|TSIG|URI|CAA|TA|DLV): <enum># Minimum number of answers expected. Default behavior is to return success # if DNS response status is NOERROR.min_answers: <uint32> | default: 0# Whether to resolve the target (target is DNS server here) before making # the request. If set to false, we hand over the target directly to the DNS # client. Otherwise, we resolve the target first to an IP address. By # default we resolve first if it's a discovered resource, e.g., a k8s # endpoint.resolve_first: <bool># Which DNS protocol is used for resolution.dns_proto: (UDP|TCP|TCP_TLS): <enum># Requests per probe. # Number of DNS requests per probe. Requests are executed concurrently and # each DNS request contributes to probe results. For example, if you run two # requests per probe, "total" counter will be incremented by 2.requests_per_probe: <int32> | default: 1# How long to wait between two requests to the same target. Only relevant # if requests_per_probe is also configured. # # This value should be less than (interval - timeout) / requests_per_probe. # This is to ensure that all requests are executed within one probe interval # and all of them get sufficient time. For example, if probe interval is 2s, # timeout is 1s, and requests_per_probe is 10, requests_interval_msec # should be less than 10ms.requests_interval_msec: <int32> | default: 0
cloudprober.probes.external.ProbeConf #
mode: (ONCE|SERVER): <enum># Command. For ONCE probes, arguments are processed for the following field # substitutions: # @probe@ Name of the probe # @target.name@ or @target@ Hostname of the target # @target.port@ or @port@ Port of the target # @target.ip@ IP address associated with target # @address@ Resolved IP address of the target, in case of # discovered targets, same as @target.ip@. # @target.label.<x>@ Label x of the target # # For example, for target ig-us-central1-a, /tools/recreate_vm -vm @target@ # will get converted to: /tools/recreate_vm -vm ig-us-central1-acommand: <string># Command environment variables. These are passed on to the external probe # process as environment variables.env_var: <cloudprober.probes.external.ProbeConf.EnvVarEntry> options: <cloudprober.probes.external.ProbeConf.Option># Export output as metrics, where output is the output returned by the # external probe process, over stdout for ONCE probes, and through ProbeReply # for SERVER probes. Cloudprober expects variables to be in the following # format in the output: # var1 value1 (for example: total_errors 589)output_as_metrics: <bool> | default: true output_metrics_options: <cloudprober.metrics.payload.OutputMetricsOptions># (Only applicable to ONCE mode). Disable streaming output metrics. By # default, external probe will export output metrics as they are available # on the stdout. If this option is set to true, output metrics will be # exported only after the probe has completed. # New in version 0.13.4. This was true by default in previous versions.disable_streaming_output_metrics: <bool> | default: false
cloudprober.probes.external.ProbeConf.EnvVarEntry #
key: <string> value: <string>
cloudprober.probes.external.ProbeConf.Option #
name: <string> value: <string>
cloudprober.probes.grpc.GenericRequest #
# Protoset contains descriptor source protos generated from the *.proto # files. You can use protoc to generate protoset files: # protoc --proto_path=. --descriptor_set_out=myservice.protoset \ # --include_imports my/custom/server/service.protoprotoset_file: <string># Note first 3 methods are valid only if descriptor source is not set.[list_services <bool> | list_service_methods <string> | describe_service_method <string> | call_service_method <string>]: <oneof># Request data (in JSON format) for the call_service_method request.body: <string>
cloudprober.probes.grpc.ProbeConf #
# Optional oauth config. For GOOGLE_DEFAULT_CREDENTIALS, use: # oauth_config: { bearer_token { gce_service_account: "default" } }oauth_config: <cloudprober.oauth.Config># If alts_config is provided, gRPC client uses ALTS for authentication and # encryption. For default alts configs, use: # alts_config: {}alts_config: <cloudprober.probes.grpc.ProbeConf.ALTSConfig># If TLSConfig is specified, it's used for authentication. # Note that only one of ALTSConfig and TLSConfig can be enabled at a time.tls_config: <cloudprober.tlsconfig.TLSConfig># if insecure_transport is set to true, TLS will not be used.insecure_transport: <bool> method: (ECHO|READ|WRITE|HEALTH_CHECK|GENERIC): <enum># Blob size for ECHO, READ, and WRITE methods.blob_size: <int32> | default: 1024# For HEALTH_CHECK, name of the service to health check.health_check_service: <string># For HEALTH_CHECK, ignore status. By default, HEALTH_CHECK test passes # only if response-status is SERVING. Setting the following option makes # HEALTH_CHECK pass regardless of the response-status.health_check_ignore_status: <bool># Request definition for the GENERIC method.request: <cloudprober.probes.grpc.GenericRequest># Number of connections to use. Default is 2 for ECHO, READ and WRITE # methods for backward compatibility. For HEALTH_CHECK and GENERIC, default # is 1.num_conns: <int32># If connect_timeout is not specified, reuse probe timeout.connect_timeout_msec: <int32># URI scheme allows gRPC to use different resolvers # Example URI scheme: "google-c2p:///" # See https://github.com/grpc/grpc/blob/master/doc/naming.md for more detailsuri_scheme: <string> headers: <cloudprober.probes.grpc.ProbeConf.Header>
cloudprober.probes.grpc.ProbeConf.ALTSConfig #
# If provided, ALTS verifies that peer is using one of the given service # accounts.target_service_account: <string># Handshaker service address. Default is to use the local metadata server. # For most of the ALTS use cases, default address should be okay.handshaker_service_address: <string>
cloudprober.probes.grpc.ProbeConf.Header #
name: <string> value: <string>
cloudprober.probes.http.ProbeConf #
# HTTP request scheme (Corresponding target label: "scheme"). If not set, we # use taget's 'scheme' label if present. # Note: protocol is deprecated, use scheme instead.[protocol: (HTTP|HTTPS) | scheme: (HTTP|HTTPS)]: <oneof># Relative URL (Corresponding target label: "path"). We construct the final # URL like this: # <scheme>://<host>:<port>/<relative_url>. # # Note that the relative_url should start with a '/'.relative_url: <string># Port for HTTP requests (Corresponding target field: port) # Default is to use the scheme specific port, but if this field is not # set and discovered target has a port (e.g., k8s services, ingresses), # we use target's port.port: <int32># Whether to resolve the target before making the request. If set to true, # we resolve the target first to an IP address and make a request using # that while passing target name (or 'host' label if present) as Host # header. # # This behavior is automatic for discovered targets if they have an IP # address associated with them. Usually you don't need to worry about this # field and you can left it unspecified. We'll ty to do the right thing.resolve_first: <bool># Export response (body) count as a metricexport_response_as_metrics: <bool> | default: false# HTTP request methodmethod: (GET|POST|PUT|HEAD|DELETE|PATCH|OPTIONS): <enum># HTTP request headers # It is recommended to use "header" instead of "headers" for new configs. # header { # key: "Authorization" # value: "Bearer {{env "AUTH_TOKEN"}}" # }headers: <cloudprober.probes.http.ProbeConf.Header> header: <cloudprober.probes.http.ProbeConf.HeaderEntry># Request body. This field works similar to the curl's data flag. If there # are multiple "body" fields, we combine their values with a '&' in between. # # Also, we try to guess the content-type header based on the data: # 1) If data appears to be a valid json, we automatically set the # content-type header to "application/json". # 2) If the final data string appears to be a valid query string, we # set content-type to "application/x-www-form-urlencoded". Content type # header can still be overridden using the header field above. # Example: # body: "grant_type=client_credentials" # body: "scope=transferMoney" # body: "clientId=aweseomeClient" # body: "clientSecret=noSecret"body: <string># Request body from file. This field is similar to the body field above, but # value is read from a file. # TODO(manugarg): We should consider providing a way to substitute environment # variables in the file.body_file: <string># Enable HTTP keep-alive. If set to true, underlying connection is reused # for further probes. Default is to close the connection after every request.keep_alive: <bool># OAuth Configoauth_config: <cloudprober.oauth.Config># Disable HTTP2 # Golang HTTP client automatically enables HTTP/2 if server supports it. This # option disables that behavior to enforce HTTP/1.1 for testing purpose.disable_http2: <bool># Disable TLS certificate validation. If set to true, any certificate # presented by the server for any host name will be accepted # Deprecation: This option is now subsumed by the tls_config below. To # disable cert validation use: # tls_config { # disable_cert_validation: true # }disable_cert_validation: <bool># TLS configtls_config: <cloudprober.tlsconfig.TLSConfig># Proxy URL, e.g. http://myproxy:3128proxy_url: <string># HTTP proxy connect headers. These headers are passed on to the CONNECT # requests to the HTTP proxies. Note that CONNECT method is used to fetch # HTTPS URLs via HTTP proxies.proxy_connect_header: <cloudprober.probes.http.ProbeConf.ProxyConnectHeaderEntry># User agent. Default user agent is Go's default user agent.user_agent: <string># Maximum idle connections to keep alivemax_idle_conns: <int32> | default: 256# The maximum amount of redirects the HTTP client will follow. # To disable redirects, use max_redirects: 0.max_redirects: <int32># Add latency breakdown to probe results. This will add latency breakdown # by various stages of the request processing, e.g., DNS resolution, TCP # connection, TLS handshake, etc. You can select stages individually or # specify "ALL_STAGES" to get breakdown for all stages. # # Example: # latency_breakdown: [ ALL_STAGES ] # latency_breakdown: [ DNS_LATENCY, CONNECT_LATENCY, TLS_HANDSHAKE_LATENCY ]latency_breakdown: (NO_BREAKDOWN|ALL_STAGES|DNS_LATENCY|CONNECT_LATENCY|TLS_HANDSHAKE_LATENCY|REQ_WRITE_LATENCY|FIRST_BYTE_LATENCY): <enum># Parse HTTP response as additional metrics. If configured, Cloudprober # will try to extract metrics from HTTP response and export them along with # the default success/total/latency metrics.response_metrics_options: <cloudprober.metrics.payload.OutputMetricsOptions># Interval between targets.interval_between_targets_msec: <int32> | default: 10# Requests per probe. # Number of HTTP requests per probe. Requests are executed concurrently and # each HTTP re contributes to probe results. For example, if you run two # requests per probe, "total" counter will be incremented by 2.requests_per_probe: <int32> | default: 1# How long to wait between two requests to the same target. Only relevant # if requests_per_probe is also configured. # # This value should be less than (interval - timeout) / requests_per_probe. # This is to ensure that all requests are executed within one probe interval # and all of them get sufficient time. For example, if probe interval is 2s, # timeout is 1s, and requests_per_probe is 10, requests_interval_msec # should be less than 10ms.requests_interval_msec: <int32> | default: 0
cloudprober.probes.http.ProbeConf.Header #
name: <string> value: <string>
cloudprober.probes.http.ProbeConf.HeaderEntry #
key: <string> value: <string>
cloudprober.probes.http.ProbeConf.ProxyConnectHeaderEntry #
key: <string> value: <string>
cloudprober.probes.ping.ProbeConf #
# Packets per probepackets_per_probe: <int32> | default: 2# How long to wait between two packets to the same targetpackets_interval_msec: <int32> | default: 25# Resolve targets after these many probesresolve_targets_interval: <int32> | default: 5# Ping payload size in bytes. It cannot be smaller than 8, number of bytes # required for the nanoseconds timestamp.payload_size: <int32> | default: 56# Use datagram socket for ICMP. # This option enables unprivileged pings (that is, you don't require root # privilege to send ICMP packets). Note that most of the Linux distributions # don't allow unprivileged pings by default. To enable unprivileged pings on # some Linux distributions, you may need to run the following command: # # sudo sysctl -w net.ipv4.ping_group_range="0 <large valid group id>" # # net.ipv4.ping_group_range system setting takes two integers that specify # the group id range that is allowed to execute the unprivileged pings. Note # that the same setting (with ipv4 in the path) applies to IPv6 as well. # # Note: This option is not supported on Windows and is automatically # disabled there.use_datagram_socket: <bool> | default: true# Disable integrity checks. To detect data courruption in the network, we # craft the outgoing ICMP packet payload in a certain format and verify that # the reply payload matches the same format.disable_integrity_check: <bool> | default: false# Do not allow OS-level fragmentation, only works on Linux systems.disable_fragmentation: <bool> | default: false
cloudprober.probes.tcp.ProbeConf #
# Port for TCP requests. If not specfied, and port is provided by the # targets (e.g. kubernetes endpoint or service), that port is used.port: <int32># Whether to resolve the target before making the request. If set to false, # we hand over the target golang's net.Dial module, Otherwise, we resolve # the target first to an IP address and make a request using that. By # default we resolve first if it's a discovered resource, e.g., a k8s # endpoint.resolve_first: <bool># Interval between targets.interval_between_targets_msec: <int32> | default: 10
cloudprober.probes.udp.ProbeConf #
# Port to send UDP Ping to (UDP Echo). If running with the UDP server that # comes with cloudprober, it should be same as # ProberConfig.udp_echo_server_port.port: <int32> | default: 31122# Number of sending side ports to use.num_tx_ports: <int32> | default: 16# message max to account for MTU.max_length: <int32> | default: 1300# Payload sizepayload_size: <int32># Changes the exported monitoring streams to be per port: # 1. Changes the streams names to total-per-port, success-per-port etc. # 2. Adds src_port and dst_port as stream labels. # Note that the field name is experimental and may change in the future.export_metrics_by_port: <bool> | default: false# Whether to use all transmit ports per probe, per target. # Default is to probe each target once per probe and round-robin through the # source ports. # Setting this field to true changes the behavior to send traffic from all # ports to all targets in each probe. # For example, if num_tx_ports is set to 16, in every probe cycle, we'll send # 16 packets to every target (1 per tx port). # Note that setting this field to true will increase the probe traffic.use_all_tx_ports_per_probe: <bool> | default: false# maxTargets is the maximum number of targets supported by this probe type. # If there are more targets, they are pruned from the list to bring targets # list under maxTargets. A large number of targets has impact on resource # consumption.max_targets: <int32> | default: 500
cloudprober.probes.udplistener.ProbeConf #
# Port to listen.port: <int32> | default: 32212 type: (INVALID|ECHO|DISCARD): <enum># Number of packets sent in a single probe.packets_per_probe: <int32> | default: 1