Я пытаюсь развернуть панель мониторинга, которая отображает несколько показателей для очереди служебной шины на портале Azure, используя Bicep. Создание плиток само по себе работает нормально, но у меня возникают проблемы с отображением показателей для отфильтрованного ресурса. На данный момент мой файл Bicep выглядит так:
resource dashboard 'Microsoft.Portal/dashboards@2020-09-01-preview' = {
name: dashboardName
location: location
tags: tags
properties: {
lenses: [
{
order: 0
parts: [
{
position: {
x: 0
y: 1
rowSpan: 3
colSpan: 5
}
metadata: {
inputs: [
{
name: 'options'
isOptional: true
}
{
name: 'sharedTimeRange'
isOptional: true
}
]
type: 'Extension/HubsExtension/PartType/MonitorChartPart'
settings: {
content: {
options: {
chart: {
filters: [
{
property: 'EntityName'
operator: 'Equals'
values: [
serviceBusQueueName
]
}
]
metrics: [
{
resourceMetadata: {
id: serviceBusNamespace
}
name: 'activeMessages'
aggregationType: 0
namespace: 'Microsoft.ServiceBus/namespaces'
metricVisualization: {
displayName: 'Active Messages'
}
}
{
resourceMetadata: {
id: serviceBusNamespace
}
name: 'deadLetteredMessages'
aggregationType: 0
namespace: 'Microsoft.ServiceBus/namespaces'
metricVisualization: {
displayName: 'Dead-Lettered Messages'
}
}
{
resourceMetadata: {
id: serviceBusNamespace
}
name: 'completeMessage'
aggregationType: 0
namespace: 'Microsoft.ServiceBus/namespaces'
metricVisualization: {
displayName: 'Completed Messages'
}
}
]
title: chartTitle
titleKind: 2
visualization: {
chartType: 2
legendVisualization: {
isVisible: true
position: 2
hideSubtitle: false
}
axisVisualization: {
x: {
isVisible: true
axisType: 2
}
y: {
isVisible: true
axisType: 1
}
}
disablePinning: true
}
}
}
}
}
}
}
]
}
]
metadata: {
model: {
timeRange: {
value: {
relative: {
duration: 24
timeUnit: 1
}
}
type: 'MsPortalFx.Composition.Configuration.ValueTypes.TimeRange'
}
filterLocale: {
value: 'en-us'
}
filters: {
value: {
MsPortalFx_TimeRange: {
model: {
format: 'local'
granularity: 'auto'
relative: '24h'
}
displayCache: {
name: 'Local Time'
value: 'Past 24 hours'
}
}
}
}
}
}
}
}
Диаграмма создается, но отображает метрики для всей служебной шины, а не для конкретной очереди. Как добавить фильтр в Bicep, чтобы отображались только показатели для определенной очереди служебной шины?
Использование команды az portal dashboard
cli дает вам гораздо более полный шаблон ARM вашей информационной панели, чем просто загрузка шаблона с портала Azure (спасибо, Томас!). Из-за этого я обнаружил, что нам нужно определить фильтры в метаданных, а также filterCollection в диаграмме, и что «свойство» должно быть «ключом» в filterCollection. Вот рабочий бицепс:
resource dashboard 'Microsoft.Portal/dashboards@2020-09-01-preview' = {
name: dashboardName
location: location
tags: tags
properties: {
lenses: [
{
order: 0
parts: [
{
position: {
x: 0
y: 1
rowSpan: 3
colSpan: 5
}
metadata: {
inputs: [
{
name: 'options'
isOptional: true
}
{
name: 'sharedTimeRange'
isOptional: true
}
]
filters: {
EntityName: {
model: {
operator: 'equals'
values: [
'queue-dr-filestorage-xbrlfeitenprocessed-${environment}'
]
}
}
}
type: 'Extension/HubsExtension/PartType/MonitorChartPart'
settings: {
content: {
options: {
chart: {
filters: [
{
key: 'EntityName'
operator: 'Equals'
values: [
serviceBusQueueName
]
}
]
metrics: [
{
resourceMetadata: {
id: serviceBusNamespace
}
name: 'activeMessages'
aggregationType: 0
namespace: 'Microsoft.ServiceBus/namespaces'
metricVisualization: {
displayName: 'Active Messages'
}
}
{
resourceMetadata: {
id: serviceBusNamespace
}
name: 'deadLetteredMessages'
aggregationType: 0
namespace: 'Microsoft.ServiceBus/namespaces'
metricVisualization: {
displayName: 'Dead-Lettered Messages'
}
}
{
resourceMetadata: {
id: serviceBusNamespace
}
name: 'completeMessage'
aggregationType: 0
namespace: 'Microsoft.ServiceBus/namespaces'
metricVisualization: {
displayName: 'Completed Messages'
}
}
]
title: chartTitle
titleKind: 2
visualization: {
chartType: 2
legendVisualization: {
isVisible: true
position: 2
hideSubtitle: false
}
axisVisualization: {
x: {
isVisible: true
axisType: 2
}
y: {
isVisible: true
axisType: 1
}
}
disablePinning: true
}
}
}
}
}
}
}
]
}
]
metadata: {
model: {
timeRange: {
value: {
relative: {
duration: 24
timeUnit: 1
}
}
type: 'MsPortalFx.Composition.Configuration.ValueTypes.TimeRange'
}
filterLocale: {
value: 'en-us'
}
filters: {
value: {
MsPortalFx_TimeRange: {
model: {
format: 'local'
granularity: 'auto'
relative: '24h'
}
displayCache: {
name: 'Local Time'
value: 'Past 24 hours'
}
}
}
}
}
}
}
}
Развертывание отфильтрованных метрик на информационной панели Azure с помощью Bicep
Кажется, вам не хватает правильного идентификатора ресурса вместо пространства имен. В соответствии с вашей конфигурацией бицепса путь очереди должен быть включен в пространство имен служебной шины.
Конфигурация бицепса:
param location string
param dashboardName string
param tags object
param serviceBusNamespaceId string
param serviceBusQueueName string
param chartTitle string
var serviceBusQueueResourceId = '${serviceBusNamespaceId}/queues/${serviceBusQueueName}'
resource dashboard 'Microsoft.Portal/dashboards@2020-09-01-preview' = {
name: dashboardName
location: location
tags: tags
properties: {
lenses: [
{
order: 0
parts: [
{
position: {
x: 0
y: 1
rowSpan: 3
colSpan: 5
}
metadata: {
inputs: [
{
name: 'options'
isOptional: true
}
{
name: 'sharedTimeRange'
isOptional: true
}
]
type: 'Extension/HubsExtension/PartType/MonitorChartPart'
settings: {
content: {
options: {
chart: {
filters: [
{
property: 'EntityName'
operator: 'Equals'
values: [
serviceBusQueueName
]
}
]
metrics: [
{
resourceMetadata: {
id: serviceBusQueueResourceId
}
name: 'ActiveMessages'
aggregationType: 0
namespace: 'Microsoft.ServiceBus/namespaces'
metricVisualization: {
displayName: 'Active Messages'
}
}
{
resourceMetadata: {
id: serviceBusQueueResourceId
}
name: 'DeadLetteredMessages'
aggregationType: 0
namespace: 'Microsoft.ServiceBus/namespaces'
metricVisualization: {
displayName: 'Dead-Lettered Messages'
}
}
{
resourceMetadata: {
id: serviceBusQueueResourceId
}
name: 'CompleteMessage'
aggregationType: 0
namespace: 'Microsoft.ServiceBus/namespaces'
metricVisualization: {
displayName: 'Completed Messages'
}
}
]
title: chartTitle
titleKind: 2
visualization: {
chartType: 2
legendVisualization: {
isVisible: true
position: 2
hideSubtitle: false
}
axisVisualization: {
x: {
isVisible: true
axisType: 2
}
y: {
isVisible: true
axisType: 1
}
}
disablePinning: true
}
}
}
}
}
}
}
]
}
]
metadata: {
model: {
timeRange: {
value: {
relative: {
duration: 24
timeUnit: 1
}
}
type: 'MsPortalFx.Composition.Configuration.ValueTypes.TimeRange'
}
filterLocale: {
value: 'en-us'
}
filters: {
value: {
MsPortalFx_TimeRange: {
model: {
format: 'local'
granularity: 'auto'
relative: '24h'
}
displayCache: {
name: 'Local Time'
value: 'Past 24 hours'
}
}
}
}
}
}
}
}
Развертывание выполнено успешно:
Эта конфигурация будет отображать метрики конкретной очереди служебной шины с упоминанием resourceId
очереди. Это гарантирует, что отображаемые метрики относятся только к очереди, а не ко всему пространству имен служебной шины.
Ссылка:
https://learn.microsoft.com/en-us/azure/azure-portal/azure-portal-dashboards
https://learn.microsoft.com/en-us/azure/service-bus-messaging/monitor-service-bus-reference
размеры: [ { name: 'EntityName' value: serviceBusQueueName } ] Примените это для каждой метрики в определении панели мониторинга и повторите попытку @StuartvdLee
Я применил ваше предложение так же, как я определил фильтры в исходном Bicep, но вместо этого назвал его измерениями и объявил его для каждой метрики. К сожалению, я по-прежнему получаю метрики для всей служебной шины, а не для конкретной очереди служебной шины.
Только что создал панель мониторинга на портале Azure и проверил конфигурацию с помощью команды az portal dashboard
cli (см. документацию ):
filters
должно находиться внутри свойства filterCollection
.resource servicebus 'Microsoft.ServiceBus/namespaces@2022-10-01-preview' existing = {
name:serviceBusNamespace
// Scope may need to be adjusted if servicebus is not int he same subscription / resource group
// scope: resourceGroup(serviceBusRGName)
}
resource dashboard 'Microsoft.Portal/dashboards@2020-09-01-preview' = {
name: dashboardName
location: location
properties: {
lenses: [
{
order: 0
parts: [
{
metadata: {
settings: {
content: {
options: {
chart: {
filterCollection: {
filters: [
{
property: 'EntityName'
operator: 'Equals'
values: [
serviceBusQueueName
]
}
]
}
metrics: [
{
resourceMetadata: {
id: servicebus.id // need the resource id here
}
name: 'activeMessages'
aggregationType: 0
namespace: 'Microsoft.ServiceBus/namespaces'
metricVisualization: {
displayName: 'Active Messages'
}
}
...
]
...
}
}
}
}
}
}
]
}
]
...
}
}
Ваш совет по панели управления портала az помог мне решить эту проблему! Оказывается, решение представляет собой комбинацию вашего ответа и ответа Виная Б. Вам необходимо определить объект фильтров в метаданных, а также filterCollection в диаграмме. И «свойство» в массиве фильтров необходимо изменить на «ключ». Я обновил свой пост, чтобы отразить полное решение, и отмечу ваш ответ как правильный, потому что подсказка на панели управления портала az указала мне правильный путь :).
Приятно слышать, что вы разобрались :-)
Привет, Винай, спасибо, что нашли время разобраться в этом. Я пробовал это раньше (и пробовал еще раз, на всякий случай;)), но на графике появляется ошибка: «Ошибка получения данных». Я думаю, проблема в том, что метрики, которые я пытаюсь отобразить, изначально (из-за отсутствия лучшего слова) не доступны в очереди, а являются метриками для служебной шины. Однако при создании панели мониторинга вручную я могу фильтровать по очереди, поэтому это должно быть возможно сделать через (что-то вроде) Bicep.