Windows VM ve Azure Resource Manager şablonlarıyla izleme ve tanılama kullanma

Azure Tanılama Uzantısı, Windows tabanlı bir Azure sanal makinesinde izleme ve tanılama özellikleri sağlar. Uzantıyı Azure Resource Manager şablonunun bir parçası olarak ekleyerek sanal makinede bu özellikleri etkinleştirebilirsiniz. Sanal makine şablonunun bir parçası olarak uzantı ekleme hakkında daha fazla bilgi için bkz. VM Uzantıları ile Azure Resource Manager Şablonları Yazma. Bu makalede, windows sanal makine şablonuna Azure Tanılama uzantısını nasıl ekleyebileceğiniz açıklanır.

Azure Tanılama uzantısını VM kaynak tanımına ekleme

Windows Sanal Makinesinde tanılama uzantısını etkinleştirmek için uzantıyı Resource Manager şablonuna VM kaynağı olarak eklemeniz gerekir.

Basit Resource Manager tabanlı bir Sanal Makine için, uzantı yapılandırmasını Sanal Makine için kaynaklar dizisine ekleyin:

"resources": [
    {
        "name": "Microsoft.Insights.VMDiagnosticsSettings",
        "type": "extensions",
        "location": "[resourceGroup().location]",
        "apiVersion": "2015-06-15",
        "dependsOn": [
            "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
        ],
        "tags": {
            "displayName": "AzureDiagnostics"
        },
        "properties": {
            "publisher": "Microsoft.Azure.Diagnostics",
            "type": "IaaSDiagnostics",
            "typeHandlerVersion": "1.5",
            "autoUpgradeMinorVersion": true,
            "settings": {
                "xmlCfg": "[base64(concat(variables('wadcfgxstart'), variables('wadmetricsresourceid'), variables('vmName'), variables('wadcfgxend')))]",
                "storageAccount": "[parameters('existingdiagnosticsStorageAccountName')]"
            },
            "protectedSettings": {
                "storageAccountName": "[parameters('existingdiagnosticsStorageAccountName')]",
                "storageAccountKey": "[listkeys(variables('accountid'), '2015-05-01-preview').key1]",
                "storageAccountEndPoint": "https://core.windows.net"
            }
        }
    }
]

Bir diğer yaygın kural, uzantı yapılandırmasını sanal makinenin kaynaklar düğümü altında tanımlamak yerine şablonun kök kaynaklar düğümüne eklemektir. Bu yaklaşımla, ad vetür değerleriyle uzantı ile sanal makine arasında hiyerarşik ilişkiyi açıkça belirtmeniz gerekir. Örnek:

"name": "[concat(variables('vmName'),'Microsoft.Insights.VMDiagnosticsSettings')]",
"type": "Microsoft.Compute/virtualMachines/extensions",

Uzantı her zaman sanal makineyle ilişkilendirilir; doğrudan sanal makinenin kaynak düğümü altında doğrudan tanımlayabilir veya temel düzeyde tanımlayabilir ve hiyerarşik adlandırma kuralını kullanarak sanal makineyle ilişkilendirebilirsiniz.

Sanal Makine Ölçek Kümeleri için, uzantı yapılandırması VirtualMachineProfile öğesinin extensionProfile özelliğinde belirtilir.

Microsoft.Azure.Diagnostics değerine sahip publisher özelliği ve IaaSDiagnostics değerine sahip type özelliği, Azure Tanılama uzantısını benzersiz olarak tanımlar.

Ad özelliğinin değeri, kaynak grubundaki uzantıya başvurmak için kullanılabilir. Bunu özellikle Microsoft.Insights.VMDiagnosticsSettings olarak ayarlamak, izleme grafiklerinin Azure portal doğru gösterilmesini sağlayan Azure portal tarafından kolayca tanımlanmasını sağlar.

typeHandlerVersion, kullanmak istediğiniz uzantının sürümünü belirtir. autoUpgradeMinorVersion ikincil sürümünü true olarak ayarlamak, kullanılabilir uzantının en son İkincil sürümünü edinmenizi sağlar. AutoUpgradeMinorVersion'ı her zaman doğru olacak şekilde ayarlamanız kesinlikle önerilir, böylece tüm yeni özellikler ve hata düzeltmeleriyle her zaman en son kullanılabilir tanılama uzantısını kullanabilirsiniz.

