Bagikan melalui


Membuat pemberitahuan metrik di Log Azure Monitor

Catatan

Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Untuk memulai, lihat Menginstal Azure PowerShell. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Anda dapat menggunakan kemampuan pemberitahuan metrik pada sekumpulan log yang telah ditentukan sebelumnya di Log Azure Monitor. Log yang dipantau, yang dapat dikumpulkan dari Azure atau komputer lokal, dikonversi ke metrik dan kemudian dipantau dengan aturan pemberitahuan metrik, sama seperti metrik lainnya.

Ruang kerja Analitik Log mendukung jenis log ini:

Manfaat menggunakan pemberitahuan metrik untuk log dibandingkan dengan pemberitahuan pencarian log berbasis kueri di Azure meliputi:

  • Pemberitahuan metrik menawarkan kemampuan pemantauan yang hampir real-time. Mereka membagi data dari sumber log untuk menjamin kemampuan ini.
  • Pemberitahuan metrik bersifat stateful (memiliki keadaan yang tercatat). Mereka memberi tahu Anda sekali ketika pemberitahuan diaktifkan dan sekali ketika pemberitahuan diselesaikan. Peringatan pencarian log tidak menyimpan status dan terus memicu peringatan pada setiap interval jika kondisi peringatan terpenuhi.
  • Pemberitahuan metrik menyediakan beberapa dimensi. Mereka memungkinkan pemfilteran ke nilai tertentu seperti komputer dan jenis OS tanpa perlu menentukan kueri yang kompleks di Analitik Log.

Catatan

Metrik atau dimensi tertentu hanya muncul jika data untuknya ada dalam periode yang dipilih. Metrik ini tersedia untuk pelanggan yang memiliki ruang kerja Analitik Log.

Metrik dan dimensi yang didukung untuk log

Dengan pemberitahuan metrik, Anda dapat menggunakan dimensi untuk memfilter metrik Anda ke tingkat yang tepat. Daftar lengkap metrik yang didukung untuk log setara dengan daftar metrik ruang kerja Log Analytics.

Catatan

Untuk melihat metrik yang didukung yang diekstrak dari ruang kerja Analitik Log melalui Azure Monitor metrics, Anda harus membuat pemberitahuan metrik log pada metrik tersebut. Dimensi yang Anda pilih dalam pemberitahuan metrik untuk log hanya akan muncul untuk eksplorasi melalui metrik Azure Monitor.

Membuat peringatan metrik untuk log

Sebelum data metrik dari log populer diproses di Analitik Log, data tersebut disalurkan ke metrik Azure Monitor. Anda kemudian dapat memanfaatkan kemampuan platform metrik selain pemberitahuan metrik, termasuk memiliki pemberitahuan dengan frekuensi serendah satu menit.

Proses untuk membuat pemberitahuan metrik untuk log adalah dua berlabuh:

  1. Buat aturan untuk mengekstrak metrik dari log yang didukung dengan menggunakan API Aturan Kueri Terjadwal (scheduledQueryRules).
  2. Buat pemberitahuan metrik untuk metrik yang diekstrak dari log (di langkah 1) dan targetkan ruang kerja Analitik Log sebagai sumber daya.

Prasyarat

Sebelum Anda membuat pemberitahuan metrik untuk log, pastikan item berikut disiapkan dan tersedia:

  • Ruang Kerja Analitik Log: Anda harus memiliki Ruang Kerja Analitik Log yang valid dan aktif. Untuk informasi selengkapnya, lihat Membuat ruang kerja Analitik Log.
  • Agen dikonfigurasi untuk ruang kerja Log Analytics: Anda perlu mengonfigurasi agen untuk komputer virtual Azure atau komputer lokal untuk mengirim data ke ruang kerja Log Analytics. Untuk informasi selengkapnya, lihat Gambaran umum Agen Azure Monitor.
  • Solusi Log Analytics yang didukung: Solusi Log Analytics harus dikonfigurasi dan mengirim data ke ruang kerja Log Analytics. Solusi yang didukung adalah penghitung kinerja untuk Windows dan Linux, catatan heartbeat untuk Kesehatan Agen, Manajemen Pembaruan Azure Automation, dan data peristiwa.
  • Log yang dikonfigurasi untuk solusi Analitik Log: Solusi Analitik Log harus memiliki log dan data yang diperlukan yang sesuai dengan metrik yang didukung untuk ruang kerja Analitik Log diaktifkan. Misalnya, penghitung % Memori yang Tersedia harus dikonfigurasi dalam solusi penghitung kinerja terlebih dahulu.

