New to Kestra?
Use blueprints to kickstart your first workflows.
Audit NocoDB smart spreadsheet health, validate backend database connectivity and project metadata readiness, classify posture, and alert Slack via Kestra.
Continuously audits NocoDB no-code database and smart spreadsheet platforms by probing core application health endpoints, validating backend SQL database connection pool responsiveness (PostgreSQL, MySQL, SQLite), verifying base project metadata accessibility, classifying operational posture, and dispatching real-time incident escalation alerts to Slack.
This blueprint was created by Mohit Jeswani.
probe_health_endpoint (io.kestra.plugin.core.http.Request) queries /api/v1/health to verify that the NocoDB application process is live and that its underlying relational database connection pool (PostgreSQL, MySQL, SQL Server, or SQLite) is responsive and accepting query transactions.probe_version_endpoint (io.kestra.plugin.core.http.Request) queries /api/v1/version to confirm API gateway responsiveness and deployment release consistency.probe_project_metadata (io.kestra.plugin.core.http.Request) queries /api/v1/db/meta/projects using an API token to verify that base projects, table schema metadata, and data sources can be queried without permission errors.classify_nocodb_posture (io.kestra.plugin.core.debug.Return) evaluates endpoint response codes and JSON attributes using a declarative Pebble expression:INSTANCE_UNREACHABLE if endpoints cannot be reached over the network.DATABASE_STORAGE_DEGRADED if /api/v1/health returns non-200 or the JSON status attribute does not equal expected_status (indicates database disconnection or query pool exhaustion).SERVER_PROCESS_UNHEALTHY if /api/v1/version returns non-200.PROJECT_METADATA_UNREADY if /api/v1/db/meta/projects fails (invalid token or schema sync stall).HEALTHY_COMPLIANT when all 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, status, and project metadata metrics.DATABASE_STORAGE_DEGRADED: Posts an urgent Slack alert warning that the backend database is down and spreadsheet data mutations are blocked.PROJECT_METADATA_UNREADY: Alerts Slack that project metadata queries or API credentials are misconfigured.SERVER_PROCESS_UNHEALTHY / INSTANCE_UNREACHABLE: Dispatches high-priority incident notifications for container or network failure.audit_summary (io.kestra.plugin.core.output.OutputValues) exports structured metrics capturing endpoint HTTP status codes and operational posture for compliance logging.errors sends a priority failure notification to Slack if unhandled workflow execution errors occur.NocoDB transforms standard SQL databases into smart spreadsheets that operational teams depend on daily for order management, customer onboarding, and data entry. When NocoDB's database connection pool starves, web users cannot save records and automated API webhooks fail. Simple TCP port checks cannot verify whether SQL queries are executing or whether project metadata caches are intact. Kestra orchestrates multi-stage HTTP inspection, declarative Pebble classification, failure escalation to Slack, and centralized compliance audit trails in a single workflow.
NOCODB_API_TOKEN: NocoDB user API token (xc-token) used for project metadata API inspection.SLACK_WEBHOOK_URL: Incoming Slack webhook URL used by alert_database_degraded_slack, alert_project_metadata_slack, alert_server_unhealthy_slack, alert_unreachable_slack, and alert_flow_failure.NOCODB_API_TOKEN and SLACK_WEBHOOK_URL in your Kestra namespace secrets.docker run -d --name nocodb -p 8080:8080 nocodb/nocodb:latest
nocodb_host: "localhost").classify_nocodb_posture classifies HEALTHY_COMPLIANT and inspect the structured telemetry in audit_summary.hourly_canary schedule to automate continuous database platform health monitoring./api/v1/db/data/v1/{baseId}/{tableName} to alert on unexpected data truncation.DATABASE_STORAGE_DEGRADED or INSTANCE_UNREACHABLE incidents.io.kestra.plugin.core.flow.ForEach.