新建自定义查询
新建自定义查询
- 登录管理控制台。
 - 单击页面左上角的
图标,在弹出的服务列表中,选择“管理与监管”下的“配置审计 Config”,进入“资源清单”页面。 - 单击页面左侧的“高级查询”,进入“高级查询”页面。
 - 选择“自定义查询”页签,单击页面右上角的“新建查询”。
    
    
    图1 新建查询
     - 在“查询编辑器”的输入框中输入查询语句。
    
    
页面左侧为高级查询使用的Schema信息,也就是查询语句中properties参数需要填写的内容,为各个云服务资源类型的详细属性。查询语句的配置样例请参见高级查询配置样例。
 - 单击“保存查询”,输入查询名称和描述。
    
    
查询名称仅支持输入数字、英文字母、下划线和中划线,最大长度64个字符。
 - 单击“确定”,保存成功。
    
    图2 保存查询
    
 
     如果自定义查询达到限额时,您将无法单击“保存查询”,同时页面右上方提示“您创建的查询已达到上限,请删除暂不需要使用的查询”。但此时您依然可以单击“运行”,直接运行查询并查看和导出查询结果。
 - 单击“运行”,查看查询结果。目前只支持展示和导出前4000条查询结果。
 - 单击查询结果列表上方的“导出”,选择要导出的文件格式(CSV格式或JSON格式),可导出查询结果。
 - 单击“历史执行记录”,可查看该查询历史执行的时间和查询语句等信息。
    
    
您可以基于历史执行记录进行如下操作:
- 再次运行:直接基于历史查询语句再次运行查询。
 - 复制:复制历史查询语句。
 - 保存:直接将历史查询语句保存为新的自定义查询。
 
 
     当您关闭浏览器窗口或登出账号后,高级查询的历史执行记录将被清除。
图3 历史执行记录
     
高级查询配置样例
ResourceQL使用结构化查询语言(SQL) SELECT语法的子集来对当前云资源配置数据进行查询和关联查询。用户无需调用特定API来实现,也无需通过多个API下载全量数据并手动分析。ResourceQL仅支持从表resources中查询数据。
| 
        资源参数  | 
      
        参数类型  | 
      
        含义  | 
     
|---|---|---|
| 
        id  | 
      
        String  | 
      
        资源ID  | 
     
| 
        name  | 
      
        String  | 
      
        资源名称  | 
     
| 
        provider  | 
      
        String  | 
      
        云服务名称  | 
     
| 
        type  | 
      
        String  | 
      
        资源类型  | 
     
| 
        region_id  | 
      
        String  | 
      
        区域ID  | 
     
| 
        project_id  | 
      
        String  | 
      
        项目ID  | 
     
| 
        ep_id  | 
      
        String  | 
      
        企业项目ID  | 
     
| 
        checksum  | 
      
        String  | 
      
        资源详情校验码  | 
     
| 
        created  | 
      
        Date  | 
      
        资源创建时间  | 
     
| 
        updated  | 
      
        Date  | 
      
        资源更新时间  | 
     
| 
        provisioning_state  | 
      
        String  | 
      
        资源操作状态  | 
     
| 
        tag  | 
      
        Array(Map<String,String>)  | 
      
        资源Tag  | 
     
| 
        properties  | 
      
        Map<String,Object>  | 
      
        资源详细属性  | 
     
用例参考如下:
- 示例1:查询关机状态的弹性云服务器名称
    
SELECT name FROM resources WHERE provider = 'ecs' AND type = 'cloudservers' AND properties.status = 'SHUTOFF'
 
- 示例2:查询特定规格的云硬盘
    
SELECT * FROM resources WHERE provider = 'evs' AND type = 'volumes' AND properties.size = 100
 - 示例3:对象存储桶模糊查询
    
SELECT * FROM resources WHERE provider = 'obs' AND type = 'buckets' AND name LIKE '%figure%'
 - 示例4:查询ECS资源及其关联的EVS资源
    
SELECT ECS_EVS.id AS ecs_id, EVS.id AS evs_id FROM ( SELECT id, evs_id FROM ( SELECT id, transform(properties.ExtVolumesAttached, x -> x.id) AS evs_list FROM resources WHERE provider = 'ecs' AND type = 'cloudservers' ) ECS CROSS JOIN UNNEST(evs_list) AS t (evs_id) ) ECS_EVS, ( SELECT id FROM resources WHERE provider = 'evs' AND type = 'volumes' ) EVS WHERE ECS_EVS.evs_id = EVS.id - 示例5:查询ECS资源名称及其关联的弹性公网IP地址
    
SELECT ECS.id AS ECS_id, publicIpAddress AS ip_address FROM ( SELECT id, transform(properties.addresses, x -> x.addr) AS ip_list FROM resources WHERE provider = 'ecs' AND type = 'cloudservers' ) ECS, ( SELECT name, properties.publicIpAddress FROM resources WHERE provider = 'vpc' AND type = 'publicips' AND properties.type = 'EIP' AND properties.status = 'ACTIVE' ) EIP WHERE CONTAINS (ECS.ip_list, EIP.name) - 示例6:查询每个区域内数量大于100的资源类型
    
WITH counts AS ( SELECT region_id, provider, type, count(*) AS number FROM resources GROUP BY region_id, provider, type ) SELECT * FROM counts WHERE number > 100查询语句的详细介绍,请参见ResourceQL语法。
 
    
      
