В GKE используется агент fluentd, который включается в образ виртуальной машины (узел).Его роль - наблюдать за изменениями в файлах журнала Docker, которые находятся в каталоге /var/lib/docker/containers/
и символически связаны с каталогом /var/log/containers
, используя имена, которые фиксируют имя модуля и имя контейнера.Эти журналы затем отправляются в Google Cloud Logging, который предполагает установку подключаемого модуля облачного журналирования.
Вы можете настроить конфигурацию агента для потоковой передачи журналов с дополнительных входов, таких как Потоковая неструктурированная (текст)или структурированные (JSON) журналы через файлы журналов .
По умолчанию fluentd извлекает local_resource_id из тега для отслеживаемого 'k8s_container':
Ресурс.Формат:
'k8s_container.<namespace_name>.<pod_name>.<container_name>'.
Агент Fluentd переименовывает поле «log» в более общее поле «message».Таким образом, fluent-plugin-google-cloud знает, чтобы сгладить поле как textPayload вместо jsonPayload после извлечения 'time', 'severity' и 'stream' из записи.
Если значение 'серьезность' не установлено, предположим, что stderr - это ОШИБКА, а stdout - это ИНФО.
Агент может быть включен при создании кластера, тогда будет создан модуль по умолчанию для fluentd.
Вы также можете выполнить ручную установку агента ведения стека-драйверов в GKE (fluentd).
Сначала я предложу вам выяснить, работает ли у вас агент.
Чтобы сделать SSH к вашему узлу и проверить, работает ли агент, запустите следующую командную строку
ps ax | grep fluentd
Пример вывода:
2284 ? Sl 0:00 /opt/google-fluentd/embedded/bin/ruby /usr/sbin/google-fluentd [...]
2287 ? Sl 42:44 /opt/google-fluentd/embedded/bin/ruby /usr/sbin/google-fluentd [...]
Выполните тест, запустивприведенная ниже командная строка:
logger "Some test message"
Проверьте ведение журнала в стеке драйвера для вашего тестового сообщения