-
Notifications
You must be signed in to change notification settings - Fork 164
Monitoring
The AzOps module generates various logs and metrics to console during execution. The verbosity level is controlled by the numeric value of Message.Info.Maximum
in settings.json
. Lower values, like 1
, indicate minimal information, while 9
indicates the highest verbosity (read more about the different levels).
Note: The default verbosity level is
3
, and increasing it may negatively affect runtime performance.
During normal operations, the default verbosity level is sufficient. However, when troubleshooting, it is advisable to increase the verbosity to at least 5
or 8
. Going up to 9
makes the module very noisy (read more).
Monitoring and logging takes a leap forward with the capability for AzOps to seamlessly transmit logs to Azure Monitor Application Insights. This integration enhances near real-time visibility, analysis, and optimization, contributing to a more responsive and efficient Azure operational environment.
AzOps uses TrackTrace
to create a "breadcrumb trail" in Application Insights. Warnings and errors are emitted as TrackException
for diagnosis, and each message generates a TrackEvent
. Metrics are emitted as TrackMetric
, such as AzOpsPush Time
and AzOpsPull Time
in seconds.
Note: This is useful for tracking performance, key metrics, and exceptions over time. It is particularly helpful when running the module with several parallel threads (
Core.ThrottleLimit
>1
), as console output may not work well in parallel. Emitting information to Azure Monitor Application Insights can overcome this without adjustingCore.ThrottleLimit
.
-
Add a secret named
APPLICATIONINSIGHTS_CONNECTIONSTRING
(in GitHub or Azure Pipelines) and enter the connection string for your Application Insights resource (find your connection string).Note: Create the
APPLICATIONINSIGHTS_CONNECTIONSTRING
secret in the same location where you already haveARM_TENANT_ID
. If you are using Azure Pipelines, remember to set the variable type tosecret
.Note: AzOps utilizes the connection string as a secret to authenticate. This requires that local authentication is enabled on the Application Insights resource (due to the high performance impact of Application Insights Microsoft Entra ID-based authentication).
Note: AzOps emits each log event immediately as it happens to ensure messages are not lost. This means each event generates a service call to Application Insights that needs to be authenticated. No batching or schedule is used.
-
Set the
Core.ApplicationInsights
value insettings.json
totrue
. AzOps will emit logs to both the console and the designated Azure Monitor Application Insights.
Please Note: For this to work with GitHub in the manner intended (applicable to implementations created prior to AzOps release v2.5.0)
Ensure the Credentials
section is up-to-date and exists in your pull.yml, push.yml, redeploy.yml, validate.yml files.
env:
#
# Credentials
#
APPLICATIONINSIGHTS_CONNECTIONSTRING: ${{ secrets.APPLICATIONINSIGHTS_CONNECTIONSTRING }}
Once monitoring is enabled, implement two essential alert rules using the powerful capabilities of Azure Monitor alerts.
-
Create a metric alert rule with the condition based on the native
exceptions
signal.- Set a static threshold value of 0 to trigger the alert when the module logs any exception (Warning, Error, Critical).
- Recommended alert detail severity: Warning.
-
Create a log alert rule with the condition based on the native
Custom log search
signal.- Use the search query
traces | where severityLevel between (3 .. 4)
to trigger the alert for Error or Critical events. - Enhance the alert by splitting dimensions based on the dimension name
message
and ensure to checkinclude all future values
. - Recommended alert detail severity: Critical.
- Use the search query