Отправка вывода журнала службы ОС, оптимизированного для контейнера, в ведение журнала Stackdriver
Как получить выходные данные из моей службы Cloud-Config для ведения журнала Stackdriver?
Я создаю свой экземпляр виртуальной машины с помощью API node.js и следую приведенному здесь примеру для создания моего сервиса: https://cloud.google.com/container-optimized-os/docs/how-to/run-container-instance
Все работает успешно, но единственный способ увидеть вывод журнала - это SSHing в экземпляр и запуск sudo journalctl -ef
, но мне бы очень хотелось, чтобы поток логов в Stackdriver Logging. Но COS, кажется, не позволяет мне установить агент ведения журнала.
Вот мой сервисный файл, /home/ci/run.sh
просто запускает несколько Docker-контейнеров, которые запускают некоторые тесты и выводят в stdout:
- path: /etc/systemd/system/ciservice.service
permissions: 0644
owner: root
content: |
[Unit]
Description=Run tests
Wants=gcr-online.target
After=gcr-online.target
[Service]
User=ci
Group=ci
Environment="HOME=/home/ci"
ExecStartPre=/usr/bin/docker-credential-gcr configure-docker
ExecStart=/bin/bash /home/ci/run.sh
Я использую Контейнер-Оптимизированную ОС, потому что она поставляется с Docker, GCR-доступом из коробки, безопасностью и быстро раскручивается. Но я думаю, что мне, возможно, придется переключиться обратно на образ на основе Ubuntu/Debian, так как это позволило бы мне установить агент ведения журнала за счет более базовой конфигурации в пользовательском образе.
Любая помощь в использовании COS для этого будет принята с благодарностью, поэтому спасибо заранее:)
1 ответ
Драйвер Google Cloud Logging для Docker доступен для этого случая. Вот очень хороший урок.
Хотя драйвер ведения журнала имеет ограниченные возможности для настройки регистрации. Вам нужно контролировать множество конфигураций журналирования, я думаю, что агент журналирования в Ubuntu/Debian - лучший выбор.