Вопрос:
Всем привет,
Я новичок в использовании шлюза приложений Azure, и мне нужна помощь в настройке Prometheus, Grafana и Loki на одной виртуальной машине Azure. Я хочу безопасно предоставлять доступ к этим сервисам через HTTPS через отдельные поддомены (например, prometheus.example.com, grafana.example.com, loki.example.com) и управлять DNS с помощью AWS Route 53.
Моя установка:
Виртуальная машина Azure: размещение Prometheus, Grafana и Loki.
Шлюз приложений Azure: для маршрутизации трафика на основе поддоменов.
HTTPS. Включите HTTPS только для всех служб.
DNS: управляется AWS Route 53.
Цели:
Прометей: доступен через https://prometheus.example.com в порту 9090.
Grafana: Доступен через https://grafana.example.com в порту 3000.
Локи: Доступен через https://loki.example.com в порту 3100.
Масштабируемость. Запланируйте добавление дополнительных приложений с использованием того же шлюза приложений Azure.
Текущий прогресс:
Настройка виртуальной машины: создана виртуальная машина Azure и установлены Prometheus, Grafana и Loki.
Сеть: настроена виртуальная сеть Azure и группа безопасности сети для управления сетевым трафиком.
Шлюз приложений: настроен с прослушивателями и серверными пулами.
DNS: управляется через AWS Route 53 для указания поддоменов на общедоступный IP-адрес Шлюза приложений.
Проблемы, с которыми я сталкиваюсь:
Маршрутизация трафика. Требуется руководство по настройке шлюза приложений Azure для правильной маршрутизации трафика в Prometheus, Grafana и Loki на основе поддоменов.
Обеспечение соблюдения https: как обеспечить перенаправление HTTP-запросов на HTTPS для всех поддоменов.
Проверка работоспособности: рекомендации по настройке проверок работоспособности для этих служб.
Управление сертификатами SSL. Есть ли в Azure такой менеджер сертификатов, как AWS Certificate Manager? Как я могу управлять сертификатами SSL в Azure без создания сертификатов вручную или без использования Let's Encrypt?
Вот моя текущая конфигурация:
Слушатели шлюза приложений:
Прослушиватель prometheus.example.com на порту 443
Прослушиватель grafana.example.com на порту 443
Прослушиватель loki.example.com на порту 443
Бэкэнд-пулы:
Настройки http:
Прометей: http://<VM private IP>:9090
Графана: http://<VM private IP>:3000
Локи: http://<VM private IP>:3100
DNS-записи в AWS Route 53:
A записи, указывающие поддомены на общедоступный IP-адрес Шлюза приложений Azure.Конкретные вопросы:
Конфигурация маршрутизации. Как настроить шлюз приложений Azure для правильной маршрутизации трафика в Prometheus, Grafana и Loki на основе поддоменов?
Проверка работоспособности. Каковы наилучшие методы настройки проверки работоспособности для этих служб?
Перенаправление HTTPS. Как обеспечить перенаправление HTTP-запросов на HTTPS для всех поддоменов?
Управление сертификатами SSL. Есть ли в Azure встроенный менеджер сертификатов, аналогичный диспетчеру сертификатов AWS? Если да, то как я могу использовать его для управления своими SSL-сертификатами? Альтернативно, как я могу управлять сертификатами SSL без создания сертификатов вручную или без использования Let's Encrypt?
Дополнительный контекст:
Я очень рад использовать Azure Application Gateway для этой настройки, поскольку это позволит мне легко добавлять больше приложений в будущем. Мы будем очень признательны за любые рекомендации, пошаговые инструкции или примеры!
Заранее спасибо за вашу помощь!


...настройка шлюза приложений Azure для правильной маршрутизации трафика в Prometheus, Grafana и Loki на основе поддоменов.
Предполагая, что вы настроили прослушиватели внешнего интерфейса для каждого приложения (дифференцированные по порту), у вас также должны быть разные внутренние пулы, соответствующие каждому внешнему интерфейсу.
/, и вы должны указать в условии, что заголовок хоста должен соответствовать имени домена для этого конкретного приложения.Каковы наилучшие методы настройки проверок состояния здоровья для этих служб?
Вам необходимо выбрать стратегию либо из документации по продукту, либо придумав ее самостоятельно. Обычно зонда, настроенного на выполнение GET /, достаточно, чтобы убедиться, что хост доступен и что веб-сервер отвечает нормально. Если корень перенаправляет с помощью 301 или 302, вместо этого используйте путь, на который он перенаправляет. Например, /login.php. Вам следует искать код ответа HTTP 20x.
Как я могу гарантировать, что HTTP-запросы перенаправляются на HTTPS для всех поддоменов?
Есть ли в Azure встроенный менеджер сертификатов, аналогичный диспетчеру сертификатов AWS? Если да, то как я могу использовать его для управления своими SSL-сертификатами? Альтернативно, как я могу управлять сертификатами SSL без создания сертификатов вручную или без использования Let's Encrypt?
Не совсем. Существуют управляемые сертификаты Azure для служб приложений, а Azure KeyVault поддерживает создание закрытых ключей и CSR, но для подписи сертификата вам нужен общедоступный центр сертификации, например GlobalSign, Digicert и т. д. Если у вас уже есть сертификат с подстановочными знаками для *.example.com, вы можете использовать это . Или вы действительно можете использовать Let's Encrypt с проверкой DNS01. В конечном итоге вы можете загрузить подписанную цепочку сертификатов формата PFX (должна включать промежуточные и корневой центр сертификации) и закрытый ключ непосредственно в App Gateway или сослаться на существующий сертификат в KeyVault (который вам потребуется создать или загрузить). Я не буду здесь описывать шаги KeyVault, потому что это отходит от темы.
В результате в настоящее время не существует готовых функций для выпуска или продления сертификатов. Однако вы можете использовать проблемы с сертификатами в AWS Certificate Manager.