Metode untuk membuat pemberitahuan metrik untuk log

Anda dapat membuat dan mengelola pemberitahuan metrik dengan menggunakan portal Azure, templat Azure Resource Manager, REST API, Azure PowerShell, dan Azure CLI.

Setelah Anda membuat peringatan metrik untuk log pada ruang kerja Analitik Log tertentu, peringatan tersebut memiliki semua karakteristik dan fungsi peringatan metrik, termasuk skema payload, batas kuota yang berlaku, dan harga yang ditagihkan.

Untuk detail dan sampel langkah demi langkah, lihat Membuat atau mengedit aturan pemberitahuan metrik. Ikuti instruksi untuk mengelola pemberitahuan metrik dan perhatikan pertimbangan berikut:

  • Target untuk pemberitahuan metrik harus merupakan ruang kerja Analitik Log yang valid.

  • Sinyal yang dipilih untuk pemberitahuan metrik untuk ruang kerja Analitik Log yang dipilih harus berjenis Metrik.

  • Anda dapat memfilter kondisi atau sumber daya tertentu dengan menggunakan filter dimensi, karena metrik untuk log bersifat multidaya.

  • Saat mengonfigurasi logika sinyal, Anda dapat membuat satu peringatan untuk mencakup beberapa nilai dari suatu dimensi (seperti komputer).

  • Saat Anda membuat pemberitahuan metrik untuk log dengan menggunakan portal Azure, aturan yang sesuai untuk mengonversi data log menjadi metrik melalui scheduledQueryRules dibuat secara otomatis di latar belakang, tanpa perlu intervensi atau tindakan pengguna apa pun.

    Jika Anda tidak menggunakan portal Azure untuk membuat pemberitahuan metrik untuk ruang kerja Log Analytics yang dipilih, Anda harus terlebih dahulu membuat aturan eksplisit secara manual untuk mengonversi data log menjadi metrik dengan menggunakan scheduledQueryRules.

Templat Manajer Sumber Daya

Untuk membuat pemberitahuan metrik untuk log, Anda bisa menggunakan contoh templat Resource Manager berikut.

Untuk pemberitahuan metrik untuk log yang dibuat melalui sarana selain portal Azure, Anda dapat menggunakan templat sampel ini untuk membuat aturan konversi log-ke-metrik berbasis scheduledQueryRules sebelum Anda membuat pemberitahuan metrik. Jika tidak, tidak akan ada data untuk peringatan metrik di log.

Pemberitahuan metrik untuk log dengan ambang statis

