Skip to content

Commit ed61d43

Browse files
feat: Implemented reusing of log analytics service
1 parent 9b95985 commit ed61d43

File tree

5 files changed

+63
-29
lines changed

5 files changed

+63
-29
lines changed

docs/CustomizingAzdParameters.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,9 @@ Change the Embedding Deployment Capacity (choose a number based on available emb
4040

4141
```shell
4242
azd env set AZURE_ENV_EMBEDDING_MODEL_CAPACITY 80
43+
```
44+
45+
Set the Log Analytics Workspace Id if you need to reuse the existing workspace
46+
```shell
47+
azd env set AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID '<Existing Log Analytics Workspace Id>'
4348
```

docs/DeploymentGuide.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ When you start the deployment, most parameters will have **default values**, but
107107
| **GPT Model Deployment Capacity** | Configure capacity for **GPT models**. | 30k |
108108
| **Embedding Model** | Default: **text-embedding-ada-002**. | text-embedding-ada-002 |
109109
| **Embedding Model Capacity** | Set the capacity for **embedding models**. | 80k |
110+
| **Existing Log analytics workspace** | To reuse the existing Log analytics workspace Id. | |
110111

111112
</details>
112113

infra/deploy_ai_foundry.bicep

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ param gptDeploymentCapacity int
99
param embeddingModel string
1010
param embeddingDeploymentCapacity int
1111
param managedIdentityObjectId string
12+
param existingLogAnalyticsWorkspaceId string = ''
13+
1214
var abbrs = loadJsonContent('./abbreviations.json')
1315

1416
var storageName = '${abbrs.storage.storageAccount}${solutionName}-hub'
@@ -27,6 +29,11 @@ var aiProjectName = '${abbrs.ai.aiHubProject}${solutionName}'
2729
var aiProjectFriendlyName = aiProjectName
2830
var aiSearchName = '${abbrs.ai.aiSearch}${solutionName}'
2931
var workspaceName = '${abbrs.managementGovernance.logAnalyticsWorkspace}${solutionName}'
32+
33+
var useExisting = !empty(existingLogAnalyticsWorkspaceId)
34+
var existingLawResourceGroup = useExisting ? split(existingLogAnalyticsWorkspaceId, '/')[4] : ''
35+
var existingLawName = useExisting ? split(existingLogAnalyticsWorkspaceId, '/')[8] : ''
36+
3037
var aiModelDeployments = [
3138
{
3239
name: gptModelName
@@ -56,7 +63,12 @@ resource keyVault 'Microsoft.KeyVault/vaults@2022-07-01' existing = {
5663
name: keyVaultName
5764
}
5865

59-
resource logAnalytics 'Microsoft.OperationalInsights/workspaces@2023-09-01' = {
66+
resource existingLogAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2020-08-01' existing = if (useExisting) {
67+
name: existingLawName
68+
scope: resourceGroup(existingLawResourceGroup)
69+
}
70+
71+
resource logAnalytics 'Microsoft.OperationalInsights/workspaces@2023-09-01' = if (!useExisting) {
6072
name: workspaceName
6173
location: location
6274
tags: {}
@@ -96,7 +108,7 @@ resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = {
96108
Application_Type: 'web'
97109
publicNetworkAccessForIngestion: 'Enabled'
98110
publicNetworkAccessForQuery: 'Enabled'
99-
WorkspaceResourceId: logAnalytics.id
111+
WorkspaceResourceId: useExisting ? existingLogAnalyticsWorkspace.id : logAnalytics.id
100112
}
101113
}
102114

@@ -483,7 +495,7 @@ output aiSearchService string = aiSearch.name
483495
output aiProjectName string = aiHubProject.name
484496

485497
output applicationInsightsId string = applicationInsights.id
486-
output logAnalyticsWorkspaceResourceName string = logAnalytics.name
498+
output logAnalyticsWorkspaceResourceName string = useExisting ? existingLogAnalyticsWorkspace.name : logAnalytics.name
487499
output storageAccountName string = storageNameCleaned
488500
output applicationInsightsConnectionString string = applicationInsights.properties.ConnectionString
489501

infra/main.bicep

Lines changed: 41 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,24 @@ param embeddingDeploymentCapacity int = 80
5555

5656
param imageTag string = 'latest'
5757
param AZURE_LOCATION string=''
58+
59+
@description('Optional: Existing Log Analytics Workspace Resource ID')
60+
param existingLogAnalyticsWorkspaceId string = ''
61+
5862
var solutionLocation = empty(AZURE_LOCATION) ? resourceGroup().location : AZURE_LOCATION
5963

6064
var uniqueId = toLower(uniqueString(environmentName, subscription().id, solutionLocation))
6165
var solutionPrefix = 'dg${padLeft(take(uniqueId, 12), 12, '0')}'
6266

63-
var baseUrl = 'https://raw.githubusercontent.com/microsoft/document-generation-solution-accelerator/main/'
67+
// var baseUrl = 'https://raw.githubusercontent.com/microsoft/document-generation-solution-accelerator/main/'
68+
69+
// var ApplicationInsightsName ='${abbrs.managementGovernance.applicationInsights}${solutionPrefix}'
70+
// var WorkspaceName = '${abbrs.managementGovernance.logAnalyticsWorkspace}${solutionPrefix}'
71+
72+
// var useExisting = !empty(existingLogAnalyticsWorkspaceId)
73+
// var existingLawResourceGroup = useExisting ? split(existingLogAnalyticsWorkspaceId, '/')[4] : ''
74+
// var existingLawName = useExisting ? split(existingLogAnalyticsWorkspaceId, '/')[8] : ''
6475

65-
var ApplicationInsightsName ='${abbrs.managementGovernance.applicationInsights}${solutionPrefix}'
66-
var WorkspaceName = '${abbrs.managementGovernance.logAnalyticsWorkspace}${solutionPrefix}'
6776

6877
// ========== Managed Identity ========== //
6978
module managedIdentityModule 'deploy_managed_identity.bicep' = {
@@ -101,7 +110,8 @@ module aifoundry 'deploy_ai_foundry.bicep' = {
101110
gptDeploymentCapacity: gptDeploymentCapacity
102111
embeddingModel: embeddingModel
103112
embeddingDeploymentCapacity: embeddingDeploymentCapacity
104-
managedIdentityObjectId:managedIdentityModule.outputs.managedIdentityOutput.objectId
113+
managedIdentityObjectId: managedIdentityModule.outputs.managedIdentityOutput.objectId
114+
existingLogAnalyticsWorkspaceId: existingLogAnalyticsWorkspaceId
105115
}
106116
scope: resourceGroup(resourceGroup().name)
107117
}
@@ -396,29 +406,34 @@ module appserviceModule 'deploy_app_service.bicep' = {
396406

397407
output WEB_APP_URL string = appserviceModule.outputs.webAppUrl
398408

399-
resource Workspace 'Microsoft.OperationalInsights/workspaces@2020-08-01' = {
400-
name: WorkspaceName
401-
location: solutionLocation
402-
properties: {
403-
sku: {
404-
name: 'PerGB2018'
405-
}
406-
retentionInDays: 30
407-
}
408-
}
409+
// resource existingWorkspace 'Microsoft.OperationalInsights/workspaces@2020-08-01' existing = if (useExisting) {
410+
// name: existingLawName
411+
// scope: resourceGroup(existingLawResourceGroup)
412+
// }
409413

410-
resource ApplicationInsights 'Microsoft.Insights/components@2020-02-02' = {
411-
name: ApplicationInsightsName
412-
location: solutionLocation
413-
tags: {
414-
'hidden-link:${resourceId('Microsoft.Web/sites',ApplicationInsightsName)}': 'Resource'
415-
}
416-
properties: {
417-
Application_Type: 'web'
418-
WorkspaceResourceId: Workspace.id
419-
}
420-
kind: 'web'
421-
}
414+
// resource Workspace 'Microsoft.OperationalInsights/workspaces@2020-08-01' = if (!useExisting) {
415+
// name: WorkspaceName
416+
// location: solutionLocation
417+
// properties: {
418+
// sku: {
419+
// name: 'PerGB2018'
420+
// }
421+
// retentionInDays: 30
422+
// }
423+
// }
424+
425+
// resource ApplicationInsights 'Microsoft.Insights/components@2020-02-02' = {
426+
// name: ApplicationInsightsName
427+
// location: solutionLocation
428+
// tags: {
429+
// 'hidden-link:${resourceId('Microsoft.Web/sites',ApplicationInsightsName)}': 'Resource'
430+
// }
431+
// properties: {
432+
// Application_Type: 'web'
433+
// WorkspaceResourceId: useExisting ? existingWorkspace.id : Workspace.id
434+
// }
435+
// kind: 'web'
436+
// }
422437

423438

424439
// ========== Cosmos DB module ========== //

infra/main.bicepparam

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ param gptModelName = readEnvironmentVariable('AZURE_ENV_MODEL_NAME', 'gpt-4o')
88
param gptDeploymentCapacity = int(readEnvironmentVariable('AZURE_ENV_MODEL_CAPACITY', '30'))
99

1010
param embeddingDeploymentCapacity = int(readEnvironmentVariable('AZURE_ENV_EMBEDDING_MODEL_CAPACITY', '80'))
11+
param existingLogAnalyticsWorkspaceId = readEnvironmentVariable('AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID', '')

0 commit comments

Comments
 (0)