如何通过PowerShell或编程语言获取Log Analytics工作区的摄入容量?
获取Log Analytics工作区的表及摄入容量数据
以下几种方法可以满足你获取工作区表列表及对应摄入容量数据的需求:
1. 运行Kusto查询直接统计摄入数据
在Log Analytics工作区的查询界面执行以下Kusto语句,可按表统计指定时间范围内的总摄入字节数:
Usage | where TimeGenerated > ago(30d) // 可修改时间范围,比如ago(7d)表示过去7天 | where Quantity > 0 | summarize TotalIngestedBytes = sum(Quantity) by DataType | sort by TotalIngestedBytes desc
查询结果会返回每个表的名称(DataType)和对应的总摄入字节数,直观呈现各表的容量消耗。
2. 使用PowerShell获取所有表的基础信息
更新你的Az.OperationalInsights模块到最新版本后,执行以下命令获取工作区所有表的配置信息(包括是否启用摄入、保留天数等):
Get-AzOperationalInsightsTable -ResourceGroupName "RG_name" -WorkspaceName "WS_name" | Select-Object Name, IngestionEnabled, RetentionInDays, TotalRetentionInDays
将此命令的结果和上述Kusto查询的摄入数据结合,就能得到完整的表汇总信息。
3. 调用Azure Management API获取详细表数据
如果需要自动化批量获取多个工作区的数据,可通过REST API调用实现,示例PowerShell脚本如下:
$subscriptionId = "你的订阅ID" $rgName = "RG_name" $wsName = "WS_name" # 获取Azure访问令牌 $accessToken = (Get-AzAccessToken -ResourceUrl "https://management.azure.com/").Token # 构建API请求 $apiUri = "https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$rgName/providers/Microsoft.OperationalInsights/workspaces/$wsName/tables?api-version=2021-12-01-preview" $headers = @{ "Authorization" = "Bearer $accessToken" } # 发起请求并提取数据 $tableData = Invoke-RestMethod -Uri $apiUri -Headers $headers -Method Get $tableData.value | Select-Object name, @{Name="IngestionStatus"; Expression={$_.properties.plan}}, @{Name="RetentionDays"; Expression={$_.properties.retentionPolicy.retentionInDays}}
内容的提问来源于stack exchange,提问作者samauces
相关产品推荐
相关产品推荐

