Utilisez des variables dans les modèles d'alerte pour remplir dynamiquement le contenu et l'objet des notifications.
Référence des variables
-
Les noms de variables doivent correspondre exactement.
Si une variable n'existe pas ou si la référence est invalide, la valeur par défaut est une chaîne vide.
Les objets référencés sont convertis en chaînes JSON.
-
Les noms de variables peuvent contenir des lettres, des chiffres et des traits de soulignement (_), mais ne doivent pas commencer par un chiffre.
Si un nom de variable respecte ces règles, vous pouvez récupérer sa valeur à l'aide de la notation par point, par exemple
{{alert.xxx}}.Si un nom de variable contient des caractères spéciaux, tels que
__tag__:__namespace__, vous devez utiliser la notation entre crochets pour récupérer sa valeur, par exemple{{alert.annotations["__tag__:__namespace__"] }}.
Lorsque vous configurez une politique d'action, sélectionnez un modèle d'alerte qui définit le contenu et l'objet de la notification. Dans les champs Send Content et Subject/Title, faites référence aux variables du modèle en utilisant la syntaxe {{ alert.xxx }}. Simple Log Service (SLS) remplace chaque variable par sa valeur réelle lors de l'envoi des notifications. Par exemple, {{ alert.project }} est remplacé par le nom du projet de la règle d'alerte.
Par exemple, dans un modèle de canal DingTalk, définissez l'Objet sur SLS Alert et utilisez des variables telles que {{ alert.aliuid }}, {{ alert.project }}, {{ alert.alert_name }} et {{ alert.severity }} dans le Contenu pour inclure l'ID du compte, le nom du projet, le nom de la règle d'alerte et la gravité.
Vous pouvez également utiliser le flux de contrôle et les fonctions intégrées pour traiter les données des variables. Pour plus d'informations, consultez Syntaxe des modèles d'alerte (Nouveau) et Fonctions de modèle intégrées.
Attributs d'alerte
|
Paramètre |
Description |
Type |
Valeur |
Exemple de référence |
|
aliuid |
ID du compte Alibaba Cloud du projet. |
string |
117918634953**** |
La règle d'alerte pour l'utilisateur |
|
alert_instance_id |
ID de l'instance qui a déclenché l'alerte. |
string |
ee16a8f435485f3f-5be6b81edc520-3d6**** |
L'ID de l'instance est |
|
alert_id |
ID unique de la règle d'alerte au sein du projet. |
string |
alert-12345 |
L'ID de la règle d'alerte est |
|
alert_name |
Nom de la règle d'alerte. |
string |
Règle d'alerte de test |
La règle d'alerte |
|
alert_type |
Type d'alerte.
|
string |
sls_alert |
Le type d'alerte est |
|
region |
Région où l'alerte a été déclenchée. |
string |
cn-hangzhou |
L'alerte a été déclenchée dans la région |
|
project |
Projet auquel appartient la règle d'alerte. |
string |
my-project |
Une règle d'alerte a été déclenchée dans le projet |
|
next_eval_interval |
Prochain intervalle d'évaluation, en secondes. |
int |
300 |
Prochaine évaluation dans |
|
alert_time |
Horodatage UTC de l'évaluation actuelle. |
int |
1616744734 |
L'heure d'évaluation actuelle est |
|
fire_time |
Horodatage UTC du premier déclenchement de l'alerte. |
int |
1616059834 |
L'alerte s'est d'abord déclenchée à |
|
status |
État actuel de l'alerte.
|
string |
firing |
L'état de l'alerte est |
|
resolve_time |
Horodatage UTC de la résolution de l'alerte.
|
int |
0 |
L'alerte a été résolue à |
|
severity |
Gravité de l'alerte.
|
int |
10 |
La gravité de l'alerte est |
|
labels |
Ensemble de libellés clé-valeur définis par l'utilisateur. |
map |
{"env":"test"} |
Les libellés de l'alerte sont |
|
annotations |
Ensemble d'annotations clé-valeur définies par l'utilisateur. |
map |
{ "title": "Titre de l'alerte","desc": "Description de l'alerte" } |
Les annotations de l'alerte sont |
|
results |
Tableau des paramètres de requête et des résultats intermédiaires. Pour plus d'informations sur les valeurs de cette variable, consultez Structure QueryData. |
array |
Voir l'annexe à la fin de cette rubrique. |
L'heure de début de la première requête est |
|
fire_results |
Données ayant déclenché l'alerte, correspondant au résultat de l'opération d'ensemble. Un maximum de 100 lignes est renvoyé. Si la taille de la variable fire_results dépasse 2 Ko, ou si le contenu d'un seul champ dépasse 1 Ko, les données sont tronquées. Pour savoir comment gérer les données tronquées, consultez Que faire si une alerte est déclenchée par trop de journaux et que la notification affiche des informations incomplètes ? |
array |
Voir l'annexe à la fin de cette rubrique. |
Les données ayant déclenché l'alerte sont |
|
fire_results_count |
Nombre total de lignes de données ayant déclenché l'alerte. Cette valeur peut être supérieure à 100, par exemple après une opération de produit cartésien. |
int |
3 |
L'alerte a été déclenchée par |
|
condition |
Expression d'évaluation ayant déclenché l'alerte, avec les variables remplacées par leurs valeurs de déclenchement réelles entre crochets []. Le format est |
string |
|
L'expression d'évaluation de l'alerte est |
|
raw_condition |
Expression d'évaluation d'origine, sans remplacement des variables par leurs valeurs réelles. Le format est |
string |
|
L'expression d'évaluation d'origine est |
|
policy |
Politique d'alerte ou politique d'action. Pour plus d'informations sur les valeurs de cette variable, consultez Structure Policy. |
map |
Voir l'annexe à la fin de cette rubrique. |
L'ID de la politique d'alerte est |
|
dashboard |
Nom du tableau de bord associé à l'alerte. |
string |
mydashboard |
Le tableau de bord associé est |
|
alert_url |
URL de la page de détails de l'alerte. |
string |
https://sls.console.alibabacloud.com/lognext/project/test-xxxx/alert/alert-1617164106-940166 |
L'URL de l'alerte est |
|
query_url |
URL de la page de recherche de la première requête. |
string |
https://sls.console.alibabacloud.com/lognext/project/test-xxx/logsearch/test-alert-access?encode=base64&endTime=1617175989&queryString=KiB8IHNlbGVjdCBjb3VudCgxKSBhcyBjbn****&queryTimeType=99&startTime=1617175089 |
L'URL de la première page de requête est |
|
alert_history_dashboard_url |
URL du tableau de bord Statistiques de l'historique des alertes. |
string |
https://sls.console.alibabacloud.com/lognext/project/test-xx/dashboard/internal-alert-analysis |
L'URL du tableau de bord Statistiques de l'historique des alertes est |
|
dashboard_url |
URL du tableau de bord associé à l'alerte. |
string |
https://sls.console.alibabacloud.com/next/project/myproject/dashboard/mydashboard |
L'URL du tableau de bord associé est |
|
fingerprint |
Empreinte digitale de l'alerte. Pour plus d'informations, consultez Déduplication des alertes basée sur les empreintes digitales. |
string |
478325709134bc5c |
L'empreinte digitale de l'alerte est |
|
signin_url |
URL permettant de consulter les détails de l'alerte sans se connecter à la console. Pour plus d'informations, consultez Afficher les détails d'une alerte sans connexion. |
string |
https://sls.console.alibabacloud.com/console/AlertAjax/slsSignIn.json?token=xxxx |
Structure Policy
La variable policy contient les champs suivants.
|
Paramètre |
Description |
Type |
Exemple de valeur |
|
alert_policy_id |
ID de la politique d'alerte. |
string |
sls.test-alert |
|
action_policy_id |
ID de la politique d'action configurée pour la règle d'alerte. Disponible uniquement lorsque la règle d'alerte utilise une politique d'action dynamique. |
string |
sls.test-action |
|
repeat_interval |
Intervalle de renvoi des notifications pour une alerte active. Disponible uniquement lorsque la règle d'alerte utilise une politique d'action dynamique. |
string |
4h |
Structure des données de requête
La variable results contient les champs suivants.
|
Paramètre |
Description |
Type |
Valeur |
|
store_type |
Type de stockage. Les valeurs valides sont :
|
string |
log |
|
region |
Région où se trouve le magasin de destination. Cette variable est vide si la valeur de |
string |
cn-hangzhou |
|
project |
Projet où se trouve le magasin de destination. Cette variable est vide si la valeur de |
string |
sls-test-alert |
|
store |
Nom du magasin de destination. |
string |
test-LogStore |
|
query |
Instruction de requête. |
string |
error | select count(1) as cnt |
|
start_time |
Heure de début de la requête, spécifiée sous forme d'horodatage UTC. Cette variable est vide si la valeur de |
int |
1616741485 |
|
end_time |
Heure de fin de la requête, spécifiée sous forme d'horodatage UTC. Cette variable est vide si la valeur de |
int |
1616745085 |
|
raw_results |
Tableau des résultats de la requête, contenant jusqu'à 100 lignes. Si la variable raw_results dépasse 2 Ko, ou si un champ des résultats dépasse 1 Ko, les données excédentaires sont tronquées. |
array |
|
|
raw_results_count |
Nombre total de lignes dans l'ensemble de résultats, qui peut être supérieur à 100. |
int |
20 |
|
fire_result |
Premier enregistrement du résultat de déclenchement de l'alerte, même si l'ensemble de résultats contient plusieurs enregistrements. |
map |
|
|
query_url |
URL de la page de requête dans la console. Cette variable est vide si la valeur de |
string |
https://sls.console.alibabacloud.com/lognext/project/test-xxx/logsearch/test-alert-access?encode=base64&endTime=1617175989&queryString=KiB8IHNlbGVjdCBjb3VudCgxKSBhcy***&queryTimeType=99&startTime=1617175089 |
|
dashboard_url |
URL du tableau de bord associé à la requête. |
string |
https://sls.console.alibabacloud.com/next/project/myproject/dashboard/mydashboard |
|
role_arn |
Nom de ressource Alibaba Cloud (ARN) du rôle de service. |
string |
acs:ram::117918634953****:role/aliyunslsalertmonitorrole |
FAQ
Annexe
-
Exemple pour
results:[{ "store_type": "log", "region": "cn-hangzhou", "project": "sls-alert-test", "store": "test", "query": "* | select count(1) as cnt", "start_time": 1616741485, "end_time": 1616745085, "dashboard_id": "mydashboard", "raw_results": [{ "cnt": "4" }], "raw_result_count": 1, "fire_result": { "cnt": "4" }, "truncated": false, "role_arn": "" }] -
Exemple pour
fire_results:[{ "host": "example.com", "host__1": "example.com", "pv": "836", "slbid": "slb-02", "status": "200" }, { "host": "example.com", "host__1": "example.com", "pv": "836", "slbid": "slb-02", "status": "200" }] -
Exemple pour
policy:{ "alert_policy_id": "sls.test-alert", "action_policy_id": "sls.test-action", "repeat_interval": "5m0s" }
Exemple
L'exemple suivant définit le contenu de la notification à l'aide du nouveau modèle de contenu :
-
Contenu de l'alerte :
{ "alert_id": "test-alert", "alert_name": "PV/UV Alert", "project": "project-1", "status": "firing", "severity": 6, "labels": { "app": "nginx", "host": "host-1" }, "results": [ { "project": "project-1", "logstore": "logstore-1", "query": "* | select count(*) as pv" }, { "project": "project-2", "logstore": "logstore-2", "query": "* | select count(distinct user_id) as uv" } ] } -
Configuration du modèle d'alerte :
- Alert ID: {{ alert.alert_id }} - Alert Name: {{ alert.alert_name }} - Project: {{ alert.project }} - Status: {% if alert.status == "firing" %}FIRING{% else %}RESOLVED{% endif %} - Labels: {%- for key, val in alert.labels.items() %} - {{ key }}: {{ val }} {%- endfor %} - Query: {{ alert.results[0].query }} -
Résultat de sortie :
- Alert ID: test-alert - Alert Name: PV/UV Alert - Project: project-1 - Status: FIRING - Labels: - app: nginx - host: host-1 - Query: * | select count(*) as pv