Dalam templat sampel berikut, pembuatan pemberitahuan metrik untuk ambang batas statis tergantung pada pembuatan aturan yang berhasil untuk mengekstrak metrik dari log melalui scheduledQueryRules.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "convertRuleDescription": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Description for the log converted to a metric."
            }
        },
        "convertRuleRegion": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Name of the region used by the workspace."
            }
        },
        "convertRuleStatus": {
            "type": "string",
            "defaultValue": "true",
            "metadata": {
                "description": "Specifies whether the log conversion rule is enabled."
            }
        },
        "convertRuleMetric": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Name of the metric after extraction is done from logs."
            }
        },
        "alertName": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Name of the alert."
            }
        },
        "alertDescription": {
            "type": "string",
            "defaultValue": "This is a metric alert",
            "metadata": {
                "description": "Description of the alert."
            }
        },
        "alertSeverity": {
            "type": "int",
            "defaultValue": 3,
            "allowedValues": [
                0,
                1,
                2,
                3,
                4
            ],
            "metadata": {
                "description": "Severity of the alert {0,1,2,3,4}."
            }
        },
        "isEnabled": {
            "type": "bool",
            "defaultValue": true,
            "metadata": {
                "description": "Specifies whether the alert is enabled."
            }
        },
        "resourceId": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Full resource ID of the resource emitting the metric that will be used for the comparison. For example: /subscriptions/00000000-0000-0000-0000-0000-00000000/resourceGroups/ResourceGroupName/providers/Microsoft.OperationalInsights/workspaces/workspaceName"
            }
        },
        "metricName": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Name of the metric used in the comparison to activate the alert."
            }
        },
        "operator": {
            "type": "string",
            "defaultValue": "GreaterThan",
            "allowedValues": [
                "Equals",
                "NotEquals",
                "GreaterThan",
                "GreaterThanOrEqual",
                "LessThan",
                "LessThanOrEqual"
            ],
            "metadata": {
                "description": "Operator comparing the current value with the threshold value."
            }
        },
        "threshold": {
            "type": "string",
            "defaultValue": "0",
            "metadata": {
                "description": "The threshold value at which the alert is activated."
            }
        },
        "timeAggregation": {
            "type": "string",
            "defaultValue": "Average",
            "allowedValues": [
                "Average",
                "Minimum",
                "Maximum",
                "Total"
            ],
            "metadata": {
                "description": "How the data that's collected should be combined over time."
            }
        },
        "windowSize": {
            "type": "string",
            "defaultValue": "PT5M",
            "metadata": {
                "description": "Period of time used to monitor alert activity based on the threshold. Must be between five minutes and one day. ISO 8601 duration format."
            }
        },
        "evaluationFrequency": {
            "type": "string",
            "defaultValue": "PT1M",
            "metadata": {
                "description": "How often the metric alert is evaluated, represented in ISO 8601 duration format."
            }
        },
        "actionGroupId": {
            "type": "string",
            "defaultValue": "",
            "metadata": {
                "description": "The ID of the action group that's triggered when the alert is activated or deactivated."
            }
        }
    },
    "variables": {
        "convertRuleSourceWorkspace": {
            "SourceId": "/subscriptions/1234-56789-1234-567a/resourceGroups/resourceGroupName/providers/Microsoft.OperationalInsights/workspaces/workspaceName"
        }
    },
    "resources": [
        {
            "name": "[parameters('alertName')]",
            "type": "Microsoft.Insights/scheduledQueryRules",
            "apiVersion": "2018-04-16",
            "location": "[parameters('convertRuleRegion')]",
            "properties": {
                "description": "[parameters('convertRuleDescription')]",
                "enabled": "[parameters('convertRuleStatus')]",
                "source": {
                    "dataSourceId": "[variables('convertRuleSourceWorkspace').SourceId]"
                },
                "action": {
                    "odata.type": "Microsoft.WindowsAzure.Management.Monitoring.Alerts.Models.Microsoft.AppInsights.Nexus.DataContracts.Resources.ScheduledQueryRules.LogToMetricAction",
                    "criteria": [{
                            "metricName": "[parameters('convertRuleMetric')]",
                            "dimensions": []
                        }
                    ]
                }
            }
        },
        {
            "name": "[parameters('alertName')]",
            "type": "Microsoft.Insights/metricAlerts",
            "location": "global",
            "apiVersion": "2018-03-01",
            "tags": {},
            "dependsOn":["[resourceId('Microsoft.Insights/scheduledQueryRules',parameters('alertName'))]"],
            "properties": {
                "description": "[parameters('alertDescription')]",
                "severity": "[parameters('alertSeverity')]",
                "enabled": "[parameters('isEnabled')]",
                "scopes": ["[parameters('resourceId')]"],
                "evaluationFrequency":"[parameters('evaluationFrequency')]",
                "windowSize": "[parameters('windowSize')]",
                "criteria": {
                    "odata.type": "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria",
                    "allOf": [
                        {
                            "name" : "1st criterion",
                            "metricName": "[parameters('metricName')]",
                            "dimensions":[],
                            "operator": "[parameters('operator')]",
                            "threshold" : "[parameters('threshold')]",
                            "timeAggregation": "[parameters('timeAggregation')]"
                        }
                    ]
                },
                "actions": [
                    {
                        "actionGroupId": "[parameters('actionGroupId')]"
                    }
                ]
            }
        }
    ]
}

