Tous les produits
Search
Centre de documentation

Web Application Firewall:Exemples de configuration d'alertes pour les journaux WAF

Dernière mise à jour :Aug 10, 2026

Cette rubrique présente des exemples de configuration d'alertes pour les journaux Web Application Firewall (WAF). Utilisez ces exemples pour ajouter des graphiques de surveillance à un tableau de bord de journaux WAF et configurer des alertes.

Important

Les paramètres de configuration d'alerte présentés dans cette rubrique s'appliquent à la fonctionnalité d'alerte d'origine de Log Service. Si vous utilisez la nouvelle fonctionnalité d'alerte, vous pouvez toujours employer les instructions de requête et les paramètres recommandés. Pour plus d'informations, consultez Démarrage rapide de la configuration des alertes.

Alerte en cas de pourcentage anormal de codes 4xx

Paramètres d'alerte recommandés :

  • Chart Name : 4xx Percentage (Blocked Requests Ignored)

  • Search Statement :

    user_id: 

    Ce graphique contient les champs suivants : aveQPS, 2xx ratio, 3xx ratio, 4xx ratio et 5xx ratio. Ils représentent respectivement les requêtes par seconde (QPS) pour un nom de domaine et le ratio de chaque type de code d'état. Le champ 4xx ratio exclut les codes d'état 444 et 405 générés par les attaques HTTP flood et les attaques web bloquées par Web Application Firewall (WAF). Cela garantit que seuls les changements de codes d'état provoqués par vos propres services sont affichés. Lors de la configuration des conditions de déclenchement des alertes, combinez ces champs. Par exemple, aveQPS>10 && 2xx ratio<60 indique que, durant la période statistique spécifiée, le QPS du nom de domaine concerné est supérieur à 10 et que le ratio 2xx est inférieur à 60 %.

  • Query Time Range : 5 Minutes (relative)

  • Frequency : Every 5 minutes

  • Trigger Condition : $0.countall > 3000 && $0."4xx Percentage" > 80

  • Notification Trigger Threshold : 2

  • Notification Interval : 10 minutes

  • Send Content :

    - [Time]: ${FireTime}
    - [UID]: ${Results[0].RawResults[0].user_id}
    - Domain: ${Results[0].RawResults[0].Domain}
    - Product: WAF
    - Total requests in the last 5 minutes: ${Results[0].RawResults[0].countall}
    - 2xx Percentage: ${Results[0].RawResults[0]."2xx Percentage"} %
    - 3xx Percentage: ${Results[0].RawResults[0]."3xx Percentage"} %
    - 4xx Percentage: ${Results[0].RawResults[0]."4xx Percentage"} %
    - 5xx Percentage: ${Results[0].RawResults[0]."5xx Percentage"} %

Alerte en cas de pourcentage anormal de codes 5xx

Paramètres d'alerte recommandés :

  • Chart Name : 5xx Percentage

  • Search Statement :

    user_id: 
  • Query Time Range : 5 Minutes (relative)

  • Frequency : Every 5 minutes

  • Trigger Condition : $0.countall > 3000 && $0."5xx Percentage" > 80

  • Notification Trigger Threshold : 2

  • Notification Interval : 10 minutes

  • Send Content :

    - [Time]: ${FireTime}
    - [UID]: ${Results[0].RawResults[0].user_id}
    - Domain: ${Results[0].RawResults[0].Domain}
    - Product: WAF
    - Total requests in the last 5 minutes: ${Results[0].RawResults[0].countall}
    - 2xx Percentage: ${Results[0].RawResults[0]."2xx Percentage"} %
    - 3xx Percentage: ${Results[0].RawResults[0]."3xx Percentage"} %
    - 4xx Percentage: ${Results[0].RawResults[0]."4xx Percentage"} %
    - 5xx Percentage: ${Results[0].RawResults[0]."5xx Percentage"} %

Alerte en cas de QPS anormal

Paramètres d'alerte recommandés :

  • Chart Name : Top 5 QPS

  • Search Statement :

    user_id: 
  • Query Time Range : 1 Minute (relative)

  • Frequency : Every 1 minute

  • Trigger Condition : $0.aveQPS >= 50

  • Notification Trigger Threshold : 1

  • Notification Interval : 5 minutes

  • Send Content :

    - [Time]: ${FireTime}
    - [UID]: ${Results[0].RawResults[0].user_id}
    - Domain name: ${Results[0].RawResults[0].host}
    - Product: WAF
    - Average QPS in the last minute: ${Results[0].RawResults[0].aveQPS}
    - 2xx status code rate: ${Results[0].RawResults[0].Rate_2XX}%
    - 3xx status code rate: ${Results[0].RawResults[0].Rate_3XX}%
    - 4xx status code rate: ${Results[0].RawResults[0].Rate_4XX}%
    - 5xx status code rate: ${Results[0].RawResults[0].Rate_5XX}%

