Skip to content

5.5 Alerting and Notification

5.5.1 Alert Severity Matrix

Severity Response Time Examples Notification
P1 - Critical 15 minutes Fabric site down, ISE PAN failure, DNAC cluster issue SMS + Phone + Email
P2 - Major 1 hour Single node failure, auth success <95%, high CPU Email + SMS
P3 - Minor 4 hours Non-critical device down, capacity warning Email
P4 - Warning 8 hours Performance degradation, license warning Email (batch)

5.5.2 DNAC Alert Configuration

# Platform > Developer Toolkit > Event Notifications

Event_Subscriptions:
  Critical_Device_Events:
    Events:
      - DEVICE_UNREACHABLE
      - INTERFACE_DOWN (uplinks)
      - HIGH_CPU_UTILIZATION (>90%)
      - HIGH_MEMORY_UTILIZATION (>90%)
    Notification:
      Type: Email, Webhook
      Recipients: noc-critical@corp.local
      Webhook: https://incident-mgmt.corp.local/api/v1/alerts

  Fabric_Events:
    Events:
      - FABRIC_SITE_DOWN
      - LISP_SESSION_DOWN
      - VXLAN_TUNNEL_DOWN
      - CONTROL_PLANE_UNREACHABLE
    Notification:
      Type: Email, Webhook
      Recipients: network-team@corp.local

  Authentication_Events:
    Events:
      - AUTH_SUCCESS_RATE_LOW (<95%)
      - ISE_PSN_UNREACHABLE
      - RADIUS_TIMEOUT
    Notification:
      Type: Email
      Recipients: security-team@corp.local

  Compliance_Events:
    Events:
      - DEVICE_CONFIG_DRIFT
      - SOFTWARE_VERSION_MISMATCH
      - SECURITY_ADVISORY_MATCH
    Notification:
      Type: Email
      Recipients: compliance@corp.local

5.5.3 Webhook Integration

#!/usr/bin/env python3
"""
DNAC Webhook Receiver for Alert Processing
"""

from flask import Flask, request, jsonify
import json
import smtplib
from email.mime.text import MIMEText

app = Flask(__name__)

# Alert thresholds
CRITICAL_EVENTS = ['DEVICE_UNREACHABLE', 'FABRIC_SITE_DOWN', 'ISE_PSN_UNREACHABLE']
MAJOR_EVENTS = ['INTERFACE_DOWN', 'HIGH_CPU_UTILIZATION', 'LISP_SESSION_DOWN']

@app.route('/api/v1/alerts', methods=['POST'])
def receive_alert():
    """Process incoming DNAC alerts"""
    try:
        alert_data = request.json

        event_type = alert_data.get('eventId')
        severity = alert_data.get('severity')
        device = alert_data.get('details', {}).get('deviceName', 'Unknown')
        description = alert_data.get('description', 'No description')

        # Determine priority
        if event_type in CRITICAL_EVENTS:
            priority = 'P1'
            send_sms_alert(device, description)
        elif event_type in MAJOR_EVENTS:
            priority = 'P2'
        else:
            priority = 'P3'

        # Create incident ticket
        ticket_id = create_incident_ticket(
            priority=priority,
            device=device,
            event=event_type,
            description=description
        )

        # Send email notification
        send_email_alert(priority, device, event_type, description, ticket_id)

        return jsonify({'status': 'processed', 'ticket_id': ticket_id})

    except Exception as e:
        return jsonify({'status': 'error', 'message': str(e)}), 500

def create_incident_ticket(priority, device, event, description):
    """Create incident ticket in ITSM system"""
    # Integration with ServiceNow, Remedy, etc.
    # Return ticket ID
    return f"INC{hash(device+event) % 1000000:06d}"

def send_email_alert(priority, device, event, description, ticket_id):
    """Send email notification"""
    msg = MIMEText(f"""
    Priority: {priority}
    Device: {device}
    Event: {event}
    Description: {description}
    Ticket: {ticket_id}
    """)
    msg['Subject'] = f"[{priority}] Network Alert: {event} on {device}"
    msg['From'] = 'noc-alerts@corp.local'
    msg['To'] = 'noc@corp.local'

    # Send email
    with smtplib.SMTP('smtp.corp.local') as server:
        server.send_message(msg)

def send_sms_alert(device, description):
    """Send SMS for critical alerts"""
    # Integration with SMS gateway
    pass

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

5.5.4 Escalation Matrix

+------------------------------------------------------------------+
|                    ESCALATION MATRIX                              |
+------------------------------------------------------------------+

Time Since    P1 (Critical)        P2 (Major)          P3 (Minor)
Detection
-----------   ----------------     ----------------    ----------------
0-15 min      NOC Analyst          NOC Analyst         NOC Analyst
              (Acknowledge)        (Acknowledge)       (Acknowledge)

15-30 min     Network Engineer     -                   -
              (Tier 2 engaged)

30-60 min     SD-Access Engineer   Network Engineer    -
              (Tier 3 engaged)     (Tier 2 engaged)

1-2 hours     Network Manager      -                   Network Engineer
              (Management aware)

2-4 hours     IT Director          SD-Access Engineer  -
              Cisco TAC opened     (Tier 3 engaged)

4+ hours      CTO/VP               Network Manager     SD-Access Engineer
              Executive bridge