Réception de logs GELF

Bonjour,
je tente d'envoyer des logs en GELF. Il ne sont pas reçu par la plateforme, mais sur un autre serveur avec un logstash, je reçois bien de la donnée :

`/opt/logstash/bin/logstash --debug -e 'input { gelf { port => 2202 }} output { stdout {} }'`

Voici un exemple de ce que je reçois d'après les traces de debug de logstash :

`filter received {:event=>{"host"=>"host.local", "level"=>6, "facility"=>"java-test", "@version"=>"1", "@timestamp"=>"2017-02-16T10:51:19.073Z", "source_host"=>"MON_IP", "message"=>"Starting app", "LoggerName"=>"play", "Server"=>"host.local", "SourceSimpleClassName"=>"Logger", "SourceClassName"=>"play.Logger", "Time"=>"2017-02-16 11:51:19,0073", "Severity"=>"INFO", "_X-OVH-TOKEN"=>"MON TOKEN", "SourceLineNumber"=>308, "version"=>"1.1", "Thread"=>"main", "SourceMethodName"=>"info"}, :level=>:debug, :file=>"(eval)", :line=>"18", :method=>"filter_func"}`

Je ne vois vraiment pas ce qu'il pourrait manquer ( _X-OVH-TOKEN est ok, la version est ok).
Quelqu'un aurait une idée ?

L'objectif de fond est d'utiliser log4j pour envoyer les logs en udp, actuellement j'utilise biz.paluch.logging.gelf.log4j.GelfLogAppender


Merci !

Bonjour,

Merci pour votre intérêt sur Logs Data Paltform.

Et voici la conf pour https://github.com/mp911de/logstash-gelf/

mvn:


biz.paluch.logging
logstash-gelf
1.11.0


log4j.properties:

log4j.appender.gelf=biz.paluch.logging.gelf.log4j.GelfLogAppender
log4j.appender.gelf.Threshold=INFO
log4j.appender.gelf.Host=udp:XX.logs.ovh.com
log4j.appender.gelf.Port=2202
log4j.appender.gelf.Version=1.1
log4j.appender.gelf.Facility=java-test
log4j.appender.gelf.ExtractStackTrace=true
log4j.appender.gelf.FilterStackTrace=true
log4j.appender.gelf.MdcProfiling=false
log4j.appender.gelf.TimestampPattern=yyyy-MM-dd HH:mm:ss,SSSS
log4j.appender.gelf.MaximumMessageSize=8192

# This are static fields
log4j.appender.gelf.AdditionalFields=X-OVH-TOKEN=MON_TOKEN
# Optional: Specify field types
log4j.appender.gelf.AdditionalFieldTypes=X-OVH-TOKEN=String

Merci pour la réponse, vous avez pu le tester avec succès ? J'ai déjà pu tester ces deux appenders, et aucun résultat :

log4j.appender.gelf=biz.paluch.logging.gelf.log4j.GelfLogAppender
log4j.appender.gelf.Threshold=INFO
log4j.appender.gelf.Host=udp:gra2.logs.ovh.com
log4j.appender.gelf.Port=2202
log4j.appender.gelf.Version=1.1
log4j.appender.gelf.Facility=java-test
log4j.appender.gelf.ExtractStackTrace=true
log4j.appender.gelf.FilterStackTrace=true
log4j.appender.gelf.MdcProfiling=true
log4j.appender.gelf.TimestampPattern=yyyy-MM-dd HH:mm:ss,SSSS
log4j.appender.gelf.MaximumMessageSize=8192
log4j.appender.gelf.AdditionalFields=X-OVH-TOKEN=,version=1.1,short_message=GELF UDP,sd_id=LOCAL,timestamp=1487243286.0
log4j.appender.gelf.AdditionalFieldTypes=X-OVH-TOKEN=String,version=String,short_message=String,sd_id=String,timestamp=Double

log4j.appender.gelf1=biz.paluch.logging.gelf.log4j.GelfLogAppender
log4j.appender.gelf1.Threshold=INFO
log4j.appender.gelf1.Host=udp:gra2.logs.ovh.com
log4j.appender.gelf1.Port=2202
log4j.appender.gelf1.Version=1.1
log4j.appender.gelf1.Facility=java-test
log4j.appender.gelf1.ExtractStackTrace=true
log4j.appender.gelf1.FilterStackTrace=true
log4j.appender.gelf1.MdcProfiling=false
log4j.appender.gelf1.TimestampPattern=yyyy-MM-dd HH:mm:ss,SSSS
log4j.appender.gelf1.MaximumMessageSize=8192

# This are static fields
log4j.appender.gelf1.AdditionalFields=X-OVH-TOKEN=

# Optional: Specify field types
log4j.appender.gelf1.AdditionalFieldTypes=X-OVH-TOKEN=String


log4j.appender.graylog2=org.graylog2.log.GelfAppender
log4j.appender.graylog2.graylogHost=gra2.logs.ovh.com
log4j.appender.graylog2.graylogPort=2202
log4j.appender.graylog2.originHost=my.machine.example.com
log4j.appender.graylog2.facility=gelf-java
log4j.appender.graylog2.layout=org.apache.log4j.PatternLayout
log4j.appender.graylog2.extractStacktrace=true
log4j.appender.graylog2.addExtendedInformation=true
log4j.appender.graylog2.additionalFields={'version': '1.1', 'X-OVH-TOKEN': '
**'}


Aucune de ces configurations ne fonctionne. Est-ce que vous avez la possibilité de trouver des informations basées sur l'ip que j'utilise pour l'envoi afin de savoir ce qui pourrait ne pas fonctionner ?

Remplacez udp: par tcp: pour les deux librairies si c'est acceptable pour vous (vous gagnez le acknowledge).

Le choix de l'udp était volontaire. Par contre en TCP ça fonctionne parfaitement, est-ce qu'il existe une contrainte de votre côté, ou est-ce que je dois chercher du côté d'un problème de librairie ?
C'est dommage car j'aurais bien aimé éviter le tcp.
Merci en tout cas.

Nous pensons que la méthode de compression des deux librairies est mal décodée par nos collecteurs.
On diagnostique dans ce sens.

ceci expliquerait cela :slight_smile:
Est-ce que je dois me tenir prêt pour une prise en charge à court terme, ou est-ce que je dois trouver une solution de repli d'ici à ce que vous ayez trouvé la solution ?

https://github.com/mp911de/logstash-gelf/ fixé en UDP.

L'autre librairie : https://github.com/t0xa/gelfj/blob/master/src/main/java/org/graylog2/GelfMessage.java#L227 envoit le timestamp en String ce qui n'est pas compatible avec la norme Gelf: http://docs.graylog.org/en/2.2/pages/gelf.html

> timestamp number
> Seconds since UNIX epoch with optional decimal places for milliseconds; SHOULD be set by client library. Will be set to NOW by server if absent.

Top !
En effet ça fonctionne désormais avec logstash-gelf, un grand merci !