settings öğesi, uzantının ayarlanıp uzantıdan geri okunabilen yapılandırma özelliklerini içerir (bazen genel yapılandırma olarak da adlandırılır). xmlcfg özelliği tanılama günlükleri, performans sayaçları vb. için xml tabanlı yapılandırma içerir. tanılama aracısı tarafından toplanan. Xml şeması hakkında daha fazla bilgi için bkz. Tanılama Yapılandırma Şeması . Yaygın bir uygulama, gerçek xml yapılandırmasını Azure Resource Manager şablonunda bir değişken olarak depolamak ve sonra xmlcfg değerini ayarlamak için bunları birleştirip base64 kodlamaktır. Xml'i değişkenler içinde depolama hakkında daha fazla bilgi edinmek için tanılama yapılandırma değişkenleri bölümüne bakın. storageAccount özelliği, tanılama verilerinin aktarıldığı depolama hesabının adını belirtir.

protectedSettings içindeki özellikler (bazen özel yapılandırma olarak da adlandırılır) ayarlanabilir ancak ayarlandıktan sonra geri okunamaz. protectedSettings'in salt yazma özelliği, tanılama verilerinin yazıldığı depolama hesabı anahtarı gibi gizli dizileri depolamak için kullanışlıdır.

Tanılama depolama hesabını parametre olarak belirtme

Yukarıdaki tanılama uzantısı json kod parçacığı, tanılama verilerinin depolandığı tanılama depolama hesabını belirtmek için existingdiagnosticsStorageAccountName ve existingdiagnosticsStorageResourceGroup adlı iki parametre olduğunu varsayar. Tanılama depolama hesabını parametre olarak belirtmek, farklı ortamlarda tanılama depolama hesabını değiştirmeyi kolaylaştırır; örneğin, test için farklı bir tanılama depolama hesabı ve üretim dağıtımınız için farklı bir tanılama depolama hesabı kullanmak isteyebilirsiniz.

"existingdiagnosticsStorageAccountName": {
    "type": "string",
    "metadata": {
"description": "The name of an existing storage account to which diagnostics data is transfered."
    }
},
"existingdiagnosticsStorageResourceGroup": {
    "type": "string",
    "metadata": {
"description": "The resource group for the storage account specified in existingdiagnosticsStorageAccountName"
    }
}

Sanal makinenin kaynak grubundan farklı bir kaynak grubunda tanılama depolama hesabı belirtmek en iyi yöntemdir. Bir kaynak grubu kendi ömrüne sahip bir dağıtım birimi olarak kabul edilebilir; yeni yapılandırma güncelleştirmeleri yapıldıktan sonra sanal makine dağıtılabilir ve yeniden dağıtılabilir, ancak tanılama verilerini bu sanal makine dağıtımları arasında aynı depolama hesabında depolamaya devam etmek isteyebilirsiniz. Depolama hesabının farklı bir kaynakta bulunması, depolama hesabının çeşitli sanal makine dağıtımlarından verileri kabul etmesine olanak tanır ve bu sayede çeşitli sürümlerdeki sorunları gidermeyi kolaylaştırır.

Not

Visual Studio'dan bir Windows sanal makine şablonu oluşturursanız, varsayılan depolama hesabı sanal makine VHD'sinin karşıya yüklendiği depolama hesabını kullanacak şekilde ayarlanabilir. Bu, VM'nin ilk kurulumunu basitleştirmektir. Parametre olarak geçirilebilen farklı bir depolama hesabı kullanmak için şablonu yeniden hesaba katın.

Tanılama yapılandırma değişkenleri

Yukarıdaki tanılama uzantısı json kod parçacığı, tanılama depolama alanı için depolama hesabı anahtarını almayı basitleştirmek üzere bir accountid değişkeni tanımlar:

"accountid": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/',parameters('existingdiagnosticsStorageResourceGroup'), '/providers/','Microsoft.Storage/storageAccounts/', parameters('existingdiagnosticsStorageAccountName'))]"

Tanılama uzantısının xmlcfg özelliği, birlikte birleştirilmiş birden çok değişken kullanılarak tanımlanır. Bu değişkenlerin değerleri xml içindedir, bu nedenle json değişkenlerini ayarlarken doğru şekilde kaçışlarının yapılması gerekir.

Aşağıdaki örnekte, bazı Windows olay günlükleri ve tanılama altyapısı günlükleriyle birlikte standart sistem düzeyi performans sayaçlarını toplayan tanılama yapılandırma xml'i açıklanmaktadır. Yapılandırmanın şablonunuzun değişkenler bölümüne doğrudan yapıştırılabilmesi için kaçış noktası oluşturuldu ve doğru şekilde biçimlendirildi. Yapılandırma xml'sinin daha insan tarafından okunabilir bir örneği için Tanılama Yapılandırma Şeması'na bakın.

