Mengelola buku kerja secara terprogram

Pemilik sumber daya memiliki opsi untuk membuat dan mengelola buku kerja mereka secara terprogram melalui templat Resource Manager.

Ini dapat berguna dalam skenario seperti:

  • Menyebarkan laporan analitik khusus organisasi atau domain bersama dengan penyebaran sumber daya. Misalnya, Anda dapat menyebarkan performa khusus organisasi dan buku kerja kegagalan untuk aplikasi atau komputer virtual baru Anda.
  • Menyebarkan laporan atau dasbor standar menggunakan buku kerja untuk sumber daya yang ada.

Buku kerja akan dibuat di sub/grup sumber daya yang diinginkan dan dengan isi yang ditentukan dalam templat Resource Manager.

Ada dua jenis sumber daya buku kerja yang dapat dikelola secara terprogram:

Templat Azure Resource Manager untuk menyebarkan templat buku kerja

  1. Buka buku kerja yang ingin Anda sebarkan secara terprogram.

  2. Alihkan buku kerja ke mode edit dengan mengklik item toolbar Edit.

  3. Buka Editor Lanjutan menggunakan tombol </> pada bilah alat.

  4. Pastikan Anda di tab Templat Galeri.

    Tab templat galeri

  5. Salin JSON di templat galeri ke clipboard.

  6. Di bawah ini adalah contoh templat Azure Resource Manager yang menyebarkan templat buku kerja ke galeri buku kerja Azure Monitor. Tempelkan JSON yang Anda salin menggantikan <PASTE-COPIED-WORKBOOK_TEMPLATE_HERE>. Referensi templat Azure Resource Manager untuk membuat templat buku kerja dapat ditemukan di sini.

    {
        "$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>
                }
            }
        ]
    }
    
  7. Di objek galleries, isi kunci name dan category dengan nilai Anda. Pelajari lebih lanjut tentang parameter di bagian berikutnya.

  8. Terapkan template Azure Resource Manager ini menggunakan portal Azure, antarmuka baris perintah, PowerShell, dll.

  9. Buka portal Azure dan navigasikan ke galeri buku kerja yang dipilih di templat Azure Resource Manager. Dalam templat contoh, navigasikan ke galeri buku kerja Azure Monitor:

    1. Buka portal Azure dan navigasikan ke Azure Monitor
    2. Buka Workbooks dari daftar isi
    3. Temukan templat Anda di galeri pada kategori Deployed Templates (seharusnya salah satu item berwarna ungu).

Parameter

Parameter Penjelasan
name Nama sumber daya templat buku kerja di Azure Resource Manager.
type Selalu microsoft.insights/workbooktemplates
location Lokasi Azure tempat buku kerja akan dibuat.
apiVersion 17-10-2019 pratinjau
type Selalu microsoft.insights/workbooktemplates
galleries Set galeri untuk menampilkan templat buku kerja ini.
gallery.name Nama templat buku kerja yang mudah diingat di galeri.
gallery.category Grup di galeri untuk menempatkan templat.
gallery.order Angka yang menentukan urutan untuk menampilkan templat dalam kategori di galeri. Urutan yang lebih rendah menyiratkan prioritas yang lebih tinggi.
gallery.resourceType Jenis sumber daya yang sesuai dengan galeri. Ini biasanya untai jenis sumber daya yang sesuai dengan sumber daya (misalnya, microsoft.operationalinsights/workspaces ).
gallery.type Disebut sebagai jenis buku kerja, ini adalah kunci unik yang membedakan galeri dalam jenis sumber daya. Application Insights, misalnya, memiliki jenis workbook dan tsg yang sesuai dengan galeri buku kerja yang berbeda.

Galeri

Galeri Jenis Sumber Daya Jenis buku kerja
Buku kerja di Azure Monitor Azure Monitor workbook
Wawasan VM di Azure Monitor Azure Monitor vm-insights
Buku kerja di ruang kerja Analitik log microsoft.operationalinsights/workspaces workbook
Buku Kerja di Application Insights microsoft.insights/components workbook
Panduan pemecahan masalah di Application Insights microsoft.insights/components tsg
Penggunaan di Application Insights microsoft.insights/components usage
Buku kerja di layanan Kubernetes Microsoft.ContainerService/managedClusters workbook
Buku kerja di grup Sumber Daya microsoft.resources/subscriptions/resourcegroups workbook
Buku kerja di Azure Active Directory microsoft.aadiam/tenant workbook
Wawasan VM di komputer Virtual microsoft.compute/virtualmachines insights
Wawasan VM dalam set skala komputer virtual microsoft.compute/virtualmachinescalesets insights

Templat Azure Resource Manager untuk menyebarkan instans buku kerja

  1. Buka buku kerja yang ingin Anda sebarkan secara terprogram.

  2. Alihkan buku kerja ke mode edit dengan mengklik item toolbar Edit.

  3. Buka Editor Lanjutan menggunakan tombol </> pada bilah alat.

  4. Di editor, alihkan Jenis Templat ke templat Resource Manager.

  5. Templat Resource Manager untuk pembuatan muncul di editor. Salin konten dan gunakan apa adanya atau gabungkan dengan templat yang lebih besar yang juga menyebarkan sumber daya target.

    Gambar yang menunjukkan cara mendapatkan templat Resource Manager dari dalam UI buku kerja

