Introduction
Surveillez n'importe quoi pour lequel vous pouvez écrire un script. Les moniteurs de script exécutent un script sur les appareils cibles selon un calendrier défini et évaluent la sortie par rapport à une condition que vous définissez — si la condition est remplie, Level déclenche une alerte.
Alors que les types de moniteurs intégrés couvrent les conditions courantes (CPU, mémoire, disque, connectivité), les moniteurs de script couvrent tout le reste : état du pare-feu, expiration des certificats, conformité des licences, santé des applications personnalisées, configuration de dérive, et toute autre caractéristique d'appareil que vous pouvez exposer avec un script. Le script s'exécute localement sur l'appareil, donc il n'y a pas de surcharge d'appels externes — juste accès direct et efficace à tout ce que le système d'exploitation peut signaler.
🎬 VIDEO
Script Monitors
Level exécute le script sélectionné sur les appareils couverts à votre fréquence configurée. Après chaque exécution, il lit la sortie complète de la console et l'évalue par rapport à votreScript output condition and Value. Si la condition est remplie pour le nombre de séries consécutives défini par votreTrigger count, une alerte se déclenche.
L'évaluation est simple par conception : le script génère quelque chose, le moniteur vérifie si cette sortie correspond à votre condition. Le script n'a pas besoin de se terminer avec un code spécifique — la sortie est ce qui compte.
ℹ️ REMARQUE :Level évalue toute la sortie du script, pas seulement la première ou la dernière ligne. Gardez cela à l'esprit lors de la rédaction de scripts qui produisent une sortie multi-lignes.
Créer le script
Avant de configurer le moniteur, écrivez et enregistrez le script qu'il exécutera. N'importe quel langage pris en charge fonctionne : PowerShell, Bash, Zsh, Python, Go, Ansible ou osquery.
💡 CONSEIL :osquery s'exécute sur Windows, macOS et Linux — un seul script osquery peut alimenter des moniteurs sur les trois plateformes sans maintenir des scripts séparés par système d'exploitation.
Le script devrait générer une valeur ou un état que Level peut évaluer proprement — un nombre, une chaîne commeTrue/False, ou un mot connu commeEnabled. Le moniteur compare ensuite cette sortie à votre seuil.
💡 CONSEIL :Pour les vérifications complexes où plusieurs conditions doivent être évaluées dans le script, générez un mot-clé déclencheur connu (commeALERT) quand la condition est malsaine, et définissez le moniteur surContains ALERT. Cela maintient la logique de passage/écheche à l'intérieur du script tout en gardant la configuration du moniteur simple.
Configuration d'un moniteur de script
Ouvrez la stratégie de moniteur cible, puis ajoutez ou modifiez un moniteur de script. LeModifier le moniteurle panneau s'ouvre sur la droite.
Nom et type
Entrez un nom dans leNomdomaine. Le nom apparaît dans l'alerte, donc rendez-le descriptif — « Pare-feu Windows désactivé » est immédiatement exploitable ; « Moniteur de script 4 » ne l'est pas.
Set Type to Run script.
Gravité
Set Gravitébasé sur l'impact de la condition que ce script détecte :
Information
Avertissement
Critique
Urgence
Système d'exploitation
Sélectionnez le système d'exploitation sur lequel le script doit s'exécuter :Windows, macOS, or Linux. Le moniteur ne s'exécutera que sur les appareils exécutant le système d'exploitation sélectionné.
Script
Sélectionnez le script à exécuter dans leScriptdomaine. Cliquez sur l'icône de lien pour ouvrir le script et l'examiner ou le modifier. CliqueTest scriptpour exécuter le script sur les appareils ciblés immédiatement et inspectez la sortie brute — utile pour confirmer que le script retourne ce que vous attendez avant que le moniteur ne devienne opérationnel.
Script Output
Script outputdéfinit comment Level compare la sortie de la console du script à votreValue. La liste complète des opérateurs :
Equals— la sortie correspond exactement à la valeur
Does not equal— la sortie ne correspond pas à la valeur
Contains— la sortie inclut la valeur comme sous-chaîne
Ne contient pas— la sortie n'inclut pas la valeur
Greater than— la sortie (numérique) est supérieure à la valeur
Supérieur ou égal à— la sortie (numérique) est supérieure ou égale à la valeur
Less than— la sortie (numérique) est inférieure à la valeur
Inférieur ou égal à— la sortie (numérique) est inférieure ou égale à la valeur
ℹ️ REMARQUE :La sortie complète de la console de votre script devient la charge utile d'alerte. Quand une alerte se déclenche, la sortie du script est visible directement dans les détails de l'alerte — donc tout ce que vous écrivez à la console (nom de l'appareil, valeurs détectées, détails d'erreur) apparaîtra là. L'écriture d'un contexte utile dans votre sortie rend les alertes beaucoup plus faciles à agir sans avoir à creuser davantage.
Value
Entrez la valeur pour comparer la sortie du script dans leValuedomaine. Pour les opérateurs numériques, entrez un nombre. Pour les opérateurs de chaîne, entrez la chaîne exacte.
💡 CONSEIL :Le motif recommandé est la sortieALERT(avec tous les détails supplémentaires utiles pour enquêter) quand une condition est malsaine, et définissezScript output to Contains ALERT. Cela fonctionne proprement avec une sortie multi-lignes, inclut tous les détails que vous ajoutez après le mot-clé, et maintient l'alerte lisible. Définissez le moniteur surNe contient pas ALERTsi vous voulez inverser la logique.
Run Frequency
Run frequencycontrôle la fréquence d'exécution du script sur les appareils cibles. Définissez l'unité (Minutes or Hours) et la valeur à l'aide du curseur ou des flèches haut/bas. La plage est 1–120 minutes ou 1–24 heures.
⚠️ AVERTISSEMENT :Exécuter les scripts à une très haute fréquence peut affecter les performances de l'appareil, particulièrement sur le matériel de spécifications inférieures ou si le script lui-même est consommateur de ressources. Commencez par un intervalle plus long et réduisez-le uniquement si votre cas d'utilisation l'exige vraiment.
Trigger Count
Trigger countdéfinit le nombre de séries de scripts consécutives qui doivent correspondre à la condition avant que Level ne crée une alerte. Utilisez les flèches haut/bas pour définir la valeur.
Un décompte de déclenchement de 1 déclenche une alerte à la première exécution correspondante. Des valeurs plus élevées exigent que la condition persiste sur plusieurs exécutions avant d'alerter — utile pour les conditions qui pourraient apparaître brièvement en raison du calendrier (un script s'exécutant au milieu d'une opération, par exemple).
Résolution automatique
Résoudre automatiquement l'alerte si elle n'est plus applicableferme l'alerte automatiquement quand une exécution de script ultérieure ne correspond plus à la condition. Activé par défaut.
Laissez ceci activé pour les conditions qui se dégagent vraiment (une valeur retombant en dessous d'un seuil, une chaîne ne figurant plus dans la sortie). Désactivez-le si vous voulez que les alertes persistent pour examen manuel.
Correction
Attachez une ou plusieurs automations pour s'exécuter quand ce moniteur se déclenche — appuyez sur une correction de configuration, redémarrez un service, ou notifiez votre équipe.
Click in the Correctiondomaine et sélectionnez une automation.
Pour en ajouter plus, cliquez+ Ajouter une autre correction.
Pour en supprimer un, cliquez sur le× next to it.
ℹ️ REMARQUE :Les remédiations s'exécutent quand l'alerte est créée, pas quand elle se résout.
Notifications
Envoyer des notifications lors de la création d'une alerte— les destinataires de la stratégie reçoivent un e-mail quand l'alerte se déclenche
Envoyer des notifications lors de la résolution de l'alerte— les destinataires de la stratégie reçoivent un e-mail quand l'alerte se résout
Les destinataires sont gérés au niveau de la stratégie de moniteur, dans leDestinataires section.
Enregistrement du moniteur
Click Mettre à jour le moniteurpour enregistrer les modifications, ouAjouter un moniteurlors de l'ajout d'un nouveau. Le moniteur commence à s'exécuter immédiatement, avec les exécutions ultérieures planifiées à partir du moment de création en fonction de votre fréquence configurée.
Exemples et inspiration
Pour des exemples complets de bout en bout montrant comment écrire un script et configurer le moniteur autour, voirExemples de moniteur de script.
The Level Library at level.io/librarya une collection organisée de scripts prêts à l'emploi et de stratégies de moniteur que vous pouvez importer dans votre compte en un clic. C'est un bon point de départ si vous cherchez à déployer quelque chose immédiatement ou si vous voulez simplement voir comment d'autres ont abordé un problème de surveillance particulier.
Best Practices
Use an ALERTsentinelle comme votre motif de sortie standard.L'approche recommandée : écrivez les scripts pour générerALERT(avec tous les détails supplémentaires après lui) quand l'appareil est dans un état malsain, puis définissez le moniteur surContains ALERT. Cela fonctionne de façon fiable avec une sortie multi-lignes, est facile à balayer dans la liste d'alertes, et maintient la logique de passage/écheche à l'intérieur du script où elle appartient.
Script PowerShell
if ($condition) {
Write-Output "ALERT: $details"
exit 1
} else {
Write-Output "OK"
exit 0
}
Gardez la logique d'évaluation dans le moniteur pour les chèques simples.Quand un script produit une valeur propre unique — un nombre,True/False, Enabled/Disabled— configurez la comparaison dans le moniteur plutôt que dans le script. Cela rend le moniteur plus facile à comprendre et à ajuster sans toucher au script.
Commencez par une fréquence de course plus longue.Réduire un intervalle est facile ; faire face à l'impact sur les performances d'un script s'exécutant trop souvent est plus difficile. L'exécution haute fréquence peut affecter les appareils de spécifications inférieures, surtout si le script fait du travail significatif.
Utilisez osquery pour la couverture multiplateforme.osquery s'exécute sur Windows, macOS et Linux et expose l'état de l'appareil via une interface de type SQL. Un seul script osquery peut souvent remplacer trois scripts distincts spécifiques au système d'exploitation.
Tester avant le déploiement. Use Test scriptpour exécuter le script sur un appareil cible et inspecter la sortie brute avant que le moniteur ne soit opérationnel. Cela attrape les surprises de format de sortie — espaces blancs supplémentaires, sauts de ligne inattendus, sortie multi-lignes — avant qu'ils ne cassent silencieusement votre moniteur.
FAQ
Qui peut créer et modifier les moniteurs de script ?Techniciens ayant accès à la stratégie de moniteur pertinente. Les paramètres d'autorisation sont gérés dansEspace de travail → Autorisations.
Comment un moniteur de script est-il différent de l'exécution d'un script via une automation ?Une automation exécute un script en réponse à un déclencheur (un calendrier, une alerte, une action manuelle). Un moniteur de script exécute un script selon un calendrier récurrent spécifiquement pour évaluer la santé des appareils et déclencher une alerte si une condition est remplie. Utilisez les moniteurs pour les vérifications de santé en cours, les automations pour les tâches réactives ou ponctuelles.
Puis-je utiliser le même script dans plusieurs moniteurs ?Oui. Un seul script peut être référencé par autant de moniteurs que nécessaire, entre différentes stratégies. Si vous mettez à jour le script, tous les moniteurs l'utilisant reprendront le changement à leur prochaine exécution.
Mon moniteur de script ne se déclenche pas même si je sais que la condition est vraie. Qu'est-ce que je dois vérifier ? Use Test scriptpour exécuter le script sur un appareil cible et inspecter la sortie brute. Problèmes courants : la sortie a des espaces blancs de début/fin qui cassent une correspondance exacteEquals, la sortie est multi-lignes et la valeur correspondante se perd, ou le script s'exécute sur des appareils qui ne correspondent pas au système d'exploitation attendu.
Que se passe-t-il pour les alertes de moniteur de script ouvertes si je supprime le moniteur ?Les alertes existantes restent en place. La suppression d'un moniteur ne ferme pas les alertes qu'il a déjà créées — résolvez-les manuellement.











