2017-05-18 5 views
-2

안녕하세요, 제 서버 컨테이너 로그를 ELK 스택에 보내는데 문제가 있습니다. 로그를 수집하는 데 kibana 색인을 설정할 수 없기 때문에 logstash에 입력이 전송되지 않습니다. 내 문제는 포트 설정에 있다고 생각합니다. 여기 gelf 드라이버를 통해 logstash에 docker 컨테이너를 연결할 수 없습니다.

는 LAMP 스택에 대한 고정 표시기-작성 YML (전용 서버 서비스)입니다 :

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" 

그리고 여기 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 
에 근거하여 ELK 스택에 대한 고정 표시기-작성 YML입니다

답변

0

실수를 발견했습니다. 로그 프로토콜 서비스 포트 정의에 UDP 프로토콜을 지정해야합니다. 내가`입력 { GElf는 { 포트 => 5000 유형 => 고정 표시기 } } 출력 { elasticsearch { 호스트 => "elasticsearch을 config (설정)이 파이프 라인을 사용하고 있습니다 물론

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

gelf 입력 플러그인을 사용해야합니다. 작동하는 파일 작성의 다음 예 :

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{ } }'  

당신은 실행하여 테스트 할 수

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 

및 확인 고정 표시기 로그를 logstash 컨테이너.

+0

: 9200 " } } '하지만 작동하지 않습니다 –

+0

탄성이 아닌 stdout으로 출력하려고 했으므로 문제는 logstash와 elastic 사이가 아니라 logstash에서 아무것도 수신하지 않는 것이 확실합니다. 내가 당신을 위해 일했던 설정은 구성 문제가있는 곳을 알아 내기 위해 사용할 수 있습니다. logstash의 로그는 무엇이라고 말합니까? – herm