Вход в Stackdriver в приложении Rails в GKE не работает - PullRequest
0 голосов
/ 30 мая 2018

Ruby 2.3.6, Rails 4.2.6, Stackdriver 0.15.0

Следуя указаниям на https://cloud.google.com/logging/docs/setup/ruby, Я добавил камень stackdriver к Gemfile.Из того, что я могу сказать, мне не нужно нуждаться в , чтобы делать что-либо еще.

Однако я не вижу никаких сообщений журнала из Rails, которые отображаются в Stackdriver.Я даже пытался exec создать оболочку в контейнере, запустить bundle exec rails console и явно войти в систему с помощью Rails.logger.error "this is a log message".

config.google_cloud.use_logging = true и config.log_level = :debug, FWIW.

ОБНОВЛЕНИЕ : Я более внимательно посмотрел на экземпляр регистратора с pp Rails.logger, и он содержит это:

@resource=
  #<Google::Cloud::Logging::Resource:0x0000558b075d1f50
   @labels={:cluster_name=>"onehq-cluster", :namespace_id=>"default"},
   @type="container">,

Мой контейнер работает в пространстве имен staging, что объясняетпочему я не вижу сообщения журнала.Когда я смотрю в программе просмотра журналов Stackdriver в пространстве имен default, вот, есть журналы.К сожалению, отправка всех сообщений на default не принесет мне пользы, потому что у меня есть приложения, работающие в двух пространствах имен, и я должен иметь возможность различать их.

Я попытался добавить дополнительную конфигурацию:

config.google_cloud.logging.monitored_resource.type = "container"
config.google_cloud.logging.monitored_resource.labels = { cluster_name: "my-cluster", namespace_id: "staging" }

А теперь Rails.logger.error "this is a log message" нигде не отображается нигде .

ОБНОВЛЕНИЕ 2 : После долгих поисков в Интернете мне удалось включитьup https://github.com/GoogleCloudPlatform/google-cloud-ruby/issues/2025, что говорит о том, что пространство имен, в которое отправляются сообщения журнала, определяется значением переменной среды, и что указанный env var не устанавливается автоматически в контейнерах GKE.(Предположительно, это было решено с помощью https://github.com/GoogleCloudPlatform/google-cloud-ruby/pull/2071, но я не думаю, что это еще живо, по крайней мере, не в моем кластере.) Я попытаюсь принудительно вызвать env var в моем файле развертывания, и если это сработает, я 'преобразую последнюю часть этого в ответ.

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Gem Google-Cloud-Env выпустил сегодня утром версию (1.0.2) , вы можете обновить свой пакет.

0 голосов
/ 28 июня 2018

После долгих поисков в Интернете мне удалось найти https://github.com/GoogleCloudPlatform/google-cloud-ruby/issues/2025, что говорит о том, что пространство имен, в которое отправляются сообщения журнала, определяется значением переменной окружения, а указанный env var не устанавливается автоматическив контейнерах GKE.(Предположительно, это было разрешено https://github.com/GoogleCloudPlatform/google-cloud-ruby/pull/2071, но я не думаю, что это еще живо, по крайней мере, не в моем кластере.) Я включил env var в моем файле развертывания, и IIRC, который работал.(У меня больше нет доступа к этому кластеру, поэтому я не могу это проверить.)

...