Request icon
Return icon
Switch icon
Log icon
SlackIncomingWebhook icon
OutputValues icon
Schedule icon

OpenMetadata Catalog Health and Change-Event Sentinel

Audit OpenMetadata catalog health, validate database and OpenSearch indexer cluster readiness, classify event pipeline posture, and alert Slack via Kestra.

Categories
DataInfrastructure

Continuously audits enterprise OpenMetadata data catalog platforms by probing system health endpoints, auditing underlying metadata database and search indexer cluster readiness (Elasticsearch/OpenSearch and PostgreSQL/MySQL), validating change-event subscription delivery, classifying operational posture, and dispatching real-time incident escalation alerts to Slack.

This blueprint was created by Mohit Jeswani.

How it works

  1. probe_system_status (io.kestra.plugin.core.http.Request) queries /api/v1/system/status to audit core application server readiness, metadata database connectivity (PostgreSQL/MySQL), and search indexing cluster health (OpenSearch/Elasticsearch).
  2. probe_system_version (io.kestra.plugin.core.http.Request) queries /api/v1/system/version to verify API gateway routing and deployment release consistency.
  3. probe_event_subscriptions (io.kestra.plugin.core.http.Request) queries /api/v1/events/subscriptions to verify that change-event notification dispatchers, audit webhooks, and real-time metadata streaming pipelines are operational.
  4. classify_catalog_posture (io.kestra.plugin.core.debug.Return) evaluates endpoint response codes and payload attributes using a declarative Pebble conditional expression:
    • Classifies as INSTANCE_UNREACHABLE if endpoints cannot be reached over the network.
    • Classifies as SYSTEM_UNHEALTHY if /api/v1/system/status returns a non-200 code.
    • Classifies as SEARCH_OR_DATABASE_DEGRADED if the response payload reports internal subsystem degradation (such as search index cluster yellow/red state or connection pool exhaustion).
    • Classifies as EVENT_SUBSCRIPTION_DEGRADED if change-event subscription endpoints return non-200.
    • Classifies as HEALTHY_COMPLIANT when all subsystem health and event pipeline probes succeed.
  5. route_by_posture (io.kestra.plugin.core.flow.Switch) routes execution based on the classification:
    • HEALTHY_COMPLIANT: Logs successful audit confirmation with system version and status metrics.
    • SEARCH_OR_DATABASE_DEGRADED: Posts an urgent Slack alert warning that the search indexer or metadata database is degraded and catalog queries are impacted.
    • EVENT_SUBSCRIPTION_DEGRADED: Alerts Slack that change-event webhooks and downstream metadata sync are stalled.
    • SYSTEM_UNHEALTHY / INSTANCE_UNREACHABLE: Dispatches high-priority incident notifications for server or network failure.
  6. audit_summary (io.kestra.plugin.core.output.OutputValues) exports structured metrics capturing endpoint HTTP status codes and catalog operational posture for compliance logging.
  7. errors sends a priority failure notification to Slack if unhandled workflow execution errors occur.

What you get

  • Automated, continuous validation of critical data governance and metadata catalog infrastructure.
  • Early warning of OpenSearch/Elasticsearch indexing cluster degradation and database connection pool exhaustion before data analysts experience query stalls.
  • Active verification of change-event subscriptions so downstream lineage pipelines and data governance webhooks never drop schema events silently.
  • Contextual Slack alerts detailing exact endpoint failure codes, target hostnames, and affected subsystems.
  • Auditable execution history satisfying SOC2, ISO27001, and BCBS 239 data management operational controls.

Who it's for

  • Data Platform Engineers and Analytics Platform Leads managing centralized enterprise data catalogs.
  • Data Governance Teams and Data Stewards responsible for metadata lineage, glossary enforcement, and PII tagging.
  • Site Reliability Engineers (SREs) monitoring high-availability data platform control planes.

Why orchestrate this with Kestra

OpenMetadata serves as the single source of truth for an organization's data assets, schema changes, and lineage graphs. When OpenMetadata's search indexer or event dispatchers stall, schema migrations go undetected and data quality alerts fail to propagate. Simple port monitors cannot inspect whether OpenSearch is responsive or whether event subscriptions are actively processing events. Kestra orchestrates multi-stage HTTP inspection, declarative Pebble classification, failure escalation to Slack, and centralized compliance audit trails in a single workflow.

Prerequisites

  • A running OpenMetadata instance (Docker container or Kubernetes cluster).
  • An OpenMetadata JWT or Service Bot token for authenticated API inspection.
  • An incoming Slack webhook URL for incident notifications.

Secrets

  • OPENMETADATA_JWT_TOKEN: OpenMetadata JWT token or Service Account bot token used for authenticated API inspection.
  • SLACK_WEBHOOK_URL: Incoming Slack webhook URL used by alert_indexer_degraded_slack, alert_event_subscription_slack, alert_system_unhealthy_slack, alert_unreachable_slack, and alert_flow_failure.

Quick start

  1. Configure OPENMETADATA_JWT_TOKEN and SLACK_WEBHOOK_URL in your Kestra namespace secrets.
  2. Start a local OpenMetadata instance using Docker Compose:
    git clone https://github.com/open-metadata/OpenMetadata.git && cd OpenMetadata/docker/development
    docker compose up -d
    
  3. Import this blueprint into Kestra and click Execute with default inputs (openmetadata_host: "localhost").
  4. Confirm that classify_catalog_posture classifies HEALTHY_COMPLIANT and inspect the structured telemetry in audit_summary.
  5. Enable the hourly_canary schedule to automate continuous metadata catalog health monitoring.

How to extend

  • Add automated data quality test suite auditing by querying /api/v1/dataQuality/testSuites to alert on sudden spikes in failed dataset assertions.
  • Integrate PagerDuty or Opsgenie alerts for out-of-hours on-call paging during SEARCH_OR_DATABASE_DEGRADED or INSTANCE_UNREACHABLE incidents.
  • Expand multi-environment monitoring by looping over an array of development, staging, and production OpenMetadata cluster hostnames using io.kestra.plugin.core.flow.ForEach.

Links

See How

New to Kestra?

Use blueprints to kickstart your first workflows.