Task · SKT-0089

Model Synthetic Monitoring network check types (ping, DNS, TCP, traceroute)

Description

The sm construct emits only HTTP checks (check_name=http). Grafana Synthetic Monitoring’s network check types are the core of a network-path story: ping emits probe_icmp_duration_seconds{phase=resolve|setup|rtt}, probe_icmp_packets_sent/received_count, rtt min/max/stddev; DNS emits probe_dns_duration_seconds{phase=resolve|connect|request} and answer/authority/additional rrs; TCP emits probe_tls_version_info, probe_ssl_earliest_cert_expiry and friends; traceroute emits probe_traceroute_total_hops, _route_hash and _packet_loss_percent (a 0-1 fraction despite the name) plus one Loki logfmt line per hop (TTL, Hosts, ElapsedTime, LossPercent, Sent, TracerouteID). Source every name from grafana/synthetic-monitoring-agent internal/prober/* and the vendored blackbox_exporter probers, grow signals/sm.md with provenance, and register the matching check type in sm-provision so the SM app’s per-type dashboards light up.

Acceptance Criteria

Definition of Done

Implementation Plan

Implement pinned agent v0.66.1 ping/DNS/TCP/traceroute contracts, preserving HTTP output and legacy snapshot hashes. Add typed YAML/config and optional snapshot type/settings with HTTP canonicalized to legacy omitted form; hash binds every non-HTTP setting. Type-aware provisioner reconciliation/ownership fingerprints reject conflicting or unknown settings. Real fake API and composed emission proofs, sourced inventory comparison and mutation controls. Isolated implementation based on accepted per-probe location candidate, root integration and security review/gates.

Implementation Notes

Pinned source v0.66.1 implemented for ping, DNS A/UDP/53, TCP/TLS and default traceroute. Existing HTTP snapshot hash regression passes unchanged. Actual built provisioner/fake API and registered just dump exercise all four types; 32/32 metric names and label-key sets match sourced catalogue, with missing-phase negative control. Root consistency test failed for constant explicit-IP hash and moving same-certificate expiry; fixed per-target hashes and bounded 90-day validity/60-day renewal with old TLS gauges retired. CodeRabbit completed 6 minor findings: validation wording clarified, timeout contract clarified; duplicate bucket comments already covered by the real updated catalogue (review slice omitted docs). DNS query-hash suggestion rejected against pinned upstream adapter/prober/utils: hash belongs to resolver. Negative-control mutation confirms resolver-hash regression catches the suggested wrong behavior. Final composed gate/CI pending; no live SM API calls.

Final review also reproduced nonzero elapsed time for all-lost traceroute hops. Pinned MTR Avg returns zero without replies; corrected zero duration and integer-millisecond projection, with fail-first regression. Final local composed gate did not pass because unchanged control-dashboard race proof timed out at host load255.01. All ordinary tests, focused races, registered dump and final static checks passed. Awaiting owner CI-first decision; local failure retained.

Owner approved CI-first testing on 2026-10-14. The failed local full gate remains failed evidence. Land the reviewed candidate and require all required CI jobs to pass on its exact commit before closure.

Final independent boundary review passed, including HTTP snapshot hash compatibility and pending/ownership retention. CI-first landing authorized; exact commit CI remains required.

Final Summary

Added sourced ping, DNS, TCP/TLS and traceroute profiles with typed provisioning, compatible legacy HTTP hashes and realistic example declarations. Real provisioner/fake API and registered just dump prove 32 sourced metric families and their label envelopes; mutation controls cover type, units, hash compatibility and resolver identity. Reviews completed and applicable minor findings were fixed. Landed in 0223ed4b97214684f337576c28498be61926ae0f; exact CI 38644699566 passed all 11 required jobs, including race and e2e. Local full-gate timeout remains failed evidence under the owner-approved CI-first exception; local DoD 1 is intentionally unchecked. No live Grafana tenant validation is claimed. Legacy HTTP bucket fidelity remains separately tracked.

References

View the source file on GitHub