Jika Anda menyimpan JSON sebelumnya sebagai metricfromLogsAlertStatic.json, Anda dapat menggabungkannya dengan parameter file JSON untuk dibuat berdasarkan templat Resource Manager. Berikut adalah contoh parameter file JSON:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "convertRuleDescription": {
            "value": "Test rule to extract metrics from logs via template"
        },
        "convertRuleRegion": {
            "value": "West Central US"
        },
        "convertRuleStatus": {
            "value": "true"
        },
        "convertRuleMetric": {
            "value": "Average_% Idle Time"
        },
        "alertName": {
            "value": "TestMetricAlertonLog"
        },
        "alertDescription": {
            "value": "New multidimensional metric alert created via template"
        },
        "alertSeverity": {
            "value":3
        },
        "isEnabled": {
            "value": true
        },
        "resourceId": {
            "value": "/subscriptions/1234-56789-1234-567a/resourceGroups/myRG/providers/Microsoft.OperationalInsights/workspaces/workspaceName"
        },
        "metricName":{
            "value": "Average_% Idle Time"
        },
        "operator": {
            "value": "GreaterThan"
        },
        "threshold":{
            "value": "1"
        },
        "timeAggregation":{
            "value": "Average"
        },
        "actionGroupId": {
            "value": "/subscriptions/1234-56789-1234-567a/resourceGroups/myRG/providers/microsoft.insights/actionGroups/actionGroupName"
        }
    }
}

Dengan asumsi Anda menyimpan file parameter sebelumnya sebagai metricfromLogsAlertStatic.parameters.json, Anda dapat membuat pemberitahuan metrik untuk log dengan menggunakan templat Resource Manager untuk pembuatan di portal Azure.

Atau, Anda dapat menggunakan perintah Azure PowerShell ini:

New-AzResourceGroupDeployment -ResourceGroupName "myRG" -TemplateFile metricfromLogsAlertStatic.json TemplateParameterFile metricfromLogsAlertStatic.parameters.json

Atau, Anda dapat menyebarkan templat Resource Manager dengan menggunakan Azure CLI:

az deployment group create --resource-group myRG --template-file metricfromLogsAlertStatic.json --parameters @metricfromLogsAlertStatic.parameters.json

Pemberitahuan metrik untuk log dengan ambang batas dinamis

