Назад | Перейти на главную страницу

Стек ELK на вычислительном движке Google

Пытаясь настроить стек ELK на сервере вычислительного движка Google, я обнаружил, что решение "нажмите для развертывания", которое предоставляет Google устарело.

Тем не менее, я попытался установить Logstash и Kibana поверх ES, только чтобы узнать, что я не могу подключиться к Kibana (хотя у меня не было проблем с подключением к самому elasticsearch как изнутри вычислений Google, так и из внешнего мира).

Поскольку стек ELK уже работает на машине AWS Ububnu 14.04, я подумал, что попробую начать на новой машине и сам установить все на вычислениях Google.

После установки ES я снова обнаружил, что не могу подключиться к ES извне (на порту по умолчанию 9200, который, конечно, работал с щелчком для развертывания).

Здесь стоит отметить, что серверы с щелчком для развертывания, вероятно, предназначались для внутреннего использования, потому что у них были эфемерные IP-адреса, в то время как я определил все свои машины со статическими IP-адресами (тестирование по этой теме также было тупиком).

Во всех случаях результат для моих серверов был одинаковым - я получил ошибку ERR_CONNECTION_REFUSED.

Это (на удивление) привело меня к мысли, что мне не хватает какого-то определения брандмауэра.

  1. Я попытался открыть другой порт и прослушать его на стороне сервера с помощью netcat -lp <some-port>
  2. Затем я попытался запустить со своего удаленного компьютера тот же запрос, который я выполнял бы на эластичном сервере, но на новом порте: curl -X GET 'http://<static-ip>:<some-port>'
  3. Запрос прошел без проблем
  4. Я остановил elasticsearch и начал netcat -lp 9200
  5. curl -X GET 'http://<static-ip>:9200' от снятой машины прошел как шарм.

    Даже после открытия соответствующих портов для всех машин и повторения всего процесса (со всеми различными комбинациями) я понял, что, вероятно, мне не хватает чего-то еще.

Я старался изо всех сил работать с экземпляром Google, и это было еще одним тупиком.

Что мне здесь не хватает? есть ли другое определение подключения в ES или GCE?

Хорошо, Конки был вроде как прав. Проблема заключалась в том, что ES подключается к устройству обратной связи, но настройка network.bind_host к _non_loopback_ это только половина решения, теперь я могу получить доступ к ES только снаружи (конечно).

По-видимому, есть плагин GCE, чтобы исправить это, но только до версии ES 1.7, думаю, мне придется подождать, пока он наверстает упущенное. Остальное можно взломать.