В данной статье мы будем учится отправлять логи Docker контейнера в ELK stack.
В статье мы рассматривали отправку логов методом парсинга лог файла. Теперь вместо привычного docker logs будем читать с веб интерфейса.
Настроим logstash на прием логов плагином gelf. Для этого поправим файл из предыдущей статьи logstash.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
input { beats { port => 5044 } gelf { port => 12201 type => gelf } } output { elasticsearch { hosts => "elasticsearch:9200" manage_template => false index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" document_type => "%{[@metadata][type]}" } if [type] == "gelf" { elasticsearch { hosts => "elasticsearch:9200" index => "gelf-%{+YYYY.MM.dd}" } } } |
Напишем docker-compose файл для контейнера mysql с возможностью отправки логов в ELK
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
services: mysql: image: mysql environment: - MYSQL_RANDOM_ROOT_PASSWORD=yes - MYSQL_DATABASE=database - MYSQL_USER=user - TERM=xterm hostname: mysql logging: driver: gelf options: gelf-address: "udp://elk_host:12201" tag: "intouch-mysql-demo" |
Открываем kibana и добавляем новый Index Patterns с названием gelf-*
Теперь открываем в Discover вкладку gelf, и должны увидеть строки с нашего mysql контейнера
На этом все, спасибо за внимание