New to Kestra?
Use blueprints to kickstart your first workflows.
Audit OpenMetadata catalog health, validate database and OpenSearch indexer cluster readiness, classify event pipeline posture, and alert Slack via Kestra.
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.
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).probe_system_version (io.kestra.plugin.core.http.Request) queries /api/v1/system/version to verify API gateway routing and deployment release consistency.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.classify_catalog_posture (io.kestra.plugin.core.debug.Return) evaluates endpoint response codes and payload attributes using a declarative Pebble conditional expression:INSTANCE_UNREACHABLE if endpoints cannot be reached over the network.SYSTEM_UNHEALTHY if /api/v1/system/status returns a non-200 code.SEARCH_OR_DATABASE_DEGRADED if the response payload reports internal subsystem degradation (such as search index cluster yellow/red state or connection pool exhaustion).EVENT_SUBSCRIPTION_DEGRADED if change-event subscription endpoints return non-200.HEALTHY_COMPLIANT when all subsystem health and event pipeline probes succeed.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.audit_summary (io.kestra.plugin.core.output.OutputValues) exports structured metrics capturing endpoint HTTP status codes and catalog operational posture for compliance logging.errors sends a priority failure notification to Slack if unhandled workflow execution errors occur.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.
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.OPENMETADATA_JWT_TOKEN and SLACK_WEBHOOK_URL in your Kestra namespace secrets.git clone https://github.com/open-metadata/OpenMetadata.git && cd OpenMetadata/docker/development
docker compose up -d
openmetadata_host: "localhost").classify_catalog_posture classifies HEALTHY_COMPLIANT and inspect the structured telemetry in audit_summary.hourly_canary schedule to automate continuous metadata catalog health monitoring./api/v1/dataQuality/testSuites to alert on sudden spikes in failed dataset assertions.SEARCH_OR_DATABASE_DEGRADED or INSTANCE_UNREACHABLE incidents.io.kestra.plugin.core.flow.ForEach.