Erreur logstash de type A plugin had an unrecoverable eror


(nono bzh) #1

J'ai démarré l'analyse de logs applicatif par un stack ELK en fin de semaine dernière. Je récupère les logs par rsync toutes les heures

Quand je consulte les logs du stack (docker-composelogs -f), pour l'analyse d'une partie des fichiers de logs récupérés par rsync, j'obtien l'erreur ci-dessous :

logstash_seen | [2018-12-05T15:00:20,279][ERROR][logstash.pipeline ] A plugin had an unrecoverable error. Will restart this plugin.
logstash_seen | Pipeline_id:mon_pipeline
logstash_seen | Plugin: <LogStash::Inputs::File start_position=>"beginning", path=>["/usr/share/logstash/data/file.log"], codec=><LogStash::Codecs::Multiline pattern=>"%{TIMESTAMP_ISO8601:timestamp}", what=>"previous", id=>"17cbc108-e7d9-4225-9aea-4dd3d0319918", negate=>true, enable_metric=>true, charset=>"UTF-8", multiline_tag=>"multiline", max_lines=>500, max_bytes=>10485760>, id=>"01c80b892ab62340f5525cdfb1d474acf98c296d506029acc5419808d185b491", type=>"mon_type", sincedb_path=>"/dev/null", enable_metric=>true, stat_interval=>1.0, discover_interval=>15, sincedb_write_interval=>15.0, delimiter=>"\n", close_older=>3600.0, mode=>"tail", file_completed_action=>"delete", sincedb_clean_after=>1209600.0, file_chunk_size=>32768, file_chunk_count=>140737488355327, file_sort_by=>"last_modified", file_sort_direction=>"asc">
logstash_seen | Error: Permission denied - /usr/share/logstash/data/file.log
logstash_seen | Exception: Errno::EACCES
logstash_seen | Stack: org/jruby/RubyFile.java:366:in initialize' logstash_seen | org/jruby/RubyIO.java:1154:inopen'

Pourtant, les droits sur le fichier file.log sont les suivants : -rwx-r-xrwx donc tout le monde peut lire le fichier.
De surcroit, quand je consulte les logs sur kibana, il sont bien affichés donc logstash met bien à jour ElasticSearch.

Que se passe-t-il?


(Mika) #3

As tu autorisé Java à utiliser les ports "bas niveaux" ? (de 0 à 1023)

J'ai eu une erreur similaire avec l'input en syslog :slight_smile:


(nono bzh) #4

Bonjour,

A part le dimensionnement de la JVM, je n’ai rien fait de particulier.

Comment fait-on ?


(Mika) #5

Avec la commande setcap , le chemin est peut être différent en fonction du client installé

setcap cap_net_bind_service=+epi /usr/lib/jvm/java-8-oracle/jre/bin/java