@clariq/alert-engine
v0.1.0
Published
Lightweight database alerting engine with CRON scheduling and Slack notifications
Maintainers
Readme
@clariq/alert-engine
A lightweight database alerting engine. Define SQL-based alerts in YAML, schedule with CRON, get notified on Slack.
Features
- 📅 CRON scheduling — Run alerts on any schedule
- 🔍 SQL queries — Monitor anything you can query
- ⚡ Rule evaluation — Trigger on
any_rowsorthreshold - 🔔 Slack notifications — Instant alerts to your channel
- 🔌 Database agnostic — Bring your own adapter (PostgreSQL, MySQL, etc.)
Installation
npm install @clariq/alert-engineQuick Start
1. Create alerts.yaml
connections:
prod_db:
host: localhost
port: 5432
database: myapp
username: admin
password: secret
channels:
slack:
type: slack
webhook_url: https://hooks.slack.com/services/XXX/YYY/ZZZ
alerts:
- id: low_inventory
connection: prod_db
schedule: "*/5 * * * *"
query: SELECT * FROM products WHERE stock < 10
rule:
type: any_rows
notify:
- slack2. Run with CLI
clariq alerts run ./alerts.yaml3. Or use programmatically
import { AlertEngine, DatabaseConnection } from '@clariq/alert-engine';
const engine = new AlertEngine();
// Register your database adapter
engine.registerConnection('prod_db', myPostgresAdapter);
// Load and start
engine.loadConfigFromFile('./alerts.yaml');
await engine.start();Rule Types
any_rows
Triggers if the query returns any rows.
rule:
type: any_rowsthreshold
Triggers if a field value crosses a boundary.
rule:
type: threshold
field: cpu_usage
operator: ">"
value: 80Operators: >, <, >=, <=, ==, !=
Database Adapter
The alert engine is database-agnostic. You provide an adapter that implements:
interface DatabaseConnection {
connect(): Promise<void>;
disconnect(): Promise<void>;
execute(sql: string, params?: any[]): Promise<QueryResult>;
}License
MIT
