SigNoz Cloud - This page is relevant for SigNoz Cloud editions.
Self-Host - This page is relevant for self-hosted SigNoz editions.

Monitor HTTP Endpoints

Overview

When your website, API, or internal service goes down, you want to know before your users do. This guide shows you how to set up lightweight synthetic monitoring for your HTTP endpoints in SigNoz — giving you uptime/ping monitoring, response time tracking, and error detection for any HTTP(S) URL.

What you'll achieve:

  • Periodically check if your HTTP endpoints are reachable and returning expected responses
  • Visualize endpoint health and response times in SigNoz dashboards
  • Set up alerts that notify you when an endpoint goes down
  • Optionally track SSL/TLS certificate expiry

This works by using the OpenTelemetry (OTel) Collector — a lightweight agent that runs alongside your infrastructure. The Collector's HTTP Check Receiver makes periodic HTTP requests to your endpoints on a schedule and sends the results as metrics to SigNoz.

Prerequisites

  • A server or VM to run the OpenTelemetry Collector (this is where the checks run from)
  • Network access from the Collector host to the endpoints you want to monitor

Setup

Step 1: Install the OpenTelemetry Collector

The OpenTelemetry (OTel) Collector is an agent that collects, processes, and exports telemetry data. In this case, it will periodically ping your HTTP endpoints and send the results to SigNoz.

Install the OTel Collector on your server by following the Collector installation guide. The guide covers setup for Docker, Kubernetes, VM, and AWS ECS environments.

Step 2: Add the HTTP Check Receiver

The HTTP Check Receiver is a component that performs synthetic checks — it makes HTTP requests to your endpoints on a schedule and records whether they respond successfully.

Add the following to the receivers section of your OTel Collector configuration file (see where to find your config file):

