Skip to main content

Smart Alerts

FieldValue
Document IDASCEND-NOTIF-003
Version2026.04
Last UpdatedApril 2026
AuthorAscend Engineering Team
PublisherOW-KAI Technologies Inc.
ClassificationEnterprise Client Documentation
ComplianceSOC 2 CC6.1/CC6.2, PCI-DSS 7.1/8.3, HIPAA 164.312, NIST 800-53 AC-2/SI-4

Reading Time: 8 minutes | Skill Level: Intermediate

Overview

Smart Alerts provide real-time monitoring and alerting based on customizable rules. Alert on risk score thresholds, action patterns, system health, and anomalies with automatic escalation.

tip

Start with conservative alert thresholds and tune down over time. Over-aggressive thresholds cause alert fatigue, while under-configured thresholds miss critical events.

Alert Engine Architecture

+---------------------------------------------------------------------+
| SMART ALERT ENGINE |
+---------------------------------------------------------------------+
| |
| ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ |
| │ Metrics │ │ Rules │ │ Channels │ |
| │ Stream │───▶│ Engine │───▶│ Dispatch │ |
| └─────────────┘ └─────────────┘ └─────────────┘ |
| │ │ │ |
| │ ┌─────┴─────┐ │ |
| │ │ │ │ |
| ▼ ▼ ▼ ▼ |
| ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ |
| │ System │ │Threshold │ │ Anomaly │ │ Webhook │ |
| │ Metrics │ │ Check │ │Detection │ │ Slack │ |
| │ Actions │ │ Pattern │ │ │ │ Teams │ |
| └──────────┘ └──────────┘ └──────────┘ └──────────┘ |
| |
+---------------------------------------------------------------------+

Creating Alert Rules

Threshold-Based Alerts

curl -X POST "https://pilot.owkai.app/api/smart-rules" \
-H "Authorization: Bearer <admin_jwt>" \
-H "Content-Type: application/json" \
-d '{
"name": "High Risk Action Alert",
"is_active": true,
"rule_definition": {
"condition_type": "threshold",
"metric": "risk_score",
"operator": ">=",
"threshold": 80,
"severity": "high"
}
}'

Pattern-Based Alerts

curl -X POST "https://pilot.owkai.app/api/smart-rules" \
-H "Authorization: Bearer <admin_jwt>" \
-d '{
"name": "Repeated Denials Alert",
"is_active": true,
"rule_definition": {
"condition_type": "pattern",
"pattern": {
"event": "action.denied",
"count": 5,
"window_minutes": 10
},
"severity": "critical"
}
}'

System Health Alerts

curl -X POST "https://pilot.owkai.app/api/smart-rules" \
-H "Authorization: Bearer <admin_jwt>" \
-d '{
"name": "System CPU Alert",
"is_active": true,
"rule_definition": {
"condition_type": "threshold",
"metric": "system.cpu_percent",
"operator": ">",
"threshold": 90,
"severity": "high"
}
}'

Severity Levels

SeverityColorUse CaseDefault Response
criticalRedSecurity incidents, system downImmediate escalation
highOrangeHigh-risk actions, failures5 minute response
mediumYellowUnusual patterns15 minute response
lowBlueInformationalLog only

Alert Lifecycle

1. Alert Triggered

When a rule condition is met:

{
"id": "alert_42_1702656000",
"rule_id": 42,
"rule_name": "High Risk Action Alert",
"severity": "high",
"message": "High Risk Action Alert: risk_score is 85 (threshold: >= 80)",
"triggered_at": "2025-12-15T10:00:00Z",
"status": "active",
"metrics_snapshot": {
"risk_score": 85,
"action_type": "data_export",
"agent_id": "export-agent"
}
}

2. Get Active Alerts

curl "https://pilot.owkai.app/api/alerts/active" \
-H "Authorization: Bearer <jwt_token>"

Response:

{
"alerts": [
{
"id": "alert_42_1702656000",
"rule_name": "High Risk Action Alert",
"severity": "high",
"message": "risk_score is 85 (threshold: >= 80)",
"triggered_at": "2025-12-15T10:00:00Z",
"status": "active"
}
],
"statistics": {
"total_active": 3,
"by_severity": {
"critical": 0,
"high": 1,
"medium": 2,
"low": 0
}
}
}

3. Acknowledge Alert

curl -X POST "https://pilot.owkai.app/api/alerts/42/acknowledge" \
-H "Authorization: Bearer <jwt_token>" \
-H "X-CSRF-Token: <csrf_token>"

4. Resolve Alert

curl -X POST "https://pilot.owkai.app/api/alerts/alert_42_1702656000/resolve" \
-H "Authorization: Bearer <jwt_token>" \
-H "X-CSRF-Token: <csrf_token>"

