Как настроить gcplogs log-драйвера при использовании gcloud compute instance update-container или заставить его использовать драйвер по умолчанию? - PullRequest
2 голосов
/ 27 апреля 2019

Вопрос

Как отправить журналы из стандартного вывода 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

Я ожидаю, что журналы будут видны без необходимости остановки и запуска контейнера, так как он установлен какпо умолчанию.

1 Ответ

0 голосов
/ 07 мая 2019

Я нашел учебник , который поможет вам настроить драйвер ведения журнала Google Cloud для изображений COS.

Похоже, что установка агента Stackdriver не является опцией для образов COS, как описано здесь .

Тем не менее, похоже, что вам нужно следовать конфигурации, указанной в этой ссылке , чтобы сделать настройки постоянными при перезагрузках.

...