Observability parameter reference
All inputs to observability/infra/main.bicep are explicit. The Bicep source contains no tenant-specific values or notification addresses. Public examples use fictitious values only; real values are supplied through an ignored private overlay or a pipeline variable resolved from the tenant's Key Vault.
Core identity and naming
| Parameter | Required | Purpose |
|---|---|---|
workload | Yes | Lowercase workload token used in CAF-derived names |
environment | Yes | Environment identifier, such as dev, stg, or prd |
regionCode | Yes | Short CAF region token used in names |
instance | Yes | Zero-padded instance identifier |
location | Yes | Azure region for regional resources |
ownerAlias | Yes | Accountable owner or team tag, never an object ID or credential |
project | Yes | Project or workload tag value |
costCenter | Yes | Allocation tag value |
lifecycle | Yes | permanent, temporary, or sandbox |
expiresOn | Yes | ISO date for temporary or sandbox resources; empty only for permanent resources |
managedBy | Yes | Provisioning authority tag |
Foundation and budget
| Parameter | Required | Purpose |
|---|---|---|
operationsEmails | Yes | Private action-group recipients |
actionGroupShortName | Yes | Notification display short name |
actionGroupLocation | Yes | Azure-supported action-group location |
monthlyBudgetUsd | Yes | Subscription budget amount in USD |
budgetStartDate | Yes | First date of the recurring budget period in yyyy-MM-01 form |
budgetActualAlertThresholds | Yes | Object containing low, medium, and high actual-cost percentages |
enableBudgetForecastNotifications | Yes | Enables forecast notifications from budgetForecastAlertThresholds |
budgetForecastAlertThresholds | Yes | Object containing low, medium, and high forecast percentages when enabled |
logAnalyticsSkuName | Yes | Log Analytics SKU supplied by the consumer |
logAnalyticsRetentionInDays | Yes | Interactive retention period |
logAnalyticsDailyQuotaGb | Yes | Daily cap safety value |
deployGrafanaDashboardShell | Yes | Creates the native Azure Monitor dashboard resource |
deployGrafanaDashboardDefinitionPreview | Yes | Enables the preview dashboard-definition child resource |
grafanaDashboardDefinitionName | Yes | Dashboard definition child-resource name |
grafanaDashboardDefinitionSerializedData | Yes | Source-controlled serialized dashboard JSON when preview is enabled |
Governance and FinOps arrays
| Parameter | Required | Object contract |
|---|---|---|
enableGovernancePolicyAssignments | Yes | Switch for governancePolicyAssignments |
governancePolicyAssignments | Yes | Each item: name, identity, properties; properties include definition ID, scope behavior, exclusions, enforcement mode, and parameter values |
enableCostScheduledActions | Yes | Switch for costScheduledActions |
costScheduledActions | Yes | Each item: name, kind, properties matching Microsoft.CostManagement/scheduledActions |
enableCostExports | Yes | Switch for costExports |
costExports | Yes | Each item: name, properties matching Microsoft.CostManagement/exports; destination storage is pre-existing and private |
Alerts and control-plane inputs
| Parameter | Required | Object contract |
|---|---|---|
alertRuleLocation | Yes | Azure-supported location for alert rule resources |
enableActivityLogAlerts | Yes | Switch for activityLogAlertDefinitions |
activityLogAlertDefinitions | Yes | Each item: name, description, enabled, scopes, conditionAllOf; conditions remain visible in the parameter file |
enableActivityLogDiagnosticSetting | Yes | Enables selected Activity Log export to Log Analytics |
activityLogDiagnosticSettingName | Yes | Diagnostic-setting name when export is enabled |
activityLogDiagnosticCategories | Yes | Selected { category, enabled } entries only, never a catch-all configuration |
activityLogDiagnosticDestinationType | Yes | Optional Log Analytics destination type |
enableMetricAlerts | Yes | Switch for metricAlertDefinitions |
metricAlertDefinitions | Yes | Each item: name, properties; properties include scopes, metric criteria, threshold, window, frequency, severity, and dimensions |
enableAlertProcessingRules | Yes | Switch for alertProcessingRuleDefinitions |
alertProcessingRuleDefinitions | Yes | Each item: name, location, properties matching Microsoft.AlertsManagement/actionRules |
Diagnostics, workload, and hybrid inputs
| Parameter | Required | Object contract |
|---|---|---|
enableFoundryDiagnosticSetting | Yes | Enables selected diagnostics on an existing Foundry account |
foundryDiagnosticSetting | Yes | targetSubscriptionId, targetResourceGroupName, targetFoundryAccountName, name, logs, metrics, optional destination type |
enableApplicationInsights | Yes | Enables workspace-based Application Insights |
applicationInsightsConfiguration | Yes | name, kind, applicationType, retentionInDays, samplingPercentage, disableLocalAuth, and network-access values |
enableAvailabilityTests | Yes | Requires Application Insights and approved availabilityTestDefinitions |
availabilityTestDefinitions | Yes | Each item: name, kind, properties, optional tags; no secret-bearing request data |
enableScheduledQueryAlerts | Yes | Switch for scheduledQueryAlertDefinitions |
scheduledQueryAlertDefinitions | Yes | Each item: name, display fields, scopes, frequency, window, criteria, severity, and optional mitigation controls |
enableDataCollectionRules | Yes | Switch for dataCollectionRuleDefinitions; no association or collection occurs until a specific consumer adds it |
dataCollectionRuleDefinitions | Yes | Each item: name, kind, properties, optional identity and tags matching Microsoft.Insights/dataCollectionRules |
enableHealthModelPreview | Yes | Enables the preview health model only for an approved pilot |
healthModelPreviewConfiguration | Yes | name, identity, properties; discovery scope must be reviewed |
Private overlay rule
Private overlays may contain recipient addresses, scope identifiers, resource IDs, budget amount, thresholds, retention values, storage destinations, and approved dashboard or alert definitions. They may not be committed to the public package. They must be excluded through the consuming repository's .gitignore and passed to the pipeline from a protected source.