Развертывание отфильтрованных метрик на информационной панели Azure с помощью Bicep

Я пытаюсь развернуть панель мониторинга, которая отображает несколько показателей для очереди служебной шины на портале 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'
              }
            }
          }
        }
      }
    }
  }
}

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
0
72
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Развертывание отфильтрованных метрик на информационной панели 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

Привет, Винай, спасибо, что нашли время разобраться в этом. Я пробовал это раньше (и пробовал еще раз, на всякий случай;)), но на графике появляется ошибка: «Ошибка получения данных». Я думаю, проблема в том, что метрики, которые я пытаюсь отобразить, изначально (из-за отсутствия лучшего слова) не доступны в очереди, а являются метриками для служебной шины. Однако при создании панели мониторинга вручную я могу фильтровать по очереди, поэтому это должно быть возможно сделать через (что-то вроде) Bicep.

StuartvdLee 04.07.2024 20:33

размеры: [ { name: 'EntityName' value: serviceBusQueueName } ] Примените это для каждой метрики в определении панели мониторинга и повторите попытку @StuartvdLee

Vinay B 04.07.2024 20:46

Я применил ваше предложение так же, как я определил фильтры в исходном Bicep, но вместо этого назвал его измерениями и объявил его для каждой метрики. К сожалению, я по-прежнему получаю метрики для всей служебной шины, а не для конкретной очереди служебной шины.

StuartvdLee 04.07.2024 21:51
Ответ принят как подходящий

Только что создал панель мониторинга на портале 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 указала мне правильный путь :).

StuartvdLee 08.07.2024 08:13

Приятно слышать, что вы разобрались :-)

Thomas 08.07.2024 21:19

Другие вопросы по теме