Приемник концентратора событий Azure LAD 4.0 не работает
Я установил Linux Diagnostic Extension (LAD) 4.0, и он успешно записывает события в хранилище таблиц Azure. Теперь я хочу записать события в EventHub. Я имею в виду страницу документации Azure здесь . Мне нужно добавить EventHub sasURL с привилегией «отправить» в защищенных настройках конфигурации LAD. Я использую сценарий оболочки Power. Если я использую
New-AzEventHubAuthorizationRuleSASToken
чтобы сгенерировать маркер SAS, маркер имеет строку "Primary" в атрибуте "skn". С этим токеном, если я попытаюсь вызвать REST API EventHub, это не удастся. Вместо этого, если я заменю строку «Primary» на имя правила авторизации, это сработает. Большой! Итак, теперь у меня есть правильная оболочка Power для создания токенов. Формат URL указан в приведенной выше ссылке на документацию. Однако даже при этом события не записываются в EventHub. Вот мой Powershell:
param($resourceGroupName, $storageAccountName, $vmName, $eventHubNamespaceName, $eventHubName)
$vm = Get-AzVM -Name $vmName -ResourceGroupName $resourceGroupName
Update-AzVM -ResourceGroupName $resourceGroupName -VM $vm -IdentityType SystemAssigned
$publicSettings = (Invoke-WebRequest -Uri https://raw.githubusercontent.com/saptarshibasu/anomaly-detection/master/arm-templates/simple-linux-vm/lad_pub_settings.json).Content
$publicSettings = $publicSettings.Replace('__DIAGNOSTIC_STORAGE_ACCOUNT__', $storageAccountName)
$publicSettings = $publicSettings.Replace('__VM_RESOURCE_ID__', $vm.Id)
$saSasToken = New-AzStorageAccountSASToken -Service Blob,Table -ResourceType Service,Container,Object -Permission "racwdlup" -Context (Get-AzStorageAccount -ResourceGroupName
$resourceGroupName -AccountName $storageAccountName).Context -ExpiryTime $([System.DateTime]::Now.AddYears(10))
$ehSasToken = (New-AzEventHubAuthorizationRuleSASToken -AuthorizationRuleId (New-AzEventHubAuthorizationRule -ResourceGroupName $resourceGroupName -Namespace $eventHubNamespaceName -EventHub $eventHubName -Name publishSasKey -Rights @("Send")).Id -KeyType Primary -ExpiryTime $([System.DateTime]::Now.AddYears(10))).SharedAccessSignature.Trim().Replace('Primary','publishSasKey')
$protectedSettings="{'storageAccountName': '$storageAccountName',
'storageAccountSasToken': '$saSasToken',
'sinksConfig': {
'sink': [
{
'name': '$eventHubName',
'type': 'EventHub',
'sasURL': 'https://$($eventHubNamespaceName).servicebus.windows.net/$($eventHubName)?$($ehSasToken)'
}
]
}
}"
Set-AzVMExtension -ResourceGroupName $resourceGroupName -VMName $vmName -Location $vm.Location -ExtensionType LinuxDiagnostic -Publisher Microsoft.Azure.Diagnostics -Name LinuxDiagnostic -SettingString $publicSettings -ProtectedSettingString $protectedSettings -TypeHandlerVersion 4.0
Конфигурация LAD следующая:
{
"StorageAccount": "__DIAGNOSTIC_STORAGE_ACCOUNT__",
"ladCfg": {
"diagnosticMonitorConfiguration": {
"eventVolume": "Medium",
"metrics": {
"metricAggregation": [
{
"scheduledTransferPeriod": "PT1H"
},
{
"scheduledTransferPeriod": "PT1M"
}
],
"resourceId": "__VM_RESOURCE_ID__"
},
"performanceCounters": {
"performanceCounterConfiguration": [
]
},
"syslogEvents": {
"syslogEventConfiguration": {
"LOG_AUTH": "LOG_DEBUG",
"LOG_AUTHPRIV": "LOG_DEBUG",
"LOG_CRON": "LOG_DEBUG",
"LOG_DAEMON": "LOG_DEBUG",
"LOG_FTP": "LOG_DEBUG",
"LOG_KERN": "LOG_DEBUG",
"LOG_LOCAL0": "LOG_DEBUG",
"LOG_LOCAL1": "LOG_DEBUG",
"LOG_LOCAL2": "LOG_DEBUG",
"LOG_LOCAL3": "LOG_DEBUG",
"LOG_LOCAL4": "LOG_DEBUG",
"LOG_LOCAL5": "LOG_DEBUG",
"LOG_LOCAL6": "LOG_DEBUG",
"LOG_LOCAL7": "LOG_DEBUG",
"LOG_LPR": "LOG_DEBUG",
"LOG_MAIL": "LOG_DEBUG",
"LOG_NEWS": "LOG_DEBUG",
"LOG_SYSLOG": "LOG_DEBUG",
"LOG_USER": "LOG_DEBUG",
"LOG_UUCP": "LOG_DEBUG"
}
}
},
"sampleRateInSeconds": 15
}
}