Kubesense

Check Types

Pick the check type in the first step of the monitor editor. This page lists what each type tests, its settings (the Request step) and what it can assert (the Assertions step).

TypeTargetTests
HTTPURLA web page or API endpoint
TCPHostA port is open (or closed), optionally with TLS and a request/response exchange
DNSDomainName resolution and record contents
SSLHostA TLS certificate's validity and expiry
gRPCHostgRPC health, or a unary call
ICMPHost or IPPing reachability, latency and packet loss
WebSocketURLA WebSocket handshake and message exchange
UDPHost or IPA UDP service replies
Multistep APIInformationalA chain of requests that pass values to each other
Browser testInformationalA user journey in a real browser
MCP serverMCP endpointA Model Context Protocol server answers and lists its tools
Network pathHostThe route to a host: hops, latency, loss and jitter
KubernetesResource nameThe health of a Kubernetes resource

HTTP

SettingDescription
MethodGET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS
HTTP versionHTTP/1.1 or HTTP/2
Valid status codesCodes or ranges that count as success. Default 200-299, e.g. 200, 204, 300-399
HeadersRequest headers
Bodyraw, json, xml, form, multipart (with file parts), graphql (Query, Variables, Operation name) or none
AuthenticationNone, basic, digest, NTLM, bearer, OAuth2 client credentials, OAuth2 password, AWS SigV4, or a signed JWT
Client certificate (mTLS)Certificate and key presented to the server
AdvancedQuery parameters, cookies, Follow redirects (on) and Max redirects (0–10), proxy URL and headers, IP version, certificate revocation (OCSP), self-signed certificates, trace headers and the identification header
Advanced TLSServer name (SNI), CA certificate, skip verification

Assertions: Status code, Response time (ms), Body (raw, JSONPath, XPath or JSON Schema), Header, Body hash (SHA256, SHA1, MD5), Body size (bytes), Certificate (expiry in days, issuer, subject, SAN, TLS version) and JavaScript.

Each request carries a W3C traceparent header, so a run links to its backend trace in KubeSense when the service is traced, and an X-Kubesense-Synthetics header with the monitor id, so you can recognise synthetic traffic in your logs.


TCP

SettingDescription
Port1–65535
Use TLSOpen a TLS session after connecting
ExpectationThe port is open, or closed (passes when the connection is refused)
Send / expect stepsOptional exchange, e.g. send PING\r\n and expect PONG (substring or regex), each with a timeout
Track network hopsMeasure the hop count to the target

Assertions: Connection (established, refused, timeout), Received data, Response time, Network hops, Certificate and JavaScript.


DNS

SettingDescription
Record typeA, AAAA, CNAME, MX, NS, PTR, SOA, SRV, TXT, CAA
TransportUDP, TCP, DNS-over-TLS or DNS-over-HTTPS (with DoH URL and method)
Resolver IP / Resolver portThe resolver to ask. Empty uses the agent's resolvers
Recursion desired, DNSSEC (DO bit)Query flags
Valid rcodesResponse codes that count as success. Default NOERROR
Answer matches / Answer must not matchRegular expressions on the answer

Assertions: Every record, At least one record, Answer count, Authenticated data (with DNSSEC), Response time and JavaScript.


SSL

SettingDescription
ProtocolDirect TLS, or STARTTLS for SMTP, IMAP, POP3 or FTP
PortDefault 443
SNI server nameServer name sent in the handshake
Warn when expiring within (days)Default 30
Critical when expiring within (days)Default 7. Must not be more than the warning days
Check revocation (OCSP), Fail on incomplete chain, Fetch missing intermediates (AIA), Skip chain verificationChain checks
Client certificate (mTLS), CA bundle (PEM)Client certificate, and extra CAs to trust

Assertions: Certificate properties (expiry in days, issuer, subject, SAN, TLS version) and Response time.

When the certificate enters the warning or critical window, the monitor raises an SSL expiry alert and is listed in SSL expiring soon on the Overview; the check still passes. An expired or invalid certificate fails the check.


gRPC

SettingDescription
ModeHealth check (the standard gRPC health service) or Behavior (unary call)
PortDefault 50051
ServiceService name to check or call
Method / Request message (JSON)For a unary call. Upload a descriptor set if the server has no reflection
Metadata, :authority, Use TLSRequest metadata and transport

Assertions: Health status, gRPC status, Response message, Metadata / trailer, Response time, Certificate and JavaScript.


ICMP

SettingDescription
Echo requests1–20, default 3
Payload size (bytes)Default 56
IP versionIPv4 or IPv6
Track network hopsMeasure the hop count

Assertions: Packet loss (%), Packets received, Latency (ms, average, min, max or jitter) and Network hops.

The agent needs the NET_RAW capability (see Locations & Agents).


WebSocket

Target is a ws:// or wss:// URL.

