0

我的同事使用下面的 powershell 查询来检索过去 4 天(不包括今天)的日志数据,这些数据匹配资源的操作并收集诸如 EventTimeStamp、Caller、SubscriptionId 等功能。

Get-AzureRmLog -StartTime (Get-Date).AddDays(-4) -EndTime (Get-Date).AddDays(-1) | Where-Object {$_.OperationName.LocalizedValue -match "Start|Stop|Restart|Create|Update|Delete"} |
Select-Object EventTimeStamp, Caller, SubscriptionId, @{name="Operation"; Expression = {$_.operationname.LocalizedValue}},

我是 azure 的新手,想生成一个报告,我还可以在该报告中获取过去 90 天内资源的“标签”名称和值。对此的 powershell 查询将是什么?我也可以使用 python 来查询这些数据吗?我尝试搜索文档但无法深入研究,因此如果有人可以将我重定向到正确的位置,那将会很有帮助。

4

1 回答 1

1

首先,您应该知道并非所有 azure 资源都可以指定标签,因此您应该在代码中考虑这一点。请参阅Azure 资源的标记支持以检查哪个 azure 资源支持标记。

对于 powershell 查询,我建议使用新的 azure powershell az 模块而不是旧的azureRM 模块

这是一个带有az module的简单 powershell 代码。出于测试目的,我只介绍如何获取标签并将其添加到输出中。请随时根据您的要求进行更改。

#for testing purpose, I just get the azure activity logs from a specified resource group
$mylogs = Get-AzLog -ResourceGroupName "a resource group name"

foreach($log in $mylogs)
{   

    if(($log.Properties.Content.Values -ne $null))
    {
        #the tags is contains in the Properties of the log entry.
        $s = $log.Properties.Content.Values -as [string]
        if($s.startswith("{"))
        {
            $log | Select-Object EventTimeStamp, Caller, SubscriptionId,@{name="Operation"; Expression = {$_.operationname.LocalizedValue}}, @{name="tags"; Expression = {($s | ConvertFrom-Json).tags}}      
        }
        #if it does not contains tags.
        else
        {
            $log | Select-Object EventTimeStamp, Caller, SubscriptionId,@{name="Operation"; Expression = {$_.operationname.LocalizedValue}}, @{name="tags"; Expression = {""}}
        }
    }
    #if it does not contains tags.
    else
    {
        $log | Select-Object EventTimeStamp, Caller, SubscriptionId,@{name="Operation"; Expression = {$_.operationname.LocalizedValue}}, @{name="tags"; Expression = {""}}
    }

    Write-Output "************************"
}

测试结果:

在此处输入图像描述

对于 python,您可以查看这个 github 问题,该问题介绍了如何从 azure 活动日志中获取日志,但您需要对如何向输出添加标签进行一些研究。

希望能帮助到你。

于 2020-05-15T08:00:42.333 回答