hsmr a écrit 2 commentaires

  • [^] # Re: très bon en effet

    Posté par  . En réponse à la dépêche Gestion des logs avec Logstash, ElasticSearch & Kibana. Évalué à 0.

    Bonjour!

    J'ai fini par faire fonctionner le tout, mais il y a un "mais"…
    Pour rappel, mes clients Rsyslog envoient leurs messages (pour l'instant, ils envoient tout type de messages : connexion ssh, erreurs appli, erreurs systèmes, etc.) vers un serveur Rsyslog. Ce dernier renvoie tout ce qu'il récupère vers un autre serveur Elasticsearch.
    Le seul pb que j'ai, c'est le traitement des messages UTF8.
    En effet, quand un client envoie un message contenant des caractères accentués par exemple, le serveur Rsyslog n'arrive pas à l'insérer dans ES.
    Côté ES, j'ai le message suivant :

    Caused by: org.elasticsearch.common.jackson.core.JsonParseException: Invalid UTF-8 middle byte

    J'ai pu trouver certains posts liés à ce message d'erreur, mais rien qui n'ait pu me faire avancer.
    A partir de la version 7.5.4 de Rsyslog (encore en développement), il existe un module "mmutf8fix" qui corrige les problèmes liés à l'encodage en UTF8. Mais je n'ai pas réussi à mettre la main sur un RPM de ce module.
    Il ne me reste plus qu'à compiler, mais vu le nombre de dépendances, la tâche me parait ardue.
    Je cherche encore. Pour l'instant, je suis obligé d'intercaller LOGSTASH entre le serveur Rsyslog et ElasticSearch, mais je trouve cela un peu dommage…

  • [^] # Re: très bon en effet

    Posté par  . En réponse à la dépêche Gestion des logs avec Logstash, ElasticSearch & Kibana. Évalué à 2.

    Bonjour!

    Avez-vous eu l'occasion de configurer Rsyslog avec ElasticSearch en utilisant le module omelasticsearch ?
    J'essaie mais impossible de faire interagir les deux. J'ai dû louper un épisode.
    Rsyslog et Elasticsearch fonctionnent correctement, sauf que les messages ne sont pas envoyés vers ou n'arrivent pas dans ES.
    Voici la configuration côté Rsyslog :

    # this is for index names to be like: logstash-YYYY.MM.DD
    template(name="logstash-index" type="list") {
            constant(value="logstash-")
            property(name="timereported" dateFormat="rfc3339" position.from="1" position.to="4")
            constant(value=".")
            property(name="timereported" dateFormat="rfc3339" position.from="6" position.to="7")
            constant(value=".")
            property(name="timereported" dateFormat="rfc3339" position.from="9" position.to="10")
    }
    
    # this is for formatting our syslog in JSON with @timestamp
    template(name="plain-syslog" type="list") {
            constant(value="{")
            constant(value="\"@timestamp\":\"")     property(name="timereported" dateFormat="rfc3339")
            constant(value="\",\"host\":\"")        property(name="hostname")
            constant(value="\",\"severity\":\"")    property(name="syslogseverity-text")
            constant(value="\",\"facility\":\"")    property(name="syslogfacility-text")
            constant(value="\",\"tag\":\"")         property(name="syslogtag" format="json")
            constant(value="\",\"message\":\"")     property(name="msg" format="json")
            constant(value="\"}")
    }
    
    # this is where we actually send the logs to Elasticsearch (localhost:9200 by default)
    action(type="omelasticsearch" template="plain-syslog" searchIndex="logstash-index" dynSearchIndex="on" server="monserveur.elasticsearch")

    Mon cluster côté elasticsearch a pour nom CLUSTERLOG.

    Ce n'est pas vraiment le sujet du post initial, mais ça pourra toujours éventuellement servir comme alternative. Merci