Alerte en cas de pic de QPS

Paramètres d'alerte recommandés :

  • Chart Name : QPS surge monitoring

  • Search Statement :

    user_id: 
  • Query Time Range : 1 Minute (relative)

  • Frequency : Every 1 minute

  • Trigger Condition : $0.now1mqps > 50 && $0.in_ratio > 300

  • Notification Trigger Threshold : 1

  • Notification Interval : 5 minutes

  • Send Content :

    - [Time]: ${FireTime}
    - [UID]: ${Results[0].RawResults[0].user_id}
    - Domain name: ${Results[0].RawResults[0].host}
    - Product: WAF
    - Average QPS in the last minute: ${Results[0].RawResults[0].now1mqps}
    - QPS surge rate: ${Results[0].RawResults[0].in_ratio}%
    - 2xx status code rate: ${Results[0].RawResults[0].Rate_2XX}%
    - 3xx status code rate: ${Results[0].RawResults[0].Rate_3XX}%
    - 4xx status code rate: ${Results[0].RawResults[0].Rate_4XX}%
    - 5xx status code rate: ${Results[0].RawResults[0].Rate_5XX}%

Alerte en cas de chute de QPS

  • Chart Name : QPS drop monitoring

  • Search Statement :

    user_id: 

    Ce graphique inclut des champs tels que now1mqps (QPS moyen de la minute actuelle), past1mqps (QPS moyen de la minute précédente), de_ratio (taux de diminution du QPS) et host. Définissez des conditions d'alerte à l'aide de ces champs selon vos besoins.

  • Query Time Range : 1 Minute (relative)

  • Frequency : Every 1 minute

  • Trigger Condition : $0.now1mqps > 10 && $0.de_ratio > 50

  • Notification Trigger Threshold : 2

  • Notification Interval : 5 minutes

  • Send Content :

    - [Time]: ${FireTime}
    - [UID]: ${Results[0].RawResults[0].user_id}
    - Domain name: ${Results[0].RawResults[0].host}
    - Product: WAF (International)
    - Average QPS in the last minute: ${Results[0].RawResults[0].now1mqps}
    - QPS drop rate: ${Results[0].RawResults[0].de_ratio}%
    - 2xx status code rate: ${Results[0].RawResults[0].Rate_2XX}%
    - 3xx status code rate: ${Results[0].RawResults[0].Rate_3XX}%
    - 4xx status code rate: ${Results[0].RawResults[0].Rate_4XX}%
    - 5xx status code rate: ${Results[0].RawResults[0].Rate_5XX}%

Alerte pour les requêtes bloquées par les règles ACL

Paramètres d'alerte recommandés :

  • Chart Name : Requests blocked by ACL rules

  • Search Statement :

    user_id: 
  • Query Time Range : 5 Minutes (relative)

  • Frequency : Every 5 minutes

  • Trigger Condition : $0.totalblock >= 500 && ($0."Requests Blocked by ACL Policies" >= 500)

  • Notification Trigger Threshold : 1

  • Notification Interval : 5 minutes

  • Send Content :

    - [Time]: ${FireTime}
    - [UID]: ${Results[0].RawResults[0].user_id}
    - Domain: ${Results[0].RawResults[0].host}
    - Product: WAF
    - Total blocked requests in the last 5 minutes: ${Results[0].RawResults[0].totalblock}
    - Requests blocked by ACL policies: ${Results[0].RawResults[0]."Requests Blocked by ACL Policies"}
    - Requests blocked by Protection Rules Engine: ${Results[0].RawResults[0]."Requests Blocked by Protection Rules Engine"}
    - Requests blocked by HTTP flood protection policies: ${Results[0].RawResults[0]."Requests Blocked by HTTP Flood Protection Policies"}
    - Requests blocked by scan protection policies: ${Results[0].RawResults[0]."Requests Blocked by Scan Protection Policies"}

Alerte pour les requêtes bloquées par les règles de protection

