2017-05-18 8 views
-2

Salut les gars, j'ai des problèmes pour envoyer les journaux de mon conteneur de serveur à ma pile ELK. Aucune entrée n'est envoyée à logstash, donc je ne peux pas définir l'index de kibana pour collecter les logs. Je pense que mon problème est dans les paramètres du port.Impossible de connecter le conteneur de docker à logstash via le pilote gelf

Voici le docker-Compose YML pour la pile LAMP (seul le service serveur):

version: '3' 

services: 
    server: 
    build: ./docker/apache 
    links: 
     - fpm 
    ports: 
     - 80:80 # HTTP 
     - 443:443 # HTTPS 
    logging: 
     driver: "gelf" 
     options: 
     gelf-address: "udp://127.0.0.1:5000" 
     tag: "server" 

Et voici le YML docker-Compose pour la pile ELK, basé sur deviantony/docker-elk github project

version: '2' 

services: 

    elasticsearch: 
    build: elasticsearch/ 
    volumes: 
     - ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml 
    ports: 
     - "9200:9200" 
     - "9300:9300" 
    environment: 
     ES_JAVA_OPTS: "-Xmx256m -Xms256m" 
    networks: 
     - elk 

    logstash: 
    build: logstash/ 
    volumes: 
     - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml 
     - ./logstash/pipeline:/usr/share/logstash/pipeline 
    ports: 
     - "5000:5000" 
    environment: 
     LS_JAVA_OPTS: "-Xmx256m -Xms256m" 
    networks: 
     - elk 
    depends_on: 
     - elasticsearch 

    kibana: 
    build: kibana/ 
    volumes: 
     - ./kibana/config/:/usr/share/kibana/config 
    ports: 
     - "5601:5601" 
    networks: 
     - elk 
    depends_on: 
     - elasticsearch 

networks: 

    elk: 
    driver: bridge 

Répondre

0

J'ai trouvé l'erreur, je dois spécifier le protocole UDP dans la définition du port de service logstash.

logstash: 
    build: logstash/ 
    volumes: 
    - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml 
    - ./logstash/pipeline:/usr/share/logstash/pipeline 
    ports: 
    - "5000:5000/udp" 
    environment: 
    LS_JAVA_OPTS: "-Xmx256m -Xms256m" 
    networks: 
    - elk 
    depends_on: 
    - elasticsearch 
0

Vous devez utiliser le plugin d'entrée gelf. Voici un exemple d'un fichier Compose fonctionnement:

services: 
    logstash: 
    image: docker.elastic.co/logstash/logstash:5.3.1 
    logging: 
     driver: "json-file" 
    networks: 
     - logging 
    ports: 
     - "127.0.0.1:12201:12201/udp" 
    entrypoint: logstash -e 'input { gelf { } } output { stdout{ } }'  

Vous pouvez le tester en exécutant:

docker run --log-driver=gelf --log-opt gelf-address=udp://127.0.0.1:12201 ubuntu /bin/sh -c 'while true; do date "+%d-%m-%Y %H:%M:%S:%3N"; sleep 1 ; done 

et vérification des journaux de docker sur le conteneur logstash.

+0

Bien sûr, je suis en utilisant ce pipeline config 'entrée {{ FAES port => 5000 type => docker }} sortie {{ ElasticSearch hôtes => « ElasticSearch: 9200 " } } ' Mais ne fonctionne pas –

+0

essayez de sortir sur stdout au lieu de élastique, donc vous êtes sûr que le problème n'est pas entre logstash et élastique mais sur logstash ne recevant rien. La config que je vous ai dit a fonctionné pour moi afin que vous puissiez l'utiliser pour trouver vos problèmes de configuration. Que disent les journaux de logstash? – herm