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 в моем файле развертывания, и если это сработает, я 'преобразую последнюю часть этого в ответ.