LINUX.ORG.RU
ФорумAdmin

Elasticsearch, Logstash и Kibana

 , , ,


1

2

Решил установить Elasticsearch на Linux и запускать все три программы: Elasticsearch, Logstash, Kibana в Docker контейнерах.

Запустил все 3 контейнера и привязял их к Elasticsearch:

docker run -d --name kibana -p 5601:5601 --link elasticsearch:docker.elastic.co/elasticsearch/elasticsearch -d docker.elastic.co/kibana/kibana:5.3.0

docker run -d --name logstash -p 5400:5400 -v ~/pipeline/:/home/name/ --link elasticsearch:docker.elastic.co/elasticsearch/elasticsearch -d docker.elastic.co/logstash/logstash:5.3.0

Создал файл 'logstash.conf' и указал его путь (/home/name/) в комманде при запуске Logstash контейнера:

input {
  file {
    path => "/home/name/access.log" # sample Apache log file on my local
    type => "apachelogs"
    start_position => "beginning"
  }
}

filter {
  if [type] == "apache-access" { 
    grok {
      match => [ "message", "%{COMBINEDAPACHELOG}" ]
    }
  }
}

output {
  elasticsearch { embedded => true }
}

Kibana показывает, что видит и Elasticsearch и Logstash, но Logstash не обнаружил лог-файл 'access.log'.

Не могли бы подсказать в чём проблема?

Перемещено leave из development

А как найдет, если apache у тебя еще в другом докере скорей всего.
Вот тебе костыль. Но вообще нужно думать перед тем как все подряд в docker засовывать. Это инструмент, а не панацея.

anonymous_sama ★★★★★ ()
Ответ на: комментарий от anonymous_sama

Это инструмент, который нужно использовать, и в том, чтобы «всё подряд в docker засовывать» плохого ничего нет, главное подходить к делу с умом. Когда любая часть твоей инфраструктуры и твои приложения имеют единый форм-фактор с т.з. деплоя, жизнь становится проще. Если всё приправить Ansible, то ты меняешь инвентарник, запускаешь одну команду, и весь твой «мир» поднимается ~где угодно.

bytecode ★★ ()

ТС, у тебя файлы точно там лежат? Зайти в контейнер через docker exec API и посмотри, есть ли у тебя твой access.log. И тебе не кажется, что линковать контейнеры - это не лучший вариант?
Алсо, вот пример ELK стека на контейнерах https://github.com/deviantony/docker-elk.

bytecode ★★ ()
Последнее исправление: bytecode (всего исправлений: 1)
Ответ на: комментарий от anonymous_sama

Тут можно по-разному смотреть на вопрос. Если уровень абстракции чуть выше, чем docker контейнеры и у тебя есть система оркестрации, например Kubernetes, эти контейнеры можно объединить в единую сущность в виде Pod'а. Ну и да, docker чуть более user friendly и разработчикам с ним жить проще. Также из коробки много готовых в т.ч. инфраструктурных тулов для докера.

bytecode ★★ ()
Ответ на: комментарий от bytecode

Конкретно в данном случае меня удивило, что человек, не знает почему у него нет доступа к логам. Поэтому я и сказал, что не нужно все подряд засовывать в контейнеры, если не понимаешь зачем это тебе надо, и какой нужен результат.
В любом случае мне нравится подход Canonical, где они используют docker контейнеры в LXD по логическим группам, если нужно дробить меньше.

anonymous_sama ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.