Dump ElasticSearch en Powershell

Parce que les logs d’ESXi sont particulièrement éphémères, il est fortement recommandé de les rediriger vers un syslog. Dans le cadre d’un SR chez VMware, il nous a fallu extraire le contenu d’une appliance SexiLog pour plusieurs ESX sur une période donnée. On a fait chauffé le notepad++ pour faire un truc en powershell qui fait le taff comme il faut :

$pre = '{"fields" : ["message"],"from":'
$post = ',"size": 2000,"query":{"filtered":{"query":{"bool":{"should":[{"query_string":{"query":"hostname.raw:esx.vmware.com"}}]}},"filter":{"bool":{"must":[{"range":{"@timestamp":{"from":1450738800000,"to":1450997999999}}}]}}}}}'

while ($msgs) {
$body = $pre + $i + $post
$msgs=(Invoke-RestMethod -URI "http://demo.sexilog.fr:9200/_search?pretty=1" -Method 'POST' -ContentType 'application/json' -Body $body -TimeoutSec 5).hits.hits.fields.message
$msgs|%{$_.Trim()}|Out-File -FilePath c:\temp\esx.vmware.com.log -Append

Il convient de remplacer les FQDN esx.vmware.com et demo.sexilog.fr par les vôtres et d’ajuster les valeurs from/to en epoch.

Le script extrait tous les messages pour le serveur donné, sur la période donné vers un fichier de log par batch de 2000 :

Et une fois l’export terminé, le script se termine par une erreur “attendue” :

A titre indicatif, il a fallut 1h pour extraire 1Go de log. Egalement dispo sur GitHub si besoin.

Tags: , ,

6 Responses to “Dump ElasticSearch en Powershell”

  1. Script above is missing the closing curly brace on the while loop. Github version is fine.

  2. Fixed. Thanks Joe.

  3. Why don’t your write in english that is the most used language in the world?

  4. because it’s a french blog and i wanted to focus on french people in the first place.

  5. Ok I respect your choice, this was just a suggestion/request just because I think this nice post would be appreciated by entire world.

    Anyway I thank you.


  6. Thanks. I know i should have done it at the very begining of this blog but it’s a lot of work to maintain both language. Meanwhile, google translate does a pretty good work last time i checked :)

Leave a Reply