In this series, we took a look at the metrics we’re able to collect via Azure Monitor Logs (aka Log Analytics) and Azure Metrics.

I wanted to provide a few tables that show metrics available in each tool side-by-side, to make it easier to reference.

This first table shows when you might use metrics vs logs.

AttributeMetricsLogs
BenefitsLightweight and capable of near-real time scenarios such as alerting. Ideal for fast detection of issues.Analyzed with rich query language. Ideal for deep analysis and identifying root cause.
DataNumerical values onlyText or numeric data
StructureStandard set of properties including sample time, resource being monitored, a numeric value. Some metrics include multiple dimensions for further definition.Unique set of properties depending on the log type.
CollectionCollected at regular intervals.May be collected sporadically as events trigger a record to be created.
View in Azure portalMetrics ExplorerLog Analytics
Data sources includePlatform metrics collected from Azure resources.
Applications monitored by Application Insights.
Custom defined by application or API.
Application and Diagnostics Logs.
Monitoring solutions.
Agents and VM extensions.
Application requests and exceptions.
Azure Security Center.
Data Collector API.

 

This next table shows all of the performance counters available, between Azure Metrics and Azure Monitor Logs.

Counter CategoryAzure Metrics (VM Host)Azure Metrics (Guest OS)Azure Monitor Logs (aka Log Analytics)
CPUPercentage CPU
CPU Credits Remaining
CPU Credits Consumed
\Process(_Total)\Handle Count
\Process(_Total)\Thread Count
\Process(_Total)\Working Set
\Process(_Total)\Working Set - Private
\Processor Information(_Total)\% Privileged Time
\Processor Information(_Total)\% Processor Time
\Processor Information(_Total)\% User Time
\Processor Information(_Total)\Processor Frequency
\System\Context Switches/sec
\System\Processes
\System\Processor Queue Length
\System\System Up Time
Windows:
Processor(_Total)\% Processor Time
System(*)\Processor Queue Length

Linux:
Processor(*)\% Processor Time
Processor(*)\% Privileged Time
MemoryNone\Memory\% Committed Bytes In Use
\Memory\Available Bytes
\Memory\Cache Bytes
\Memory\Committed Bytes
\Memory\Page Faults/sec
\Memory\Pages/sec
\Memory\Pool Nonpaged Bytes
\Memory\Pool Paged Bytes
Windows:
Memory(*)\Available MBytes
Memory(*)\% Committed Bytes In Use

Linux:
Memory(*)\Available MBytes Memory
Memory(*)\% Used Memory
Memory(*)\% Used Swap Space
DiskDisk Read Bytes
Disk Write Bytes
Disk Read Operations/Sec
Disk Write Operations/Sec
Data Disk Read Bytes/Sec
Data Disk Write Bytes/Sec
Data Disk Read Operations/Sec
Data Disk Write Operations/Sec
Data Disk Queue Depth
OS Disk Read Bytes/Sec
OS Disk Write Bytes/Sec
OS Disk Read Operations/Sec
OS Disk Write Operations/Sec 
OS Disk Queue Depth
Premium Data Disk Cache Read Hit
Premium Data Disk Cache Read Miss
Premium OS Disk Cache Read Hit
Premium OS Disk Cache Read Miss
\LogicalDisk(_Total)\% Disk Read Time
\LogicalDisk(_Total)\% Disk Time
\LogicalDisk(_Total)\% Disk Write Time
\LogicalDisk(_Total)\% Free Space
\LogicalDisk(_Total)\% Idle Time
\LogicalDisk(_Total)\Avg. Disk Queue Length
\LogicalDisk(_Total)\Avg. Disk Read Queue Length
\LogicalDisk(_Total)\Avg. Disk sec/Read
\LogicalDisk(_Total)\Avg. Disk sec/Transfer
\LogicalDisk(_Total)\Avg. Disk sec/Write
\LogicalDisk(_Total)\Avg. Write Queue Length
\LogicalDisk(_Total)\Disk Bytes/sec
\LogicalDisk(_Total)\Disk Read Bytes/sec
\LogicalDisk(_Total)\Disk Reads/sec
\LogicalDisk(_Total)\Disk Transfers/sec
\LogicalDisk(_Total)\Disk Write Bytes/sec
\LogicalDisk(_Total)\Free Megabytes
Windows:
LogicalDisk(*)\Avg. Disk sec/Read
LogicalDisk(*)\Avg. Disk sec/Write
LogicalDisk(*)\Current Disk Queue Length
LogicalDisk(*)\Disk Reads/sec
LogicalDisk(*)\Disk Transfers/sec
LogicalDisk(*)\Disk Writes/sec
LogicalDisk(*)\Free Megabytes
LogicalDisk(*)\% Free Space

Linux:
Logical Disk(*)\% Used Inodes
Logical Disk(*)\Free Megabytes
Logical Disk(*)\% Used Space
Logical Disk(*)\Disk Transfers/sec
Logical Disk(*)\Disk Reads/sec
Logical Disk(*)\Disk Writes/sec
NetworkNetwork In Billable
Network Out Billable
Inbound Flows 
Outbound Flows
Inbound Flows Maximum Creation Rate 
Outbound Flows Maximum Creation Rate 
Network In Total
Network Out Total
NoneWindows:
Network Adapter(*)\Bytes Received/sec
Network Adapter(*)\Bytes Sent/sec
Network Interface(*)\Bytes Total/sec

Linux:
Network(*)\Total Bytes Transmitted
Network(*)\Total Bytes Received

 

Conclusion

Hopefully, you’ve found this series helpful in understanding the differences between Azure Metrics and Azure Monitor Logs.

In fact, I wrote this series based on a request I received from an individual that attended my presentation at the recent Global Azure Bootcamp! So, if you have a request for a topic, feel free to reach out, and I’ll try my best to help.