Настройка централизованного логирования с использованием Dokku, Loki и Grafana
Централизованное логирование играет важную роль в современном мониторинге и управлении серверами. Это позволяет оперативно анализировать и отслеживать работу приложений и серверов в реальном времени. В данной статье мы рассмотрим процесс настройки системы централизованного логирования с использованием таких мощных инструментов, как Dokku, Loki и Grafana. Совместное использование этих инструментов обеспечивает гибкую и масштабируемую систему для мониторинга и анализа данных ваших серверов.
Настройка Dokku
Dokku — это легковесный инструмент управления контейнерами Docker, который упрощает развертывание и управление приложениями. Для начала работы с Dokku выполните следующие шаги:
Инструкция по установке Dokku:
- Загрузка скрипта установки:
2. Запуск установщика:
3. Настройка домена:
4. Добавление SSH-ключа: Замените "your-public-key-contents-here" на ваш публичный SSH-ключ.
Эти шаги создадут основу для работы с Dokku на вашем сервере.
Требования
Для выполнения данной настройки вам потребуется сервер с установленным Dokku, работающий под управлением Ubuntu 22.04. Эти инструкции были протестированы на версии Dokku v0.32.3, но они, вероятно, будут работать и на других версиях.
Публичные точки доступа защищены http-auth и tls, поэтому убедитесь, что у вас установлены соответствующие плагины:
Добавление полноценного решения для мониторинга увеличивает требования к ресурсам вашего сервера, но после настройки у вас будут метрики, которые помогут определить, нужны ли дополнительные ресурсы.
Сетевая настройка
Мы будем использовать частную сеть Docker для обеспечения связи приложений друг с другом в частной сети.
Создайте мостовую сеть с именем «grafana-bridge»:
Настройка Loki
Для настройки Loki выполните следующие шаги:
- Создайте приложение Loki:
2. Настройте порты для Loki, чтобы он слушал HTTP-запросы на порту 80 и пересылал их на порт 3100, где будет работать Loki:
3. Установите переменную окружения для Loki, указав путь к конфигурационному файлу. Это позволит Loki использовать вашу настройку конфигурации:
Создайте директорию для монтажа хранилища конфигурации Loki и создайте файл конфигурации:
5. Установите правильные права доступа к созданным директориям и файлам:
6. Монтируйте директорию конфигурации Loki в контейнер Loki с помощью следующей команды:
Конфигурация Loki
Создайте файл конфигурации Loki по следующему пути:
добавьте в него следующее содержимое:
7. Сохраните файл конфигурации Loki.
8. Установка Пользовательского Домена:
Назначьте пользовательский домен для Grafana:
Убедитесь, что DNS-записи для loki.dokku.me правильно указывают на ваш сервер Dokku.
9. Включение HTTPS:
После установки домена включите HTTPS:
10. Включите HTTP-авторизацию для приложения Loki. Замените <username> и <password> на вашу выбранную комбинацию имени пользователя и пароля:
Теперь у вас настроен Loki для централизованного сбора и агрегации логов на вашем сервере Dokku.
Настройка Promtail
Для настройки Promtail выполните следующие шаги:
1. Создайте приложение Promtail:
2. Установите переменную окружения для Promtail, указав путь к конфигурационному файлу. Это позволит Promtail использовать вашу настройку конфигурации:
3. Создайте директорию для монтажа хранилища конфигурации Promtail и создайте файл конфигурации:
4. Установите правильные права доступа к созданным директориям и файлам:
5. Монтируйте директорию конфигурации Promtail в контейнер Promtail:
6. Монтируйте директорию журналов /var/log в контейнер Promtail:
7. Присоедините приложение Promtail к сети grafana-bridge после развёртывания:
Конфигурация Promtail
Создайте файл конфигурации Promtail по следующему пути:
и добавьте в него следующее содержимое:
8. Сохраните файл конфигурации Promtail.
Развёртывание Promtail
11. Разверните приложение Promtail с помощью одной команды:
12. Отключите доменное имя для приложения Promtail, так как это не требуется для сбора журналов:
Теперь у вас настроен Promtail для сбора и отправки журналов в систему Loki на вашем сервере Dokku.
Настройка Grafana
Для настройки Grafana выполните следующие шаги:
1.Создайте приложение Grafana:
2. Настройте порты для Grafana, чтобы он слушал HTTP-запросы на порту 80 и пересылал их на порт 3000, где будет работать Grafana:
3. Создайте директории для монтажа хранилища данных и конфигурации Grafana, а также директорию для плагинов:
4. Создайте директорию для хранения файлов конфигурации источников данных:
5. Установите правильные права доступа к созданным директориям и файлам:
6. Монтируйте директории данных и конфигурации Grafana, а также директорию для плагинов:
7. Создайте файл конфигурации для источника данных Loki:
И добавьте в него следующее содержимое:
8. Сохраните файлы конфигурации для источников данных.
9. Присоедините приложение Grafana к сети grafana-bridge после развёртывания:
10. Установка Пользовательского Домена:
Назначьте пользовательский домен для Grafana:
Убедитесь, что DNS-записи для grafana.dokku.me правильно указывают на ваш сервер Dokku.
11. Включение HTTPS:
После установки домена включите HTTPS:
Теперь у вас настроен Grafana с доменным именем grafana.kaido.team и включенным HTTPS для обеспечения безопасного доступа к данным.
Настройка Promtail для мониторинга JSON-логов на удаленном сервере с Loki
Для настройки Promtail для мониторинга JSON-логов на удаленном сервере и отправки их в Loki, учтите следующие шаги:
Настройка удаленного сервера
- Установите и настройте Promtail на удаленном сервере. Пример файла конфигурации Promtail на удаленном сервере может выглядеть следующим образом:
2. В этом файле конфигурации:
это порты, на которых Promtail будет прослушивать HTTP и gRPC запросы.
указывает на адрес Loki, куда Promtail будет отправлять собранные логи. Укажите basic_auth_user и basic_auth_password для HTTP-авторизации на сервере Loki.
это список конфигураций для мониторинга логов. В данном случае, мы создали конфигурацию с именем json_logs для мониторинга JSON-лог файла на удаленном сервере.
замените /путь/к/файлу.json на путь к JSON-лог файлу на удаленном сервере.
Сохраните файл конфигурации на удаленном сервере, например, в
Теперь Promtail будет мониторить JSON-лог файл на удаленном сервере и отправлять его в Loki с использованием HTTP-авторизации на сервере Loki, доступном на вашем локальном сервере, для дальнейшей визуализации в Grafana.
Визуализация данных с помощью 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. Это обеспечивает глубокое понимание процесса и помогает пользователям настроить систему под свои уникальные требования. С учетом всех аспектов безопасности и производительности, такая система логирования становится надежным решением для сбора, анализа и визуализации данных логов.
Централизованное логирование не только упрощает процесс мониторинга, но и играет важную роль в обеспечении стабильности и безопасности серверной инфраструктуры. В современной среде, где скорость и точность реагирования на инциденты критически важны, такая система является необходимым инструментом в арсенале любого администратора серверов или разработчика.