Snippets · Sources
Check HTTP endpoints (synthetic availability)
Is the service answering at all, and how fast? The http_check receiver requests each target on an interval and reports httpcheck.status per status class, httpcheck.duration and httpcheck.error.
- Signals
- Metrics
- Category
- Collection
- Source
- HTTP endpoints (probe)
- Components
- batchmemory_limiterotlphttp
- Destination
- OTLP/HTTP endpoint
OpenTelemetry Collector
receivers:
http_check:
collection_interval: 60s
targets:
- endpoint: https://shop.example.ch/healthz
method: GET
- endpoint: https://api.example.ch/readyz
method: GET
processors:
memory_limiter:
check_interval: 1s
limit_percentage: 80
spike_limit_percentage: 25
batch:
timeout: 5s
exporters:
otlphttp:
endpoint: https://your-backend:4318
service:
pipelines:
metrics:
receivers: [http_check]
processors: [memory_limiter, batch]
exporters: [otlphttp]
LinkMesh
Library › Sources › HTTP Check
- Targets
- [{"endpoint":"https://shop.example.ch/healthz"},{"endpoint":"https://api.example.ch/readyz"}]
- HTTP Method
- GET
- Check Interval
- 60s
- Timeout
- 10s
What LinkMesh then pushes to the collector, under receivers:
http_check/input_src_00000501:
collection_interval: 60s
targets:
- endpoint: https://shop.example.ch/healthz
method: GET
timeout: 10s
- endpoint: https://api.example.ch/readyz
method: GET
timeout: 10s
The same, as an API call (see automation recipes):
curl -X POST "$LINKMESH/sources" \
-H "Authorization: Bearer $LMSAT" \
-H "Content-Type: application/json" \
-d '{
"defaultConfig": {
"collection_interval": "60s",
"method": "GET",
"targets": [
{
"endpoint": "https://shop.example.ch/healthz"
},
{
"endpoint": "https://api.example.ch/readyz"
}
],
"timeout": "10s"
},
"name": "HTTP Check",
"receiverType": "http_check"
}'The rest of the collector config above (memory_limiter, batch, otlphttp) is not part of this template: in LinkMesh those are separate sources, processors and destinations on the route.
Generated from LinkMesh's template catalogue by linkmesh-server snippet-render 1.464.3, not written by hand.
Download config.yamlValidated with otelcol-contrib v0.161.0 on 2026-10-26
Complete config files, each checked with the collector's own validate command (otelcol-contrib v0.161.0). Replace https://your-backend:4318 with your own OTLP endpoint before you run it.
The gotcha
A failed check still reports a status, so alert on httpcheck.error, not on a missing series. In our test an unreachable target produced httpcheck.status 0 for every one of the five status classes plus httpcheck.error 1, whose error.message carried the full error text. The receiver was called httpcheck; otelcol-contrib 0.161.0 logs "\"httpcheck\" alias is deprecated; use \"http_check\"", which is the name this config uses.
Manage this across a fleet
LinkMesh manages collector configuration across a fleet from one self-hosted control plane, so a change like this is made once rather than host by host. The first 25 Collectors are free after a no-card registration in the OpenSight Customer Portal (5 without one).
Doing this in LinkMesh: Sources
Related snippets
- Prometheus counters to a delta-only backend (cumulativetodelta)Scrape Prometheus counters and convert them to the delta temporality Dynatrace requires - gauges untouched.
- Receive logs from Fluent Bit and Fluentd (forward)Take logs from existing Fluent Bit or Fluentd agents over the forward protocol, without replacing them first.
- Collect host metrics (CPU, memory, disk, network, processes)CPU, memory, disk, filesystem, network, load and per-process metrics from every host, without a separate node agent.
- Read systemd journal logs (journald)Ship systemd journal entries for the units you choose, at the priority you choose, instead of tailing files that do not exist.