Observer
Observer Agent

Probe types

Source types the agent supports, with their value semantics and runtime status.

source_typeValue reportedStatus
prometheusscalar from PromQL queryshipped
httpresponse_time_msshipped
tcpconnect_time_msshipped
dnsresolve_time_msshipped
tls_certdays_until_expiryshipped
icmpn/astubbed
grpcn/astubbed
websocketn/astubbed
mtls_httpn/astubbed
databasen/astubbed

Shipped runtimes

Each shipped runtime has a dedicated guide:

Stubbed runtimes

The cloud accepts metric definitions for stubbed source types and stores their source_config. The agent recognises them but reports not_implemented in the reason field on every probe. The metric remains in no_data until the runtime ships.

Source typeWhy stubbed
icmpMost container runtimes need CAP_NET_RAW to open raw sockets. The TCP probe is a better proxy for "is this host reachable" in cloud-native environments.
grpcAdds a @grpc/grpc-js dependency that is not yet justified by validated demand.
websocketSame: adds the ws library for a probe with limited validated demand.
mtls_httpRequires a client-cert secret store. The auth model needs design work before runtime work.
databaseRequires per-driver client libraries and a connection-string secret store.

Common contract

Every source's runtime exports the same interface:

interface ProbeSource<TConfig> {
  validateConfig(config: unknown): null | string;
  execute(config: TConfig, env?: AgentEnv): Promise<ProbeResult>;
}

interface ProbeResult {
  value: number | null;
  timestamp: string;
  status_hint?: "no_data";
  reason?: string;
  metadata?: Record<string, unknown>;
}

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.

Was this page helpful?