init
This commit is contained in:
100
.bicep/modules/monitoring.bicep
Normal file
100
.bicep/modules/monitoring.bicep
Normal file
@@ -0,0 +1,100 @@
|
||||
@description('The location for all resources')
|
||||
param location string
|
||||
|
||||
@description('The name of the Application Insights instance')
|
||||
param appInsightsName string
|
||||
|
||||
@description('The name of the Log Analytics Workspace')
|
||||
param logAnalyticsWorkspaceName string
|
||||
|
||||
@description('The name of the Grafana instance')
|
||||
param grafanaName string = 'grafana-${uniqueString(resourceGroupId())}'
|
||||
|
||||
// Create Log Analytics Workspace
|
||||
resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2022-10-01' = {
|
||||
name: logAnalyticsWorkspaceName
|
||||
location: location
|
||||
properties: {
|
||||
sku: {
|
||||
name: 'PerGB2018'
|
||||
}
|
||||
retentionInDays: 30
|
||||
features: {
|
||||
enableLogAccessUsingOnlyResourcePermissions: true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Create Application Insights
|
||||
resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = {
|
||||
name: appInsightsName
|
||||
location: location
|
||||
kind: 'web'
|
||||
properties: {
|
||||
Application_Type: 'web'
|
||||
WorkspaceResourceId: logAnalyticsWorkspace.id
|
||||
IngestionMode: 'LogAnalytics'
|
||||
publicNetworkAccessForIngestion: 'Enabled'
|
||||
publicNetworkAccessForQuery: 'Enabled'
|
||||
}
|
||||
}
|
||||
|
||||
// Create Grafana Instance - Standard SKU (lowest cost managed option)
|
||||
resource grafana 'Microsoft.Dashboard/grafana@2023-09-01' = {
|
||||
name: grafanaName
|
||||
location: location
|
||||
sku: {
|
||||
name: 'Standard'
|
||||
}
|
||||
identity: {
|
||||
type: 'SystemAssigned'
|
||||
}
|
||||
properties: {
|
||||
apiKey: 'Enabled'
|
||||
autoLogoutMinutes: 0
|
||||
azureMonitorWorkspaceIntegrations: [
|
||||
{
|
||||
azureMonitorWorkspaceResourceId: logAnalyticsWorkspace.id
|
||||
}
|
||||
]
|
||||
grafanaIntegrations: {
|
||||
azureMonitorWorkspaceIntegrations: [
|
||||
{
|
||||
azureMonitorWorkspaceResourceId: logAnalyticsWorkspace.id
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Assign Monitoring Data Reader role to Grafana for Log Analytics Workspace
|
||||
resource grafanaLogAnalyticsRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
|
||||
scope: logAnalyticsWorkspace
|
||||
name: guid(logAnalyticsWorkspace.id, grafana.id, 'b24988ac-6180-42a0-ab88-20f7382dd24c')
|
||||
properties: {
|
||||
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')
|
||||
principalId: grafana.identity.principalId
|
||||
principalType: 'ServicePrincipal'
|
||||
}
|
||||
}
|
||||
|
||||
// Assign Monitoring Data Reader role to Grafana for Application Insights
|
||||
resource grafanaAppInsightsRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
|
||||
scope: applicationInsights
|
||||
name: guid(applicationInsights.id, grafana.id, 'b24988ac-6180-42a0-ab88-20f7382dd24c')
|
||||
properties: {
|
||||
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')
|
||||
principalId: grafana.identity.principalId
|
||||
principalType: 'ServicePrincipal'
|
||||
}
|
||||
}
|
||||
|
||||
// Outputs
|
||||
output appInsightsName string = applicationInsights.name
|
||||
output instrumentationKey string = applicationInsights.properties.InstrumentationKey
|
||||
output connectionString string = applicationInsights.properties.ConnectionString
|
||||
output workspaceId string = logAnalyticsWorkspace.id
|
||||
output workspaceName string = logAnalyticsWorkspace.name
|
||||
output grafanaName string = grafana.name
|
||||
output grafanaId string = grafana.id
|
||||
output grafanaEndpoint string = grafana.properties.endpoint
|
||||
Reference in New Issue
Block a user