Setup Prometheus in Microsoft Azure (WebApp) using Azure CLI
Tags: prometheus, azure, monitoring, tutorial
Published: 2022-07-23 09:39:00

**Goal :**

- Create Prometheus WebApp in Microsoft Azure using Azure CLI

**Pre-Requisite :** 

- [Deploying Prometheus Image to Azure Container Registry Using Azure CLI](https://dev.to/suryabhansv/deploying-prometheus-image-to-azure-container-registry-using-azure-cli-4b30)

**Resource will Create :**

- App Service plan
- Storage account
- App Service

**Script**


```
$ResourceGroupName		= "suryarg"
$LocationName			= "eastus2"
$ACRName				= "suryacr"
$ACRUrl 				= "$ACRName.azurecr.io"

$AppServicePlan			= "suryaasp"
$AppServicePlanSku		= "S1"
$StorageAccountName		= "suryastorageaccountsa"
$StorageAccountSku		= "Standard_ZRS"
$StorageAccountShare	= "suryasprometheus"
$WebAppName				= "suryawaprometheus"
```



```
#Create App Service Plan
az appservice plan create --resource-group $ResourceGroupName --name $AppServicePlan --is-linux --sku $AppServicePlanSku	

#Create a Storage Account
az storage account create --resource-group $ResourceGroupName --name $StorageAccountName --kind StorageV2 --sku $StorageAccountSku

#Create an Storage Account File Share
az storage share-rm create --resource-group $ResourceGroupName --storage-account $StorageAccountName --name $StorageAccountShare --access-tier "TransactionOptimized" --quota 64

#Create an Webapp for Prometheus
az webapp create --resource-group $ResourceGroupName --name $WebAppName --plan $AppServicePlan -i "$ACRUrl/prometheus:SuryaLatest"
```

```
#Create Storage Mount for Prometheus WebApp
$storageaccountkey	=	$(az storage account keys list --resource-group $ResourceGroupName --account-name $StorageAccountName --query [0].value -o tsv)

az webapp config storage-account add --resource-group $ResourceGroupName --name $WebAppName --custom-id "prometheus" --storage-type "AzureFiles" --share-name $StorageAccountShare --account-name $StorageAccountName --access-key $storageaccountkey  --mount-path "/etc/prometheus"
az webapp config storage-account add --resource-group $ResourceGroupName --name $WebAppName --custom-id "prometheus_data" --storage-type "AzureFiles" --share-name $StorageAccountShare --account-name $StorageAccountName --access-key $storageaccountkey  --mount-path "/prometheus"
```



```
#Set an Environment Variable for Prometheus WebApp
az webapp config appsettings set --resource-group $ResourceGroupName --name $WebAppName --settings WEBSITES_PORT=9090

#Set an Startup Commmand for Prometheus WebApp
az webapp config set --name $WebAppName --resource-group $ResourceGroupName --startup-file `
"--config.file=/etc/prometheus/prometheus.yml --web.enable-lifecycle --storage.tsdb.retention.time=7d"
```


* prometheus.yml (Upload this file in **suryasprometheus** Storage Account Share)

```
# my global config
global:
  scrape_interval: 30s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 30s # Evaluate rules every 15 seconds. The default is every 1 minute.
  scrape_timeout: 30s #is set to the global default (10s).
  

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "Prometheus"
    static_configs:
      - targets: ["suryawaprometheus.azurewebsites.net"]
```
![Prometheus.yml](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7cfym9ubbzkd5jhq3ddf.png)
![Prometheus.yml](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fd9k16rxaj83mcobx1yn.png)
![Prometheus.yml](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m6hhcqxco3kg3w9p24e7.png)
  

> * [Example file prometheus.yml (Documentation)](https://github.com/prometheus/prometheus/blob/release-2.37/config/testdata/conf.good.yml)


**Output :**


![Prometheus](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zrajylthrpjypngversf.png)
![Prometheus](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0ueh6ia1ke8f8wui79r9.png)
![Prometheus](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q8xgql6h4waak8atd1nu.png)
![Prometheus](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/abnllfmsxcbwc0l4y9lp.png)
![Prometheus](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8fdjj66l1tsfovg95wj0.png)
![Prometheus](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/033ig1ll3bgxwlkw8rpb.png)