Skip to main content

Monitoring Your Blockchain Indexer

Once your blockchain indexer is deployed, Envio Cloud provides several tools to help you monitor its health, performance, and progress.

Dashboard Overview

The main dashboard provides real-time visibility into your indexer's status:

Key Metrics Displayed:

  • Active Deployments: Track how many deployments are currently running (e.g., 1/3 active)
  • Deployment Status: See whether your indexer is actively syncing, stopped, or has encountered errors
  • Recent Commits: View your deployment history with commit information and active status
  • Usage Statistics: Monitor your indexing hours, storage usage, and query rate limits
  • Network Progress: Real-time progress bars showing sync status for each blockchain network
  • Events Processed: Track the total number of events your indexer has processed
  • Historical Sync Time: See how long it took to complete the initial sync

Deployment Status Indicators

Each deployment shows clear status information:

  • Syncing: Indexer is actively processing blocks and events
  • Syncing Stopped: Indexer has stopped processing (may indicate an error or a breach of plan limits)
  • Historical Sync Complete: Initial sync finished, indexer is processing new blocks in real-time

Error Detection and Troubleshooting

When issues occur, the dashboard displays failure information to help you quickly diagnose problems.

Failure Information Includes:

  • Error Type: Clear indication of the failure (e.g., "Indexing Has Stopped")
  • Error Description: Details about what went wrong (e.g., "Error during event handling")
  • Next Steps: Guidance on where to find more information (error logs)
  • Support Access: Direct link to Discord for assistance

Logging

Full logging supported is integrated and configured by Envio via Envio Cloud

Access detailed logs to troubleshoot issues and monitor indexer behavior:

  • Real-time Logs: View live logs as your indexer processes events
  • Error Logs: Quickly identify and diagnose errors in your event handlers
  • Deployment Logs: Track the deployment process and startup sequence
  • Filter Log Levels: Find specific log entries to debug issues

Access logs through the "Logs" button on your deployment page.

Built-in Alerts

Configure proactive monitoring through the Alerts tab to receive notifications before issues impact your users:

  • Critical Alerts: Get notified when your production endpoint goes down
  • Warning Alerts: Receive alerts when your indexer stops processing blocks
  • Info Alerts: Stay informed about indexer restarts and error logs
  • Deployment Notifications: Know when historical sync completes

For detailed alert configuration, see the Deployment Guide and our Features page.

Notification Channels

Envio Cloud supports the following notification channels:

ChannelConfiguration
DiscordWebhook URL, optional bot username
SlackWebhook URL, channel name, optional bot username
TelegramBot API token, chat ID
EmailOne or more email addresses
WebhookAny HTTP endpoint URL (works with incident.io, PagerDuty, Opsgenie, etc.)

Channels are configured at the organisation level via Settings > Notification Channels, then subscribed to alerts on individual indexers.

Webhook Channel

The webhook channel sends a structured JSON payload via HTTP POST to any URL you provide. This makes it compatible with any service that accepts webhook-based alerts.

Custom Headers (optional): When creating a webhook channel, you can add custom HTTP headers that will be sent with every request. This is useful for services that require authentication via API keys or bearer tokens. incident.io does not require custom headers.

info

The webhook channel is a generic HTTP endpoint. It is not guaranteed to work with all third-party services — please see the integration guides below for supported setup instructions. If you need help integrating with a specific service, please reach out on the Envio Discord.

Webhook Payload Schema:

{
"title": "IndexerStoppedProcessing",
"status": "firing",
"severity": "warning",
"description": "Indexer my-indexer has stopped processing blocks for 10+ minutes",
"source_url": "https://envio.dev/app/my-org/my-indexer/abc123",
"alert_id": "my-org/proj456/my-indexer/IndexerStoppedProcessing",
"metadata": {
"organisationId": "my-org",
"indexerName": "my-indexer",
"commit": "abc123",
"labels": { "envio_alert_name": "IndexerStoppedProcessing", "severity": "warning" },
"annotations": {
"summary": "Indexer my-indexer has stopped processing blocks for 10+ minutes",
"description": "The indexer has not processed any blocks in the last 10 minutes."
},
"startsAt": "2025-05-15T12:00:00Z",
"type": "alert"
}
}
note

The endsAt field is only included when the alert has resolved. Firing alerts omit this field.

FieldDescription
titleAlert name (e.g. IndexerStoppedProcessing, ProdEndpointDown)
status"firing" or "resolved"
severity"critical", "warning", or "info"
descriptionHuman-readable summary of the alert
source_urlLink to the deployment in the Envio dashboard
alert_idUnique key for deduplication: orgId/projectId/indexerName/alertName
metadataAdditional context including labels, timestamps, and deployment info

Webhook Integrations

incident.io

incident.io can receive Envio alerts via their Custom HTTP Sources feature.

Step 1: Create a Custom HTTP Source in incident.io

In the incident.io dashboard, Follow the incident.io custom HTTP sources guide to setup the webhook integration.

Step 2: Configure the Transform Expression

Paste this ES5 JavaScript transform expression to map the Envio payload into incident.io's format:

var severity = body.severity || "info";
var severityMap = { critical: 1, warning: 2, info: 3 };

return {
title: body.title,
status: body.status,
description: body.description || "",
source_url: body.source_url || "",
metadata: {
severity: severity,
severity_rank: severityMap[severity] || 3,
organisation_id: body.metadata.organisationId,
indexer_name: body.metadata.indexerName,
commit: body.metadata.commit,
source: "envio",
type: body.metadata.type,
starts_at: body.metadata.startsAt,
ends_at: body.metadata.endsAt || "",
labels: JSON.stringify(body.metadata.labels || {}),
annotations: JSON.stringify(body.metadata.annotations || {})
}
};

Step 3: Set the Deduplication Key Path

Set the dedup key path to alert_id. This ensures alerts are grouped per indexer and auto-resolve when the status changes to "resolved".

Step 4: Add the Webhook Channel in Envio

  1. Go to Settings > Notification Channels in the Envio Cloud dashboard
  2. Click Add Channel and select Webhook
  3. Paste the webhook URL from incident.io (no custom headers are needed — incident.io authenticates via the unique URL)
  4. Subscribe your indexer's alerts to this channel
Proactive Monitoring

Set up multiple notification channels (Paid Plans Only) to ensure you never miss critical alerts about your indexer's health.

Visual Reference

Dashboard Overview

Dashboard overview

Network Progress by Chain

Network progress bars

Example Failure Notification

When indexing stops, the dashboard clearly surfaces the issue so you can investigate and resolve it quickly.

Indexing has stopped