"wadlogs": "<WadCfg> <DiagnosticMonitorConfiguration overallQuotaInMB=\"4096\" xmlns=\"http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration\"> <DiagnosticInfrastructureLogs scheduledTransferLogLevelFilter=\"Error\"/> <WindowsEventLog scheduledTransferPeriod=\"PT1M\" > <DataSource name=\"Application!*[System[(Level = 1 or Level = 2)]]\" /> <DataSource name=\"Security!*[System[(Level = 1 or Level = 2)]]\" /> <DataSource name=\"System!*[System[(Level = 1 or Level = 2)]]\" /></WindowsEventLog>",
"wadperfcounters1": "<PerformanceCounters scheduledTransferPeriod=\"PT1M\"><PerformanceCounterConfiguration counterSpecifier=\"\\Processor(_Total)\\% Processor Time\" sampleRate=\"PT15S\" unit=\"Percent\"><annotation displayName=\"CPU utilization\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Processor(_Total)\\% Privileged Time\" sampleRate=\"PT15S\" unit=\"Percent\"><annotation displayName=\"CPU privileged time\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Processor(_Total)\\% User Time\" sampleRate=\"PT15S\" unit=\"Percent\"><annotation displayName=\"CPU user time\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Processor Information(_Total)\\Processor Frequency\" sampleRate=\"PT15S\" unit=\"Count\"><annotation displayName=\"CPU frequency\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\System\\Processes\" sampleRate=\"PT15S\" unit=\"Count\"><annotation displayName=\"Processes\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Process(_Total)\\Thread Count\" sampleRate=\"PT15S\" unit=\"Count\"><annotation displayName=\"Threads\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Process(_Total)\\Handle Count\" sampleRate=\"PT15S\" unit=\"Count\"><annotation displayName=\"Handles\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Memory\\% Committed Bytes In Use\" sampleRate=\"PT15S\" unit=\"Percent\"><annotation displayName=\"Memory usage\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Memory\\Available Bytes\" sampleRate=\"PT15S\" unit=\"Bytes\"><annotation displayName=\"Memory available\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Memory\\Committed Bytes\" sampleRate=\"PT15S\" unit=\"Bytes\"><annotation displayName=\"Memory committed\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Memory\\Commit Limit\" sampleRate=\"PT15S\" unit=\"Bytes\"><annotation displayName=\"Memory commit limit\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\% Disk Time\" sampleRate=\"PT15S\" unit=\"Percent\"><annotation displayName=\"Disk active time\" locale=\"en-us\"/></PerformanceCounterConfiguration>",
"wadperfcounters2": "<PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\% Disk Read Time\" sampleRate=\"PT15S\" unit=\"Percent\"><annotation displayName=\"Disk active read time\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\% Disk Write Time\" sampleRate=\"PT15S\" unit=\"Percent\"><annotation displayName=\"Disk active write time\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\Disk Transfers/sec\" sampleRate=\"PT15S\" unit=\"CountPerSecond\"><annotation displayName=\"Disk operations\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\Disk Reads/sec\" sampleRate=\"PT15S\" unit=\"CountPerSecond\"><annotation displayName=\"Disk read operations\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\Disk Writes/sec\" sampleRate=\"PT15S\" unit=\"CountPerSecond\"><annotation displayName=\"Disk write operations\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\Disk Bytes/sec\" sampleRate=\"PT15S\" unit=\"BytesPerSecond\"><annotation displayName=\"Disk speed\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\Disk Read Bytes/sec\" sampleRate=\"PT15S\" unit=\"BytesPerSecond\"><annotation displayName=\"Disk read speed\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\Disk Write Bytes/sec\" sampleRate=\"PT15S\" unit=\"BytesPerSecond\"><annotation displayName=\"Disk write speed\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\LogicalDisk(_Total)\\% Free Space\" sampleRate=\"PT15S\" unit=\"Percent\"><annotation displayName=\"Disk free space (percentage)\" locale=\"en-us\"/></PerformanceCounterConfiguration></PerformanceCounters>",
"wadcfgxstart": "[concat(variables('wadlogs'), variables('wadperfcounters1'), variables('wadperfcounters2'), '<Metrics resourceId=\"')]",
"wadmetricsresourceid": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name , '/providers/', 'Microsoft.Compute/virtualMachines/')]",
"wadcfgxend": "\"><MetricAggregation scheduledTransferPeriod=\"PT1H\"/><MetricAggregation scheduledTransferPeriod=\"PT1M\"/></Metrics></DiagnosticMonitorConfiguration></WadCfg>"