Contoh templat Azure Resource Manager

Templat ini menunjukkan cara menerapkan buku kerja sederhana yang menampilkan 'Halo Dunia!'

{
    "$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 been 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'))]"
        }
    }
}

Parameter templat

Parameter Penjelasan
workbookDisplayName Nama yang mudah diingat untuk buku kerja yang digunakan di Galeri atau Daftar Tersimpan. Harus berbeda di lingkup grup sumber daya dan sumber
workbookType Galeri tempat buku kerja akan ditampilkan. Nilai yang didukung termasuk buku kerja, tsg, Azure Monitor, dll.
workbookSourceId ID instans sumber daya yang akan dikaitkan dengan buku kerja. Buku kerja baru akan muncul terkait dengan contoh sumber daya ini - misalnya dalam daftar isi sumber daya pada Buku Kerja. Jika ingin buku kerja Anda muncul di galeri buku kerja di Azure Monitor, gunakan untai Azure Monitor alih-alih ID sumber daya.
workbookId Panduan unik untuk instans buku kerja ini. Gunakan [newGuid()] untuk membuat panduan baru secara otomatis.
kind Digunakan untuk menentukan apakah buku kerja yang dibuat akan dibagikan. Semua buku kerja baru akan menggunakan nilai bersama.
location Lokasi Azure tempat buku kerja akan dibuat. Gunakan [resourceGroup().location] untuk membuatnya di lokasi yang sama dengan grup sumber daya
serializedData Berisi konten atau payload yang akan digunakan dalam buku kerja. Gunakan templat Resource Manager dari UI buku kerja untuk mendapatkan nilainya

Jenis buku kerja

Jenis buku kerja menentukan jenis galeri buku kerja mana yang akan muncul di bawah contoh buku kerja baru. Opsi meliputi:

Jenis Lokasi galeri
workbook Default yang digunakan di sebagian besar laporan, termasuk galeri Buku Kerja dari Application Insights, Azure Monitor, dll.
tsg Galeri Panduan Pemecahan Masalah di Application Insights
usage Galeri Lainnya pada Penggunaan di Application Insights

Bekerja dengan data Buku Kerja berformat JSON dalam parameter Templat serializedData

Saat mengekspor templat Azure Resource Manager untuk Azure Workbook, sering kali ada tautan sumber daya tetap yang disematkan di dalam parameter templat serializedData yang diekspor. Ini termasuk nilai yang berpotensi sensitif seperti ID Langganan dan nama Grup Sumber Daya, dan jenis ID sumber daya lainnya.

Contoh di bawah ini menunjukkan kustomisasi Templat Azure Resource Manager Buku Kerja yang diekspor, tanpa menggunakan manipulasi untai. Pola yang diperlihatkan dalam contoh ini dimaksudkan untuk bekerja dengan data yang tidak diubah seperti yang diekspor dari portal Azure. Ini juga merupakan praktik terbaik untuk menutupi nilai sensitif yang disematkan saat mengelola buku kerja secara terprogram, oleh karena itu ID Langganan dan Grup Sumber Daya telah disembunyikan di sini. Tidak ada modifikasi lain yang dilakukan pada nilai mentah serializedData yang masuk.

{
  "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#"
}

Dalam contoh ini, langkah-langkah berikut memfasilitasi kustomisasi templat Azure Resource Manager yang diekspor:

  1. Ekspor Buku Kerja sebagai template Azure Resource Manager seperti yang dijelaskan di bagian di atas
  2. Di templat bagian variables:
    1. Uraikan nilai serializedData ke dalam variabel objek JSON, yang membuat struktur JSON termasuk array item yang mewakili konten Buku Kerja.
    2. Membuat objek JSON baru yang hanya mewakili item/properti yang akan dimodifikasi.
    3. Proyeksikan set item konten JSON (updatedItems) baru, menggunakan fungsi union() untuk menerapkan modifikasi pada item JSON asli.
    4. Buat objek buku kerja baru, updatedWorkbookData, yang berisi data updatedItems dan version/isLocked dari uraian data asli, serta set fallbackResourceIds yang dikoreksi.
    5. Serialisasi konten JSON baru kembali ke variabel string baru, reserializedData.
  3. Gunakan variabel reserializedData ​​baru sebagai pengganti properti serializedData asli.
  4. Menyebarkan sumber daya Buku Kerja baru menggunakan template Azure Resource Manager yang diperbarui.

Batasan

Karena alasan teknis, mekanisme ini tidak dapat digunakan untuk membuat instans buku kerja di galeri Buku Kerja dari Application Insights. Kami sedang berupaya mengatasi keterbatasan ini. Sementara itu, sebaiknya Anda menggunakan galeri Panduan Pemecahan Masalah (workbookType: tsg) untuk menyebarkan buku kerja terkait Application Insights.

Langkah berikutnya

Jelajahi bagaimana buku kerja yang digunakan untuk mendukung Pengalaman wawasan Storage yang baru.