Création d'une programmation pour exécuter automatiquement une requête de recherche enregistrée
Après avoir créé une recherche enregistrée, vous pouvez programmer l'exécution périodique de la requête dans cette recherche et acheminer le résultat de l'exécution de la requête vers le service Monitoring.
Autres rubriques pour les tâches planifiées :
-
Autoriser les utilisateurs à effectuer toutes les opérations sur les tâches planifiées
-
Affichage de toutes les tâches programmées dans un compartiment à l'aide de l'API
-
Surveiller les tâches planifiées de la recherche enregistrée
Les étapes suivantes s'appuient sur le service Monitoring comme cible pour la surveillance de la tâche programmée. Les mesures émises par Oracle Log Analytics sont stockées par le service Monitoring.
-
Ouvrez le menu de navigation et cliquez sur Observation et gestion. Sous Log Analytics, cliquez sur Administration. La page Présentation de l'administration apparaît.
Les ressources d'administration sont répertoriées dans le panneau de navigation de gauche sous Ressources. Cliquez sur Règles de détection.
La page Règles de détection s'ouvre. Cliquez sur Créer une règle.
La boîte de dialogue Créer une règle de détection s'ouvre.
-
Cliquez sur Règle de détection de recherche programmée.
-
Indiquez un nom de règle pour la tâche planifiée.
-
Sous Sélectionner une recherche enregistré :
Indiquez la recherche enregistrée pour laquelle créer une programmation. Tout d'abord, sélectionnez le compartiment dans lequel la recherche enregistrée est enregistrée.
Ensuite, dans le menu, sélectionnez la recherche enregistrée.
Affiche les détails de la recherche enregistrée tels que la requête et sa description.
-
Sous Fréquence de configuration :
Indiquez l'intervalle, ou fenêtre, d'agrégation. Vous pouvez optimiser la programmation en sélectionnant une fréquence d'exécution en minutes, heures, jours ou semaines. Si vous sélectionnez de plus longues agrégations, comme avec une fréquence en jours, vous pouvez affiner l'agrégation dans la plage, par exemple, l'heure d'exécution de la requête.
Vous pouvez spécifier la fréquence d'exécution de la requête, telle que
Run indefinitely
,Run once
ouCustom
.Vous pouvez également inclure le nombre de répétitions dans la spécification de fréquence pour le nombre de fois où la requête doit être exécutée.
-
Sous Sélectionner un service cible à configurer, procédez comme suit :
-
Sélectionnez le service cible dans lequel les résultats de l'exécution de la requête sont publiés, par exemple,
Monitoring
.Le service Monitoring stocke les mesures du résultat de l'exécution de la requête sur programmation.
-
Sélectionnez le compartiment de mesure, dans lequel la mesure est créée. Par défaut, un compartiment est sélectionné par Oracle Log Analytics.
-
Sélectionnez l'espace de noms de mesure dans lequel placer la nouvelle mesure. La portée des options disponibles pour sélectionner l'espace de noms est définie par la sélection du compartiment de mesure à l'étape précédente. Si certaines options ne sont pas disponibles, vous pouvez également entrer une nouvelle valeur pour l'espace de noms.
Remarque
Lorsque vous indiquez une nouvelle valeur pour l'espace de noms, sélectionnez un nom qui ne commence pas paroracle_
etoci_
. Il s'agit de préfixes réservés. Reportez-vous à Publication de mesures personnalisées. -
Vous pouvez éventuellement sélectionner le groupe de ressources auquel la mesure appartient. Un groupe de ressources est une chaîne personnalisée fournie avec une mesure personnalisée.
-
Entrez le nom de la mesure, utilisé dans l'explorateur du service Monitoring pour visualiser les mesures. Vous ne pouvez spécifier qu'une seule mesure.
Pour faciliter l'identification dans l'explorateur de mesures, il est recommandé d'inclure le nom de la recherche enregistrée dans le nom de la mesure, par exemple, <marechercheenregistrée><nom_mesure>.
-
-
Vous pouvez éventuellement développer la section Afficher les options avancées et ajouter des balises à la règle de détection.
-
Si les stratégies IAM requises ne sont pas encore définies, une notification apparaît et répertorie les stratégies associées aux opérations suivantes :
- Créer un groupe dynamique
- Appliquer les stratégies au groupe dynamique pour permettre l'exécution des tâches programmées
Prenez note des stratégies répertoriées et créez-les.
-
Cliquez sur Créer une règle de Détection.
L'exécution de la requête est à présent programmée à intervalles réguliers et les mesures obtenues sont émises vers le service Monitoring.
-
Dans la page de liste Règles de détection de recherche programmée, cliquez sur le nom de la recherche programmée. Sur la page de détails de la recherche programmée, puis cliquez sur Afficher dans l'explorateur de mesures pour visualiser les mesures dans le service Monitoring.
Autoriser les utilisateurs à effectuer toutes les opérations sur les tâches planifiées
Pour créer des tâches programmées, configurez d'abord les droits d'accès appropriés en créant les stratégies IAM suivantes :
-
Créez un groupe dynamique pour autoriser les tâches programmées à publier des mesures sur le service de surveillance à partir d'un compartiment spécifique :
ALL {resource.type='loganalyticsscheduledtask', resource.compartment.id='<compartment ocid>'}
Vous pouvez également autoriser la publication de mesures à partir de tous les compartiments :
ALL {resource.type='loganalyticsscheduledtask'}
-
Créez des stratégies pour autoriser le groupe dynamique à effectuer des opérations de tâche programmée dans la location :
allow group <group_name> to use loganalytics-scheduled-task in tenancy allow dynamic-group <dynamic_group_name> to use metrics in tenancy allow dynamic-group <dynamic_group_name> to read management-saved-search in tenancy allow dynamic-group <dynamic_group_name> to {LOG_ANALYTICS_QUERY_VIEW} in tenancy allow dynamic-group <dynamic_group_name> to {LOG_ANALYTICS_QUERYJOB_WORK_REQUEST_READ} in tenancy allow dynamic-group <dynamic_group_name> to READ loganalytics-log-group in tenancy allow dynamic-group <dynamic_group_name> to {LOG_ANALYTICS_LOOKUP_READ} in tenancy allow dynamic-group <dynamic_group_name> to read compartments in tenancy
-
Certaines des instructions de stratégie ci-dessus sont incluses dans les modèles de stratégie facilement disponibles définis par Oracle. Vous pouvez envisager d'utiliser le modèle pour votre cas d'emploi. Reportez-vous à Modèles de stratégie définis par Oracle pour les cas d'utilisation courants.
-
Pour plus d'informations sur les groupes dynamiques et les stratégies IAM, reportez-vous à Documentation OCI : Gestion des groupes dynamiques et à Documentation OCI : Gestion des stratégies.
-
Pour plus de détails sur la stratégie, reportez-vous à Construction de requêtes de mesure - Prérequis dans la documentation Oracle Cloud Infrastructure.
-
Pour obtenir la référence d'API des tâches programmées, reportez-vous à Référence ScheduledTask dans la documentation d'API Oracle Cloud Infrastructure.
Affichage de toutes les tâches programmées dans un compartiment à l'aide de l'API
Afin d'afficher les tâches programmées pour une recherche enregistrée spécifique, vous pouvez accéder à la page de détails de cette recherche. Toutefois, si vous voulez la liste de toutes les tâches programmées dans un compartiment spécifique sans référence aux recherches enregistrées pour lesquelles les tâches programmées ont été créées, utilisez l'API pour exécuter une requête de liste des tâches programmées. Reportez-vous à ListScheduledTasks.
Indiquez les paramètres suivants dans la commande GET
:
taskType=SAVED_SEARCH
compartmentId=<compartment_OCID>
limit=1000
sortOrder=DESC
sortBy=timeUpdated
Pour exécuter la commande, vous avez besoin des éléments suivants :
- Espace de noms : espace de noms Log Analytics indiqué lors de la création des tâches programmées.
- OCID de compartiment : OCID du compartiment à interroger pour obtenir la liste des tâches programmées qui y sont créées
Surveiller les tâches planifiées de la recherche enregistrée
Vous pouvez surveiller l'état des tâches programmées de la recherche enregistrée via les mesures Statut d'exécution de tâche programmée dans le service Monitoring. En cas d'échec ou d'échec de l'exécution d'une tâche en raison d'une anomalie d'infrastructure ou si une ressource ou une configuration dépendante est modifiée, la mesure fournit des détails sur l'échec pour vous aider à la rectifier.
Pour connaître les étapes permettant d'accéder à la mesure Statut d'exécution de tâche programmée, reportez-vous à Surveillance de Log Analytics à l'aide des mesures de service.
Chaque tâche planifiée de recherche enregistrée a son propre intervalle tel que spécifié dans sa programmation de tâche. Une mesure est émise vers votre location pour chaque exécution de tâche programmée. Positionnez le curseur sur les points de données du graphique pour afficher plus d'informations sur la tâche. Vous pouvez filtrer les données de mesure en fonction de l'une des dimensions Status
, DisplayName
ou ResourceId
.
-
Dans Log Analytics, cliquez sur Administration. La page Présentation de l'administration apparaît.
-
Dans le menu Ressources de gauche, cliquez sur Règles de détection. Dans la page de liste des règles de détection, cliquez sur le nom de la règle de détection de recherche enregistrée à ouvrir. La page de détails de la règle de détection s'ouvre.
-
Dans les liens de gauche, cliquez sur Mesures.
-
Cliquez sur le menu Options dans l'angle supérieur droit de la mesure Statut d'exécution de tâche programmée, puis sélectionnez Afficher la requête dans l'explorateur de mesures.
La mesure est maintenant affichée dans l'explorateur de mesures. Vous pouvez ainsi visualiser le graphique en détail.
Faites glisser le bouton Afficher la table de données pour afficher les détails des mesures :
-
Cliquez sur Modifier les requêtes, et sélectionnez Nom de dimension et Valeur de dimension pour la mesure. Vous pouvez filtrer les données de mesure en fonction de
taskResult
, du résultat de l'exécution de la tâche programmée,Status
de l'exécution de la tâche,DisplayName
de la tâche,queryExecTimeRange
ouResourceId
.Remarque
Pour afficher des graphiques et des données tabulaires à partir de l'explorateur de mesures en indiquant un nom de dimension et une valeur de dimension, évitez d'utiliser des champs avec des parenthèses ou d'autres caractères spéciaux dans le nom. Si le champ sélectionné pour le nom de dimension comporte des caractères spéciaux, créez un champ virtuel à l'aide de la commande
eval
ou renommez le champ existant à l'aide de la commanderename
, de sorte que les parenthèses ou les caractères spéciaux soient supprimés. Par exemple, si le champ utilisé pour le nom de dimension estHost Name (Server)
, vous pouvez créer un champ virtuelhostname
avec| eval hostname=“Host Name (Server)”
.La dimension
queryExecTimeRange
est utile pour déterminer le temps nécessaire à l'exécution de la requête de tâche programmée. Les valeurs disponibles sont< 5s
,>= 5s and < 10s
,>= 10s and < 30s
et> 30s
. En général, les requêtes qui prennent plus de 30 secondes à être exécutées sont considérées comme coûteuses en termes de temps d'exécution. Reportez-vous à How to Make Your Queries Performant.La dimension
taskResult
peut avoir les valeursSucceeded
,Failed
etPaused
. La dimensionStatus
fournit des détails supplémentaires surtaskResult
. Par exemple, si la valeur detaskResult
estPaused
, la valeur deStatus
peut êtrePaused by User
.Cliquez sur Mettre le graphique à jour pour actualiser la visualisation du graphique. Le graphique affiche désormais uniquement les points de données pour lesquels vous avez appliqué le filtre.
Vous pouvez basculer sur la vue Table des données pour bénéficier d'une représentation sous forme de tableau des points de données collectés.
-
Modifiez le nom de la dimension pour afficher différentes perspectives dans le graphique.
Vous pouvez configurer des alertes pour vous informer du statut via un courriel, un SMS, Slack, PagerDuty, une URL endpoint HTTPS ou une fonction. Reportez-vous à Créer des alertes pour les événements détectés.
Voici les différentes valeurs de la dimension status
indiquées via cette mesure pour des valeurs taskResult
spécifiques :
Valeur taskResult
|
Valeur Status
|
Description | Correction recommandée |
---|---|---|---|
|
|
L'exécution de la tâche est normale |
S/O |
|
L'exécution de la tâche programmée a réussi, mais l'imputation des mesures au service de surveillance a été tronquée en raison des limites de données de mesure. |
Assurez-vous que les mesures restent dans les limites indiquées. Reportez-vous à Référence des commandes de l'interface de ligne de commande OCI - Surveillance des données de mesure du service. |
|
|
Lorsque l'exécution de la tâche planifiée réussit, mais que la requête n'a renvoyé aucun résultat. Aucune donnée de mesure n'est donc publiée sur le service de surveillance. |
Vérifiez votre requête de recherche enregistrée. En outre, ce statut peut ne pas impliquer une erreur. Il suggère uniquement que l'événement pour lequel la requête est écrite ne s'est pas produit. Par exemple, si la requête doit compter le nombre d'erreurs dans les journaux au cours des 5 dernières minutes, et si les journaux qui sont arrivés au cours des 5 dernières minutes ne comportent pas d'erreurs, |
|
|
Résultats partiels en raison de requêtes coûteuses qui prennent plus de deux minutes ou en raison d'une anomalie d'infrastructure. |
Contactez le support technique Oracle avec les informations de statut. |
|
|
Résultats partiels en raison de requêtes coûteuses qui prennent plus de deux minutes ou en raison d'une anomalie d'infrastructure. |
Contactez le support technique Oracle avec les informations de statut. |
|
|
|
L'exécution de la tâche a échoué en raison d'une anomalie d'infrastructure ou d'une défaillance récupérable. |
Contactez le support technique Oracle avec les informations de statut. |
|
|
La chaîne de requête de recherche enregistrée ou les filtres de portée ne sont pas valides. |
Vérifiez si la recherche enregistrée a été modifiée après la création de la tâche planifiée et corrigez-la. |
|
La recherche enregistrée est supprimée ou la stratégie IAM qui fournit le droit d'accès READ pour la recherche enregistrée a changé. |
Assurez-vous que la stratégie IAM est restaurée. |
|
|
La requête de recherche enregistrée n'est pas valide pour la génération de la mesure. |
Vérifiez si la recherche enregistrée a été modifiée après la création de la tâche planifiée et corrigez-la. |
|
|
Si la tâche programmée est destinée à la purge des données de journal et que le compartiment de purge est supprimé ou si la stratégie IAM pour la purge a été modifiée après la création de la tâche programmée, ce statut est affiché. |
Vérifiez si le compartiment de purge est supprimé et restaurez-le. Assurez-vous que la stratégie IAM est restaurée. |
|
|
L'un des deux motifs suivants peut déclencher le statut :
|
Si les détails de mesure sont incomplets ou non valides, mettez à jour les détails de mesure dans la définition de tâche programmée. Si la colonne de mesure n'est pas numérique ou si la valeur de dimension n'est pas cardinale, mettez à jour la recherche enregistrée pour produire une mesure et une dimension valides. |
|
|
Lorsque la valeur de |
Identifiez l'action utilisateur qui a mis l'exécution de la tâche planifiée en pause et exécutez la tâche planifiée. |
Facteurs importants pour la création de tâches planifiées
Notez les facteurs suivants pour la création de tâches planifiées :
-
Conditions requises pour la composition de requêtes :
Lorsque vous composez des requêtes pour créer des tâches planifiées, assurez-vous de respecter les exigences suivantes :
- Notez les limites suivantes pour les requêtes de règle de détection :
-
N'effectuez pas de recherche avec des caractères génériques dans le champ Contenu du journal d'origine de votre requête de tâche planifiée. Pour plus d'informations sur les recherches avec caractères génériques, reportez-vous à la section Use Keywords, Phrases, and Wildcards.
-
La commande
timestats
ne peut pas être suivie deeval
,extract
,jsonextract
,xmlextract
etlookup
. -
La commande
regex
ne doit pas être utilisée sur des champs volumineux tels queMessage
pour éviter de rendre les requêtes coûteuses en traitement.Les commandes de comparaison
like
etextract
,jsonextract
etxmlextract
ne sont pas prises en charge sur les champs volumineux tels queMessage
.Les champs de lien ou les champs utilisés dans la clause
BY
ne peuvent pas être utilisés sur des champs volumineux tels queMessage
. -
The commands which are not supported in the queries for scheduled tasks are
cluster
,clustercompare
,clusterdetails
,clustersplit
,compare
,createview
,delta
,fieldsummary
,highlightgroups
,geostats
,linkdetails
,map
,nlp
andtimecompare
.
-
- Limites maximales:
Le nombre maximum de champs pris en charge pour la clause
by
est 3.Le nombre maximal de champs pris en charge pour la commande
timestats
est 3.Le nombre maximal de fonctions d'agrégation prises en charge dans une requête de tâche planifiée est 1.
- Utilisez les valeurs des champs
link
en tant que dimensions pour l'imputation des mesures :Sélectionnez jusqu'à trois champs de dimension et une mesure numérique à publier dans le service de surveillance. Pour indiquer les champs à publier dans la surveillance, les requêtes doivent se terminer par :
... | link ... | fields -*, dim1, dim2, dim3, metric1
Par défaut, la commande
link
comporte plusieurs colonnes dans la sortie, telles que Heure de début, Heure de fin, Nombre, etc. Utilisez-*
dans la commandefields
pour enlever ces champs et indiquez éventuellement jusqu'à trois champs de dimension et un champ de mesure obligatoire.Vous pouvez avoir plusieurs instructions
eval
après la commandestats
et plusieurs fonctionsstats
pour le calcul des résultats intermédiaires. Toutefois, la requête doit se terminer parfields -*, dim1, dim2, dim3, metric1
indiquant les dimensions et la mesure à publier. Utilisez les instructions suivantes pour les requêtes de règle de détection :- Utilisez jusqu'à la commande 2
addfields
. - Utilisez jusqu'à 3 fonctions
stats
. - Les instructions
eval
sont requises pour le calcul des résultats intermédiaires et finaux.
Exemples de requête :
'Log Source' = 'OCI Email Delivery' | link 'Entity' | addfields [ * | where deliveryEventType = r and bounceType = hard | stats count as 'hard bounces' ], [ * | where deliveryEventType = e and length(ipPoolName) > 0 | stats count as 'total sent messages' ] | eval 'Total Rate' = ('hard bounces' / 'total sent messages') * 100 | fields -*, 'Entity', 'Total Rate'
'Log Source' = 'My Network Logs' | stats sum(Success) as TotalSuccess, sum(Failure) as TotalFailure | eval SuccessRate = (TotalSuccess / (TotalSuccess + TotalFailure)) * 100 | fields -*, SuccessRate
- Utilisez jusqu'à la commande 2
- Notez les limites suivantes pour les requêtes de règle de détection :
-
Arrivée tardive des journaux :
Si les tâches planifiées sont exécutées avant l'arrivée des journaux, il est possible que les tâches planifiées ne renvoient pas les résultats comme prévu. Pour éviter de manquer de tels journaux dans les tâches planifiées en raison de leur arrivée tardive, la requête doit en tenir compte en utilisant un ajustement de la période.
Par exemple, si la tâche programmée est exécutée toutes les 5 minutes pour vérifier le nombre d'erreurs d'authentification et s'il y a un délai de 3 minutes entre l'heure de génération des journaux et l'heure à laquelle ils atteignent Oracle Log Analytics, la tâche programmée ne détecte pas les journaux. Considérez que la tâche planifiée s'exécute toutes les 5 minutes, par exemple 01:00, 01:05, 01:10, etc. Si l'enregistrement de journal L1 généré à 01:04 atteint Oracle Log Analytics à 01:07. L1 n'est pas détecté dans la tâche programmée exécutée à 1:05 car le journal n'est pas arrivé à Oracle Log Analytics pour le moment. Lors de la prochaine exécution à 01:10, la requête recherche les journaux avec des horodatages compris entre 01:05 et 01:10. Dans ce cycle également, L1 n'est pas détecté car son horodatage est 01:04. La requête suivante peut ne pas voir tous les enregistrements de journal si les journaux arrivent en retard :
Label = 'Authentication Error' | stats count as logrecords by 'Log Source'
Pour déterminer le délai d'arrivée des journaux dans Oracle Log Analytics, calculez la différence entre l'horodatage mentionné dans l'enregistrement de journal et l'heure de publication du processeur de journal. L'exemple de requête suivant peut être utilisé pour vérifier s'il y a un délai :
Label = 'Authentication Error' and 'Log Processor Posting Time (OMC INT)' != null | fields 'Agent Collection Time (OMC INT)', 'Data Services Load Time', 'Process Time', 'Log Processor Posting Time (OMC INT)'
La requête suivante utilise la fonction
dateRelative
pour ajuster le délai de 3 minutes dans une tâche qui s'exécute à un intervalle de 5 minutes :Label = 'Authentication Error' and Time between dateRelative(8minute, minute) and dateRelative(3minute, minute) | stats count as logrecords by 'Log Source'
-
Autres facteurs :
-
Pour comprendre l'élaboration des requêtes dans le service Monitoring, reportez-vous à Construction de requêtes de mesure dans la documentation Oracle Cloud Infrastructure.
-
Notez les informations relatives aux limites pour la publication des données de mesure dans le service Monitoring. Les limites correspondent aux mesures pour une tâche programmée. Reportez-vous à
PostMetricData API
dans la documentation Oracle Cloud Infrastructure.Lorsque votre recherche enregistrée peut générer plus de 200 unique par champ valeurs, les résultats partiels sont publiés en raison des limites imposées par le service Monitoring. Dans ce cas, pour afficher les résultats top ou bottom 200, utilisez la commande sort.
-
Exemples de requêtes pour les tâches planifiées
Rubriques :
Exemples de requête pour l'affichage des mesures
-
Prenons un exemple où vous voulez connaître le nombre d'erreurs d'authentification dans une exécution planifiée toutes les 5 minutes :
Label = 'Authentication Error' | stats count as 'Number of Authentication Errors'
Lorsque la visualisation Tableau récapitulatif est sélectionnée dans l'explorateur de journaux, la sortie suivante s'affiche :
Chaque fois que la tâche programmée exécute une mesure telle que celle ci-dessus, elle est publiée dans le service Monitoring.
Dans l'explorateur de mesures, la mesure publiée ci-dessus peut être affichée comme suit :
Cliquez sur Afficher la table de données pour visualiser la mesure sous forme de tableau :
-
Si vous souhaitez connaître la panne des erreurs d'authentification dans chaque hôte :
Label = 'Authentication Error' | stats count as 'Number of Authentication Errors' by 'Host IP Address (Client)'
Utilisez la visualisation récapitulative pour prévisualiser la sortie de mesure de votre requête.
Dans la page Explorateur de mesures, le même graphique de mesures par adresse IP d'hôte se présente comme suit :
Pour afficher le nombre par adresse IP d'hôte, indiquez le nom de la dimension de mesure Host_IP_Address_Client et désélectionnez la case Agréger les flux de données de mesure :
Comment rendre vos requêtes performantes
Certaines des requêtes entraînent des temps d'exécution élevés ou, dans certains cas, un délai d'expiration et, éventuellement, des exécutions retardées de leurs propres tâches. Dans ce cas, il est recommandé de créer des champs étendus (EFD) ou des libellés et de les utiliser dans les filtres de vos requêtes planifiées pour les rendre moins coûteuses.
Par exemple, si vous voulez publier le nombre d'expirations de connexion dans vos journaux d'alertes de base de données toutes les 5 minutes, l'interrogation suivante est l'une des façons de l'exécuter :
'Log Source' = 'Database Alert Logs' and 'TNS-12535' | stats count as 'Number of Timeouts'
La requête ci-dessus recherche la chaîne TNS-12535
dans Contenu du journal d'origine. Cependant, ce n'est pas le moyen le plus efficace de rechercher les délais d'attente, en particulier lorsque la tâche est planifiée pour s'exécuter toutes les 5 minutes en parcourant des millions d'enregistrements.
Utilisez plutôt le champ dans lequel cet ID d'erreur est extrait et composez la requête comme indiqué ci-dessous :
'Log Source' = 'Database Alert Logs' and 'Error ID' = 'TNS-12535' | stats count as 'Number of Timeouts'
Vous pouvez également filtrer à l'aide du libellé :
'Log Source' = 'Database Alert Logs' and Label = Timeout | stats count as 'Number of Timeouts'
De nombreuses EFD et étiquettes sont définies dans les sources de journal définies par Oracle. Pour les journaux personnalisés, il est recommandé de définir vos propres étiquettes et EFD et de les utiliser dans les requêtes programmées au lieu de rechercher dans Contenu du journal d'origine. Reportez-vous à Création d'un libellé et à Utilisation de champs étendus dans les sources.