2017-05-04 1 views
1

Selon le documentation, il existe deux manières d'envoyer des informations de journal au service SwisscomDev ELK.Comment envoyer des journaux d'applications PHP directement au service ELK?

  1. façon standard via STDOUT: Chaque sortie stdout est envoyé à Logstash
  2. envoyer directement à Logstash

Poser des questions sur chemin 2. Comment est-ce réalisé, en particulier comment est l'entrée attendue?

Nous utilisons Monolog dans notre application PHP buildpack et en utilisant son stdout_handler fonctionne très bien.

Je tentais la GelfHandler (connexion refusée), SyslogUdPHandler (pas d'erreur, mais aucun résultat), à la fois configuré pour utiliser VCAPServices logstashHost et logstashPort comme point final API/hôte pour envoyer des journaux à.

La liaison fonctionne, les variables d'environnement sont définies, mais je n'ai aucune idée de la façon d'envoyer des informations de journal de point de terminaison Logstash API de service SwisscomDev ELK de notre application. Logstash est configuré avec tcp input, qui est accessible via logstashHost:logstashPort.

Répondre

2

L'entrée tcp est configurée avec son codec par défaut, qui est le codec line (source code, pas le codec plain comme indiqué dans le documentation).

La charge utile de l'événement de journal doit être codée en JSON afin que les champs soient automatiquement reconnus par Elasticsearch. Si tel est le cas, l'événement de journal entier est transmis sans autre traitement à Elasticsearch. Si la charge utile n'est pas JSON, toute la ligne de journal se retrouve dans le champ message.

Pour votre cas d'utilisation avec Monologue, je vous suggère d'utiliser le SocketHandler (pointant à logstashHost:logstashPort) en combinaison avec le LogstashFormatter qui prendra en charge l'encodage JSON avec les événements du journal étant ligne délimitées.