SettingDescription
MessageMessage sent after the handshake (up to 64 KiB)
Headers, Subprotocols, CookiesHandshake options
Basic auth user / password, Client certificate (mTLS)Authentication

Assertions: Received message, Header, Response time, Certificate and JavaScript.


UDP

SettingDescription
PortDefault 53
PayloadText (UTF-8) or Binary (base64)
DatagramThe datagram sent (up to 8 KiB)

Assertions: Received message, Response time and JavaScript.


Multistep API

A chain of steps run in order, where later steps use values extracted from earlier ones — for example, log in, then call an API with the token.

  • Add step adds a step of type HTTP, gRPC, SSL, DNS, TCP, UDP, WebSocket, ICMP, MCP, Wait or Subtest (play another multistep monitor, with overrides). Up to 10 steps by default.
  • Each step has its own settings and Assertions, a Step timeout, Step retries, and execution options: Allow failure, Critical, Exit if succeeded and Always execute.
  • Extract variables takes a value from a step's response (a header, the body with a regex, JSONPath or XPath, the status code, and so on) into a variable used by later steps as {{ NAME }}. Mark it Secure to mask it in results. Extract from script does the same with JavaScript.
  • Share cookies between steps keeps one cookie jar for the whole run.
  • The Run budget in the schedule step limits the whole test (up to 30 minutes).

Browser Test

A user journey in headless Chromium. It needs a browser agent in at least one of the monitor's locations (see Deployment and Locations & Agents).

SettingDescription
Start URLOpened before the first step
DeviceLaptop (large), Tablet, Mobile (small) or Custom (size, pixel ratio, touch, user agent)
OptionsHeaders, cookies, HTTP authentication, blocked requests (URL patterns), proxy, default step timeout, locale, timezone, screenshots, bypass Content-Security-Policy, ignore certificate errors

Steps (up to 50):

GroupSteps
ActionsGo to URL, Click, Type text, Select option, Press key, Hover, Scroll, Drag, Drop, Upload files, Wait, Refresh
AssertionsElement is present, Element content, Element attribute, Page contains text, Page lacks text, Current URL, JavaScript assertion, Assert requests, Assert file download
SpecialExtract variable, Play subtest, HTTP request (API test)
  • Elements are found by CSS selector, or XPath with the xpath= prefix, with up to 5 alternatives per step.
  • Import from recorder loads steps recorded with the browser recorder extension.
  • Test the journey → Run test runs the journey once while you build it.
  • Each run records a screenshot per step, the console, network requests and Web Vitals. See Monitor Details & Runs.
  • Plan about 1 vCPU and 1 GiB on the browser agent per test running at the same time.

MCP Server

Checks a Model Context Protocol server over Streamable HTTP.

SettingDescription
Call typeInitialize only, List tools, or Call a tool (with Tool name and Tool arguments as JSON)
AdvancedProtocol version, per-request timeout, headers, authentication and mTLS

Assertions: Follows the MCP specification, Server capabilities, Tool count, Longest tool name, MCP response, Response time and Certificate. Presets adds a common set in one click.


Network Path

Traces the route to a host, like traceroute, and measures end-to-end latency and loss.

SettingDescription
ProtocolTCP, UDP or ICMP
PortDefault 443
Max TTL1–64, default 30
Traceroute queries / End-to-end queriesProbes per hop (default 3) / end-to-end probes (default 50)
TCP methodSYN or Prefer SACK
Reverse DNSName the routers. Default on

Assertions: Latency, Packet loss, Jitter and Network hops. The run shows a hop table with each router's address, name, round-trip time and loss.

TCP paths run without extra privileges. UDP and ICMP paths, and router names, need networkPath.rawSocket=true on the agent.


Kubernetes

Checks the health of a resource in the cluster where the agent runs. It needs an agent installed with the synthetics-agent chart and k8sChecks=true; the in-cluster agents of the KubeSense chart do not run it.

SettingDescription
CheckPod readiness, Deployment health, StatefulSet health, Node health, PVC bound, Job completion, Ingress, or a custom resource condition
Namespace and labelsWhich resources to check
Min ready replicas / Min ready percent / Min ready endpointsHealth thresholds
Custom resourceAPI group, version, resource (plural), cluster-scoped, Condition type (default Ready) and Expected status (default True). The agent must be allowed to read the resource (k8sCustomResources)

Kubernetes checks have no separate assertions: the check itself passes or fails.


JavaScript Assertions

HTTP, TCP, DNS, gRPC, WebSocket and UDP monitors (and those multistep steps) accept a JavaScript assertion. It passes unless the script throws or returns false:

dd.expect(dd.response.statusCode).to.equal(200);
dd.expect(dd.response.bodyJSON.items.length).to.be.above(0);

dd.response holds the status code, headers, body and timings; dd.variables holds the monitor's variables (secure values masked). Scripts run in a sandbox without network access, with a short CPU limit.