Как исправить исключение «Неправильный заголовок метаданных и вкуса» Stackdriver Winston - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь настроить Stackdriver Winston, регистрирующийся в приложении node.js (работающем на localhost, который должен быть развернут в контейнерах Docker в Kubernetes).При нормальной работе выдается исключение «Неверный ответ от службы метаданных: неправильный заголовок метаданных».

Локальная отладка на http://localhost:8080. Я использую служебную учетную запись в GCP с Log-Writer, Admin и Log-Reader разрешения.Я пытался как установить переменную env GOOGLE_APPLICATION_CREDENTIALS, так и явный auth при настройке регистратора.

Версии пакета "winston": "^ 3.2.1" и "@ google-cloud / logging-winston":«^ 0.11.0».

const { createLogger, format, transports } = require('winston');
const { LoggingWinston } = require('@google-cloud/logging-winston');

const loggingWinston = new LoggingWinston({
    projectId: 'projectid',
    keyFilename: 'path_to_key"
  });

module.exports = createLogger({
    transports:[
        new transports.Console({
            format: format.combine(
                format.timestamp(),
                format.json()
            )
        }),
        loggingWinston
    ]
})

log.info('Test our logging');
log.error('Test logging again');

Нет зарегистрированных сообщений в средстве просмотра журнала GCP Stackdriver, winston_log недоступен в раскрывающемся списке типов журналов, и выдается исключение «Неверный ответ от службы метаданных: неверный заголовок метаданных».в "node_modules \ gcp-metadata \ build \ src \ index.js: 65: 23" при попытке регистрации сообщений.

1 Ответ

0 голосов
/ 29 апреля 2019

TL; DR: если вы тестируете свой код на виртуальной машине GCE, вы сможете продолжить.

Для входа в Stackdriver требуется так называемый контролируемый ресурс . Обычно клиенты журналов Stackdriver пытаются автоматически определить атрибуты, необходимые для создания отслеживаемого ресурса, путем запроса метаданных экземпляра GCE с сервера метаданных, для которого требуется заголовок Metadata-Flavor. Код ожидает, что ответ будет иметь тот же заголовок Metadata-Flavor, что и отправленный.

Когда вы работаете вне виртуальной машины GCE, сервер метаданных обычно недоступен. Тем не менее, вы, кажется, на самом деле получаете ответ, который не содержит заголовок Metadata-Flavor. Поскольку наличие заголовка проверяется в первую очередь, вы видите ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...