отображать только определенные ресурсы по типу с помощью kusto в Resource Graph Explorer

У меня проблема с отображением определенных ресурсов с помощью запроса azure kusto.

я хочу написать запрос kusto, который показывает только ресурсы базы данных и ресурсы сервера в лазурном режиме.

Я написал следующий запрос по базам данных:

resources
| where type in ("microsoft.sql/servers/databases","microsoft.dbforpostgresql/servers","microsoft.azuredata/postgresinstances","microsoft.dbformariadb/servers","microsoft.dbformysql/flexibleservers","microsoft.dbformysql/servers","microsoft.dbforpostgresql/flexibleservers","microsoft.dbforpostgresql/servergroups","microsoft.kusto/clusters/databases","microsoft.sql/managedinstances/databases","microsoft.synapse/workspaces/sqldatabases","ravenhq.db/databases","microsoft.documentdb/databaseaccounts")
| summarize Amount=count() by type

Но когда я выполняю запрос, он показывает мне две базы данных, хотя я создал только одну, дополнительная - это "главная", которую не следует включать, потому что в группе ресурсов есть только один ресурс.

Я также пробовал выполнить следующий запрос:

resources
| where type contains "database" | distinct type
| summarize Amount=count() by type

Но проблема в том, что он не включает все базы данных, в названии типа которых нет слова "база данных", например "microsoft.azuredata/postgresinstances".

Итак, вопрос в том, как мне написать запрос, который показывает ВСЕ базы данных на моей панели инструментов.

Вторая часть вопроса, аналогичная предыдущему с базами данных, заключается в том, как я показываю все серверы. Я пробовал со следующими запросами:

resources
| where split(type,"/")[array_length(split(type,"/"))] contains "servers"

это не дало мне никакого результата, хотя у меня был сервер. тогда я попробовал:

resources
| where type contains "/server" | distinct type
| summarize Amount=count() by type

это не сработало, потому что оно также вернуло все ресурсы базы данных, связанные с рабочим "сервером"

Я пытался просмотреть документацию микрософтов, но не могу понять, что делать.

1 ответ

Решение

Если вам не нужны основные базы данных (которые хранят данные системного уровня в базах данных SQL, вы можете просто отфильтровать их:

resources
| where type in ("microsoft.sql/servers/databases","microsoft.dbforpostgresql/servers","microsoft.azuredata/postgresinstances","microsoft.dbformariadb/servers","microsoft.dbformysql/flexibleservers","microsoft.dbformysql/servers","microsoft.dbforpostgresql/flexibleservers","microsoft.dbforpostgresql/servergroups","microsoft.kusto/clusters/databases","microsoft.sql/managedinstances/databases","microsoft.synapse/workspaces/sqldatabases","ravenhq.db/databases","microsoft.documentdb/databaseaccounts")
| where name type != "microsoft.sql/servers/databases" or name != "master"
| summarize Amount=count() by type

Что касается второго вопроса, это должно работать, так как has оператор будет соответствовать только целым токенам (и косая черта разделяет токены):

resources | where type has "servers"
Другие вопросы по тегам