Overview
Deploy Metlo on Microsoft Azure using Azure Resource Manager (ARM) templates. This guide covers deploying Metlo as a virtual machine in your Azure subscription.Prerequisites
- Azure subscription with active billing
- Azure CLI installed (optional, for CLI deployment)
- SSH public key for VM access
- Resource group created (or will be created during deployment)
Deployment Methods
- Azure Portal
- Azure CLI
- PowerShell
Deploy via Azure Portal
Access ARM Template
Download the Metlo ARM template:Or access it directly from the GitHub repository.
Create Custom Deployment
- Navigate to Azure Portal
- Search for “Deploy a custom template”
- Click “Build your own template in the editor”
- Paste the contents of
deployment.jsonor upload the file - Click “Save”
Configure Parameters
Provide the following parameters:
Select your Azure subscription
Create new or select existing resource group
Select the Azure region for deployment (default: resource group location)
Name for the Metlo virtual machine
SSH public key for accessing the VM (recommended over password)
Review and Create
- Review all configuration settings
- Accept the terms and conditions
- Click “Create” to start the deployment
- Wait approximately 15-20 minutes for deployment to complete
Resource Details
Virtual Machine
- 2 vCPUs
- 4 GB RAM
- Burstable performance tier
- Suitable for small to medium production workloads
Latest Ubuntu 18.04 LTS image from Canonical
- Standard HDD Locally Redundant Storage
- 30GB disk size
- Upgrade to Premium_LRS for better performance
Networking
The deployment creates:- Virtual Network (
metloVNet): 10.1.0.0/16 address space - Subnet (
metloSubnet): 10.1.0.0/24 address prefix - Public IP Address: Dynamic allocation with DNS label
- Network Interface: Connected to subnet with public IP
- Network Security Group: With configured security rules
Network Security Group Rules
The template creates the following inbound security rules:| Priority | Name | Port | Protocol | Source | Description |
|---|---|---|---|---|---|
| 1000 | MetloSSH | 22 | TCP | * | SSH access |
| 1001 | Metlo-Collector-10-8 | 8081 | TCP | 10.0.0.0/8 | Collector from private network |
| 1002 | Metlo-Collector-172.16-12 | 8000 | TCP | 172.16.0.0/12 | UI from private network |
| 1003 | Metlo-Collector-192.168-16 | 8000 | TCP | 192.168.0.0/16 | UI from private network |
Post-Deployment Configuration
Retrieve Connection Information
The deployment outputs provide:SSH Access
Connect using the SSH command from outputs:Configure Additional NSG Rules
To access Metlo UI and services externally, add NSG rules:Verify Metlo Installation
SSH into the VM and check the deployment status:Accessing Metlo
Once the deployment is complete and NSG rules are configured:- Frontend UI:
http://YOUR_VM_FQDN:8000 - Backend API:
http://YOUR_VM_FQDN:8080 - Collector Endpoint:
http://YOUR_VM_FQDN:8081
Scaling Recommendations
VM Size Upgrades
For production workloads, consider upgrading to:| Workload | VM Size | vCPUs | RAM | Cost/Month* |
|---|---|---|---|---|
| Small | Standard_B2s | 2 | 4 GB | ~$30 |
| Medium | Standard_D2s_v3 | 2 | 8 GB | ~$70 |
| Large | Standard_D4s_v3 | 4 | 16 GB | ~$140 |
| X-Large | Standard_D8s_v3 | 8 | 32 GB | ~$280 |
Storage Upgrades
Upgrade to Premium SSD for better performance:Backup and Disaster Recovery
Enable Azure Backup
Create VM Snapshots
Monitoring with Azure Monitor
Enable diagnostic settings
Set up alerts
Cost Management
Estimated monthly costs (East US region):
- VM (Standard_B2s): ~$30/month
- OS Disk (30GB Standard HDD): ~$1.50/month
- Public IP: ~$3/month
- Bandwidth: Variable based on usage
- Total baseline: ~$35-40/month
Cost-saving strategies:
- Use Azure Reserved VM Instances: Save up to 72% with 1 or 3-year reservations
- Enable auto-shutdown: Schedule VM shutdown during non-business hours
- Use Spot VMs: For non-production environments (up to 90% savings)
- Right-size VMs: Monitor metrics and adjust VM size accordingly
Troubleshooting
Deployment fails with quota exceeded
Deployment fails with quota exceeded
- Check your subscription’s core quota limits
- Request quota increase: Portal → Subscriptions → Usage + quotas
- Try a different region or VM size
Cannot SSH into VM
Cannot SSH into VM
- Verify NSG allows port 22 from your IP
- Check that the VM is running:
az vm get-instance-view - Verify SSH public key was correctly specified
- Try password authentication if key fails (less secure)
Custom script extension failed
Custom script extension failed
- Check extension logs:
/var/log/azure/custom-script/handler.log - Manually run deployment script:
Cannot access Metlo UI
Cannot access Metlo UI
- Verify NSG rules allow ports 8000, 8080, 8081
- Check that Metlo services are running:
sudo metlo-deploy status - Ensure public IP is accessible
- Check VM firewall:
sudo ufw status
Next Steps
Configure Data Sources
Set up integrations to capture API traffic
Configure Alerts
Set up webhook alerts
Environment Variables
Configure environment settings
Security Configuration
Configure security settings