Paramètres d'alerte recommandés :

  • Chart Name : Requests blocked by Protection Rules Engine

  • Search Statement :

    user_id: 
  • Query Time Range : 5 Minutes (relative)

  • Frequency : Every 5 minutes

  • Trigger Condition : $0.totalblock >= 500 && ($0."Requests Blocked by Protection Rules Engine" >= 500)

  • Notification Trigger Threshold : 1

  • Notification Interval : 5 minutes

  • Send Content :

    - [Time]: ${FireTime}
    - [UID]: ${Results[0].RawResults[0].user_id}
    - Domain: ${Results[0].RawResults[0].host}
    - Product: WAF
    - Total blocked requests in the last 5 minutes: ${Results[0].RawResults[0].totalblock}
    - Requests blocked by ACL policies: ${Results[0].RawResults[0]."Requests Blocked by ACL Policies"}
    - Requests blocked by Protection Rules Engine: ${Results[0].RawResults[0]."Requests Blocked by Protection Rules Engine"}
    - Requests blocked by HTTP flood protection policies: ${Results[0].RawResults[0]."Requests Blocked by HTTP Flood Protection Policies"}
    - Requests blocked by scan protection policies: ${Results[0].RawResults[0]."Requests Blocked by Scan Protection Policies"}

Alerte pour les requêtes bloquées par la protection contre les attaques HTTP flood

Paramètres d'alerte recommandés :

  • Chart Name : Requests blocked by HTTP flood protection policies

  • Search Statement :

    user_id: 
  • Query Time Range : 5 Minutes (relative)

  • Frequency : Every 5 minutes

  • Trigger Condition : $0.totalblock >= 500 && ($0."Requests Blocked by HTTP Flood Protection Policies" >= 500)

  • Notification Trigger Threshold : 1

  • Notification Interval : 5 minutes

  • Send Content : Obligatoire. Contenu à envoyer. Le contenu peut être une variable. Par exemple, définissez le contenu sur ${message}. La variable doit être une chaîne. Si le contenu est une chaîne JSON, utilisez la fonction json_parse pour la convertir en objet JSON. Par exemple, json_parse(${message}). Pour plus d'informations, consultez Fonctions JSON et Fonctions de chaîne.

    - [Time]: ${FireTime}
    - [UID]: ${Results[0].RawResults[0].user_id}
    - Domain: ${Results[0].RawResults[0].host}
    - Product: WAF
    - Total blocked requests in the last 5 minutes: ${Results[0].RawResults[0].totalblock}
    - Requests blocked by ACL policies: ${Results[0].RawResults[0]."Requests Blocked by ACL Policies"}
    - Requests blocked by Protection Rules Engine: ${Results[0].RawResults[0]."Requests Blocked by Protection Rules Engine"}
    - Requests blocked by HTTP flood protection policies: ${Results[0].RawResults[0]."Requests Blocked by HTTP Flood Protection Policies"}
    - Requests blocked by scan protection policies: ${Results[0].RawResults[0]."Requests Blocked by Scan Protection Policies"}

Alerte pour les requêtes bloquées par la protection contre les analyses

Paramètres d'alerte recommandés :

  • Chart Name : Requests blocked by scan protection policies

  • Search Statement :

    user_id: 
  • Query Time Range : 5 Minutes (relative)

  • Frequency : Every 5 minutes

  • Trigger Condition : $0.totalblock >= 500 && ($0."Requests Blocked by Scan Protection Policies" >= 500)

  • Notification Trigger Threshold : 1

  • Notification Interval : 5 minutes

  • Send Content :

    - [Time]: ${FireTime}
    - [UID]: ${Results[0].RawResults[0].user_id}
    - Domain: ${Results[0].RawResults[0].host}
    - Product: WAF (International)
    - Total blocked requests in the last 5 minutes: ${Results[0].RawResults[0].totalblock}
    - Requests blocked by ACL policies: ${Results[0].RawResults[0]."Requests Blocked by ACL Policies"}
    - Requests blocked by Protection Rules Engine: ${Results[0].RawResults[0]."Requests Blocked by Protection Rules Engine"}
    - Requests blocked by HTTP flood protection policies: ${Results[0].RawResults[0]."Requests Blocked by HTTP Flood Protection Policies"}
    - Requests blocked by scan protection policies: ${Results[0].RawResults[0]."Requests Blocked by Scan Protection Policies"}

Alerte pour les attaques provenant d'une seule adresse IP