otel-collector-config.yaml
receivers:
  httpcheck:
    targets:
      - endpoint: https://<your-endpoint>
        method: GET
    collection_interval: 60s
  • <your-endpoint>: The URL you want to monitor (for example, https://api.example.com/health or https://yoursite.com)
  • collection_interval: How often to check. Default is 60s. Use shorter intervals (for example, 30s) for critical endpoints
  • method: The HTTP method to use. GET is most common for health checks

Step 3: Add the SigNoz Exporter (if not already configured)

If you followed the Collector installation guide, the SigNoz exporter is already configured — skip to Step 4.

Otherwise, add the SigNoz OTLP exporter to the exporters section of your config:

otel-collector-config.yaml
exporters:
  otlp:
    endpoint: "ingest.<region>.signoz.cloud:443"
    tls:
      insecure: false
    headers:
      "signoz-ingestion-key": "<your-ingestion-key>"

Step 4: Enable the HTTP Check in the Pipeline

In the service.pipelines.metrics section, add httpcheck to the list of receivers. Pipelines connect receivers, processors, and exporters — learn more in the service pipeline documentation.

otel-collector-config.yaml
service:
  pipelines:
    metrics:
      receivers: [otlp, httpcheck]
      processors: [batch]
      exporters: [otlp]
⚠️ Warning

Append httpcheck to your existing receivers list, do not replace your existing configuration. If you already have other receivers configured, keep them.

Step 5: Restart the Collector

Apply the changes by restarting the OTel Collector. The restart command depends on how you deployed the Collector — refer to the environment-specific instructions in the Collector installation guide.

Validate

After restarting, wait for at least one collection_interval (default: 60 seconds) and then verify the data is flowing:

  1. Go to your SigNoz Cloud dashboard
  2. Navigate to DashboardsNew DashboardNew Panel
  3. In the Query Builder, search for httpcheck in the metric dropdown
  4. You should see metrics like httpcheck.status, httpcheck.duration, and httpcheck.error

If you see these metrics, your HTTP endpoint monitoring is working.

Enable Optional Metrics

By default, the HTTP Check Receiver reports three metrics: httpcheck.status, httpcheck.duration, and httpcheck.error. You can enable additional metrics for deeper monitoring.

SSL/TLS Certificate Expiry

Track when your HTTPS certificates are about to expire — useful for avoiding unexpected downtime from expired certificates:

otel-collector-config.yaml
receivers:
  httpcheck:
    metrics:
      httpcheck.tls.cert_remaining:
        enabled: true
    targets:
      - endpoint: https://yoursite.com
        method: GET
    collection_interval: 3600s

The httpcheck.tls.cert_remaining metric reports the number of seconds until the certificate expires. A negative value means the certificate has already expired. You can set up an alert on this metric to get notified days before expiry.

Response Timing Breakdown

For performance monitoring, enable detailed timing metrics to see where time is spent during the request:

otel-collector-config.yaml
receivers:
  httpcheck:
    metrics:
      httpcheck.dns.lookup.duration:
        enabled: true
      httpcheck.client.connection.duration:
        enabled: true
      httpcheck.tls.handshake.duration:
        enabled: true
      httpcheck.client.request.duration:
        enabled: true
      httpcheck.response.duration:
        enabled: true
    targets:
      - endpoint: https://yoursite.com
        method: GET
    collection_interval: 60s

These metrics help identify whether slow responses are caused by DNS resolution, connection setup, TLS handshake, or server processing.

Monitor Multiple Endpoints

You can add multiple endpoints under the targets list:

otel-collector-config.yaml
receivers:
  httpcheck:
    targets:
      - endpoint: https://api.example.com/health
        method: GET
      - endpoint: https://yoursite.com
        method: GET
      - endpoint: https://internal-service.local:8080/ping
        method: GET
    collection_interval: 60s

Use Different Check Intervals

If some endpoints are more critical than others, create separate receiver instances with different intervals. Use the format httpcheck/<name> for additional instances:

otel-collector-config.yaml
receivers:
  httpcheck/critical:
    targets:
      - endpoint: https://api.example.com/health
        method: GET
    collection_interval: 30s

  httpcheck/standard:
    targets:
      - endpoint: https://blog.example.com
        method: GET
      - endpoint: https://docs.example.com
        method: GET
    collection_interval: 300s

Then include all instances in your pipeline:

otel-collector-config.yaml
service:
  pipelines:
    metrics:
      receivers: [otlp, httpcheck/critical, httpcheck/standard]
      processors: [batch]
      exporters: [otlp]
Info

The receiver name format must use a forward slash: httpcheck/critical. Writing httpcheckcritical (without the slash) causes a configuration error.

Available Metrics Reference

For the full upstream specification, see the HTTP Check Receiver documentation.

Default Metrics (always enabled)

MetricDescriptionUnit
httpcheck.status1 if the check resulted in a status code matching the status class, 0 otherwise1
httpcheck.durationMeasures the duration of the HTTP checkms
httpcheck.errorRecords errors occurring during HTTP check (for example, connection refused, DNS failures, timeouts){error}

Optional Metrics (must be enabled in config)

MetricDescriptionUnit
httpcheck.dns.lookup.durationTime spent performing DNS lookupms
httpcheck.client.connection.durationTime spent establishing TCP connectionms
httpcheck.tls.handshake.durationTime spent performing TLS handshakems
httpcheck.client.request.durationTime spent sending the HTTP requestms
httpcheck.response.durationTime spent receiving the HTTP responsems
httpcheck.response.sizeSize of response bodyBy (bytes)
httpcheck.tls.cert_remainingTime until TLS certificate expires, as specified by NotAfter field in the x.509 certificate. Negative values mean the certificate has already expireds (seconds)
httpcheck.validation.failedNumber of response validations that failed{validation}
httpcheck.validation.passedNumber of response validations that passed{validation}

Key Attributes

Attributes vary by metric. The table below shows all attributes and which metrics they apply to:

AttributeDescriptionApplies To
http.urlFull HTTP request URLAll metrics
http.status_codeHTTP response status codehttpcheck.status
http.methodHTTP request methodhttpcheck.status
http.status_classHTTP response status class (2xx, 4xx, 5xx)httpcheck.status
error.messageError message recorded during checkhttpcheck.error
network.transportOSI transport layer protocolhttpcheck.client.connection.duration
http.tls.issuerCertificate issuerhttpcheck.tls.cert_remaining
http.tls.cnCertificate common name (CN)httpcheck.tls.cert_remaining
http.tls.sanCertificate Subject Alternative Namehttpcheck.tls.cert_remaining
validation.typeType of validation (contains, json_path, size, regex)httpcheck.validation.failed, httpcheck.validation.passed

Create a Dashboard in SigNoz

Once metrics are flowing, create a dashboard to visualize endpoint health:

Step 1: Create a New Dashboard Panel

  1. In SigNoz, go to DashboardsNew Dashboard
  2. Click New Panel and select Time Series as the chart type
Selecting the time series chart type when creating a new dashboard panel in SigNoz
Select Time Series chart type for HTTP monitoring

Step 2: Configure the Query

  1. In the Query Builder, search for httpcheck.status
  2. Add a WHERE clause: http.status_class = 2xx to filter for successful responses
  3. Set Avg By to http.url to see each endpoint separately
Configuring the httpcheck.status metric query with WHERE clause for 2xx status class
Configure the httpcheck.status query with a WHERE clause for 2xx responses

Step 3: Interpret the Chart

The chart shows:

  • Value of 1: Endpoint is healthy (returning 2xx responses)
  • Value of 0: Endpoint is down or returning errors
  • A separate line for each endpoint when grouped by http.url
HTTP endpoint health visualization showing status over time with 1 for healthy and 0 for down
HTTP endpoint health visualization — 1 means healthy, 0 means down

Set Up Alerts

Get notified when an endpoint goes down by creating an alert:

Step 1: Create an Alert from the Dashboard

  1. In your dashboard panel showing endpoint health, click the dropdown menu (⋮)
  2. Select Create Alerts
Creating an alert from the dashboard panel dropdown menu
Create an alert directly from a dashboard panel

Step 2: Configure Alert Conditions

Set the alert to fire when an endpoint stops returning 2xx responses:

Alert configuration page showing conditions for HTTP endpoint monitoring
Alert configuration — fires when an endpoint goes down

Example alert configuration:

Metric: httpcheck.status
WHERE: http.status_class = 2xx
Avg By: http.url

Condition: below the threshold at least once during the last 5 mins
Threshold: 1

This alert fires when any monitored endpoint fails to respond with a 2xx (success) status code even once during a 5-minute window. You can configure the alert to send notifications to Slack, PagerDuty, email, or other notification channels.

Troubleshooting

No httpcheck metrics appear in SigNoz

Symptoms: You configured the receiver but see no httpcheck.* metrics in the Query Builder.

Likely causes and fixes:

  1. Receiver not added to the pipeline — Make sure httpcheck is listed under service.pipelines.metrics.receivers in your config file.
  2. Config file not loaded — Verify you are pointing to the correct config file when starting the Collector. Check the Collector startup logs for configuration errors.
  3. Collector not restarted — Restart the Collector after making config changes.

Connection refused or timeout errors in Collector logs

Symptoms: Collector logs show errors like connection refused or context deadline exceeded for the target endpoints.

Likely causes and fixes:

  1. Network access — Ensure the Collector host can reach the target endpoint. Test with curl <endpoint> from the same machine.
  2. Firewall rules — Check that firewalls and security groups allow outbound traffic from the Collector to the target endpoint.
  3. DNS resolution — If using hostnames, verify DNS resolution works from the Collector host with nslookup <hostname>.

SSL/TLS errors for HTTPS endpoints

Symptoms: Collector logs show TLS handshake errors or certificate-related failures.

Likely causes and fixes:

  1. Self-signed certificates — If the target uses a self-signed certificate, add TLS configuration to skip verification (not recommended for production):
    receivers:
      httpcheck:
        targets:
          - endpoint: https://internal-service.local
            tls:
              insecure_skip_verify: true
    
  2. Expired certificates — The target's certificate may have expired. Verify with openssl s_client -connect <host>:443.

Metrics not reaching SigNoz Cloud

Symptoms: Collector shows successful HTTP checks in debug logs, but metrics don't appear in SigNoz.

Likely causes and fixes:

  1. Incorrect ingestion key — Verify the signoz-ingestion-key header value in your exporter config. Get your key from SigNoz Cloud settings.
  2. Wrong region — Ensure the <region> in the endpoint URL matches your SigNoz Cloud region. See available regions.
  3. Exporter name mismatch — The exporter name under exporters must match what is listed in service.pipelines.metrics.exporters.

Next Steps

Last updated: February 12, 2026

Edit on GitHub