如何借助Google资源关联SQL Server与运行它的GCE并生成资源报告?
针对你遇到的问题,这里有几个实际可行的方案,帮你精准定位运行SQL Server的GCE实例:
给GCE实例添加自定义元数据标签
直接给运行SQL Server的GCE实例打上明确的元数据标签(比如db_type: sqlserver),之后在BigQuery的资产查询里,就可以通过筛选ASSET_TYPE = "compute.googleapis.com/Instance",并提取RESOURCE.DATA.metadata.items中的键值对来精准匹配。示例查询片段:SELECT name, resource.data.metadata.items FROM `your-project.your-dataset.asset_export` WHERE asset_type = 'compute.googleapis.com/Instance' AND EXISTS ( SELECT 1 FROM UNNEST(resource.data.metadata.items) WHERE key = 'db_type' AND value = 'sqlserver' )通过Cloud Monitoring指标关联
SQL Server运行时会产生特定的监控指标(比如sqlserver.database.transaction_count),你可以把Cloud Monitoring的指标数据导出到BigQuery,然后通过GCE实例的instance_id关联这些指标数据,筛选出有SQL Server指标上报的实例,以此确定哪些GCE在运行SQL Server。利用Cloud Asset Inventory的关系导出
除了导出RESOURCES,可以试试导出RELATIONSHIPS类型的资产数据,命令如下:gcloud asset export \ --content-type=RELATIONSHIPS \ --project=your-project-id \ --bigquery-dataset=your-bq-dataset \ --output-path=gs://your-bucket/temp-export这份数据会包含资源之间的依赖关系,比如SQL Server使用的磁盘、网络资源和对应GCE实例的关联,你可以通过关系链反向定位到对应的GCE实例。
结合操作系统层面的检测日志
在GCE实例上部署简单的脚本,定期检测SQL Server服务是否运行,然后将实例ID和检测结果上报到Cloud Logging,再把日志导出到BigQuery,和资产表关联后就能明确哪些实例在运行SQL Server。
内容的提问来源于stack exchange,提问作者Dave

