Membuat sumber daya pemantauan dengan menggunakan Bicep
Azure memiliki serangkaian alat komprehensif yang dapat memantau aplikasi dan layanan Anda. Anda dapat membuat sumber daya pemantauan secara terprogram menggunakan Bicep untuk mengotomatiskan pembuatan aturan, pengaturan diagnostik, dan pemberitahuan saat provisi infrastruktur Azure Anda.
Membawa konfigurasi pemantauan Anda ke dalam kode Bicep Anda mungkin tampak tidak biasa, mengingat ada alat yang tersedia di dalam portal Azure untuk menyiapkan aturan pemberitahuan, pengaturan diagnostik, dan dasbor.
Namun, pemberitahuan dan pengaturan diagnostik pada dasarnya sama dengan sumber daya infrastruktur Anda yang lain. Dengan menyertakannya dalam kode Bicep, Anda dapat menyebarkan dan menguji sumber daya pemberitahuan seperti yang Anda lakukan untuk sumber daya Azure lainnya.
Jika Anda menggunakan Git atau alat kontrol versi lain untuk mengelola file Bicep, Anda juga mendapatkan manfaat memiliki riwayat konfigurasi pemantauan sehingga Anda dapat melihat bagaimana pemberitahuan disiapkan dan dikonfigurasi.
Analitik Log dan ruang kerja Application Insights
Anda dapat membuat ruang kerja Analitik Log dengan jenis sumber daya Microsoft.OperationalInsights/workspaces dan ruang kerja Application Insights dengan jenis Microsoft.Insights /components. Kedua komponen ini disebarkan ke grup sumber daya.
Pengaturan diagnostik
Pengaturan diagnostik memungkinkan Anda untuk mengonfigurasi Azure Monitor untuk mengekspor log dan metrik Anda ke sejumlah tujuan, termasuk Log Analytics dan Azure Storage.
Saat membuat setelan diagnostik di Bicep, ingatlah bahwa sumber daya ini adalah sumber daya ekstensi, yang berarti diterapkan ke sumber daya lain. Anda dapat membuat pengaturan diagnostik di Bicep dengan menggunakan jenis sumber daya Microsoft.Insights /diagnosticSettings.
Saat membuat pengaturan diagnostik di Bicep, Anda perlu menerapkan cakupan pengaturan diagnostik. Pengaturan diagnostik dapat diterapkan di tingkat manajemen, langganan, atau grup sumber daya. Gunakan properti cakupan pada sumber daya ini untuk mengatur cakupan untuk sumber daya ini.
Pertimbangkan contoh berikut:
param location string = resourceGroup().location
param appPlanName string = '${uniqueString(resourceGroup().id)}asp'
param logAnalyticsWorkspace string = '${uniqueString(resourceGroup().id)}la'
var appPlanSkuName = 'S1'
resource logAnalytics 'Microsoft.OperationalInsights/workspaces@2023-09-01' existing = {
name: logAnalyticsWorkspace
}
resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
name: appPlanName
location: location
sku: {
name: appPlanSkuName
capacity: 1
}
}
resource diagnosticLogs 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = {
name: appServicePlan.name
scope: appServicePlan
properties: {
workspaceId: logAnalytics.id
logs: [
{
category: 'AllMetrics'
enabled: true
retentionPolicy: {
days: 30
enabled: true
}
}
]
}
}
Dalam contoh sebelumnya, Anda membuat pengaturan diagnostik untuk paket App Service dan mengirim diagnostik tersebut ke Analitik Log. Anda dapat menggunakan properti scope
untuk menentukan paket App Service sebagai cakupan pengaturan diagnostik Anda, dan menggunakan properti workspaceId
untuk menentukan ruang kerja Analitik Log untuk mengirim log diagnostik. Anda juga dapat mengekspor pengaturan diagnostik ke Azure Event Hubs dan akun Azure Storage.
Jenis log berbeda di antara sumber daya, jadi pastikan bahwa log yang ingin Anda ekspor berlaku untuk sumber daya yang Anda gunakan.
Pengaturan diagnostik log aktivitas
Untuk menggunakan Bicep guna mengonfigurasi pengaturan diagnostik guna mengekspor log aktivitas Azure, sebarkan sumber daya pengaturan diagnostik di cakupan langganan.
Contoh berikut menunjukkan cara mengekspor beberapa jenis log aktivitas ke ruang kerja Log Analytics:
targetScope = 'subscription'
param logAnalyticsWorkspaceId string
var activityLogDiagnosticSettingsName = 'export-activity-log'
resource subscriptionActivityLog 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = {
name: activityLogDiagnosticSettingsName
properties: {
workspaceId: logAnalyticsWorkspaceId
logs: [
{
category: 'Administrative'
enabled: true
}
{
category: 'Security'
enabled: true
}
{
category: 'ServiceHealth'
enabled: true
}
{
category: 'Alert'
enabled: true
}
{
category: 'Recommendation'
enabled: true
}
{
category: 'Policy'
enabled: true
}
{
category: 'Autoscale'
enabled: true
}
{
category: 'ResourceHealth'
enabled: true
}
]
}
}
Peringatan
Pemberitahuan secara proaktif memberi tahu Anda saat masalah ditemukan dalam infrastruktur dan aplikasi Azure Anda dengan memantau data dalam Azure Monitor. Dengan mengonfigurasi konfigurasi pemantauan dan pemberitahuan dalam kode Bicep, Anda dapat mengotomatiskan pembuatan pemberitahuan ini bersama infrastruktur yang Anda provisikan di Azure.
Untuk informasi selengkapnya tentang cara kerja pemberitahuan di Azure, lihat Gambaran umum pemberitahuan di Microsoft Azure.
Bagian berikut menunjukkan bagaimana Anda dapat mengonfigurasi berbagai jenis pemberitahuan menggunakan kode Bicep.
Grup tindakan
Untuk diberi tahu ketika pemberitahuan telah dipicu, Anda perlu membuat grup tindakan. Grup tindakan adalah kumpulan preferensi pemberitahuan yang ditentukan oleh pemilik langganan Azure. Grup tindakan digunakan untuk memberi tahu pengguna bahwa pemberitahuan telah dipicu, atau untuk memicu respons otomatis terhadap pemberitahuan.
Untuk membuat grup tindakan di Bicep, Anda bisa menggunakan jenis Microsoft.Insights /actionGroups. Berikut contohnya:
param actionGroupName string = 'On-Call Team'
param location string = resourceGroup().location
var actionGroupEmail = 'oncallteam@contoso.com'
resource supportTeamActionGroup 'Microsoft.Insights/actionGroups@2023-01-01' = {
name: actionGroupName
location: location
properties: {
enabled: true
groupShortName: actionGroupName
emailReceivers: [
{
name: actionGroupName
emailAddress: actionGroupEmail
useCommonAlertSchema: true
}
]
}
}
Contoh sebelumnya membuat grup tindakan yang mengirim pemberitahuan ke alamat email, tetapi Anda juga dapat menentukan grup tindakan yang mengirim pemberitahuan ke Azure Event Hubs, Azure Functions, Logic Apps, dan lainnya.
Aturan pemrosesan peringatan
Aturan pemrosesan pemberitahuan (sebelumnya disebut sebagai aturan tindakan) memungkinkan Anda menerapkan pemrosesan pada pemberitahuan yang telah diaktifkan. Anda dapat membuat aturan pemrosesan pemberitahuan di Bicep menggunakan jenis Microsoft.AlertsManagement/actionRules.
Setiap aturan pemrosesan pemberitahuan memiliki cakupan, yang bisa menjadi daftar satu atau beberapa sumber daya tertentu, grup sumber daya tertentu, atau seluruh langganan Azure Anda. Saat Anda menentukan aturan pemrosesan pemberitahuan di Bicep, Anda menentukan daftar ID sumber daya di properti cakupan, yang menargetkan sumber daya tersebut untuk aturan pemrosesan pemberitahuan.
param alertRuleName string = 'AlertRuleName'
param actionGroupName string = 'On-Call Team'
param location string = resourceGroup().location
resource actionGroup 'Microsoft.Insights/actionGroups@2023-09-01-preview' existing = {
name: actionGroupName
}
resource alertProcessingRule 'Microsoft.AlertsManagement/actionRules@2023-05-01-preview' = {
name: alertRuleName
location: location
properties: {
actions: [
{
actionType: 'AddActionGroups'
actionGroupIds: [
actionGroup.id
]
}
]
conditions: [
{
field: 'MonitorService'
operator: 'Equals'
values: [
'Azure Backup'
]
}
]
enabled: true
scopes: [
subscription().id
]
}
}
Dalam contoh sebelumnya, aturan pemrosesan pemberitahuan MonitorService
pada Azure Backup Vault ditentukan, yang diterapkan ke grup tindakan yang ada. Aturan ini memicu pemberitahuan ke grup tindakan.
Aturan pemberitahuan log
Pemberitahuan log secara otomatis menjalankan kueri Analitik Log. Kueri yang digunakan untuk mengevaluasi log sumber daya pada interval yang Anda tentukan, menentukan apakah hasilnya memenuhi beberapa kriteria yang Anda tentukan, lalu mengaktifkan pemberitahuan.
Anda dapat membuat aturan peringatan log di Bicep dengan menggunakan jenis Microsoft.Insights/scheduledQueryRules.
Aturan pemberitahuan metrik
Peringatan metrik memberi tahu Anda saat salah satu metrik Anda melewati ambang batas yang ditentukan. Anda dapat menentukan aturan pemberitahuan metrik dalam kode Bicep Anda dengan menggunakan jenis Microsoft.Insights /metricAlerts.
Pemberitahuan log aktivitas
Log aktivitas Azure adalah log platform di Azure yang memberikan wawasan tentang peristiwa di tingkat langganan. Ini termasuk informasi seperti ketika sumber daya dalam Azure dimodifikasi.
Peringatan log aktivitas adalah peringatan yang diaktifkan saat terjadi peristiwa log aktivitas baru yang cocok dengan kondisi yang ditentukan dalam peringatan.
Anda dapat menggunakan properti scope
dalam jenis Microsoft.Insights /activityLogAlerts untuk membuat pemberitahuan log aktivitas pada sumber daya tertentu atau daftar sumber daya menggunakan ID sumber daya sebagai awalan.
Anda menentukan ketentuan aturan lansiran dalam properti condition
dan kemudian mengonfigurasi grup lansiran untuk memicu lansiran ini dengan menggunakan array actionGroup
. Di sini Anda dapat meneruskan satu atau beberapa grup tindakan untuk mengirim peringatan log aktivitas, tergantung pada kebutuhan Anda.
param activityLogAlertName string = '${uniqueString(resourceGroup().id)}-alert'
param actionGroupName string = 'adminactiongroup'
resource actionGroup 'Microsoft.Insights/actionGroups@2023-09-01-preview' existing = {
name: actionGroupName
}
resource activityLogAlert 'Microsoft.Insights/activityLogAlerts@2023-01-01-preview' = {
name: activityLogAlertName
location: 'Global'
properties: {
condition: {
allOf: [
{
field: 'category'
equals: 'Administrative'
}
{
field: 'operationName'
equals: 'Microsoft.Resources/deployments/write'
}
{
field: 'resourceType'
equals: 'Microsoft.Resources/deployments'
}
]
}
actions: {
actionGroups: [
{
actionGroupId: actionGroup.id
}
]
}
scopes: [
subscription().id
]
}
}
Peringatan kesehatan sumber daya
Azure Resource Health senantiasa menginformasikan status kesehatan terkini maupun historis dari sumber daya Azure Anda. Dengan membuat pemberitahuan kesehatan sumber daya menggunakan Bicep, Anda dapat membuat dan menyesuaikan pemberitahuan ini secara massal.
Di Bicep, Anda dapat membuat pemberitahuan kesehatan sumber daya dengan jenis Microsoft.Insights /activityLogAlerts.
Pemberitahuan kesehatan sumber daya dapat dikonfigurasi untuk memantau peristiwa di tingkat langganan, grup sumber daya, atau sumber daya individual.
Pertimbangkan contoh berikut, tempat Anda membuat pemberitahuan kesehatan sumber daya yang melaporkan pemberitahuan kesehatan layanan. Pemberitahuan diterapkan di tingkat langganan (menggunakan properti scope
), dan mengirim pemberitahuan ke grup tindakan yang sudah ada:
param activityLogAlertName string = uniqueString(resourceGroup().id)
param actionGroupName string = 'oncallactiongroup'
resource actionGroup 'Microsoft.Insights/actionGroups@2023-09-01-preview' existing = {
name: actionGroupName
}
resource resourceHealthAlert 'Microsoft.Insights/activityLogAlerts@2023-01-01-preview' = {
name: activityLogAlertName
location: 'global'
properties: {
condition: {
allOf: [
{
field: 'category'
equals: 'ServiceHealth'
}
]
}
scopes: [
subscription().id
]
actions: {
actionGroups: [
{
actionGroupId: actionGroup.id
}
]
}
}
}
Pemberitahuan deteksi pintar
Peringatan deteksi cerdas memperingatkan Anda tentang potensi masalah kinerja dan anomali kegagalan dalam aplikasi web Anda. Anda dapat membuat pemberitahuan deteksi cerdas di Bicep menggunakan jenis Microsoft.AlertsManagement/smartDetectorAlertRules.
Dashboard
Di Bicep, Anda dapat membuat dasbor portal dengan menggunakan jenis sumber daya Microsoft.Portal/dashboards.
Untuk informasi selengkapnya tentang membuat dasbor dengan kode, lihat Membuat Dasbor Azure secara terprogram.
Aturan skala otomatis
Untuk membuat pengaturan autoscaling, Anda menentukannya menggunakan jenis sumber daya Microsoft.Insights /autoscaleSettings.
Untuk menargetkan sumber daya yang ingin Anda terapkan pengaturan penskalaan otomatisnya, Anda perlu menyediakan pengidentifikasi sumber daya target sumber daya tempat pengaturan harus ditambahkan.
Dalam contoh ini, kondisi peluasan skala untuk paket App Service berdasarkan persentase CPU rata-rata selama periode waktu 10 menit. Jika paket App Service melebihi konsumsi CPU rata-rata 70% selama 10 menit, mesin skala otomatis akan menskalakan paket dengan menambahkan satu instans.
param location string = resourceGroup().location
param appPlanName string = '${uniqueString(resourceGroup().id)}asp'
var appPlanSkuName = 'S1'
resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
name: appPlanName
location: location
properties: {}
sku: {
name: appPlanSkuName
capacity: 1
}
}
resource scaleOutRule 'Microsoft.Insights/autoscalesettings@2022-10-01' = {
name: appServicePlan.name
location: location
properties: {
enabled: true
profiles: [
{
name: 'Scale out condition'
capacity: {
maximum: '3'
default: '1'
minimum: '1'
}
rules: [
{
scaleAction: {
type: 'ChangeCount'
direction: 'Increase'
cooldown: 'PT5M'
value: '1'
}
metricTrigger: {
metricName: 'CpuPercentage'
operator: 'GreaterThan'
timeAggregation: 'Average'
threshold: 70
metricResourceUri: appServicePlan.id
timeWindow: 'PT10M'
timeGrain: 'PT1M'
statistic: 'Average'
}
}
]
}
]
targetResourceUri: appServicePlan.id
}
}
Catatan
Saat menentukan aturan penskalaan otomatis, ingatlah praktik terbaik untuk menghindari masalah saat mencoba menskalakan otomatis, seperti flapping. Untuk informasi selengkapnya, lihat dokumentasi berikut tentang praktik terbaik untuk Autoscale.
Sumber daya terkait
- Dokumentasi sumber daya
- Microsoft.OperationalInsights/workspaces
- Microsoft.Insights/components
- Microsoft.Insights/diagnosticSettings
- Microsoft.Insights/actionGroups
- Microsoft.Insights/scheduledQueryRules
- Microsoft.Insights/metricAlerts
- Microsoft.Portal/dashboards
- Microsoft.Insights/activityLogAlerts
- Microsoft.AlertsManagement/smartDetectorAlertRules.
- Microsoft.Insights/autoscaleSettings