2016-10-06 2 views
0

docker로 redis + ELK 스택을 설정하려고합니다. 원격 위치에서 로그를 받아 들여 logstash로 전달하려면 redis를 사용하고 싶습니다. 여기 docker-compose를 사용하여 redis + elk 스택

여기 내 고정 표시기 - compose.yml

elasticsearch: 
    image: elasticsearch:latest 
    command: elasticsearch -Des.network.host=0.0.0.0 
    ports: 
    - "9200:9200" 
    - "9300:9300" 
    volumes: 
    - /root/ebs:/usr/share/elasticsearch/data 

logstash: 
    build: logstash/ 
    command: logstash -f /etc/logstash/conf.d/logstash.conf 
    volumes: 
    - ./logstash/config:/etc/logstash/conf.d 
    ports: 
    - "5000:5000" 
    links: 
    - elasticsearch 
kibana: 
    build: kibana/ 
    volumes: 
    - ./kibana/config/:/opt/kibana/config/ 
    ports: 
    - "5601:5601" 
    links: 
    - elasticsearch 

redis: 
    image: redis:latest 
    ports: 
    - "6379:6379" 
    links: 
    - logstash 

입니다 그리고 나의 logstash.conf입니다

내 logstash 컨테이너는이 오류를 던지고있다
input { 
    tcp { 
     port => 5000 
    } 
    redis { 
     host => "redis:6379" 
    } 
} 

output { 
    elasticsearch { 
     hosts => "elasticsearch:9200" 
    } 
} 

:

logstash_1  | {:timestamp=>"2016-10-06T09:21:35.258000+0000", :message=>"An unexpected error occurred!", :error=>#<NoMethodError: undefined method `call' for nil:NilClass>, :class=>"NoMethodError", 
+0

설정이 Docker 외부에서 작동합니까? 정말 컨테이너 문제입니까 아니면 응용 프로그램의 문제입니까? 또한, 이미 시도한 것은 무엇입니까? 언제 오류가 발생합니까? 너는 무엇을하려고 했는가? 제공된 정보만으로 디버깅하기가 매우 어렵습니다. –

+0

Docker 외부의 설정을 시도하지 않았습니다. 그것은 매우 간단합니다. 나는 바보 같은 것을 놓치고 있습니다. 로그 샷과 함께 redis를 어떻게 사용할 수 있습니까? –

답변

0

내가 할 수있는을 즉각적인 문제 하나를 참조하십시오. 그러나 당신이 실제로 logstash 서비스로 레디 스 서비스를 연결하지 마십시오 고정 표시기-작성 파일에서

redis { 
    host => "redis:6379" 
} 

: 당신의 logstash.conf 파일에서 당신은 레디 스의 호스트 이름을 지정

logstash: 
    <snip> 
    links: 
    - elasticsearch 

가 대신 링크하여 귀하의 redis 서비스에 logstash 서비스. 지금까지 내가 알 수있는 것처럼, redis 컨테이너의 포트를 다른 곳으로 보내지 않고 logstash 할 수 있기를 바랍니다. redis 서비스에서 logstash 링크를 제거하고 logstash 서비스에 redis 링크를 추가해야합니다. 따라서 :

logstash: 
    <snip> 
    links: 
    - elasticsearch 
    - redis 

나는 이것이 오류 메시지의 원인이라고 긍정적으로 말할 수 없습니다.

편집 : redis 입력 구성이 잘못되었을 수 있습니다. documentation에 따르면 포트는 다음과 같은 별도의 속성으로 지정해야합니다.

redis { 
    host => "redis" 
    port => 6379 
} 
+0

팁 주셔서 감사하지만 여전히 오류가 발생합니다 :/ –

+0

또 다른 가능한 오류는'host => redis : 6379 "입니다. 포트는 별도의 'port'속성으로 지정해야한다고 생각합니다. 따라서 다음과 비슷한 점이 있습니다 : host => "redis" 포트 => 6379 가치가 있습니다. – Snorre