Yukarıdaki yapılandırmadaki Ölçüm tanımı xml düğümü, PerformanceCounter düğümündeki xml'de daha önce tanımlanan performans sayaçlarının nasıl toplandığını ve depolandığını tanımladığı için önemli bir yapılandırma öğesidir.

Önemli

Bu ölçümler, Azure portal izleme grafiklerini ve uyarılarını yönlendirmektedir. Azure portal VM izleme verilerini görmek istiyorsanız resourceID ve MetricAggregation içeren Ölçümler düğümü VM'nizin tanılama yapılandırmasına eklenmelidir.

Aşağıdaki örnekte ölçüm tanımları için xml gösterilmektedir:

<Metrics resourceId="/subscriptions/subscription().subscriptionId/resourceGroups/resourceGroup().name/providers/Microsoft.Compute/virtualMachines/vmName">
    <MetricAggregation scheduledTransferPeriod="PT1H"/>
    <MetricAggregation scheduledTransferPeriod="PT1M"/>
</Metrics>

resourceID özniteliği, aboneliğinizdeki sanal makineyi benzersiz olarak tanımlar. Şablonun dağıttığınız aboneliğe ve kaynak grubuna göre bu değerleri otomatik olarak güncelleştirmesi için subscription() ve resourceGroup() işlevlerini kullandığınızdan emin olun.

Döngüde birden çok Sanal Makineler oluşturuyorsanız, her bir VM'yi doğru şekilde ayırt etmek için resourceID değerini bir copyIndex() işleviyle doldurmanız gerekir. xmlCfg değeri aşağıdaki gibi bunu destekleyecek şekilde güncelleştirilebilir:

"xmlCfg": "[base64(concat(variables('wadcfgxstart'), variables('wadmetricsresourceid'), concat(parameters('vmNamePrefix'), copyindex()), variables('wadcfgxend')))]",

PT1M ve PT1H'nin MetricAggregation değeri, sırasıyla bir dakika içindeki bir toplamayı ve bir saat içinde bir toplamayı gösterir.

Depolamadaki WADMetrics tabloları

Yukarıdaki Ölçümler yapılandırması, tanılama depolama hesabınızda aşağıdaki adlandırma kurallarına sahip tablolar oluşturur:

  • WADMetrics: Tüm WADMetrics tabloları için standart ön ek
  • PT1H veya PT1M: Tablonun 1 saat veya 1 dakikadan fazla toplam veri içerdiğini gösterir
  • P10D: Tablonun veri toplamaya başladığı andan itibaren 10 gün boyunca tablodaki verileri içerdiğini gösterir
  • V2S: Dize sabiti
  • yyyymmdd: Tablonun veri toplamaya başladığı tarih

Örnek: WADMetricsPT1HP10DV2S20151108 , 11-Kas-2015 tarihinden itibaren 10 gün boyunca bir saatten fazla toplanan ölçüm verilerini içerir

Her WADMetrics tablosu aşağıdaki sütunları içerir:

  • PartitionKey: Bölüm anahtarı, VM kaynağını benzersiz olarak tanımlamak için resourceID değerine göre oluşturulur. Örnek: 002Fsubscriptions:<subscriptionID>:002FresourceGroups:002F<ResourceGroupName>:002Fproviders:002FMicrosoft:002ECompute:002FvirtualMachines:002F<vmName>
  • RowKey: biçimini <Descending time tick>:<Performance Counter Name>izler. Azalan zaman çizgisi hesaplaması, toplama döneminin başlangıcının saati eksi maksimum zaman çizgisidir. Örneğin örnek dönem 10-Kas-2015 ve 00:00 Utc'de başladıysa, hesaplama şöyle olacaktır: DateTime.MaxValue.Ticks - (new DateTime(2015,11,10,0,0,0,DateTimeKind.Utc).Ticks). Kullanılabilir bellek bayt performansı için, sayaç satırı anahtarı şöyle görünür: 2519551871999999999__:005CMemory:005CAvailable:0020Bytes
  • CounterName: Performans sayacının adıdır. Bu, xml yapılandırmasında tanımlanan counterSpecifier ile eşleşir.
  • Maksimum: Toplama süresi boyunca performans sayacının maksimum değeri.
  • Minimum: Toplama süresi boyunca performans sayacının en düşük değeri.
  • Toplam: Toplama dönemi boyunca bildirilen performans sayacının tüm değerlerinin toplamı.
  • Sayı: Performans sayacı için bildirilen toplam değer sayısı.
  • Ortalama: Toplama dönemi boyunca performans sayacının ortalama (toplam/sayı) değeri.

Sonraki Adımlar