PrintWebAppMetricsGallery.ps1


<#PSScriptInfo
 
.VERSION 1.0
 
.GUID e94428e3-9691-436a-986c-7e6426aa4a1c
 
.AUTHOR Manu Philip
 
.COMPANYNAME cloudcompute.info
 
.COPYRIGHT
 
.TAGS
 
.LICENSEURI
 
.PROJECTURI
 
.ICONURI
 
.EXTERNALMODULEDEPENDENCIES
 
.REQUIREDSCRIPTS
 
.EXTERNALSCRIPTDEPENDENCIES
 
.RELEASENOTES
 
 
#>


<#
 
.DESCRIPTION
 Print Azure WebApp Metrics in Shell
 #This following PowerShell code can print Azure WebApp statistics 'DataIn, DataOut, Requests' for each days for selected number of days
  #The script is ready to use. Copy the code and save as PS1 file
  #When executing, the script will ask for the webappname and number of days needed in report
  #After the completing the script, you will get table formatted statics of each websites within the shell
  #Hope the script helps you out in your daily Azure tasks
 
#>
 
Param()

$WebAppName = Read-Host "Please enter the WebApp Name that the Website(s) belongs to"
$Days= Read-Host "Please enter Last #Days needed to be checked in the report"
$WebApp= Get-AzWebApp -Name $WebAppName
$RgName=$WebApp.ResourceGroup

$ResourceNames = Get-AzResource -ResourceGroupName $RgName -ResourceType "Microsoft.Web/sites"

foreach ($ResourceName in $ResourceNames)
{
$WebappName = $ResourceName.Name 
$URLName=(Get-AzWebApp -Name $WebappName).DefaultHostName

# inputs
 $WarningPreference = 'SilentlyContinue'
 $TimeGrain = [timespan]::FromDays(1)

 $Start = [datetime]::Now.AddDays(-$Days)
 $End = [datetime]::Now
 
 # capture resource metrics
 $Resource = Get-AzResource -ResourceName $WebappName -ResourceGroupName $RgName -ResourceType "Microsoft.Web/sites"
 $ResourceID = $Resource.ResourceId
 
 $MetricName = 'Requests'
 $Splat = @{
     ResourceId = $ResourceID 
     MetricName = $MetricName
     TimeGrain = $TimeGrain 
     StartTime = $Start
     EndTime = $End
 }
 $Data = Get-AzMetric @Splat
 $Datpoints = $data.data.average.foreach({[int]$_})
 Write-Output $URLName
 Write-Output $MetricName
 Write-Output $data.data | format-table TimeStamp, Total -AutoSize

 $MetricName = 'BytesReceived'
 $Splat = @{
     ResourceId = $ResourceID 
     MetricName = $MetricName
     TimeGrain = $TimeGrain 
     StartTime = $Start
     EndTime = $End
 }
 $Data = Get-AzMetric @Splat
 $Datpoints = $data.data.average.foreach({[int]$_})
 Write-Output $URLName
 Write-Output $MetricName
 Write-Output $data.data | format-table TimeStamp, Total -AutoSize

 $MetricName = 'BytesSent'
 $Splat = @{
     ResourceId = $ResourceID 
     MetricName = $MetricName
     TimeGrain = $TimeGrain 
     StartTime = $Start
     EndTime = $End
 }
 $Data = Get-AzMetric @Splat
 $Datpoints = $data.data.average.foreach({[int]$_})
 Write-Output $URLName
 Write-Output $MetricName
 Write-Output $data.data | format-table TimeStamp, Total -AutoSize

}