我们使用以下 CLI 任务来停止和启动可用性测试警报规则和可用性测试。
但它注意到,有时,即使成功运行以下任务,某些警报规则/应用程序测试仍在门户上运行/停止。
当我们使用与 azuredevops 服务连接中使用的相同 ServicePrincipal 从服务器手动执行此 cli 命令时,它会停止。
- task: AzureCLI@2
displayName: "Stopping Availability Test and Alert ${{ availabilityTestprd.name }} in Production"
inputs:
azureSubscription: "xxxxxxxxxx"
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
echo "availabilityTestprd is ${{ availabilityTestprd.name }}"
echo "RG is ${{ availabilityTestprd.rg }}"
az config set extension.use_dynamic_install=yes_without_prompt
az monitor app-insights web-test update --name ${{ availabilityTestprd.name }} --resource-group ${{ availabilityTestprd.rg }} --enabled false
az monitor metrics alert update --enabled false --name ${{ availabilityTestprd.name }} --resource-group ${{ availabilityTestprd.rg }}
即使成功运行以下任务,警报规则/apptest 仍在门户上运行/停止。
上述情况是临时的,可能是由于 DevOps yaml 脚本管道的某些缓存问题或 CLI 命令执行问题而发生的。
您可以尝试在 yaml 脚本中包含测试条件,如此处的 endtest 博客 中详述。这些测试条件在命令执行后执行,并且如果任何冲突阻止了命令操作,还会提供准确的输出详细信息。
yaml
:
for i in {1..3};
do
status=$(az monitor metrics alert show --name firstalerts --resource-group caronew --query "disabled" -o tsv)
if [ $status == "true" ]
then
result=$status && echo "Successfully disabled"
elif [ $status == "false"]
echo "Failed" && break
else
exit 0
fi
done
我尝试创建一个 Web 测试并使用 Azure CLI 命令更新它,并且能够成功执行它,如下所示。
az monitor app-insights web-test create
az monitor app-insights web-test update --name my-webtest-my-component --resource-group caronew --location canadacentral --enabled false
还可以使用与 Azure CLI 中使用的相同命令禁用警报规则。
az monitor metrics alert update --enabled false --name firstalerts --resource-group caronew
注意:还可以尝试直接向 Azure App Insights 进行身份验证,而不是通过服务主体身份验证。如果服务主体没有必要的权限,则会导致此类冲突。