Bonjour,

Voila je rencontre un petit problème avec mes tests avec docker et la stack ELK.
Je souhaiterai tout simplement avoir un docker-compose.yml comme cela :

version: '3'
services:

  php:
    image: joha/php:7.2
    volumes:
      - ".:/var/www/laratest"

  nginx:
    image: nginx:latest
    volumes:
      - "./docker/nginx.conf:/etc/nginx/conf.d/default.conf"
    links:
      - php
    ports:
      - 8888:80

  pgsql:
    image: postgres:9.6-alpine
    volumes:
      - pgsqldata:/var/lib/postgresql/data
    environment:
      - "POSTGRES_DB=database"
      - "POSTGRES_USER=secret"
      - "POSTGRES_PASSWORD=secret"
    ports:
        - "5432:5432"

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

  logstash:
    build:
      context: logstash/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro
      - ./logstash/pipeline:/usr/share/logstash/pipeline:ro
    ports:
      - "5000:5000"
      - "9600:9600"
    environment:
      LS_JAVA_OPTS: "-Xmx256m -Xms256m"
    networks:
      - elk
    depends_on:
      - elasticsearch

  kibana:
    build:
      context: kibana/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - ./kibana/config/:/usr/share/kibana/config:ro
    ports:
      - "5601:5601"
    networks:
      - elk
    depends_on:
      - elasticsearch

networks:
  elk:
    driver: bridge

volumes:
  pgsqldata:

Pour tout ce qui est de la stack ELK j'ai c/c ce qu'il y a dans ce dépot

La bonne nouvelle c'est que tout fonctionne bien, elasticsearch, tourne bien, kibana également... Mais là ou je bloque c'est que j'ai modifié la config de logstach parce que je veux un input file et non tcp.

J'ai donc un truc comme ça :

input {
    file { path => "/var/logs/nginx/access.log" }
}

Mais évidement, ce fichier /var/logs/nginx/access.log est dans mon container nginx et là je bloque... comment je peux dire à mon container logstash d'aller chercher les logs dans le container nginx ? Après est-ce que c'est une bonne pratique de faire comme ça ? Y a t il une autre solution ?

Par avance merci pour votre aide !
Tendresse et chocolat !

Aucune réponse