Cette rubrique répond aux questions fréquemment posées concernant les webhooks personnalisés.
Comment configurer un modèle d'alerte ?
Pour envoyer des notifications d'alerte via un webhook personnalisé, nous vous recommandons de structurer le contenu de votre modèle d'alerte au format JSON valide. Le résultat du rendu sera ainsi un JSON valide.
Prenons l'exemple d'un modèle d'alerte pour le message suivant. Dans ce message, la valeur du champ alert.annotations.message contient des guillemets doubles (""). Si vous référencez directement le champ {{ alert.annotations.message }}, le rendu produit un format JSON invalide, ce qui empêche l'envoi des notifications d'alerte.
Utilisez la fonction intégrée quote(value) dans vos modèles d'alerte pour référencer ce champ. Cela évite les erreurs de format JSON causées par des caractères spéciaux.
-
Exemple de message d'alerte
{ "project": "test-alert", "region": "cn-hangzhou", "labels": { "service": "signin", "env": "prod" }, "annotations": { "message": "user \"xxx\" signin failed, error is: userNotFound" } } -
Exemple de modèle d'alerte
{ "project": "{{ alert.project }}", "service": "{{ alert.labels.service }}", "message": {{ alert.annotations.message | quote }} } -
Exemple de résultat après le rendu
{ "project": "test-alert", "service": "signin", "message": "user \"xxx\" signin failed, error is: userNotFound" }
Comment sélectionner un réseau ?
Le système d'alerte de Simple Log Service envoie les notifications d'alerte basées sur des webhooks uniquement via Internet. Si vous utilisez un système interne et ne souhaitez pas lui ouvrir l'accès à Internet, recourez à un proxy Internet. Le schéma ci-dessous illustre l'architecture réseau.
Comment vérifier les autorisations d'accès ?
Pour vérifier les autorisations d'accès, configurez une liste blanche d'adresses IP ou un en-tête HTTP.
Configurez une liste blanche d'adresses IP pour votre webhook et ajoutez-y les adresses 120.76.47.88 et 119.23.150.175.
-
Configurez un en-tête HTTP.
Utilisez un jeton personnalisé. Définissez le paramètre Request Header sur
Authorization: Bearer token. Remplacez token par votre jeton personnalisé.Utilisez l'authentification de base. Définissez le paramètre Request Header sur
Authorization: Basic $(base64_encode(username:password)). Remplacez username et password par votre nom d'utilisateur et votre mot de passe réels.
Par exemple, si votre webhook utilise le proxy inverse NGINX, configurez l'authentification de base dans NGINX pour vérifier les autorisations d'accès.
-
Configurez l'authentification de base dans NGINX.
-
Ajoutez un utilisateur au fichier de mots de passe.
ImportantSi le fichier conf/passwd n'existe pas, créez un fichier de mots de passe.
Les exemples suivants utilisent le nom d'utilisateur admin et le mot de passe foobar.
htpasswd -b conf/passwd admin foobar -
Configurez les paramètres auth_basic et auth_basic_user_file dans NGINX pour activer l'authentification de base.
location / { auth_basic on; auth_basic_user_file conf/passwd; root html; index index.html index.htm; } Redémarrez NGINX.
-
-
Configurez un webhook personnalisé dans une politique d'action.
La commande
echo -n admin:foobar | base64renvoieYWRtaW46Zm9vYmFy. Lors de la configuration d'un webhook personnalisé, définissez donc le paramètre Request Header surAuthorization: Basic YWRtaW46Zm9vYmFy. Pour plus d'informations, consultez la rubrique Webhook-Custom.