Skip to main content
Each sample a metric reports is one number. Its unit follows from the source_type and, for some types, one source_config field. The API returns it as unit on metrics and on probe tests: ms, %, days, s, B/s, or null for a bare number (a query result in whatever unit the query returns, or a 1/0 state). Set thresholds in the same unit. Three further source types exist on metrics but are not probes. Observer evaluates them itself and they never reach the agent: When a probe gets no value, the metric reports no_data with a reason code instead. See Reason codes.

Per-type guides

Each runtime has a dedicated guide:

Notes on specific types

  • icmp shells out to the system ping. It needs the CAP_NET_RAW capability on the agent host. When the capability or the ping binary is unavailable, the probe reports a privilege/availability reason rather than falling back to TCP. The published container image has no ping, so ICMP needs the release binary or a custom image that adds iputils. See ICMP probes.
  • grpc runs the standard gRPC Health Checking Protocol only. It does not invoke arbitrary methods.
  • websocket measures the handshake, and optionally an application-level round-trip when configured with a send/expect message pair.
  • database runs a single read-only query per tick and reports the scalar result. PostgreSQL and MySQL accept SELECT-only statements; Redis accepts a small read-only command allowlist; MongoDB accepts document-count operations. The connection string is read from an environment variable on the agent host and is never sent to the cloud.
  • host reads the machine the agent runs on (inside its container, when it runs in one). On Linux, memory is used memory from MemAvailable. On macOS, memory is Activity Monitor’s Memory Used: wired, active and compressed pages over physical memory, read from vm_stat and sysctl. Older agents count only free pages as available on macOS, so memory reads close to 100% on a healthy Mac. Network throughput is Linux only; elsewhere it reports no_data with host_metric_unsupported_platform.
  • mtls_http is deprecated. Use the http source with its mTLS fields instead.
Adding a new source typeNew source types require a coordinated agent and cloud release. Contact Observer if you need a type not listed.

Common contract

Every source’s runtime exports the same interface:
ProbeSource
Sources never throw. Network errors, malformed config, missing fields all resolve to { value: null, status_hint: "no_data", reason: "<code>" }. The dispatcher applies the threshold rule only when status_hint is absent. metadata stays on the agent: only the value, status and reason code reach the cloud, and the agent does not log probe error details. To see why a probe failed, reproduce the request from the agent’s host with the protocol’s own tool (curl, openssl s_client, grpcurl, logcli, the database client, ping, nc).