Задать вопрос
@evgeniyguba

Использование ElasticsearchLogstashHandler внутри Docker?

есть такая инстукция: https://jolicode.com/blog/how-to-visualize-symfony...
Кратко - в ней рассказывается как поднять 2 контейнера с kibana и elasticsearch, в Симфони подключить ElasticsearchLogstashHandler(который поставляется вместе с монолог).

Эти два контейнера + контейнер с Symfony объеденены одним network`ом. Но есть проблема:

сам ElasticsearchLogstashHandler по дефолту пытается сделать запрос к elasticksearch через curl по адресу 127.0.0.1:9200
Т.е. симфони внутри контейнера хочет стрельнуть в 127.0.0.1, но он не может, т.к. внутри себя он самостоятельно создаёт свой какой-то внутренний ip-адрес

Вижу несколько путей решения:
1. Симфони каким-то образом определяет внутренний ip-адрес сети в котором крутится и передает в аргументы ElasticsearchLogstashHandler этот ip

2. При создании контейнера с elascticsearch, внутрь пробрасывать ip-адрес = 127.0.0.1

3. При создании network`а явно указать, что б внутрений ip-адрес был 127.0.0.1

Может кто-то сталкивался с похожей задачей?
Может это можно решить гараздо проще, чем я тут расписал?
  • Вопрос задан
  • 386 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 2
serginhold
@serginhold
скорее всего вместо ip нужно подставлять название контейнера

ты же когда в docker-compose пишешь что-то подобное:
mysql:
    image: mysql:5.7

ты же в докрину передаешь host='mysql', а не ip

p.s. https://github.com/symfony/monolog-bridge/blob/fd9...
Ответ написан
Lebnik
@Lebnik
Объяви сервис:
services:
    Symfony\Bridge\Monolog\Handler\ElasticsearchLogstashHandler:
        class: Symfony\Bridge\Monolog\Handler\ElasticsearchLogstashHandler
        arguments:
            - 'http://elasticsearch:9200'


а чтобы ошибок не было:
services:
    Psr\Log\NullLogger:
        class: Psr\Log\NullLogger

    'http_client_without_logs':
        class: Symfony\Component\HttpClient\CurlHttpClient
        calls:
            - [setLogger, ['@Psr\Log\NullLogger']]

    Symfony\Bridge\Monolog\Handler\ElasticsearchLogstashHandler:
        class: Symfony\Bridge\Monolog\Handler\ElasticsearchLogstashHandler
        arguments:
            - 'http://elasticsearch:9200'
            - 'monolog'
            - '@http_client_without_logs'
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы