2016-10-06 3 views
0

Я пытаюсь настроить redis + ELK стек с докером. Я хочу использовать redis для приема журналов из удаленного места и пересылки их в logstash.redis + elk stack using docker-compose

Вот мой докер-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

input { 
    tcp { 
     port => 5000 
    } 
    redis { 
     host => "redis:6379" 
    } 
} 

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

Мой logstash контейнер бросает эту ошибку:

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

Работает ли установка вне Докера? Это действительно проблема с контейнером или проблема в приложении? Кроме того, что вы уже пробовали? Когда возникает ошибка? Что вы пытались сделать? Очень сложно отлаживать только предоставленную вами информацию. –

+0

Я не пробовал установку за пределами Docker. Это довольно просто, я пропускаю что-то глупое. Как вы можете использовать redis с logstash? –

ответ

0

я могу см. один немедленный вопрос. В файле logstash.conf можно указать имя хоста Redis:

redis { 
    host => "redis:6379" 
} 

В файле докер-однако вы создания письма фактически не привязать услугу Redis в вашу службу logstash:

logstash: 
    <snip> 
    links: 
    - elasticsearch 

Вместо этого вы связать свой служба logstash в службу redis. Насколько я понимаю, вы хотите, чтобы порт вашего порта redis был доступен для logstash, а не наоборот. Вы должны удалить ссылку logstash в своем сервисе redis и добавить ссылку redis в свою службу logstash. Итак:

logstash: 
    <snip> 
    links: 
    - elasticsearch 
    - redis 

Я не могу положительно сказать, что это является причиной сообщения об ошибке.

Редактировать: Конфигурация для ввода redis также может быть неправильной. Согласно documentation, порт следует указывать как отдельное свойство, подобное этому:

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

спасибо за подсказку, но я до сих пор получаю эту ошибку:/ –

+0

Еще одна возможная ошибка: «host =>» redis: 6379 ». Я думаю, что порт должен быть указан отдельным свойством 'port'. Так что сродни: host => "redis" port => 6379 Стоит попробовать. – Snorre

Смежные вопросы