2
votes

Interroger l'analyse du journal afin qu'elle renvoie une liste de tous les noms de table

J'utilise Python pour appeler des requêtes sur mon espace de travail Azure Log Analytics. Afin de fournir une évolutivité maximale, je souhaite implémenter une requête qui renvoie tous les noms de table dans mon espace de travail Log Analytics. Essentiellement, je voudrais générer une liste de tous les noms de table, afin que je puisse leur faire des appels plus tard dans mon script python.

J'ai essayé plusieurs requêtes différentes. Par exemple:

{'error': {'message': 'The request had some invalid properties', 'code': 'BadArgumentError', 'innererror': {'code': 'SyntaxError', 'message': 'Syntax Error'}}}

Au lieu d'obtenir une liste de tables, comme:

search * | distinct $table
search * | distinct Type

J'obtiens un message d'erreur:

{'error': 
    {
           'message': 'The request had some invalid properties', 'code': 'BadArgumentError', 'innererror': 
           {
               'code': 'SyntaxError', 'message': 'Syntax Error'
           }
    }
}

Toutes suggestions / exemples seraient grandement appréciés. Merci!

MISE À JOUR:

Après avoir de nouveau visité le site Web de l'API REST Azure Log Analytics, j'ai décidé de passer du temps à jouer avec l'outil d'exploration d'API intégré. C'est là que j'ai pu interroger avec succès l'espace de travail d'exemple pour une liste de tables. J'ai pu le faire en utilisant quelques requêtes différentes:

[
  {
    "$table": "ExampleTable"
  }
]

Bien que ces deux requêtes aient parfaitement fonctionné dans l'environnement d'exemple, elles continuent toutes deux de me faire échouer dans mes propres environnements . Mon application python, ainsi que mon Azure LogicApp continuent de recevoir des erreurs de syntaxe chaque fois que j'envoie la même requête qui renvoie des résultats parfaits dans l'explorateur d'API. Je continue d'être embarrassé par ce problème. Voici le site de l'explorateur d'API pour ceux qui voudraient tester ceci: https : //dev.loganalytics.io/apiexplorer/query? appId = DEMO_WORKSPACE & apiKey = DEMO_KEY

Aussi, pour répondre à la question évidente: oui, le reste de la connexion API est correctement configuré . Je peux et fais d'autres requêtes avec succès, à la fois dans l'application Python et dans le flux de travail LogicApp. Il semble que ce soit celui-ci en particulier qui me pose des problèmes.

Enfin, au cas où cela pourrait aider, voici le message d'erreur que je continue de recevoir chaque fois que je fais la requête:

Search * | distinct $table


0 commentaires

4 Réponses :


1
votes

En ce qui concerne la partie Kusto-query-language de la question, Search doit être une search ( s en minuscules)


1 commentaires

Merci pour votre suggestion; malheureusement, le problème persiste même avec votre correction.



1
votes

Je n'ai pas creusé profondément, mais cela semble certainement être un problème avec la compréhension Python de «$» dans votre requête. Peut-être devons-nous appeler explicitement l'API d'une manière que nous disons à Python d'échapper à «$» dans ce scénario.

Cependant, vous pouvez utiliser la requête ci-dessous pour répondre à vos besoins.

search * | distinct Type


2 commentaires

Je vous remercie d'avoir pris votre temps pour examiner ce problème auquel je suis confronté. J'ai essayé d'implémenter votre solution à la fois dans mon application Python et dans une LogicApp que j'utilise pour tester les requêtes via l'API. Votre solution renvoie cependant toujours la même erreur.


Cependant, je noterai que j'ai eu des expériences intéressantes concernant ce problème dans le cadre de mon LogicApp. Avant le 5 mars 2019, je pouvais appeler avec succès cette requête et elle renvoyait les résultats dont j'avais besoin (une liste de tous les noms de table), mais après le 5 mars 2019, LogicApp échouait chaque fois qu'il tentait d'exécuter cette requête. Le code n'a pas du tout changé, donc tout ce que je peux supposer, c'est que quelque chose a changé avec l'API ou le langage de requête.



1
votes

Veuillez noter que la recherche * | distinc ne vous donnera pas toutes les tables de votre espace de travail, seulement celles qui contiennent au moins un enregistrement. Sinon, ils n'apparaîtront pas dans les résultats de la recherche *, et donc pas non plus dans la requête distincte.

Veuillez consulter cette API pour obtenir le schéma de l'espace de travail: https://docs.microsoft. com / fr-fr / rest / api / loganalytics / workspaces% 202015-03-20 / getschema


0 commentaires

1
votes
search "*" | summarize count() by $table | sort by count_ desc
this shows you every table, sorted by the count of logs landing in it.

0 commentaires