Question:
Hi everyone,
I’m fairly new to using Azure Application Gateway and need some assistance with a setup involving Prometheus, Grafana, and Loki on a single Azure VM. I want to expose these services securely over HTTPS through distinct subdomains (e.g., prometheus.example.com, grafana.example.com, loki.example.com) and manage DNS with AWS Route 53.
My Setup:
-
Azure VM: Hosting Prometheus, Grafana, and Loki.
-
Azure Application Gateway: To route traffic based on subdomains.
-
HTTPS: Enforce HTTPS only for all services.
-
DNS: Managed by AWS Route 53.
Objectives:
-
Prometheus: Accessible via
https://prometheus.example.com
on port9090
. -
Grafana: Accessible via
https://grafana.example.com
on port3000
. -
Loki: Accessible via
https://loki.example.com
on port3100
. -
Scalability: Plan to add more applications using the same Azure Application Gateway.
Current Progress:
-
VM Setup: Created an Azure VM and installed Prometheus, Grafana, and Loki.
-
Networking: Configured Azure VNet and NSG to manage network traffic.
-
Application Gateway: Set up with listeners and backend pools.
-
DNS: Managed via AWS Route 53 to point subdomains to the Application Gateway’s public IP.
Challenges I’m Facing:
-
Routing Traffic: Need guidance on configuring Azure Application Gateway to correctly route traffic to Prometheus, Grafana, and Loki based on subdomains.
-
HTTPS Enforcement: How to ensure HTTP requests are redirected to HTTPS for all subdomains.
-
Health Probes: Best practices for setting up health probes for these services.
-
SSL Certificate Management: Does Azure have a certificate manager like AWS Certificate Manager? How can I manage SSL certificates in Azure, without manually created certificates or using Let’s Encrypt?
Here’s my current configuration:
-
Application Gateway Listeners:
-
Listener for
prometheus.example.com
on port443
-
Listener for
grafana.example.com
on port443
-
Listener for
loki.example.com
on port443
-
-
Backend Pools:
- VM with Prometheus, Grafana, and Loki installed
-
HTTP Settings:
-
Prometheus:
http://<VM private IP>:9090
-
Grafana:
http://<VM private IP>:3000
-
Loki:
http://<VM private IP>:3100
-
-
DNS Records in AWS Route 53:
A
records pointing subdomains to the Azure Application Gateway’s public IP.
Specific Questions:
-
Routing Configuration: How do I configure Azure Application Gateway to route traffic correctly to Prometheus, Grafana, and Loki based on subdomains?
-
Health Probes: What are the best practices for setting up health probes for these services?
-
HTTPS Redirection: How can I ensure that HTTP requests are redirected to HTTPS for all subdomains?
-
SSL Certificate Management: Does Azure have a built-in certificate manager similar to AWS Certificate Manager? If so, how can I use it to manage my SSL certificates? Alternatively, how can I manage SSL certificates without manually created certificates or using Let’s Encrypt?
Additional Context:
I’m excited about leveraging Azure Application Gateway for this setup, as it will allow me to add more applications easily in the future. Any guidance, step-by-step instructions, or examples would be greatly appreciated!
Thank you in advance for your help!