Программное управление книгами
Владельцы ресурсов могут создавать книги и управлять ими программным способом с помощью шаблонов Azure Resource Manager (шаблонов ARM).
Эта возможность может быть полезна в таких сценариях:
- Развертывание отчетов организационной или доменной аналитики вместе с развертываниями ресурсов. Например, вы можете развернуть книги производительности и сбоев для новых приложений или виртуальных машин, относящихся к организации.
- Развертывание стандартных отчетов или панелей мониторинга с помощью книг для существующих ресурсов.
Книга будет создана в нужной подгруппе или группе ресурсов и содержимом, указанным в шаблонах ARM.
Два типа ресурсов книги можно управлять программным способом:
Шаблон ARM для развертывания шаблона книги
Откройте книгу, которую требуется развернуть программно.
Переведите книгу в режим правки, выбрав Изменить.
Откройте Расширенный редактор с помощью кнопки </> на панели инструментов.
Убедитесь, что вы находитесь на вкладке "Шаблон коллекции".
Скопируйте JSON из шаблона коллекции в буфер обмена.
Следующий пример шаблона ARM развертывает шаблон книги в коллекции книг Azure Monitor. Вставьте скопированный код JSON вместо
<PASTE-COPIED-WORKBOOK_TEMPLATE_HERE>
. Справочный шаблон ARM, создающий шаблон книги, см . в этом репозитории GitHub.{ "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "resourceName": { "type": "string", "defaultValue": "my-workbook-template", "metadata": { "description": "The unique name for this workbook template instance" } } }, "resources": [ { "name": "[parameters('resourceName')]", "type": "microsoft.insights/workbooktemplates", "location": "[resourceGroup().location]", "apiVersion": "2019-10-17-preview", "dependsOn": [], "properties": { "galleries": [ { "name": "A Workbook Template", "category": "Deployed Templates", "order": 100, "type": "workbook", "resourceType": "Azure Monitor" } ], "templateData": <PASTE-COPIED-WORKBOOK_TEMPLATE_HERE> } } ] }
В объекте
galleries
заполнитеname
значения иcategory
ключи. Дополнительные сведения о параметрах приведены в следующем разделе.Разверните этот шаблон ARM с помощью портал Azure, интерфейса командной строки или PowerShell.
Откройте портал Azure и перейдите в коллекцию книг, выбранную в шаблоне ARM. В примере шаблона перейдите в коллекцию книг Azure Monitor:
- Откройте портал Azure и перейдите в Azure Monitor.
- Откройте
Workbooks
из оглавление. - Найдите шаблон в коллекции в категории
Deployed Templates
. (Это будет один из фиолетовых элементов.)
Параметры
Параметры | Описание |
---|---|
name |
Имя ресурса шаблона книги в Azure Resource Manager. |
type |
Всегда microsoft.insights/workbooktemplates. |
location |
Расположение Azure, в котором будет создана книга. |
apiVersion |
Предварительная версия 2019-10-17. |
type |
Всегда microsoft.insights/workbooktemplates. |
galleries |
Набор коллекций, в которых отображается этот шаблон книги. |
gallery.name |
Понятное имя шаблона книги в коллекции. |
gallery.category |
Группа в коллекции, в которой будет размещаться шаблон. |
gallery.order |
Число, которое определяет порядок отображения шаблона в категории в коллекции. Более низкий порядок подразумевает более высокий приоритет. |
gallery.resourceType |
Тип ресурса, соответствующий коллекции. Этот тип обычно представляет собой строку типа ресурса, соответствующую ресурсу (например, microsoft.operationalinsights/workspaces). |
gallery.type |
Называется типом книги. Этот уникальный ключ отличает коллекцию в типе ресурса. Например, Application Insights имеет типы workbook и tsg соответствующие разным коллекциям книг. |
Коллекции
Галерея | Тип ресурса | Тип книги |
---|---|---|
Книги в Azure Monitor | Azure Monitor |
workbook |
Книги VM в Azure Monitor | Azure Monitor |
vm-insights |
Книги в рабочей области Log Analytics | microsoft.operationalinsights/workspaces |
workbook |
Книги в Application Insights | microsoft.insights/components |
workbook |
Руководства по устранению неполадок в Application Insights | microsoft.insights/components |
tsg |
Потребление в Application Insights | microsoft.insights/components |
usage |
Книги в службе Kubernetes | Microsoft.ContainerService/managedClusters |
workbook |
Книги в группах ресурсов | microsoft.resources/subscriptions/resourcegroups |
workbook |
Книги в идентификаторе Microsoft Entra | microsoft.aadiam/tenant |
workbook |
Аналитика виртуальных машин на виртуальных машинах | microsoft.compute/virtualmachines |
insights |
Аналитика VM в масштабируемых наборах виртуальных машин | microsoft.compute/virtualmachinescalesets |
insights |
Шаблон ARM для развертывания экземпляра книги
- Откройте книгу, которую требуется развернуть программно.
- Переведите книгу в режим правки, выбрав Изменить.
- Откройте Расширенный редактор, выбрав< />.
- В редакторе переключите тип шаблона на шаблон ARM.
- Шаблон ARM для создания отображается в редакторе. Скопируйте содержимое и используйте "как есть" или объедините его с шаблоном большего размера, который также развертывает целевой ресурс.
Образец шаблона ARM
В этом шаблоне показано, как развернуть книгу, которая отображается Hello World!
.
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workbookDisplayName": {
"type":"string",
"defaultValue": "My Workbook",
"metadata": {
"description": "The friendly name for the workbook that is used in the Gallery or Saved List. Needs to be unique in the scope of the resource group and source"
}
},
"workbookType": {
"type":"string",
"defaultValue": "tsg",
"metadata": {
"description": "The gallery that the workbook will be shown under. Supported values include workbook, `tsg`, Azure Monitor, etc."
}
},
"workbookSourceId": {
"type":"string",
"defaultValue": "<insert-your-resource-id-here>",
"metadata": {
"description": "The id of resource instance to which the workbook will be associated"
}
},
"workbookId": {
"type":"string",
"defaultValue": "[newGuid()]",
"metadata": {
"description": "The unique guid for this workbook instance"
}
}
},
"resources": [
{
"name": "[parameters('workbookId')]",
"type": "Microsoft.Insights/workbooks",
"location": "[resourceGroup().location]",
"kind": "shared",
"apiVersion": "2018-06-17-preview",
"dependsOn": [],
"properties": {
"displayName": "[parameters('workbookDisplayName')]",
"serializedData": "{\"version\":\"Notebook/1.0\",\"items\":[{\"type\":1,\"content\":\"{\\\"json\\\":\\\"Hello World!\\\"}\",\"conditionalVisibility\":null}],\"isLocked\":false}",
"version": "1.0",
"sourceId": "[parameters('workbookSourceId')]",
"category": "[parameters('workbookType')]"
}
}
],
"outputs": {
"workbookId": {
"type": "string",
"value": "[resourceId( 'Microsoft.Insights/workbooks', parameters('workbookId'))]"
}
}
}
Параметры шаблона
Параметр | Описание |
---|---|
workbookDisplayName |
Понятное имя книги, используемой в коллекции или сохраненном списке. Необходимо быть уникальным в области группы ресурсов и источника. |
workbookType |
Коллекция, в которой появится книга. Поддерживаемые значения включают книгу и tsg Azure Monitor. |
workbookSourceId |
Идентификатор экземпляра ресурса, с которым будет связана книга. Новая книга будет отображаться, связанная с этим экземпляром ресурса, например, в оглавлении ресурса в книге. Если вы хотите, чтобы книга отображалась в коллекции книг в Azure Monitor, используйте строку Azure Monitor вместо идентификатора ресурса. |
workbookId |
Уникальный GUID этого экземпляра книги. Используется [newGuid()] для автоматического создания нового guid. |
kind |
Указывает, является созданная книга общей. Для всех новых книг задается общий режим доступа. |
location |
Расположение Azure, в котором будет создана книга. Используется [resourceGroup().location] для его создания в том же расположении, что и группа ресурсов. |
serializedData |
Имеет содержимое или полезные данные для использования в книге. Используйте шаблон ARM из пользовательского интерфейса книг, чтобы получить это значение. |
Типы книг
Типы книг указывают тип коллекции книг, в которой отображается новый экземпляр книги. Возможные варианты:
Тип | Расположение коллекции |
---|---|
workbook |
Значение по умолчанию, используемое в большинстве отчетов, включая коллекцию книг Application Insights и Azure Monitor. |
tsg |
Коллекция "Руководства по устранению неполадок" в Application Insights. |
usage |
Коллекция More в разделе Usage в Application Insights. |
Работа с данными книги в формате JSON в параметре шаблона serializedData
При экспорте шаблона ARM для книги Azure часто существуют фиксированные ссылки на ресурсы, внедренные в экспортируемый serializedData
параметр шаблона. Эти ссылки включают потенциально конфиденциальные значения, такие как идентификатор подписки и имя группы ресурсов, а также другие типы идентификаторов ресурсов.
В следующем примере демонстрируется настройка экспортированного шаблона ARM книги, не прибегая к обработке строк. Шаблон, показанный в этом примере, предназначен для работы с неизмененными данными, экспортированными из портала Azure. Рекомендуется также маскировать все внедренные конфиденциальные значения при программном управлении книгами. По этой причине идентификатор подписки и группа ресурсов были маскированы здесь. Никакие другие изменения не были внесены в необработанное входящее значение serializedData
.
{
"contentVersion": "1.0.0.0",
"parameters": {
"workbookDisplayName": {
"type": "string"
},
"workbookSourceId": {
"type": "string",
"defaultValue": "[resourceGroup().id]"
},
"workbookId": {
"type": "string",
"defaultValue": "[newGuid()]"
}
},
"variables": {
// serializedData from original exported Azure Resource Manager template
"serializedData": "{\"version\":\"Notebook/1.0\",\"items\":[{\"type\":1,\"content\":{\"json\":\"Replace with Title\"},\"name\":\"text - 0\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"{\\\"version\\\":\\\"ARMEndpoint/1.0\\\",\\\"data\\\":null,\\\"headers\\\":[],\\\"method\\\":\\\"GET\\\",\\\"path\\\":\\\"/subscriptions/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/resourceGroups\\\",\\\"urlParams\\\":[{\\\"key\\\":\\\"api-version\\\",\\\"value\\\":\\\"2019-06-01\\\"}],\\\"batchDisabled\\\":false,\\\"transformers\\\":[{\\\"type\\\":\\\"jsonpath\\\",\\\"settings\\\":{\\\"tablePath\\\":\\\"$..*\\\",\\\"columns\\\":[]}}]}\",\"size\":0,\"queryType\":12,\"visualization\":\"map\",\"tileSettings\":{\"showBorder\":false},\"graphSettings\":{\"type\":0},\"mapSettings\":{\"locInfo\":\"AzureLoc\",\"locInfoColumn\":\"location\",\"sizeSettings\":\"location\",\"sizeAggregation\":\"Count\",\"opacity\":0.5,\"legendAggregation\":\"Count\",\"itemColorSettings\":null}},\"name\":\"query - 1\"}],\"isLocked\":false,\"fallbackResourceIds\":[\"/subscriptions/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/resourceGroups/XXXXXXX\"]}",
// parse the original into a JSON object, so that it can be manipulated
"parsedData": "[json(variables('serializedData'))]",
// create new JSON objects that represent only the items/properties to be modified
"updatedTitle": {
"content":{
"json": "[concat('Resource Group Regions in subscription \"', subscription().displayName, '\"')]"
}
},
"updatedMap": {
"content": {
"path": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups')]"
}
},
// the union function applies the updates to the original data
"updatedItems": [
"[union(variables('parsedData')['items'][0], variables('updatedTitle'))]",
"[union(variables('parsedData')['items'][1], variables('updatedMap'))]"
],
// copy to a new workbook object, with the updated items
"updatedWorkbookData": {
"version": "[variables('parsedData')['version']]",
"items": "[variables('updatedItems')]",
"isLocked": "[variables('parsedData')['isLocked']]",
"fallbackResourceIds": ["[parameters('workbookSourceId')]"]
},
// convert back to an encoded string
"reserializedData": "[string(variables('updatedWorkbookData'))]"
},
"resources": [
{
"name": "[parameters('workbookId')]",
"type": "microsoft.insights/workbooks",
"location": "[resourceGroup().location]",
"apiVersion": "2018-06-17-preview",
"dependsOn": [],
"kind": "shared",
"properties": {
"displayName": "[parameters('workbookDisplayName')]",
"serializedData": "[variables('reserializedData')]",
"version": "1.0",
"sourceId": "[parameters('workbookSourceId')]",
"category": "workbook"
}
}
],
"outputs": {
"workbookId": {
"type": "string",
"value": "[resourceId( 'microsoft.insights/workbooks', parameters('workbookId'))]"
}
},
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#"
}
В этом примере следующие действия упрощают настройку экспортированного шаблона ARM:
- Экспорт книги в виде шаблона ARM, как описано в предыдущем разделе.
- В разделе шаблона
variables
:serializedData
Анализ значения в переменную объекта JSON, которая создает структуру JSON, включая массив элементов, представляющих содержимое книги.- Создайте новые объекты JSON, представляющие только изменяемые элементы и свойства.
- Проект нового набора элементов содержимого JSON (
updatedItems
) с помощьюunion()
функции для применения изменений к исходным элементам JSON. - Создайте объект книги,
updatedWorkbookData
содержащийupdatedItems
иisLocked
version
/данные из исходных проанализированных данных и исправленный набор.fallbackResourceIds
- Сериализируйте новое содержимое JSON обратно в новую строковую переменную
reserializedData
.
- Используйте новую переменную
reserializedData
вместо исходного свойстваserializedData
. - Разверните новый ресурс книги с помощью обновленного шаблона ARM.
Следующие шаги
Узнайте, как использовать книги для нового интерфейса Storage Insights.