Dalam templat sampel berikut, pembuatan pemberitahuan metrik untuk ambang batas dinamis bergantung pada keberhasilan pembuatan aturan untuk mengekstrak metrik dari log melalui scheduledQueryRules.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "convertRuleDescription": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Description for the log converted to a metric."
            }
        },
        "convertRuleRegion": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Name of the region used by the workspace."
            }
        },
        "convertRuleStatus": {
            "type": "string",
            "defaultValue": "true",
            "metadata": {
                "description": "Specifies whether the log conversion rule is enabled."
            }
        },
        "convertRuleMetric": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Name of the metric after extraction is done from logs."
            }
        },
        "alertName": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Name of the alert."
            }
        },
        "alertDescription": {
            "type": "string",
            "defaultValue": "This is a metric alert",
            "metadata": {
                "description": "Description of the alert."
            }
        },
        "alertSeverity": {
            "type": "int",
            "defaultValue": 3,
            "allowedValues": [
                0,
                1,
                2,
                3,
                4
            ],
            "metadata": {
                "description": "Severity of the alert {0,1,2,3,4}."
            }
        },
        "isEnabled": {
            "type": "bool",
            "defaultValue": true,
            "metadata": {
                "description": "Specifies whether the alert is enabled."
            }
        },
        "resourceId": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Full resource ID of the resource emitting the metric that will be used for the comparison. For example: /subscriptions/00000000-0000-0000-0000-0000-00000000/resourceGroups/ResourceGroupName/providers/Microsoft.OperationalInsights/workspaces/workspaceName"
            }
        },
        "metricName": {
            "type": "string",
            "minLength": 1,
            "metadata": {
                "description": "Name of the metric used in the comparison to activate the alert."
            }
        },
        "operator": {
            "type": "string",
            "defaultValue": "GreaterOrLessThan",
            "allowedValues": [
                "GreaterThan",
                "LessThan",
                "GreaterOrLessThan"
            ],
            "metadata": {
                "description": "Operator comparing the current value with the threshold value."
            }
        },
        "alertSensitivity": {
            "type": "string",
            "defaultValue": "Medium",
            "allowedValues": [
                "High",
                "Medium",
                "Low"
            ],
            "metadata": {
                "description": "Tunes how 'noisy' the alerts for dynamic thresholds will be. 'High' will result in more alerts. 'Low' will result in fewer alerts."
            }
        },
        "numberOfEvaluationPeriods": {
            "type": "string",
            "defaultValue": "4",
            "metadata": {
                "description": "The number of periods to check in the alert evaluation."
            }
        },
        "minFailingPeriodsToAlert": {
            "type": "string",
            "defaultValue": "3",
            "metadata": {
                "description": "The number of unhealthy periods to alert on (must be lower or equal to numberOfEvaluationPeriods)."
            }
        },
        "timeAggregation": {
            "type": "string",
            "defaultValue": "Average",
            "allowedValues": [
                "Average",
                "Minimum",
                "Maximum",
                "Total"
            ],
            "metadata": {
                "description": "How the data that's collected should be combined over time."
            }
        },
        "windowSize": {
            "type": "string",
            "defaultValue": "PT5M",
            "metadata": {
                "description": "Period of time used to monitor alert activity based on the threshold. Must be between five minutes and one day. ISO 8601 duration format."
            }
        },
        "evaluationFrequency": {
            "type": "string",
            "defaultValue": "PT1M",
            "metadata": {
                "description": "How often the metric alert is evaluated, represented in ISO 8601 duration format."
            }
        },
        "actionGroupId": {
            "type": "string",
            "defaultValue": "",
            "metadata": {
                "description": "The ID of the action group that's triggered when the alert is activated or deactivated."
            }
        }
    },
    "variables": {
        "convertRuleSourceWorkspace": {
            "SourceId": "/subscriptions/1234-56789-1234-567a/resourceGroups/resourceGroupName/providers/Microsoft.OperationalInsights/workspaces/workspaceName"
        }
    },
    "resources": [
        {
            "name": "[parameters('alertName')]",
            "type": "Microsoft.Insights/scheduledQueryRules",
            "apiVersion": "2018-04-16",
            "location": "[parameters('convertRuleRegion')]",
            "properties": {
                "description": "[parameters('convertRuleDescription')]",
                "enabled": "[parameters('convertRuleStatus')]",
                "source": {
                    "dataSourceId": "[variables('convertRuleSourceWorkspace').SourceId]"
                },
                "action": {
                    "odata.type": "Microsoft.WindowsAzure.Management.Monitoring.Alerts.Models.Microsoft.AppInsights.Nexus.DataContracts.Resources.ScheduledQueryRules.LogToMetricAction",
                    "criteria": [{
                            "metricName": "[parameters('convertRuleMetric')]",
                            "dimensions": []
                        }
                    ]
                }
            }
        },
        {
            "name": "[parameters('alertName')]",
            "type": "Microsoft.Insights/metricAlerts",
            "location": "global",
            "apiVersion": "2018-03-01",
            "tags": {},
            "dependsOn":["[resourceId('Microsoft.Insights/scheduledQueryRules',parameters('alertName'))]"],
            "properties": {
                "description": "[parameters('alertDescription')]",
                "severity": "[parameters('alertSeverity')]",
                "enabled": "[parameters('isEnabled')]",
                "scopes": ["[parameters('resourceId')]"],
                "evaluationFrequency":"[parameters('evaluationFrequency')]",
                "windowSize": "[parameters('windowSize')]",
                "criteria": {
                    "odata.type": "Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria",
                    "allOf": [
                        {
                            "criterionType": "DynamicThresholdCriterion",
                            "name" : "1st criterion",
                            "metricName": "[parameters('metricName')]",
                            "dimensions":[],
                            "operator": "[parameters('operator')]",
                            "alertSensitivity": "[parameters('alertSensitivity')]",
                            "failingPeriods": {
                                "numberOfEvaluationPeriods": "[parameters('numberOfEvaluationPeriods')]",
                                "minFailingPeriodsToAlert": "[parameters('minFailingPeriodsToAlert')]"
                            },
                            "timeAggregation": "[parameters('timeAggregation')]"
                        }
                    ]
                },
                "actions": [
                    {
                        "actionGroupId": "[parameters('actionGroupId')]"
                    }
                ]
            }
        }
    ]
}

