Probes Config
Configs: main | metrics | oauth | probes | rds | servers | surfacer | targets | tlsconfig | 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 probetargets: <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> [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.probes.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># Debug options. Currently only used to enable logging metrics.debug_options: <cloudprober.probes.DebugOptions>
cloudprober.probes.alerting.AlertConf #
# Name of the alert. Default is to use the probe name. If you have multiple # alerts for the same probe, you must specify a name for each alert.name: <string># Condition for the alert. Default is to alert on any failure. # Example: # # Alert if 6 out of 10 probes fail. # condition { # failures: 6 # total: 10 # }condition: <cloudprober.probes.alerting.Condition># How to notify in case of alert.notify: <cloudprober.probes.alerting.NotifyConfig># Dashboard URL template. # Default: http://localhost:9313/status?probe=@probe@dashboard_url_template: <string> playbook_url_template: <string># Default: "Cloudprober alert @alert@ for @target@"summary_template: <string># Default: # Cloudprober alert "@alert@" for "@target@": # Failures: @failures@ out of @total@ probes # Failing since: @since@ # Probe: @probe@ # Dashboard: @dashboard_url@ # Playbook: @playbook_url@ # Condition ID: @condition_id@details_template: <string># How often to repeat notification for the same alert. Default is 1hr. # To disable any kind of notification throttling, set this to 0.repeat_interval_sec: <int32>
cloudprober.probes.alerting.Condition #
failures: <int32> total: <int32>
cloudprober.probes.alerting.Email #
# Email addresses to send the alert to.to: <string># From address in the alert email. # If not set, defaults to the value of smtp_user if smtp_user is set, # otherwise defaults to cloudprober-alert@<hostname>.from: <string># Default: Environment variable SMTP_SERVERsmtp_server: <string># Default: Environment variable SMTP_USERNAMEsmtp_username: <string># Default: Environment variable SMTP_PASSWORDsmtp_password: <string>
cloudprober.probes.alerting.NotifyConfig #
# Command to run when alert is fired. In the command line following fields # are substituted: # @alert@: Alert name # @probe@: Probe name # @target@: Target name, or target and port if port is specified. # @target.label.<label>@: Label <label> value, e.g. target.label.role. # @failures@: Count of failures. # @total@: Out of. # @since@: Time since the alert condition started. # @json@: JSON representation of the alert fields. # # For example, if you want to send an email when an alert is fired, you can # use the following command: # command: "/usr/bin/mail -s 'Alert @alert@ fired for @target@' [email protected]"command: <string># Email notification configuration.email: <cloudprober.probes.alerting.Email># PagerDuty configuration.pager_duty: <cloudprober.probes.alerting.PagerDuty># Slack configuration.slack: <cloudprober.probes.alerting.Slack>
cloudprober.probes.alerting.PagerDuty #
# PagerDuty Routing Key. # The routing key is used to determine which service the alerts are sent to # and is generated with the service. The routing key is found under the # service, when the events v2 integration is enabled, under integrations, # in the pagerduty console. # Note: set either routing_key or routing_key_env_var. routing_key # takes precedence over routing_key_env_var.routing_key: <string># The environment variable that is used to contain the pagerduty routing # key.routing_key_env_var: <string># PagerDuty API URL. # Used to overwrite the default PagerDuty API URL.api_url: <string>
cloudprober.probes.alerting.Slack #
# Webhook URL # The Slack notifications use a webhook URL to send the notifications to # a Slack channel. The webhook URL can be found in the Slack console under # the "Incoming Webhooks" section. # https://api.slack.com/messaging/webhooks # Note: set either webhook_url or webhook_url_env_var. webhook_url # takes precedence over webhook_url_env_var.webhook_url: <string># The environment variable that is used to contain the slack webhook URL.webhook_url_env_var: <string>
cloudprober.probes.dns.ProbeConf #
# Domain to use when making DNS queriesresolved_domain: <string> | default: www.google.com. query_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>
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@ Hostname of the target # @address@ IP address 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>
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> [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> num_conns: <int32> | default: 2 keep_alive: <bool> | default: true# 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 #
protocol: (HTTP|HTTPS): <enum># Relative URL (to append to all targets). Must begin with '/'relative_url: <string># Port for HTTP requests. If not specfied, port is selected in the following # order: # - If port is provided by the targets (e.g. kubernetes endpoint or # service), that port is used. # - 80 for HTTP and 443 for HTTPS.port: <int32># Whether to resolve the target before making the request. If set to false, # we hand over the target and relative_url directly to the golang's HTTP # module, Otherwise, we resolve the target first to an IP address and # make a request using that while passing target name as Host header. # By default we resolve first if it's a discovered resource, e.g., a k8s # endpoint.resolve_first: <bool># Export response (body) count as a metricexport_response_as_metrics: <bool> | default: false method: (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># 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># 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># 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.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 probetargets: <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> [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.probes.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># Debug options. Currently only used to enable logging metrics.debug_options: <cloudprober.probes.DebugOptions>
cloudprober.probes.alerting.AlertConf #
# Name of the alert. Default is to use the probe name. If you have multiple # alerts for the same probe, you must specify a name for each alert.name: <string># Condition for the alert. Default is to alert on any failure. # Example: # # Alert if 6 out of 10 probes fail. # condition { # failures: 6 # total: 10 # }condition: <cloudprober.probes.alerting.Condition># How to notify in case of alert.notify: <cloudprober.probes.alerting.NotifyConfig># Dashboard URL template. # Default: http://localhost:9313/status?probe=@probe@dashboard_url_template: <string> playbook_url_template: <string># Default: "Cloudprober alert @alert@ for @target@"summary_template: <string># Default: # Cloudprober alert "@alert@" for "@target@": # Failures: @failures@ out of @total@ probes # Failing since: @since@ # Probe: @probe@ # Dashboard: @dashboard_url@ # Playbook: @playbook_url@ # Condition ID: @condition_id@details_template: <string># How often to repeat notification for the same alert. Default is 1hr. # To disable any kind of notification throttling, set this to 0.repeat_interval_sec: <int32>
cloudprober.probes.alerting.Condition #
failures: <int32> total: <int32>
cloudprober.probes.alerting.Email #
# Email addresses to send the alert to.to: <string># From address in the alert email. # If not set, defaults to the value of smtp_user if smtp_user is set, # otherwise defaults to cloudprober-alert@<hostname>.from: <string># Default: Environment variable SMTP_SERVERsmtp_server: <string># Default: Environment variable SMTP_USERNAMEsmtp_username: <string># Default: Environment variable SMTP_PASSWORDsmtp_password: <string>
cloudprober.probes.alerting.NotifyConfig #
# Command to run when alert is fired. In the command line following fields # are substituted: # @alert@: Alert name # @probe@: Probe name # @target@: Target name, or target and port if port is specified. # @target.label.<label>@: Label <label> value, e.g. target.label.role. # @failures@: Count of failures. # @total@: Out of. # @since@: Time since the alert condition started. # @json@: JSON representation of the alert fields. # # For example, if you want to send an email when an alert is fired, you can # use the following command: # command: "/usr/bin/mail -s 'Alert @alert@ fired for @target@' [email protected]"command: <string># Email notification configuration.email: <cloudprober.probes.alerting.Email># PagerDuty configuration.pager_duty: <cloudprober.probes.alerting.PagerDuty># Slack configuration.slack: <cloudprober.probes.alerting.Slack>
cloudprober.probes.alerting.PagerDuty #
# PagerDuty Routing Key. # The routing key is used to determine which service the alerts are sent to # and is generated with the service. The routing key is found under the # service, when the events v2 integration is enabled, under integrations, # in the pagerduty console. # Note: set either routing_key or routing_key_env_var. routing_key # takes precedence over routing_key_env_var.routing_key: <string># The environment variable that is used to contain the pagerduty routing # key.routing_key_env_var: <string># PagerDuty API URL. # Used to overwrite the default PagerDuty API URL.api_url: <string>
cloudprober.probes.alerting.Slack #
# Webhook URL # The Slack notifications use a webhook URL to send the notifications to # a Slack channel. The webhook URL can be found in the Slack console under # the "Incoming Webhooks" section. # https://api.slack.com/messaging/webhooks # Note: set either webhook_url or webhook_url_env_var. webhook_url # takes precedence over webhook_url_env_var.webhook_url: <string># The environment variable that is used to contain the slack webhook URL.webhook_url_env_var: <string>
cloudprober.probes.dns.ProbeConf #
# Domain to use when making DNS queriesresolved_domain: <string> | default: www.google.com. query_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>
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@ Hostname of the target # @address@ IP address 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>
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> [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> num_conns: <int32> | default: 2 keep_alive: <bool> | default: true# 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 #
protocol: (HTTP|HTTPS): <enum># Relative URL (to append to all targets). Must begin with '/'relative_url: <string># Port for HTTP requests. If not specfied, port is selected in the following # order: # - If port is provided by the targets (e.g. kubernetes endpoint or # service), that port is used. # - 80 for HTTP and 443 for HTTPS.port: <int32># Whether to resolve the target before making the request. If set to false, # we hand over the target and relative_url directly to the golang's HTTP # module, Otherwise, we resolve the target first to an IP address and # make a request using that while passing target name as Host header. # By default we resolve first if it's a discovered resource, e.g., a k8s # endpoint.resolve_first: <bool># Export response (body) count as a metricexport_response_as_metrics: <bool> | default: false method: (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># 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># 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># 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.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