Créer un programme pour exécuter automatiquement une interrogation de recherche enregistrée
Après avoir créé une recherche enregistrée, vous pouvez programmer l'exécution périodique de l'interrogation dans la recherche enregistrée et acheminer le résultat de l'exécution de l'interrogation vers le service de surveillance.
Autres sujets pour les tâches programmées :
-
Autoriser les utilisateurs à effectuer toutes les opérations sur les tâches programmées
-
Voir toutes les tâches programmées dans un compartiment à l'aide de l'API
-
Surveiller les tâches programmées de votre recherche enregistrée
Les étapes suivantes sont présentées avec le service de surveillance comme cible de la surveillance de la tâche programmée. Les mesures générées par Oracle Logging Analytics sont stockées par le service de surveillance.
-
Ouvrez le menu de navigation et cliquez sur Observabilité et gestion. Sous Logging Analytics, cliquez sur Administration. La page Aperçu de l'administration s'ouvre.
Les ressources d'administration sont répertoriées dans le volet 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.
-
Spécifiez un nom de règle pour la tâche programmée.
-
Sous Sélectionner une recherche enregistrée :
Spécifiez la recherche enregistrée pour laquelle vous souhaitez créer une programmation. Sélectionnez d'abord 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 l'interrogation et sa description.
-
Sous Fréquence de configuration :
Spécifiez l'intervalle, soit la fenêtre d'agrégation. Vous pouvez optimiser la programmation à exécuter selon les minutes, heures, jours ou semaines sélectionnés. En outre, lorsque vous sélectionnez des agrégations plus importantes, par exemple des jours, vous pouvez spécifier l'agrégation la plus fine dans l'intervalle, par exemple l'heure du jour où l'interrogation doit être exécutée.
Vous pouvez spécifier la fréquence d'exécution de l'interrogation, par exemple
Run indefinitely
,Run once
ouCustom
.Vous pouvez également inclure Nombre de répétitions dans la spécification de fréquence pour le nombre de fois où l'interrogation doit être exécutée.
-
Sous Sélectionner un service cible à configurer :
-
Sélectionnez le service cible dans lequel les résultats de l'exécution de l'interrogation sont publiés, par exemple
Surveillance
.Le service de surveillance stocke les mesures pour le résultat de l'exécution de l'interrogation sur un programme.
-
Sélectionnez Compartiment de mesures, le compartiment dans lequel la mesure sera créée. Un compartiment est sélectionné par défaut dans Oracle Logging Analytics.
-
Sélectionnez Espace de noms de mesure, l'espace de noms de mesure où vous voulez 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 mesures à l'étape précédente. Si aucune option n'est disponible, vous pouvez également entrer une nouvelle valeur pour l'espace de noms.
Note
Lorsque vous spécifiez une nouvelle valeur pour l'espace de noms, sélectionnez un nom ne commençant pas paroracle_
etoci_
. Il s'agit de préfixes réservés. Voir Publication de mesures personnalisées. -
Facultativement, sélectionnez Groupe de ressources, le groupe 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 de surveillance pour voir les mesures. Une seule mesure peut être spécifiée.
Pour faciliter l'identification dans l'explorateur de mesures, il est recommandé d'inclure le nom de la recherche enregistrée dans votre nom de mesure, par exemple, <mysavedsearchname><metric_name>.
-
-
Facultativement, développez la section Afficher les options avancées et ajoutez des marqueurs à votre règle de détection.
-
Si les politiques GIA requises ne sont pas encore définies, un avis s'affiche qui répertorie les politiques pour :
- Créer un groupe dynamique
- Appliquer les politiques au groupe dynamique pour permettre l'exécution des tâches programmées
Notez les politiques répertoriées et créez-les.
-
Cliquez sur Créer une règle de détection.
L'interrogation est maintenant programmée pour s'exécuter à intervalles réguliers et les mesures résultantes sont émises vers le service de surveillance.
-
Dans la page de liste des règles de détection de recherche programmée, cliquez sur le nom de la recherche programmée. Dans la page des détails de la recherche programmée, puis cliquez sur Voir dans l'explorateur des mesures pour voir les mesures dans le service de surveillance.
Autoriser les utilisateurs à effectuer toutes les opérations sur les tâches programmées
Pour créer des tâches programmées, configurez d'abord les autorisations appropriées en créant les politiques IAM suivantes :
-
Créez un groupe dynamique pour permettre aux tâches programmées de publier des mesures dans 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 politiques pour permettre au groupe dynamique d'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
-
Certains des énoncés de politique ci-dessus sont inclus dans les modèles de politique définis par Oracle. Vous pouvez envisager d'utiliser le modèle pour votre cas d'utilisation. Voir Modèles de politique définis par Oracle pour les cas d'utilisation commune.
-
Pour plus d'informations sur les groupes dynamiques et les politiques IAM, voir Documentation OCI : Gestion des groupes dynamiques et Documentation OCI : Gestion des politiques.
-
Pour plus de détails sur la politique, voir Création d'interrogations de mesures - Préalables dans la documentation sur Oracle Cloud Infrastructure.
-
Pour la référence à l'API des tâches programmées, voir Informations de référence sur ScheduledTask dans la documentation sur les API d'Oracle Cloud Infrastructure.
Voir toutes les tâches programmées dans un compartiment à l'aide de l'API
Pour voir les tâches programmées d'une recherche enregistrée spécifique, vous pouvez consulter la page des détails de la recherche enregistrée. Toutefois, si vous voulez lister 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 interroger la liste des tâches programmées. Voir ListScheduledTasks.
Spécifiez les paramètres suivants dans votre commande GET
:
taskType=SAVED_SEARCH
compartmentId=<compartment_OCID>
limit=1000
sortOrder=DESC
sortBy=timeUpdated
Pour exécuter la commande, vous aurez besoin des éléments suivants :
- Espace de noms : Espace de noms Logging Analytics que vous avez spécifié lors de la création des tâches programmées.
- OCID du compartiment : OCID du compartiment que vous voulez interroger pour obtenir la liste des tâches programmées qui y sont créées.
Surveiller les tâches programmées de votre recherche enregistrée
Vous pouvez surveiller l'état des tâches programmées de votre recherche enregistrée au moyen des mesures Statut d'exécution de la tâche programmée. En cas d'échec ou d'exécution ignorée 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 corriger.
Pour savoir comment accéder à la mesure Statut d'exécution de la tâche programmée, voir Surveiller Logging Analytics à l'aide de mesures de service.
Chaque tâche programmée de recherche enregistrée a son propre intervalle, comme indiqué dans son programme de tâche. Une mesure est émise à votre location pour chaque exécution de tâche programmée. Positionnez le curseur de la souris sur les points de données du graphique pour afficher plus de détails sur la tâche. Suivez ces étapes pour filtrer les données de mesure en fonction de l'une des dimensions Status
, DisplayName
ou ResourceId
:
-
Cliquez sur le menu Options dans le coin supérieur droit de la mesure Statut d'exécution de la tâche programmée, puis sélectionnez Voir l'interrogation dans l'explorateur de mesures.
La mesure est maintenant affichée dans l'explorateur des mesures. Ici, vous pouvez afficher le graphique plus en détail.
-
Cliquez sur Modifier les interrogations 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
le résultat de l'exécution de la tâche programmée, deStatus
de l'exécution de la tâche, deDisplayName
de la tâche, dequeryExecTimeRange
ou deResourceId
.Note
Pour voir les graphiques et les données tabulaires de l'explorateur de mesures en spécifiant 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 l'interrogation de tâche programmée. Les valeurs disponibles sont< 5s
,>= 5s and < 10s
,>= 10s and < 30s
et> 30s
. En général, les interrogations qui prennent plus de 30 secondes à s'exécuter sont considérées comme coûteuses en termes de temps d'exécution. Voir Exécution des interrogations.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 à jour le graphique pour actualiser la visualisation du graphique. Le graphique affiche maintenant uniquement les points de données pour lesquels vous avez appliqué le filtre.
Vous pouvez passer à la vue Table de données pour obtenir une représentation tabulaire 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 aviser du statut par courriel, SMS, Slack, PagerDuty, URL de point d'extrémité HTTPS ou fonction. Voir Créer des alertes pour des événements détectés.
Voici les différentes valeurs de la dimension status
signalées au moyen de 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 |
Non disponible |
|
L'exécution de la tâche programmée a réussi, mais le report des mesures dans le service de surveillance a été tronqué en raison des limites des données de mesure. |
Assurez-vous que les mesures restent dans les limites spécifiées. Voir Informations de référence sur les 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 programmée a réussi, mais que l'interrogation n'a retourné aucun résultat. Il n'y a donc aucune donnée de mesure publiée dans le service de surveillance. |
Vérifiez votre interrogation de recherche enregistrée. En outre, ce statut peut ne pas impliquer une erreur. Il suggère seulement que l'événement pour lequel la requête est écrite n'a pas eu lieu. Par exemple, si l'interrogation doit compter le nombre d'erreurs dans les journaux au cours des 5 dernières minutes, et si les journaux arrivés au cours des 5 dernières minutes ne comportent pas d'erreurs, |
|
|
Résultats partiels en raison d'interrogations coûteuses qui prennent plus de deux minutes ou en raison d'une anomalie d'infrastructure. |
Communiquez avec Oracle Support avec les informations sur le statut. |
|
|
Résultats partiels en raison d'interrogations coûteuses qui prennent plus de deux minutes ou en raison d'une anomalie d'infrastructure. |
Communiquez avec Oracle Support avec les informations sur le 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. |
Communiquez avec Oracle Support avec les informations sur le statut. |
|
|
La chaîne d'interrogation 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 programmée et corrigez-la. |
|
La recherche enregistrée est supprimée ou la politique IAM qui fournit l'autorisation de lecture pour la recherche enregistrée a été modifiée. |
Assurez-vous que la politique IAM est restaurée. |
|
|
L'interrogation de recherche enregistrée n'est pas valide pour générer la mesure. |
Vérifiez si la recherche enregistrée a été modifiée après la création de la tâche programmée et corrigez-la. |
|
|
Si la tâche programmée est pour l'épuration des données de journal et que le compartiment d'épuration est supprimé ou si la politique IAM pour l'épuration a été modifiée après la création de la tâche programmée, ce statut s'affiche. |
Vérifiez si le compartiment d'épuration est supprimé et restaurez-le. Assurez-vous que la politique IAM est restaurée. |
|
|
L'un des deux motifs suivants peut déclencher le statut :
|
Si les détails de la mesure sont incomplets ou non valides, mettez-les à jour 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 en pause l'exécution de la tâche programmée et exécutez la tâche programmée. |
Facteurs importants pour la création de tâches programmées
Notez les facteurs suivants pour créer des tâches programmées :
-
Exigences pour la rédaction d'interrogations :
Lorsque vous rédigez des interrogations pour créer des tâches programmées, assurez-vous de respecter les exigences suivantes :
- Notez ces limites pour les interrogations de règle de détection :
-
N'effectuez pas de recherche avec des caractères génériques dans le champ Contenu de journal initial de votre interrogation de tâche programmée. Pour plus d'informations sur les recherches avec des caractères génériques, voir Utiliser des mots clés, des phrases et des caractères génériques.
-
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 interrogations coûteuses à traiter.Les commandes de comparaison
like
etextract
,jsonextract
,xmlextract
ne sont pas prises en charge dans les grands champs tels queMessage
.Les champs de lien ou les champs utilisés dans la clause
BY
ne peuvent pas être utilisés dans 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
,eventstats
,fieldsummary
,highlightgroups
,geostats
,linkdetails
,map
,nlp
andtimecompare
.
-
- Limites maximales :
Le nombre maximal 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 interrogation de tâche programmée est 1.
- Utilisez les valeurs des champs
link
comme dimensions pour la publication des mesures :Sélectionnez jusqu'à trois champs de dimension et une mesure numérique à reporter dans le service de surveillance. Pour indiquer les champs à reporter dans la surveillance, les interrogations doivent se terminer par :
... | link ... | fields -*, dim1, dim2, dim3, metric1
La commande
link
comporte plusieurs colonnes dans la sortie, telles que l'heure de début, l'heure de fin, le nombre, etc., par défaut. Utilisez-*
dans la commandefields
pour supprimer ces champs et spécifier éventuellement jusqu'à trois champs de dimension et un champ de mesure obligatoire.Vous pouvez avoir plusieurs énoncés
eval
après la commandestats
et plusieurs fonctionsstats
pour calculer les résultats intermédiaires. Toutefois, l'interrogation doit se terminer parfields -*, dim1, dim2, dim3, metric1
indiquant les dimensions et la mesure qui doivent être publiées. Utilisez les directives suivantes pour les interrogations de règle de détection :- Utilisez jusqu'à la commande
addfields
2. - Utilisez jusqu'à 3 fonctions
stats
. - Les énoncés
eval
sont requis pour calculer les résultats intermédiaires et finaux.
Exemples d'interrogations :
'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
- Notez ces limites pour les interrogations de règle de détection :
-
Arrivée en retard des journaux :
Si les tâches programmées s'exécutent avant l'arrivée des journaux, il se peut que les tâches programmées ne retournent pas les résultats comme prévu. Pour éviter de manquer de tels journaux dans les tâches programmées en raison de leur arrivée tardive, l'interrogation doit tenir compte de ces journaux en utilisant un ajustement de l'intervalle de temps.
Par exemple, si la tâche programmée s'exécute 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 le moment où les journaux sont générés et le moment où ils atteignent Oracle Logging Analytics, la tâche programmée ne détectera pas les journaux. Considérez que la tâche programmé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 Logging Analytics à 01:07. L1 n'est pas détecté dans la tâche programmée qui s'est exécutée à 1:05, car le journal n'est pas arrivé à Oracle Logging Analytics pour le moment. Lors de l'exécution suivante à 01:10, l'interrogation recherche les journaux dont l'horodatage est compris entre 01:05 et 01:10. Dans ce cycle également, L1 n'est pas détecté car il a un horodatage de 01:04. L'interrogation suivante peut ne pas voir tous les enregistrements de journaux 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 Logging Analytics, calculez la différence entre l'horodatage mentionné dans l'enregistrement de journal et l'heure de report du processeur de journaux. L'exemple d'interrogation 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)'
L'interrogation 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 comment les interrogations sont créées dans le service de surveillance, voir Création d'interrogations de mesure dans la documentation sur Oracle Cloud Infrastructure.
-
Notez les informations de limite pour la publication des données de mesure dans le service de surveillance. Les limites correspondent aux mesures d'une tâche programmée. Voir
PostMetricData API
dans la documentation sur Oracle Cloud Infrastructure.Lorsque votre recherche enregistrée peut générer plus de 50 valeurs uniques par champ, des résultats partiels sont reportés en raison des limites imposées par le service de surveillance. Dans de tels cas, pour voir les résultats en haut ou en bas 50, utilisez la commande trier.
-
Exemples d'interrogations pour les tâches programmées
Rubriques :
Exemples d'interrogation pour l'affichage des mesures
-
Prenons un exemple où vous voulez connaître le nombre d'erreurs d'authentification dans une exécution programmée toutes les 5 minutes :
Label = 'Authentication Error' | stats count as 'Number of Authentication Errors'
Lorsque la visualisation Table sommaire 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 ci-dessus, la même mesure est publiée dans le service de surveillance.
Dans l'explorateur de mesures, la mesure publiée ci-dessus peut être consultée comme suit :
Cliquez sur Afficher la table de données pour voir la mesure dans le format tabulaire :
-
Si vous voulez connaître la répartition 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 Sommaire pour prévisualiser la sortie d'une mesure pour votre interrogation.
À partir de la page Explorateur de mesures, le graphique IP de mesure par hôte ressemble à ceci :
Pour voir le nombre par adresse IP d'hôte, indiquez le nom de la dimension de mesure Host_IP_Address_Client et décochez la case Agréger les flux de mesures :
Comment rendre vos requêtes performantes
Certaines interrogations entraînent des temps d'exécution élevés ou, dans certains cas, une temporisation et, éventuellement, des exécutions retardées de leurs propres tâches. Dans de tels cas, il est recommandé de créer des champs étendus (EFD) ou des étiquettes et de les utiliser dans les filtres de vos interrogations programmées pour rendre les interrogations moins coûteuses.
Par exemple, si vous voulez reporter le nombre de temporisations de connexion dans les journaux d'alerte 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'
L'interrogation ci-dessus recherche la chaîne TNS-12535
dans Contenu de journal initial. Cependant, ce n'est pas le moyen le plus efficace de rechercher les temporisations, en particulier lorsque la tâche est programmée pour s'exécuter toutes les 5 minutes en parcourant des millions d'enregistrements.
Utilisez plutôt le champ dans lequel cet ID erreur est extrait et composez l'interrogation 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 de l'étiquette :
'Log Source' = 'Database Alert Logs' and Label = Timeout | stats count as 'Number of Timeouts'
De nombreuses sources de journaux définies par Oracle contiennent des EFD et des étiquettes. Pour les journaux personnalisés, il est recommandé de définir vos propres étiquettes et EFD et de les utiliser dans les interrogations programmées au lieu de rechercher dans Contenu du journal initial. Voir Créer une étiquette et Utiliser des champs étendus dans les sources.