Jika Anda menyimpan JSON sebelumnya sebagai metricfromLogsAlertDynamic.json, Anda dapat menggabungkannya dengan parameter file JSON untuk dibuat berdasarkan templat Resource Manager. Berikut adalah contoh parameter file JSON:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "convertRuleDescription": {
            "value": "Test rule to extract metrics from logs via template"
        },
        "convertRuleRegion": {
            "value": "West Central US"
        },
        "convertRuleStatus": {
            "value": "true"
        },
        "convertRuleMetric": {
            "value": "Average_% Idle Time"
        },
        "alertName": {
            "value": "TestMetricAlertonLog"
        },
        "alertDescription": {
            "value": "New multidimensional metric alert created via template"
        },
        "alertSeverity": {
            "value":3
        },
        "isEnabled": {
            "value": true
        },
        "resourceId": {
            "value": "/subscriptions/1234-56789-1234-567a/resourceGroups/myRG/providers/Microsoft.OperationalInsights/workspaces/workspaceName"
        },
        "metricName":{
            "value": "Average_% Idle Time"
        },
        "operator": {
            "value": "GreaterOrLessThan"
          },
          "alertSensitivity": {
              "value": "Medium"
          },
          "numberOfEvaluationPeriods": {
              "value": "4"
          },
          "minFailingPeriodsToAlert": {
              "value": "3"
          },
        "timeAggregation":{
            "value": "Average"
        },
        "actionGroupId": {
            "value": "/subscriptions/1234-56789-1234-567a/resourceGroups/myRG/providers/microsoft.insights/actionGroups/actionGroupName"
        }
    }
}

Dengan asumsi Anda menyimpan file parameter sebelumnya sebagai metricfromLogsAlertDynamic.parameters.json, Anda dapat membuat pemberitahuan metrik untuk log dengan menggunakan templat Resource Manager untuk pembuatan di portal Azure.

Atau, Anda dapat menggunakan perintah Azure PowerShell ini:

New-AzResourceGroupDeployment -ResourceGroupName "myRG" -TemplateFile metricfromLogsAlertDynamic.json TemplateParameterFile metricfromLogsAlertDynamic.parameters.json

Atau, Anda dapat menyebarkan templat Resource Manager dengan menggunakan Azure CLI:

az deployment group create --resource-group myRG --template-file metricfromLogsAlertDynamic.json --parameters @metricfromLogsAlertDynamic.parameters.json