Логи из Docker в Google Cloud
Есть у меня pet-проджекты которые крутятся в докер-контейнерах на VPS. На хостовой системе обычно установлен необходимый минимум ПО для запуска контейнеров.
И вот хотелось еще прикрутить отправку логов в какой-нибудь удобный внешний сервис в котором их можно удобно хранить и анализировать, но при этом не хотелось ставить и конфигурировать дополнительный софт типа fluentd и т.д.
Короче мне было просто лень на самом деле 😃. А потом я случайно увидел что в докере из коробки есть драйвер для записи логов который называется gcplogs.
Google Cloud
Итак, какие условия предоставляет Google Cloud. Если верить вот этой странице то нам доступно сохранение первых 50 гигабайт логов в месяц на проект бесплатно и далее по 0.5$ за гигабайт. В аккаунте по-умолчанию можно создать до 25 проектов.
В конце месяца я на всякий случай проверю сколько это в итоге стоит)
Дашборд для просмотра логов в real-time выглядит вот так:
Также здесь есть продвинутые средства для поиска и анализа логов с кучей фильтров.
Итак, решено. Прикручиваем 😉
Пример настройки
Тут все можно поделить на 3 шага
- Создание проекта, создание сервис-аккаунта, получение ключа доступа в GCP
- Добавление ключа в Docker
- Переключение настроек логирования в docker-compose.yml
1. Получаем ключ в Google Cloud
Допустим что вы успешно зарегистрировались в GCP и создали проект. Теперь в строке поиска пишем Service Accounts и попадаем на страницу настройки сервисных аккаунтов.
Отлично!
Здесь мы создаем новый сервисный аккаунт.
Придумываем идентификатор для нового сервисного аккаунта.
В моем случае это просто ‘test’.
Добавляем созданному аккаунту роль “Logs Writer”.
Добавляем себя в owner’ов сервисного аккаунта.
Теперь в списке сервисных аккаунтов у нас появился наш только что созданный. Теперь идем в Manage keys и генерируем ключ доступа для этого аккаунта.
Генерируем ключ в формате JSON.
Сохраняем файл с ключом у себя на компьютере.
2. Добавляем ключ в Docker
Теперь заливаем ключ на сервер. В качестве примера пусть будет путь /root/.gcp.json
Затем редактируем сервис в systemd
1 | vim /lib/systemd/system/docker.service |
И добавляем строчку Environment="GOOGLE_APPLICATION_CREDENTIALS=/root/.gcp.json"
1 | [Service] |
Перезапускаем Docker
1 | systemctl daemon-reload |
1 | systemctl restart docker |
3. Переключаем настройки в Docker-compose
Открываем docker-compose.yml и меняем настройки логирования
1 | version: '3.7' |
Затем рестартим docker-compose и идем смотреть наши логи в Google Cloud Log Explorer.
Готово =)