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

Collect Cert-Manager Metrics with OpenTelemetry

Overview

cert-manager is a Kubernetes add-on that manages TLS certificate issuance and renewal. It exposes Prometheus metrics on port 9402 across three components: the controller, the webhook, and the cainjector.

Prerequisites

Setup

Install cert-manager in your cluster and configure the OpenTelemetry Collector to scrape cert-manager Prometheus metrics.

Step 1: Install cert-manager with Prometheus metrics enabled

If cert-manager isn't installed, add the Jetstack Helm repository and install it:

helm repo add jetstack https://charts.jetstack.io --force-update

helm install cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --create-namespace \
  --set crds.enabled=true \
  --set prometheus.enabled=true

prometheus.enabled=true enables /metrics on port 9402 for all three components. This is the default in the Helm chart, but set it explicitly to ensure it hasn't been overridden. If cert-manager is already installed, upgrade with the same flag.

Verify the endpoints are reachable:

kubectl port-forward -n cert-manager svc/cert-manager 9402:9402 &
curl -s http://localhost:9402/metrics | grep certmanager_certificate_ready_status

Step 2: Add the Prometheus scrape config to your OTel Collector

Append this snippet to your existing OTel Collector config, adding prometheus alongside existing receivers:

otel-collector-config.yaml
receivers:
  prometheus:
    config:
      scrape_configs:
        # cert-manager controller
        - job_name: cert-manager
          scrape_interval: 30s
          static_configs:
            - targets:
                - cert-manager.cert-manager.svc.cluster.local:9402

        # cert-manager webhook
        - job_name: cert-manager-webhook
          scrape_interval: 30s
          static_configs:
            - targets:
                - cert-manager-webhook.cert-manager.svc.cluster.local:9402

        # cert-manager cainjector
        - job_name: cert-manager-cainjector
          scrape_interval: 30s
          static_configs:
            - targets:
                - cert-manager-cainjector.cert-manager.svc.cluster.local:9402

The targets use in-cluster DNS. If your OTel Collector runs in a different namespace, adjust the hostnames to match (<service>.<namespace>.svc.cluster.local).

Then enable the prometheus receiver in your metrics pipeline:

otel-collector-config.yaml
service:
  pipelines:
    metrics:
      receivers: [otlp, prometheus] # add prometheus alongside existing receivers
      processors: [batch]
      exporters: [otlp]

Step 3: Configure the exporter

If you don't have an OTLP exporter yet, add this block.

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

Verify these values:

Step 4: Restart the OTel Collector

Apply the updated config and restart the collector:

# Kubernetes Helm example — replace <collector-namespace> with your OTel Collector namespace
helm upgrade otel-collector open-telemetry/opentelemetry-collector \
  --namespace <collector-namespace> \
  -f otel-collector-values.yaml

Or restart the pod directly if the config is mounted via a ConfigMap:

kubectl rollout restart deployment -n <collector-namespace> otel-collector

Validate

After restarting the collector, go to SigNoz → Metrics Explorer and search for certmanager_.

Metrics appear within ~60 seconds:

Sample cert-manager metrics in Metrics Explorer
Sample cert-manager metrics in Metrics Explorer

Troubleshooting

No certmanager_ metrics after 2 minutes

  • Likely cause: collector cannot reach the cert-manager service on port 9402
  • Fix: check that prometheus.enabled=true was set during cert-manager installation, and verify the service exists: kubectl get svc -n cert-manager
  • Verify: look for scrape errors in the collector logs with kubectl logs -n cert-manager deploy/otel-collector | grep cert-manager

All metrics missing (not just cert-manager metrics)

  • Likely cause: exporter endpoint or ingestion key is incorrect
  • Fix: verify the endpoint and signoz-ingestion-key values in the exporter config
  • Verify: check collector logs for export errors

ACME metrics are absent (certmanager_http_acme_client_request_count)

  • Expected: cert-manager emits these metrics only when making outbound HTTP requests to an ACME server such as Let's Encrypt. They don't appear with self-signed or CA issuers.

Next steps

Get Help

If you need help with the steps in this topic, please reach out to us on SigNoz Community Slack.

If you are a SigNoz Cloud user, please use in product chat support located at the bottom right corner of your SigNoz instance or contact us at cloud-support@signoz.io.

Last updated: April 25, 2026

Edit on GitHub

Was this page helpful?

Your response helps us improve this page.