Параметр подавления правил оповещений LogAnalytic

У нас есть более 1000 правил оповещений рабочей области аналитики журналов Azure, созданных с помощью шаблонов AzureRM и azurepiplines для наших различных проектов. ниже приведен шаблон ARM, используемый для создания всех этих правил оповещений, и у нас есть параметр «включено» для включения и отключения оповещений по мере необходимости.

Но для дальнейшего улучшения этой автоматизации мы пытаемся автоматизировать способ для наших разработчиков, чтобы они могли подавлять любые конкретные правила оповещений, срабатывающие в течение определенного времени с момента решения проблемы до момента ее решения, улучшая те же самые правила. шаблоны рук и сам подход к конвейеру. Кроме того, по истечении времени подавления оповещения должны перейти во включенное состояние и срабатывать при возникновении событий.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "actionGroupName": {
            "type": "string"
        },           
        "query": {
            "type": "string"
        },
        "logAnalyticsWorkspaceId": {
            "type": "string"
        },
        "AlertRuleName": {
            "type": "string"
        },    
        "tags": {
            "type": "object"
        },
        "schedule": {
            "type": "object"
        },       
        "severity": {
            "type": "int"           
        },                          
        "operator": {
            "type": "string"         
        },  
        "threshold": {
            "type": "int"
        },
        "autoMitigate": {
            "type": "string",
            "defaultValue": false
        },
        "enabled": {
            "type": "string"
        },        
        "customWebhookPayload": {
            "type": "object"
        },             
        "location": {
            "defaultValue": "[resourceGroup().location]",
            "type": "string"
        }    
},    
    "resources":[
        {
            "type":"Microsoft.Insights/scheduledQueryRules",
            "name": "[parameters('AlertRuleName')]",
            "apiVersion": "2018-04-16",
            "location": "[parameters('location')]",
            "tags": "[parameters('tags')]",            
            "properties":{
                "displayName": "[parameters('AlertRuleName')]",
                "description": "[parameters('AlertRuleName')]",
                "enabled": "[parameters('enabled')]",
                "source": {
                    "query": "[parameters('query')]",
                    "dataSourceId": "[parameters('logAnalyticsWorkspaceId')]",
                    "queryType":"ResultCount"
                },
                "schedule":"[parameters('schedule')]",
                "action":{
                    "odata.type": "Microsoft.WindowsAzure.Management.Monitoring.Alerts.Models.Microsoft.AppInsights.Nexus.DataContracts.Resources.ScheduledQueryRules.AlertingAction",
                    "severity": "[parameters('severity')]",
                    "aznsAction":{
                        "customWebhookPayload": "{ \"AlertRuleName\":\"#alertrulename\", \"AlertType\":\"#alerttype\", \"Severity\":\"#severity\", \"Application\":\"#{appname}#\", \"Text\":\"#alertrulename fired with #searchresultcount records. #{alertDescription}#\", \"SearchQuery\":\"#searchquery\" }",
                        "actionGroup": "[array(parameters('actionGroupName'))]"
                    },
                    "trigger":{
                        "thresholdOperator": "[parameters('operator')]",
                        "threshold": "[parameters('threshold')]"
                    }
                }
            }
        }
    ]
}

Привет @Vowneee! Согласно MS Doc, вы не можете добавить конфигурацию подавления непосредственно внутри шаблона оповещения ARM. Вместо этого вы можете подавить уведомления о предупреждениях, отключив правила оповещений в начале окна обслуживания и повторно включив их после завершения обслуживания с помощью командлета: Update-AzActivityLogAlert -ResourceGroupName "Automation_RG" -Name "Sample-Alert" -Enabled:$false (используйте $true для включения и $false для отключения).

Venkat V 20.08.2024 06:57

Вы можете использовать сценарий PowerShell здесь, чтобы включать и отключать несколько оповещений в начале окна обслуживания и повторно включать их после завершения обслуживания.

Venkat V 20.08.2024 07:20

@venkat, мы уже используем команду az cli для включения и отключения правил оповещений. Но это снова ручная задача, которая выходит за рамки нашей централизованной автоматизации создания правил оповещения. Кроме того, поскольку у нас есть более 1000 правил оповещений, созданных таким образом, использование другого способа отключения оповещений может привести к пропуску некоторых сценариев или элементов, что может потребовать дополнительных усилий для отслеживания статуса каждого правила оповещений.

Vowneee 20.08.2024 08:24

