Настройка централизованного логирования с использованием Dokku, Loki и Grafana

Централизованное логирование играет важную роль в современном мониторинге и управлении серверами. Это позволяет оперативно анализировать и отслеживать работу приложений и серверов в реальном времени. В данной статье мы рассмотрим процесс настройки системы централизованного логирования с использованием таких мощных инструментов, как Dokku, Loki и Grafana. Совместное использование этих инструментов обеспечивает гибкую и масштабируемую систему для мониторинга и анализа данных ваших серверов.

Настройка Dokku

Dokku — это легковесный инструмент управления контейнерами Docker, который упрощает развертывание и управление приложениями. Для начала работы с Dokku выполните следующие шаги:

Инструкция по установке Dokku:

  1. Загрузка скрипта установки:
wget -NP . https://dokku.com/bootstrap.sh

2. Запуск установщика:

sudo DOKKU_TAG=v0.32.3 bash bootstrap.sh

3. Настройка домена:

dokku domains:set-global dokku.me

4. Добавление SSH-ключа: Замените "your-public-key-contents-here" на ваш публичный SSH-ключ.

echo "your-public-key-contents-here" | dokku ssh-keys:add admin

Эти шаги создадут основу для работы с Dokku на вашем сервере.

Требования

Для выполнения данной настройки вам потребуется сервер с установленным Dokku, работающий под управлением Ubuntu 22.04. Эти инструкции были протестированы на версии Dokku v0.32.3, но они, вероятно, будут работать и на других версиях.

Публичные точки доступа защищены http-auth и tls, поэтому убедитесь, что у вас установлены соответствующие плагины:

dokku plugin:install https://github.com/dokku/dokku-http-auth.git dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git

Добавление полноценного решения для мониторинга увеличивает требования к ресурсам вашего сервера, но после настройки у вас будут метрики, которые помогут определить, нужны ли дополнительные ресурсы.

Сетевая настройка

Мы будем использовать частную сеть Docker для обеспечения связи приложений друг с другом в частной сети.

Создайте мостовую сеть с именем «grafana-bridge»:

dokku network:create grafana-bridge

Настройка Loki

Для настройки Loki выполните следующие шаги:

  1. Создайте приложение Loki:
dokku apps:create loki

2. Настройте порты для Loki, чтобы он слушал HTTP-запросы на порту 80 и пересылал их на порт 3100, где будет работать Loki:

dokku ports:add loki http:80:3100

3. Установите переменную окружения для Loki, указав путь к конфигурационному файлу. Это позволит Loki использовать вашу настройку конфигурации:

dokku config:set --no-restart loki DOKKU_DOCKERFILE_START_CMD="-config.file=/etc/loki/loki-config.yaml"

Создайте директорию для монтажа хранилища конфигурации Loki и создайте файл конфигурации:

mkdir -p /var/lib/dokku/data/storage/loki/config touch /var/lib/dokku/data/storage/loki/config/loki-config.yaml

5. Установите правильные права доступа к созданным директориям и файлам:

chown -R nobody:nogroup /var/lib/dokku/data/storage/loki

6. Монтируйте директорию конфигурации Loki в контейнер Loki с помощью следующей команды:

dokku storage:mount loki /var/lib/dokku/data/storage/loki/config:/etc/loki

Конфигурация Loki

Создайте файл конфигурации Loki по следующему пути:

/var/lib/dokku/data/storage/loki/config/loki-config.yaml

добавьте в него следующее содержимое:

Настройка централизованного логирования с использованием Dokku, Loki и Grafana
Настройка централизованного логирования с использованием Dokku, Loki и Grafana
Настройка централизованного логирования с использованием Dokku, Loki и Grafana

7. Сохраните файл конфигурации Loki.

8. Установка Пользовательского Домена:

Назначьте пользовательский домен для Grafana:

dokku domains:set loki loki.dokku.me.

Убедитесь, что DNS-записи для loki.dokku.me правильно указывают на ваш сервер Dokku.

9. Включение HTTPS:

