【问题标题】:Azure PowerShell: Enable Application Diagnostics and Site DiagnosticsAzure PowerShell:启用应用程序诊断和站点诊断
【发布时间】:2014-09-23 13:29:21
【问题描述】:

我正在为 Azure 网站配置诊断和 IIS 日志。 Azure 管理门户显示将应用程序诊断存储到 Azure 表存储的选项:

并弹出一个对话框,点击“管理表存储”以提供 Azure 表详细信息:

对 Blob 存储的站点诊断:

我正在搜索 Azure Cmdlet,以便在部署时使用 PowerShell 启用这些功能。

这是我能找到的 Cmdlet,但它没有提供表格详细信息的任何选项:

Enable-AzureWebsiteApplicationDiagnostic

C:\PS>Enable-AzureWebsiteApplicationDiagnostic -Name MyWebsite -Storage -LogLevel Information -StorageAccountName myaccount

有没有其他方法可以做到这一点?

【问题讨论】:

    标签: azure azure-web-app-service azure-powershell azure-deployment


    【解决方案1】:

    这显然已在 Azure PowerShell cmdlet 的最新版本(截至 2016 年 3 月 21 日)中得到修复。您现在可以指定表/容器名称,例如

    Enable-AzureWebsiteApplicationDiagnostic -Name <mysite> -Slot production -StorageAccountName <storageAccountName> -BlobStorage -StorageBlobContainerName <containerName> -LogLevel Verbose

    Enable-AzureWebsiteApplicationDiagnostic -Name <mysite> -Slot production -StorageAccountName <storageAccountName> -TableStorage -StorageTableName <tableName> -LogLevel Verbose

    【讨论】:

    【解决方案2】:

    启用表诊断后,尝试将这个 app_setting 设置为 SAS URL 到您的表:

    DIAGNOSTICS_AZURETABLESASURL

    例子:

    $site = get-azurewebsite mysite
    $site.AppSettings.Add("DIAGNOSTICS_AZURETABLESASURL", "<YOUR TABLE SAS URL>")
    set-azurewebsite $site.Name -AppSettings $site.AppSettings
    

    您可以在此处找到有关 SAS URL 的更多信息:http://msdn.microsoft.com/en-us/library/azure/dn140255.aspx

    您不能只设置表名,因为出于安全目的,它需要更多信息才能完全访问表,因为它需要写入数据。

    【讨论】:

    • 不起作用:(get-azurewebsite mysite).SiteConfig.AppSettings.Add("abc", "a"): '找不到“add”的重载和参数计数:“2”'
    【解决方案3】:

    现在Enable-AzureWebsiteApplicationDiagnostic 不起作用。见Enable-AzureWebsiteApplicationDiagnostic: specify storage account name?

    这个被使用了(感谢这个:Is there a way to enable application logging to blob for azure app service using PowerShell or ARM template?)

    还可以发现在此处使用 https://resources.azure.com 和 Powershell 选项卡非常有用。

        function setLogging(
            [string]$groupName,
            [string]$siteName,
            [string]$saName,
            [string]$webAppBlobContainerName,
            [string]$iisBlobContainerName
        ) {
    
            # This script sets application and IIS logging to Azure Blob Storage. Disables file system logging
            # get Storage Account 
            $getSaArgs = @{
                ResourceGroupName = $groupName
                Name = $saName
            }
            $sa = Get-AzureRmStorageAccount @getSaArgs
            function getSasToken ($containerName, $sa){ 
                $newSCArgs = @{
                    Context = $sa.Context
                    Name = $containerName
                }
                New-AzureStorageContainer @newSCArgs -ErrorAction Ignore | out-null
                $newTokenArgs = @{
                    Context = $sa.Context
                    Name = $containerName
                    Permission = 'rwdl'
                    StartTime = (Get-Date).Date
                    ExpiryTime = (Get-Date).Date.AddYears(200)
                    FullUri = $true
                }
                New-AzureStorageContainerSASToken @newTokenArgs
            }
            $appSaToken = (& getSasToken -containerName $webAppBlobContainerName -sa $sa)
            $iisSaToken = (& getSasToken -containerName $iisBlobContainerName -sa $sa)
    
            # get the log setting
            $getResourceArgs = @{
                ResourceGroupName = $groupName
                ApiVersion = '2018-02-01'
                ResourceType = 'Microsoft.Web/sites/config' 
                ResourceName = ($siteName + "/logs")
            }
            $logSetting = Get-AzureRmResource @getResourceArgs
            $logSetting.Properties.applicationLogs.azureBlobStorage.level = "Verbose" 
            $logSetting.Properties.applicationLogs.azureBlobStorage.sasUrl = $appSaToken.ToString()
            $logSetting.Properties.applicationLogs.azureBlobStorage.retentionInDays = 0
            $logSetting.Properties.applicationLogs.fileSystem.level = "Off"
            $logSetting.Properties.httpLogs.azureBlobStorage.sasUrl = $iisSaToken.ToString()
            $logSetting.Properties.httpLogs.azureBlobStorage.retentionInDays = 0
            $logSetting.Properties.httpLogs.azureBlobStorage.enabled = $true
            $logSetting.Properties.httpLogs.fileSystem.enabled = $false
            # update the log setting
            $setResourceArgs = $getResourceArgs.Clone()
            $result = Set-AzureRmResource -Properties $logSetting.Properties @setResourceArgs -Force
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-23
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-22
      • 1970-01-01
      相关资源
      最近更新 更多