tutorial

Monitoring ORAS with Vigilmon: OCI Registry Health, Artifact Push/Pull Endpoints & SSL Certificate Alerts

How to monitor ORAS (OCI Registry As Storage) with Vigilmon — registry availability, artifact push/pull endpoint health, TCP connectivity, and SSL certificate expiry alerts.

ORAS (OCI Registry As Storage) lets you store and distribute arbitrary artifacts — Helm charts, WebAssembly modules, configuration bundles, SBOM documents — directly in OCI-compliant registries. When your ORAS-backed registry goes dark, every pipeline that pulls a Helm chart, every edge device that fetches its configuration, and every signing workflow that uploads attestations grinds to a halt. Vigilmon gives you external visibility into the registry services that ORAS depends on: the registry API health, the artifact distribution endpoint, TCP port reachability, and SSL certificate expiry.

What You'll Build

  • An HTTP monitor on the registry API health endpoint to detect outages
  • An artifact endpoint check to confirm push/pull operations are reachable
  • A TCP monitor on the registry port for low-latency connectivity checks
  • SSL certificate monitoring for your registry domain
  • An alerting table mapping each failure mode to the right remediation action

Prerequisites

  • An OCI-compliant registry (Docker Registry v2, GHCR, Zot, Harbor, or similar) that ORAS clients push to and pull from
  • HTTPS configured on your registry (e.g., https://registry.example.com)
  • A free account at vigilmon.online

Step 1: Understand ORAS and Your Registry's Health Endpoints

ORAS is a client library and CLI tool — it does not run a server itself. The infrastructure being monitored is the OCI registry that stores the artifacts. OCI Distribution Specification v1.1-compliant registries expose a standard health endpoint:

curl https://registry.example.com/v2/
# Healthy response: HTTP 200 or HTTP 401 (authentication required)

A 200 means the registry is running and allows anonymous access. A 401 means the registry is running and requires authentication — both are healthy signals. A 502, 503, or connection error means the registry is down.

For self-hosted registries like Zot or a plain Docker registry, you can also check the ping endpoint:

curl -I https://registry.example.com/v2/_catalog
# HTTP 200 (open) or HTTP 401 (auth required) = healthy

If you run Harbor as your OCI backend, it exposes its own health endpoint:

curl https://registry.example.com/api/v2.0/ping
# Returns: "Pong"

Step 2: Create a Vigilmon HTTP Monitor for the Registry API

  1. Log in to VigilmonAdd Monitor → HTTP.
  2. URL: https://registry.example.com/v2/.
  3. Check interval: 60 seconds.
  4. Response timeout: 15 seconds.
  5. Expected status: 200 (or 401 if your registry requires authentication).
  6. Label: ORAS registry API.
  7. Click Save.

This monitor catches:

  • Registry process crashes or OOM kills on the host
  • Kubernetes pod restarts that temporarily take the registry offline
  • Misconfigured ingress or reverse proxy rules blocking the /v2/ endpoint
  • Storage backend failures causing the registry to refuse connections
  • Disk-full conditions where the registry stops accepting requests

Alert sensitivity: Set to trigger after 1 consecutive failure. When the registry is down, every oras push and oras pull command in your CI/CD pipeline will fail immediately with a connection error.


Step 3: Monitor the Artifact Distribution Endpoint

The /v2/<name>/manifests/<reference> endpoint is the core of OCI artifact distribution. You can monitor a known artifact's manifest endpoint to confirm that not only is the registry up, but it can serve artifact metadata:

# Check that a known artifact manifest is accessible
curl -I https://registry.example.com/v2/myapp/config/manifests/latest
# HTTP 200 = manifest present and registry healthy
# HTTP 404 = registry up but artifact missing (a deployment issue, not registry outage)

If you store public or unauthenticated artifacts, this check gives you end-to-end pull validation:

  1. Add Monitor → HTTP.
  2. URL: https://registry.example.com/v2/<your-artifact-name>/manifests/latest.
  3. Check interval: 2 minutes.
  4. Response timeout: 20 seconds.
  5. Expected status: 200.
  6. Label: ORAS artifact manifest endpoint.
  7. Click Save.

If your registry requires auth, use an HTTP monitor with Expected status: 401 on the manifest endpoint to confirm the registry is reachable and returning proper auth challenges rather than a gateway error.


Step 4: Add a TCP Monitor for Port Reachability

A TCP check confirms that the registry's port is open and accepting connections at the network level, independently of the HTTP layer. This is useful for catching firewall rule changes, load balancer failures, or TLS termination proxy outages that prevent the TCP handshake from completing:

# Verify port 443 is reachable
nc -zv registry.example.com 443

If your registry runs on a non-standard port (common in on-premises or air-gapped environments):

nc -zv registry.example.com 5000
  1. Add Monitor → TCP.
  2. Host: registry.example.com.
  3. Port: 443 (or 5000 / your custom port).
  4. Check interval: 60 seconds.
  5. Label: ORAS registry TCP port.
  6. Click Save.

Why TCP alongside HTTP? The TCP monitor responds faster than the HTTP monitor and catches lower-level failures like a crashed TLS termination proxy or a blocked firewall rule that resets connections before the HTTP layer can respond.


Step 5: Monitor SSL Certificates

ORAS CLI, Helm, and other OCI clients validate the registry's TLS certificate before establishing a connection. An expired certificate causes every oras push, oras pull, helm pull, and crane command to fail with a TLS verification error. Certificate expiry is preventable with early warning:

openssl s_client -connect registry.example.com:443 2>/dev/null | openssl x509 -noout -dates
  1. Add Monitor → SSL Certificate.
  2. Domain: registry.example.com.
  3. Alert when expiry is within: 30 days.
  4. Alert again: 14 days, 7 days, 3 days, 1 day.
  5. Click Save.

Self-managed registries and cert-manager: If you run your registry on Kubernetes with cert-manager, certificate renewal can fail silently when ACME challenges are blocked by NetworkPolicies, when Let's Encrypt rate limits are hit, or when the Ingress annotation is overwritten during a registry Helm upgrade. A 30-day warning window gives you time to investigate kubectl describe certificate and fix the issuer before the certificate actually expires.


Step 6: Configure Alerting

In Vigilmon under Settings → Notifications, configure your preferred alert channels (email, Slack, PagerDuty, webhooks) for each monitor:

| Monitor | Trigger | Remediation action | |---|---|---| | Registry API (/v2/) | Non-200/401 response | Check registry pod: kubectl get pods -n registry or docker ps on the host | | Artifact manifest endpoint | Non-200 response | Artifact missing or registry partially degraded; check storage backend | | TCP port check | Connection refused or timeout | Port blocked; verify ingress/load balancer and firewall rules | | SSL certificate | < 30 days to expiry | Renew certificate; check cert-manager: kubectl get certificate |

Alert thresholds: Use 1 consecutive failure for the registry API and TCP monitors — these are binary signals with high blast radius when they fail. Use 2 consecutive failures for the manifest endpoint to avoid alerting on transient artifact-not-found conditions.


Common ORAS / Registry Failure Modes and What Vigilmon Catches

| Scenario | Vigilmon monitor | |---|---| | Registry pod OOM killed | API monitor fires within 60 seconds | | Disk full on registry storage backend | Registry stops accepting pushes; API monitor may still pass | | Ingress controller upgrade breaks routing | All HTTP monitors fire simultaneously | | Firewall rule blocks registry port | TCP monitor fires; DNS resolves but connection times out | | SSL certificate expires | SSL monitor fires at 30-day threshold; all oras commands fail | | Load balancer health check misconfiguration | TCP monitor fires intermittently | | Registry garbage collection pauses service | API monitor catches brief outage windows | | S3 or GCS backend loses connectivity | Registry returns 500; API monitor fires | | DNS record misconfiguration | All monitors fire simultaneously | | Registry image updated with broken config | API monitor fires after deployment |


ORAS extends OCI registries into a universal artifact store — but the reliability of every workflow that depends on it is only as good as the registry's uptime. Helm chart deployments, SBOM distribution, Wasm module delivery, and supply chain attestation workflows all break silently when the registry is unreachable. Vigilmon gives you external eyes on every layer — API health, artifact endpoints, port reachability, and certificate expiry — so you catch outages before your teams do.

Start monitoring your ORAS registry in under 5 minutes — register free at vigilmon.online.

Monitor your app with Vigilmon

Free plan — 5 monitors, no credit card required. Up and running in 60 seconds.

Start free →