# XML et logstash : index non rempli

**URL:** <https://discuss.elastic.co/t/xml-et-logstash-index-non-rempli/159023>\
**Category:** Discussions en français\
**Created:** [December 2, 2018, 5:22am UTC](https://discuss.elastic.co/t/xml-et-logstash-index-non-rempli/159023 "2018-12-02T05:22:04Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Pixelicus](https://avatars.discourse-cdn.com/v4/letter/p/94ad74/32.png) [@Pixelicus](https://discuss.elastic.co/u/Pixelicus)\
**Post date:** [December 2, 2018, 5:22am UTC](https://discuss.elastic.co/t/xml-et-logstash-index-non-rempli/159023/1 "2018-12-02T05:22:04Z")

</div>

Bonjour à tous,  
je débute sur ELK et j'ai déjà fait quelques progrès (plusieurs indexes et quelques dashboard sur Kibana). Jusqu'à présent j'utilisais des parsers "homemade" pour générer mes fichiers json pour l'indexation.  
Là, je pars sur le parsing de XML avec logstash. Je suis sur une machine windows.

Après quelques essais, en parcourant la doc et les forums, j'ai maintenant un fichier de conf qui semble ok (testé avec --config.test\_and\_exit )  
Mais j'ai dû louper un (ou plusieurs) truc car logstash ne fait rien du tout.  
Il reste bloqué en mode

```auto
[2018-12-02T05:40:26,317][INFO][filewatch.observingtail] START, creating Discoverer, Watch with file and sincedb collections
[2018-12-02T05:40:26,305][INFO][logstash.agent] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
[2018-12-02T05:40:26,811][INFO][logstash.agent] Successfully started Logstash API endpoint {:port=>9600}

```

et rien ne se passe.

Mon fichier XML d'exemple est le suivant:

```auto
<?xml version="1.0" encoding="ISO-8859-1"?>
<JDBOR>
  <DisorderList count="2">
    <Disorder id="2">
      <OrphaNumber>58</OrphaNumber>
      <Name lang="en">Alexander disease</Name>
      <DisorderFlagList count="1">
        <DisorderFlag id="475">
          <Label>on-line</Label>
        </DisorderFlag>
      </DisorderFlagList>
      <SynonymList count="1">
        <Synonym lang="en">AxD</Synonym>
      </SynonymList>
      <DisorderType id="21394">
        <Name lang="en">Disease</Name>
      </DisorderType>
    </Disorder>
    <Disorder id="3">
      <OrphaNumber>61</OrphaNumber>
      <Name lang="en">Alpha-mannosidosis</Name>
      <DisorderFlagList count="1">
        <DisorderFlag id="475">
          <Label>on-line</Label>
        </DisorderFlag>
      </DisorderFlagList>
      <SynonymList count="1">
        <Synonym lang="en">Lysosomal alpha-D-mannosidase deficiency</Synonym>
      </SynonymList>
      <DisorderType id="21394">
        <Name lang="en">Disease</Name>
      </DisorderType>
    </Disorder>
  </DisorderList>
</JDBOR>

```

Et mon fichier de conf:

```auto
input {
  file {
    path => "C:\Elastic\logstash-6.4.2\bin\disample.xml"
    start_position => "beginning"
    sincedb_path => "NUL"
    codec => multiline {
    ## pattern => "^<Disorder "
	  pattern => "^<Disorder .*>"
      negate => true
      what => "previous"
    }
  }
}
filter 
{
  xml {
      store_xml => "false"
      source => "disample.xml"
      xpath => [ 
        "/JDBOR/DisorderList/Disorder/Name/text()", "Disease_name",
		"/JDBOR/DisorderList/Disorder/OrphaNumber/text()", "Orpha",
		"/JDBOR/DisorderList/Disorder/SynonymList/Synonym/text()", "synonyms",
		"/JDBOR/DisorderList/Disorder/DisorderFlagList/DisorderFlag/Label/text()", "Flag",
		"/JDBOR/DisorderList/Disorder/DisorderType/Name/text()", "Type"
      ]
  }
}
output {
 stdout { codec => rubydebug }
 elasticsearch {
  index => "diseases-xml"
  hosts => ["localhost:9200"]
  document_id => "%{[id]}"
 }
} 

```

Et bref, ça bloque comme indiqué au début.  
L'idée étant que je souhaiterais faire ce traitement via logstash et ne pas repartir sur un autre parser pour générer du json

ELK en 6.4.2

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [December 15, 2018, 7:25am UTC](https://discuss.elastic.co/t/xml-et-logstash-index-non-rempli/159023/2 "2018-12-15T07:25:13Z")

</div>

Je ne sais pas si @colinsurprenant aurait une idée.

Au cas où cela pourrait aider d'une autre manière, j'ai développé un support du XML dans FSCrawler. A tester peut-être selon ton besoin.

---

<div class="post-metadata">

**Author:** ![colinsurprenant](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/colinsurprenant/32/14776_2.png) [@colinsurprenant](https://discuss.elastic.co/u/colinsurprenant)\
**Post date:** [December 17, 2018, 5:01pm UTC](https://discuss.elastic.co/t/xml-et-logstash-index-non-rempli/159023/3 "2018-12-17T17:01:20Z")

</div>

Je crois que le problème est tout simplement avec l'option `source` du xml filter; cette option indique dans quel field du event se situe l'xml à déserialiser. Par défaut `source` est le field `message` et il semble bien que ca devrait etre ca car le file input + multiline codec va mettre le résultat de sa lecture dans le field `message`.

Laissez moi savoir si c'est effectivement le problème ici!  
Colin

---

<div class="post-metadata">

**Author:** ![Pixelicus](https://avatars.discourse-cdn.com/v4/letter/p/94ad74/32.png) [@Pixelicus](https://discuss.elastic.co/u/Pixelicus)\
**Post date:** [December 18, 2018, 10:46am UTC](https://discuss.elastic.co/t/xml-et-logstash-index-non-rempli/159023/4 "2018-12-18T10:46:18Z")

</div>

Ok, merci de votre précieuse aide, ça me paraît logique effectivement, initialement je n'avais pas capté que la source après sortie du codec n'était plus le fichier mais la source du filtre donc "message".

J'essaie ça ASAP et je vous indique le résultat. (BTW, dans "l'urgence" j'ai fini par pré-traiter mes données pour pondre du jscon captable par ELK et en faire quelques vues dans Kibana, mais bien sûr je ne lâche pas l'idée d'avoir un pipeline complet via logstash.)

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [January 15, 2019, 10:46am UTC](https://discuss.elastic.co/t/xml-et-logstash-index-non-rempli/159023/5 "2019-01-15T10:46:23Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
