Вопрос
Как отправить журналы из стандартного вывода Docker-контейнера в GCP Stackdriver, если этот контейнер был развернут с помощью команды
gcloud compute instances update-container
?
Самое последнее обнаружение
gcloud compute instances update-container VM_INSTANCE --container-image IMG
- Раскручивает контейнер, который не поддерживает драйвер журнала по умолчанию (установлен в / etc / docker / daemon.json)
- gcloud .. update-container использует "docker run" на VM_INSTANCE и позволяет предоставлять ARGS и COMMAND для "docker run", но без опций, где я мог бы поставить --log-driver = gcplogs
Context
Мой раздел метаданных "user-data":
#cloud-config
write_files:
- path: /etc/docker/daemon.json
content: '{"log-driver":"gcplogs"}'
runcmd:
- systemctl restart docker
Дает правильного демонафайл .json:
p**a@f**i ~ $ cat /etc/docker/daemon.json
{"log-driver":"gcplogs"}p**a@f**i ~ $
У меня развернут один контейнер с помощью команды gcloud update-container:
p**a@f**i ~ $ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
425be3c47e2d eu.gcr.io/a**i/f**e:9fa641db8491def826eef4f8f288ddbd62f2be1b "yarn start --enviro…" 6 minutes ago Up 3 minutes klt--xuyd
Дважды проверьте, что была применена конфигурация:
sudo journalctl -u docker.service
Apr 26 23:51:10 f**i systemd[1]: Started Docker Application Container Engine.
Apr 26 23:51:10 f**i dockerd[1464]: time="2019-04-26T23:51:10.036117615Z" level=info msg="API listen on /var/run/docker.sock"
Apr 26 23:30:21 f**i dockerd[711]: time="2019-04-26T23:30:21.903908969Z" level=debug msg="Using default logging driver gcplogs"
Затем, когда я пытаюсь проверить, какой тип регистратора, он все еще является json-файлом:
p**a@f**i ~ $ docker inspect -f '{{.HostConfig.LogConfig.Type}}' klt--xuyd
json-file
Отсутствуют журналы в стеке драйвера.Мое значение фильтра:
resource.type="gce_instance"
Все, что я вижу, это журналы, связанные с экземпляром запуска и остановки Compute Engine.
Если я остановлю контейнер докера и запусту его с
docker run -d --log-driver=gcplogs --log-opt gcp-log-cmd=true IMG
Затем проверка типа регистратора дает результат:
docker inspect -f '{{.HostConfig.LogConfig.Type}}' klt--xuyd
gcplogs
И журналы видны в GCP Stackdriver.
Но я не могу выполнить запуск Docker ... так как эта виртуальная машина является частью моей среды CI / CD.Контейнер обновлен до
gcloud compute instances update-container ${VM_INSTANCE_NAME} --container-image IMG
container_vm: cos-stable-74-11895-86-0
Я ожидаю, что журналы будут видны без необходимости остановки и запуска контейнера, так как он установлен какпо умолчанию.