После установки домена включите HTTPS:

dokku letsencrypt:enable loki

10. Включите HTTP-авторизацию для приложения Loki. Замените <username> и <password> на вашу выбранную комбинацию имени пользователя и пароля:

dokku http-auth:on loki <username> <password>

Теперь у вас настроен Loki для централизованного сбора и агрегации логов на вашем сервере Dokku.

Настройка Promtail

Для настройки Promtail выполните следующие шаги:

1. Создайте приложение Promtail:

dokku apps:create promtail

2. Установите переменную окружения для Promtail, указав путь к конфигурационному файлу. Это позволит Promtail использовать вашу настройку конфигурации:

dokku config:set --no-restart promtail DOKKU_DOCKERFILE_START_CMD="-config.file=/etc/promtail/promtail-config.yaml"

3. Создайте директорию для монтажа хранилища конфигурации Promtail и создайте файл конфигурации:

mkdir -p /var/lib/dokku/data/storage/promtail/config touch /var/lib/dokku/data/storage/promtail/config/promtail-config.yaml

4. Установите правильные права доступа к созданным директориям и файлам:

chown -R nobody:nogroup /var/lib/dokku/data/storage/promtail

5. Монтируйте директорию конфигурации Promtail в контейнер Promtail:

dokku storage:mount promtail /var/lib/dokku/data/storage/promtail/config:/etc/promtail

6. Монтируйте директорию журналов /var/log в контейнер Promtail:

dokku storage:mount promtail /var/log:/var/log

7. Присоедините приложение Promtail к сети grafana-bridge после развёртывания:

dokku network:set promtail attach-post-deploy grafana-bridge

Конфигурация Promtail

Создайте файл конфигурации Promtail по следующему пути:

/var/lib/dokku/data/storage/promtail/config/promtail-config.yaml

и добавьте в него следующее содержимое:

Настройка централизованного логирования с использованием Dokku, Loki и Grafana

8. Сохраните файл конфигурации Promtail.

Развёртывание Promtail

11. Разверните приложение Promtail с помощью одной команды:

dokku git:from-image promtail grafana/promtail

12. Отключите доменное имя для приложения Promtail, так как это не требуется для сбора журналов:

dokku domains:disable promtail

Теперь у вас настроен Promtail для сбора и отправки журналов в систему Loki на вашем сервере Dokku.

Настройка Grafana

Для настройки Grafana выполните следующие шаги:

1.Создайте приложение Grafana:

dokku apps:create grafana

2. Настройте порты для Grafana, чтобы он слушал HTTP-запросы на порту 80 и пересылал их на порт 3000, где будет работать Grafana:

dokku ports:add grafana http:80:3000

3. Создайте директории для монтажа хранилища данных и конфигурации Grafana, а также директорию для плагинов:

mkdir -p /var/lib/dokku/data/storage/grafana/{config,data,plugins}

4. Создайте директорию для хранения файлов конфигурации источников данных:

mkdir -p /var/lib/dokku/data/storage/grafana/config/provisioning/datasources

5. Установите правильные права доступа к созданным директориям и файлам:

chown -R 472:472 /var/lib/dokku/data/storage/grafana

6. Монтируйте директории данных и конфигурации Grafana, а также директорию для плагинов:

dokku storage:mount grafana /var/lib/dokku/data/storage/grafana/config/provisioning/datasources:/etc/grafana/provisioning/datasources dokku storage:mount grafana /var/lib/dokku/data/storage/grafana/data:/var/lib/grafana dokku storage:mount grafana /var/lib/dokku/data/storage/grafana/plugins:/var/lib/grafana/plugins

7. Создайте файл конфигурации для источника данных Loki:

nano /var/lib/dokku/data/storage/grafana/config/provisioning/datasources/loki.yml

И добавьте в него следующее содержимое:

Настройка централизованного логирования с использованием Dokku, Loki и Grafana

8. Сохраните файлы конфигурации для источников данных.

9. Присоедините приложение Grafana к сети grafana-bridge после развёртывания:

