Stackdriver Logging не распознает поле времени в журнале JSON

Я использую Google Kubernetes Engine (GKE) в сочетании со Stackdriver Logging.

В документации по Stackdriver говорится Агент ведения журнала использует несколько специальных полей для установки полей в объекте LogEntry.

Что касается поля severity , оно работает нормально. Однако поле time не работает должным образом.

Следующий JSON - это журнал ошибок MySQL, который был изменен и перенаправлен на стандартный вывод:

(улучшено и аннотировано для ясности)

{
  "prio": 0,
  "err_code": 11323,
  "component": "mysqlx",
  "source_line": 154,
  "source_file": "socket_acceptors_task.cc",
  "function": "show_startup_log",
  "msg": "X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock' bind-address: '::' port: 33060",
  "err_symbol": "ER_XPLUGIN_LISTENER_STATUS_MSG",
  "SQL_state": "HY000",
  "subsystem": "Server",
  "label": "System",

  // Added for Stackdriver Logging
  "severity": "INFO",
  "time": "1548054692.636",

  // This is the same time written in human-readable format.
  "time.readable": "2019-01-21T07:11:32.636761Z"
}

И ниже приведен соответствующий журнал, записанный Stackdriver Logging:

(для ясности улучшено и аннотировано)

{
  "insertId": "1jibhqgfw4kum0",
  "jsonPayload": {
    // Both `severity` and `time` fields were removed.

    "msg": "X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock' bind-address: '::' port: 33060",
    "label": "System",
    "prio": 0,
    "err_code": 11323,
    "time.readable": "2019-01-21T07:11:32.636761Z",
    "subsystem": "Server",
    "source_file": "socket_acceptors_task.cc",
    "err_symbol": "ER_XPLUGIN_LISTENER_STATUS_MSG",
    "function": "show_startup_log",
    "SQL_state": "HY000",
    "source_line": 154,
    "component": "mysqlx"
  },
  "resource": {
    "type": "container",
    "labels": {
      "namespace_id": "myproject",
      "instance_id": "506697609301173766",
      "zone": "asia-east1-b",
      "pod_id": "demo-demoid1234567890-sns7g",
      "project_id": "harai-development",
      "cluster_name": "myproject",
      "container_name": "mysql-errorlog-output"
    }
  },

  // `timestamp` doesn't reflect the value in the original log,
  // which is "2019-01-21T07:11:32.636761Z".
  "timestamp": "2019-01-21T07:11:44Z",

  // `severity` reflects the value in the original log
  "severity": "INFO",

  "labels": {
    "compute.googleapis.com/resource_name": "fluentd-gcp-v3.1.0-pwc9k",
    "container.googleapis.com/pod_name": "demo-demoid1234567890-sns7g",
    "container.googleapis.com/stream": "stdout",
    "container.googleapis.com/namespace_name": "myproject"
  },
  "logName": "projects/harai-development/logs/mysql-errorlog-output",
  "receiveTimestamp": "2019-01-21T07:11:49.560205566Z"
}

Хотя оба поля время и серьезность были удалены, Поле timestamp в LogEntry не отражает время, указанное в исходном поле time .

Как установить timestamp на время создания журнала?

0
задан 21 January 2019 в 10:27
1 ответ

В конфигурации Fluentd для кластера GKE формат времени определяется следующим образом:

time_format %Y-%m-%dT%H:%M:%S.%NZ

Следовательно, он будет работать должным образом, установив в поле время значение ] "2019-01-21T07: 11: 32.636761000Z" .

Ссылка: https://issuetracker.google.com/issues/123303610

0
ответ дан 5 December 2019 в 04:22

Теги

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