Compréhension et utilisation logstash, Kibana

(En supposant que tu as lancé Kibana / Logstash / Elasticsearch)
Est ce que tu peux te placer dans /var/log puis taper :

 touch test.log | echo "test" > test.log

Puis tu peux aller sur kibana dans dev tools et faire

GET centos/_search
1 Like

Voila le resultat dans dev tools:
{
"took": 0,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}

Et
[root@localhost log]# curl localhost:9200/_cat/indices?v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open .kibana -NkIeZsjQ0an146bPVNO8Q 1 1 2 0 5kb 5kb
yellow open centos jx9maXKpQ---I0N77JxP0A 5 1 0 0 795b 795b

Hm, ça m'étonne.
Est ce que tu peux rajouter

output {
    elasticsearch {
        hosts => [ "localhost:9200" ]
        index => "centos"
    }
    stdout {
        codec => rubydebug 
    }
}

dans ton fichier de conf et refaire:

 touch test.log | echo "test" > test.log

dans /var/log (avec logstash déjà lancé)
Est ce que tu vois bien un message qui apparait dans le terminal où tu as lancé logstash?

Non aucun message

Bon, on va essayer de commencer par plus simple.
Est ce que tu peux créer un fichier de conf test.conf avec:

input{
    stdin {  
    }
}

output {
    stdout {
        codec => rubydebug 
    }
}

puis lances logstash en indiquant ton fichier de conf

logstash -f test.conf

Une fois qu'il est lancé, tape ce que tu veux dans le terminal puis appuie sur entrée.
Est ce que logstash te donne bien une réponse?

Il veut pas se lancer avec l'option -f test.conf

test.conf est bien dans le même dossier que logstash ? Quel est le message d'erreur?

oui il est bien dans le dossier de logstash voici le message
Failed to start test.conf.service: Unit not found.

Comment tu faisais avant pour lancer logstash? Tu le lançais en tant que service ou tu allais dans le dossier bin?

en temps que service c'est vrai que je ne l'ai pas lancé dans /bin je vais essayé .

Du coup je pense que ça va marcher, tu peux directement mettre ça dans ton test.conf :

input{
    stdin {  
    }
}

output {
    elasticsearch {
        hosts => [ "localhost:9200" ]
        index => "centos"
    }
    stdout {
        codec => rubydebug 
    }
}

Et suivre les mêmes instructions qu'avant

Donc c'est bon ça fonctionne merci.
Pour mieux comprendre cette commande logstash -f test.conf elle sert à quoi exactement?

C'est juste pour indiquer à logstash quel fichier de conf utiliser :slight_smile:

OK mais une fois lancé il me redonne pas la main sur mon prompt est que je peux faire un ctrl +c.

Essaye

nohup logstash -f test.conf
1 Like

Si tu veux juste parser un fichier puis quitter, tu peux utiliser le stdin input et faire:

cat monfichier > bin/logstash -f logstash.conf

Ca devrait quitter à la fin du fichier.

Un peu comme ça: http://david.pilato.fr/blog/2015/04/28/exploring-capitaine-train-dataset/

Super merci ça fonctionne sinon je vois qu'il a pas mal de façon de parser un fichier est ce qu'il faut parser selon le type de log?

Bonjour,

En général, tu retrouve un pattern dans tes fichiers de logs. Tu peux donc parser les logs selon des formats connus et prédéfinis dans Logstash (par exemple les logs Apache) mais c'est aussi possible de les parser selon un schéma que tu définis dans les filters. Par exemple, si tes logs sont dans un format particulier propre à l'outil qui les génère, c'est possible d'appliquer des filter pour extraire les données contenues dans la ligne de log. Et dans le cas de la présence de plusieurs formats de log dans ton fichier, il est possible de tester si une ligne correspond à un premier pattern, la tagger selon la réponse et si elle ne correspondait pas, de tester un autre format.

Du coup, je ne sais pas bien si ça répond à ta question... :confused:

Merci pour les infos, ça répond à une partie de ma question mais où est ce que l'on peut trouver des exemples de fichiers de conf ou des infos sur ça?

Pour la liste des filter, c'est là: https://www.elastic.co/guide/en/logstash/current/filter-plugins.html

Pour les infos sur le filter de parsing, ce serait plutôt là: https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html . Il y a quelques exemples et l'explication de toutes les options du grok.