dokku network:set grafana attach-post-deploy grafana-bridge

10. Установка Пользовательского Домена:

Назначьте пользовательский домен для Grafana:

dokku domains:set grafana grafana.dokku.me

Убедитесь, что DNS-записи для grafana.dokku.me правильно указывают на ваш сервер Dokku.

11. Включение HTTPS:

После установки домена включите HTTPS:

dokku letsencrypt:enable grafana

Теперь у вас настроен Grafana с доменным именем grafana.kaido.team и включенным HTTPS для обеспечения безопасного доступа к данным.

Настройка Promtail для мониторинга JSON-логов на удаленном сервере с Loki

Для настройки Promtail для мониторинга JSON-логов на удаленном сервере и отправки их в Loki, учтите следующие шаги:

Настройка удаленного сервера

  1. Установите и настройте Promtail на удаленном сервере. Пример файла конфигурации Promtail на удаленном сервере может выглядеть следующим образом:
Настройка централизованного логирования с использованием Dokku, Loki и Grafana

2. В этом файле конфигурации:

http_listen_port и grpc_listen_port

это порты, на которых Promtail будет прослушивать HTTP и gRPC запросы.

clients

указывает на адрес Loki, куда Promtail будет отправлять собранные логи. Укажите basic_auth_user и basic_auth_password для HTTP-авторизации на сервере Loki.

scrape_configs

это список конфигураций для мониторинга логов. В данном случае, мы создали конфигурацию с именем json_logs для мониторинга JSON-лог файла на удаленном сервере.

targets

замените /путь/к/файлу.json на путь к JSON-лог файлу на удаленном сервере.

Сохраните файл конфигурации на удаленном сервере, например, в

/etc/promtail/promtail-config.yaml

Теперь Promtail будет мониторить JSON-лог файл на удаленном сервере и отправлять его в Loki с использованием HTTP-авторизации на сервере Loki, доступном на вашем локальном сервере, для дальнейшей визуализации в Grafana.

Визуализация данных с помощью Grafana

Визуализация логов

Настройка централизованного логирования с использованием Dokku, Loki и Grafana
  • Зайдите в веб-интерфейс Grafana https://grafana.dokku.me.
  • Войдите в Grafana с учетными данными login: admin password: admin (дефолтные значения, которые вы измените во время первого входа).
  • Перейдите в раздел "Explore" в верхней панели навигации Grafana.
  • В разделе "Explore" вы можете выбрать источник данных Loki и начать поиск и визуализацию ваших JSON-логов.
  • В поле "Log labels" вы можете выбрать job в выпадающем списке, чтобы отфильтровать логи по job_name.
  • Затем вы можете вводить запросы и использовать функции Loki для поиска, фильтрации и визуализации логов.
  • Создайте и сохраните панели для визуализации интересующих вас данных из логов.

Теперь у вас есть инструменты для визуализации и анализа JSON-логов с помощью Grafana и Loki. Вы можете создавать графики, панели и дашборды, чтобы мониторить вашу инфраструктуру и приложения на основе логов.

В заключение, настройка централизованного логирования с использованием Dokku, Loki и Grafana представляет собой мощное решение для современного мониторинга и управления серверами. Эта система не только обеспечивает гибкость и масштабируемость, но также позволяет оперативно анализировать и отслеживать работу приложений и серверов в реальном времени. Через интеграцию Dokku для управления контейнерами, Loki для агрегации и централизации логов и Grafana для визуализации и анализа данных, пользователи получают комплексный набор инструментов для эффективного мониторинга и реагирования на события в их инфраструктуре.

Руководство, представленное в этой статье, подробно описывает каждый шаг настройки, начиная от установки Dokku и заканчивая конфигурацией Grafana и Promtail. Это обеспечивает глубокое понимание процесса и помогает пользователям настроить систему под свои уникальные требования. С учетом всех аспектов безопасности и производительности, такая система логирования становится надежным решением для сбора, анализа и визуализации данных логов.

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

11
Начать дискуссию