2017-10-19 40 views
1

Création d'un type d'alerte flatline en utilisant le framework ElastAlert. Lorsque j'utilise la requête dans l'interface utilisateur de Kibana avec exactement la même syntaxe, elle renvoie des résultats, mais ElastAlert ne renvoie aucun résultat.ElastAlert flatline ne trouve pas de résultats

Voici mon elastalert-règles file.xml

name: Test Flatline 
type: flatline 
run_every: 
    seconds: 15 
relalert: 
    minutes: 0 
es_host: localhost 
es_port: 9200 
threshold: 1 
timeframe: 
    minutes: 5 
index: my-index-* 
filter: 
- query: 
    query_string: 
     query: "_type:metric" # this returns results in both kibana and elastalert 
     #query: "_type:metric AND _exists_:My\ Field\ With\ Spaces.value" # this returns results in kibana but not in elastalert 

timestamp_type: unix_ms 
alert: 
    - command 
command: ["my-bash-script.sh"] 

J'ai donc essayé jouer avec la requête et si je précise juste _type:metric alors les résultats de la recherche dans Kibana semblent correspondre à ceux ElastAlert.

Cependant, lorsque j'essaie d'utiliser la requête avec la syntaxe lucene _exists_ dans la deuxième requête, ElastAlert ne renvoie rien alors que Kibana semble être correct avec la syntaxe.

Des idées?

Répondre

0

Je l'ai eu ... juste oublié de poster une réponse.

Apparemment, pour le champ avec des espaces dont vous avez besoin pour les backslashs de sorte que la ligne en question ressemblerait à ceci:

query: "_type:metric AND _exists_:My\\ Field\\ With\\ Spaces.value" 

En outre, dans le cas particulier où vous utilisez la configuration Ansible (YAML) dont vous avez besoin pour ajouter un backslash pour échapper chaque barre oblique inverse.

Donc, l'entrée dans un fichier YAML ressemblerait à quelque chose comme ceci:

query: "My\\\\ field\\\\ With\\\\ Spaces.value"