Чтобы автоматизировать этот процесс, вы также можете использовать Runbook автоматизации для запуска сценария в запланированное время, если вы уже знаете период обслуживания.

Venkat V 20.08.2024 08:30

Надеюсь, это поможет решить вашу проблему?

Venkat V 20.08.2024 11:46

Да... Это кажется очень полезным. Мы планируем использовать тот же конвейер Azure вместе с этим скриптом. Можете ли вы поделиться полным URL-адресом сценария? Кроме того, поскольку мы используем агенты на базе Linux, доступен ли такой же сценарий оболочки?

Vowneee 20.08.2024 12:27

Да, могу ли я опубликовать то же, что и ответ, со сценарием?

Venkat V 20.08.2024 12:32

Конечно... Пожалуйста, опубликуйте в качестве ответа

Vowneee 20.08.2024 16:09

Пробовали ли вы подход с передачей времени начала и окончания подавления в качестве параметров конвейера окна подавления. @Vowneee

Jahnavi 20.08.2024 17:49

@jhanvi. еще предстоит протестировать, так как мне нужно попробовать использовать сценарий Shell, а не сценарий PowerShell

Vowneee 20.08.2024 19:22
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
10
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот сценарий PowerShell, позволяющий отключить оповещение до тех пор, пока период обслуживания не закончится, и автоматически включить его после завершения обслуживания.

$resourceGroupName = "Automation_RG"
$alertRuleNames = @("Sample-Alert")  

function Disable-AlertRules {
    param (
        [string[]]$AlertRules
    )
    foreach ($alertRuleName in $AlertRules) {
        Write-Host "Disabling alert rule: $alertRuleName"
        Update-AzActivityLogAlert -ResourceGroupName $resourceGroupName -Name $alertRuleName -Enabled $false
    }
}
function Enable-AlertRules {
    param (
        [string[]]$AlertRules
    )
    foreach ($alertRuleName in $AlertRules) {
        Write-Host "Enabling alert rule: $alertRuleName"
        Update-AzActivityLogAlert -ResourceGroupName $resourceGroupName -Name $alertRuleName -Enabled $true
    }
}
Disable-AlertRules -AlertRules $alertRuleNames
Start-Sleep -Seconds 60
Enable-AlertRules -AlertRules $alertRuleNames

Write-Host "Maintenance completed. All specified alert rules have been re-enabled."

Скрипт автоматически отключит оповещение и снова включит его после завершения maintenance period. Вам необходимо указать время обслуживания с помощью команды Sleep.

Start-Sleep -Seconds 60

Bash-скрипт

#!/bin/bash
resourceGroupName = "Automation_RG"
alertRuleNames=("Sample-Alert")

# Function to disable alert 
disable_alert_rules() {
    for alertRuleName in "${alertRuleNames[@]}"; do
        echo "Disabling alert rule: $alertRuleName"
        az monitor activity-log alert update -g "$resourceGroupName" -n "$alertRuleName" --enable false
    done
}

# Function to enable alert 
enable_alert_rules() {
    for alertRuleName in "${alertRuleNames[@]}"; do
        echo "Enabling alert rule: $alertRuleName"
        az monitor activity-log alert update -g "$resourceGroupName" -n "$alertRuleName" --enabled true
    done
}
disable_alert_rules
# Wait for the maintanance period (in seconds)
sleep 60
enable_alert_rules
echo "Maintenance completed. All specified alert rules have been re-enabled."

Выход:

Значит, эта команда сна должна продолжать работать в серверной части? В наших случаях некоторые оповещения необходимо подавлять в течение нескольких недель, пока проблема не будет полностью решена, и таким образом мы можем получить несколько оповещений. Так возможно ли использовать этот вариант сна, поскольку его необходимо запускать на бэкэнде?

Vowneee 21.08.2024 07:43

Да, укажите период времени в состоянии сна, чтобы он срабатывал автоматически.

Venkat V 21.08.2024 07:57

кажется немного сложным, поскольку нам приходится автоматизировать это через конвейеры Azure, и это не кажется решением, позволяющим поддерживать выполнение команды сна в течение длительного времени.

Vowneee 21.08.2024 08:00

Вы также можете использовать функции Azure или Azure Logic Apps, чтобы автоматизировать включение и отключение оповещений, чтобы сделать их более масштабируемыми и управляемыми. Этот подход позволяет эффективно справляться с длительными периодами подавления и хорошо интегрируется с Azure Pipelines для бесперебойной работы CI/CD.

Venkat V 21.08.2024 08:08

Другие вопросы по теме