5. Escalate Alert

curl -X POST "https://pilot.owkai.app/api/alerts/42/escalate" \
-H "Authorization: Bearer <jwt_token>" \
-H "X-CSRF-Token: <csrf_token>"

Real-Time Alert Stream

WebSocket Connection

const ws = new WebSocket('wss://pilot.owkai.app/api/alerts/stream');

ws.onmessage = (event) => {
const data = JSON.parse(event.data);

if (data.type === 'initial_alerts') {
console.log('Current active alerts:', data.data);
} else if (data.type === 'alerts') {
console.log('New alerts:', data.data);
data.data.forEach(alert => {
showNotification(alert);
});
}
};

Python WebSocket Client

import asyncio
import websockets
import json

async def alert_listener():
uri = "wss://pilot.owkai.app/api/alerts/stream"
headers = {"Authorization": "Bearer <jwt_token>"}

async with websockets.connect(uri, extra_headers=headers) as ws:
async for message in ws:
data = json.loads(message)

if data['type'] == 'alerts':
for alert in data['data']:
handle_alert(alert)

def handle_alert(alert):
if alert['severity'] == 'critical':
send_pager_notification(alert)
elif alert['severity'] == 'high':
send_slack_notification(alert)

asyncio.run(alert_listener())

Alert History

Query Historical Alerts

curl "https://pilot.owkai.app/api/alerts/history?days=30" \
-H "Authorization: Bearer <jwt_token>"

Response:

{
"history": [
{
"id": "123",
"rule_name": "High Risk Alert",
"severity": "high",
"triggered_at": "2025-12-14T15:30:00Z",
"resolved_at": "2025-12-14T16:00:00Z",
"status": "resolved"
}
],
"total_count": 45,
"date_range": {
"start": "2025-11-15T00:00:00Z",
"end": "2025-12-15T23:59:59Z"
}
}

Condition Types

Threshold Conditions

{
"condition_type": "threshold",
"metric": "risk_score",
"operator": ">=",
"threshold": 80
}

Supported Operators:

  • > - Greater than
  • < - Less than
  • >= - Greater than or equal
  • <= - Less than or equal
  • == - Equal to

Anomaly Detection

{
"condition_type": "anomaly",
"metric": "actions_per_minute",
"sensitivity": 0.8,
"historical_average": 50
}

Pattern Matching

{
"condition_type": "pattern",
"pattern": {
"sequence": ["login_failed", "login_failed", "login_failed"],
"window_minutes": 5
}
}

Available Metrics

System Metrics

MetricDescription
system.cpu_percentCPU utilization
system.memory_percentMemory utilization
system.disk_percentDisk utilization

Action Metrics

MetricDescription
risk_scoreAction risk score (0-100)
actions_per_minuteAction submission rate
denial_ratePercentage of denied actions

Agent Metrics

MetricDescription
agent.error_rateAgent error percentage
agent.response_timeAverage response time
agent.active_countActive agent count

Integration with Notification Channels

Configure Alert Routing

curl -X POST "https://pilot.owkai.app/api/notifications/channels" \
-H "Authorization: Bearer <admin_jwt>" \
-d '{
"name": "Critical Alerts - PagerDuty",
"channel_type": "slack",
"webhook_url": "https://hooks.slack.com/...",
"subscribed_events": [
"alert.critical",
"alert.high"
],
"min_risk_score": 80
}'

Alert Notification Flow

Alert Triggered


┌─────────────────┐
│ Check Severity │
└────────┬────────┘

┌────┴────┐
│ │
▼ ▼
Critical High/Medium
│ │
▼ ▼
PagerDuty Slack
│ │
▼ ▼
On-Call Channel

Best Practices

1. Set Meaningful Thresholds

{
"name": "Actionable High Risk Alert",
"rule_definition": {
"condition_type": "threshold",
"metric": "risk_score",
"operator": ">=",
"threshold": 85,
"cooldown_minutes": 5
}
}

2. Use Severity Appropriately

  • Critical: Security incidents only
  • High: Requires immediate attention
  • Medium: Review within the hour
  • Low: Informational

3. Configure Cooldowns

Prevent alert fatigue with cooldown periods:

{
"rule_definition": {
"cooldown_minutes": 15,
"max_alerts_per_hour": 10
}
}

4. Test Alerts

# Trigger a test alert
curl -X POST "https://pilot.owkai.app/api/alerts/test" \
-H "Authorization: Bearer <admin_jwt>" \
-d '{
"rule_id": 42,
"test_metrics": {"risk_score": 90}
}'

Next Steps


Document Version: 2026.04 | Last Updated: April 2026