Paramètres d'alerte recommandés :

  • Chart Name : Attack volume from a single IP

  • Search Statement :

    user_id: 

    Le graphique inclut les champs real_client_ip (adresse IP de l'attaque), blockNum (incluant requests blocked by ACL policies, requests blocked by the Protection Rules Engine et requests blocked by HTTP flood protection policies), totalblock (nombre total de requêtes bloquées) et allRequest (nombre total de requêtes). Définissez des conditions d'alerte à l'aide de ces champs selon vos besoins.

  • Query Time Range : 5 Minutes (relative)

  • Frequency : Every 5 minutes

  • Trigger Condition : $0.totalblock >= 500

  • Notification Trigger Threshold : 1

  • Notification Interval : 5 minutes

  • Send Content :

    - [Time]: ${FireTime}
    - [UID]: ${Results[0].RawResults[0].user_id}
    - Product: WAF
    - Top 3 attack IP addresses in the last 5 minutes:
    - ${Results[0].RawResults[0].real_client_ip} (${Results[0].RawResults[0].blockNum})
    - ${Results[0].RawResults[1].real_client_ip} (${Results[0].RawResults[1].blockNum})
    - ${Results[0].RawResults[2].real_client_ip} (${Results[0].RawResults[2].blockNum})

Alerte lorsqu'une seule adresse IP attaque plusieurs domaines

Paramètres d'alerte recommandés :

  • Chart Name : Number of domains attacked by a single IP

  • Search Statement :

    user_id: 

    Ce graphique contient des champs tels que real_client_ip (adresse IP de l'attaque), totalblock (nombre total de requêtes bloquées) et domainnum (nombre de noms de domaine attaqués par l'adresse IP). Combinez ces champs pour configurer les conditions de déclenchement des alertes. Par exemple, totalblock>500&& domainnum>5 indique que le nombre total de requêtes bloquées provenant d'une adresse IP est supérieur à 500 et que le nombre de noms de domaine attaqués est supérieur à 5 durant la période spécifiée.

  • Query Time Range : 5 Minutes (relative)

  • Frequency : Every 1 minute

  • Trigger Condition : [INVALID] $0.domainnum >= 10

  • Notification Trigger Threshold : 1

  • Notification Interval : 5 minutes

  • Send Content :

    - [Time]: ${FireTime}
    - [UID]: ${Results[0].RawResults[0].user_id}
    - Product: WAF
    - Attack IP Address: [INVALID FIELD: real_client_ip]
    - Number of attacked domains: [INVALID FIELD: domainnum]
    - Total attack requests in the last 5 minutes: ${Results[0].RawResults[0].totalblock}
    - Please handle this issue promptly.

Alerte en cas de latence moyenne anormale

Paramètres d'alerte recommandés :

  • Chart Name : Average latency monitoring

  • Search Statement :

    user_id: 
  • Query Time Range : 5 Minutes (relative)

  • Frequency : Every 5 minutes

  • Trigger Condition : $0.request_time > 1000 && $0.requestnum > 30

  • Notification Trigger Threshold : 2

  • Notification Interval : 10 minutes

  • Send Content :

    - [Time]: ${FireTime}
    - [UID]: ${Results[0].RawResults[0].user_id}
    - Domain: ${Results[0].RawResults[0].host}
    - Product: WAF (International)
    - [Trigger Condition]: ${condition}
    - Top 3 domains with the longest latency in the last 5 minutes (Unit: ms):
    - Host1: ${Results[0].RawResults[0].host} Upstream Latency (ms): ${Results[0].RawResults[0].upstream_time} 
    - Host2: ${Results[0].RawResults[1].host} Upstream Latency (ms): ${Results[0].RawResults[1].upstream_time} 
    - Host3: ${Results[0].RawResults[2].host} Upstream Latency (ms): ${Results[0].RawResults[2].upstream_time}

Alerte en cas de chute brutale du trafic

Paramètres d'alerte recommandés :

  • Chart Name : Traffic drop monitoring

  • Search Statement :

    user_id: 
  • Query Time Range : 1 Minute (relative)

  • Frequency : Every 1 minute

  • Trigger Condition : $0.de_ratio > 50 && $0.now1mqps > 20

  • Notification Trigger Threshold : 1

  • Notification Interval : 5 minutes

  • Send Content :

    - [Time]: ${FireTime}
    - [UID]: ${Results[0].RawResults[0].user_id}
    - Product: WAF
    - Average QPS in the last minute: ${Results[0].RawResults[0].now1mqps}
    - [Trigger condition (Drop Rate & QPS)]: ${condition}
    - QPS drop rate: ${Results[0].RawResults[0].de_ratio}%
    - 2xx status code rate: ${Results[0].RawResults[0].Rate_2XX}%
    - 3xx status code rate: ${Results[0].RawResults[0].Rate_3XX}%
    - 4xx status code rate: ${Results[0].RawResults[0].Rate_4XX}%
    - 5xx status code rate: ${Results[0].RawResults[0].Rate_5XX}%