开始使用使用 Go SDK 的 Azure 数据资源管理器介绍如何使用Azure 数据资源管理器 Go SDK将 Azure 数据资源管理器的数据输入和查询到包含和查询数据。在此博客中,您将使用Azure Go SDK来管理 Azure 数据资源管理器群集和数据库。

Azure 数据资源管理器(也称为Kusto)是一种快速且可扩展的数据探索服务,用于分析来自任何数据源(如网站、应用程序、IoT 设备等)的大量不同数据。然后,此数据可用于诊断、监视、报告、机器学习和其他分析功能。

如果你想知道,我们在这里谈论两个不同的SDK。此博客中介绍的用于资源管理(也称为控制平面 SDK),而我在另一篇文章中使用的用于与 Azure 数据other post资源管理器服务本身交互的数据平面 SDK(引入、查询等)

涵盖内容?

一个简单的 CLI 应用程序用作示例,以演示如何使用 Go SDK。我们将先试用该应用程序,并了解如何:

  • 创建并列出 Azure 数据资源管理器群集
  • 在该群集中创建和列出数据库
  • 删除数据库和群集
Java

 

15
1
$ ./goadx-帮助
2
CLI用于测试Azure数据资源forAzure管理器的示例程序
3

4
用法
5
goadx [命令]
6

7
可用命令
群集创建、列出and和删除 Azure 数据资源管理器群集

9
db创建列表and并删除Azure数据资源an管理器群集中的数据库
10
帮助有关任何命令的帮助
11

12
标志
13
-h-help帮助for戈德克斯
15
使用"goadx [命令] -- 帮助"more了解有关about命令的更多信息

完成后,我们将演练示例代码,了解发生了什么

该代码可在GitHub https://github.com/abhirockzz/azure-go-sdk-for-dataexplorer

请注意,此基于 CLI 的示例只是为了演示如何使用 Azure Go SDK(在 Azure 数据资源管理器的上下文中)作为大型应用程序的一部分。它不应替换/替换可用于管理 Azure 数据资源管理器资源的 Azure CLI

先决条件

安装 Go 1.13 或以上

您将需要一个微软 Azure 帐户。继续注册一个免费的!

如果还没有 Azure CLI,请安装它(应该很快!

运行 CLI 应用程序

获取代码并生成它:

Java

 

x
1
 
1
git克隆https//github.com/abhirockzz/azure-go-sdk-for-dataexplorer
2
cdazure-go-sdk-forfor-数据探索器
3
构建-ogoadx
5
确认
6
chmoda=xgoadx&/戈德克斯

若要查看各个命令的详细信息,例如群集创建的详细信息,请查看:

Java

 

x
1
17
1
./goadx群集创建-帮助
2

3
输出
4

5
基本层创建computetype1 个计算类型 DevNoSLAStandd11V2inBasic的实例
6

7
用法
8

9

10
标志
11
-h-help 帮助for创建
12
--loc字符串 ADX群集位置
13
--名称字符串ADX群集名称
14

15
全局标志
--rg字符串 Azure 资源

17
--字符串Azure订阅

在创建群集之前,执行几个步骤...

创建资源组...

...使用az 组创建CLI 命令

Java

 

x
1

1
az创建-l<区域>-n<名称>
2

3
e.gaz创建-l东南 --n我的-adx-rg

我们需要 Go SDK的服务主体,使用 Azure 数据资源管理器服务进行身份验证,以执行群集和数据库操作。

创建服务主体...

...使用az ad sp 为 rbac 创建

Java

 

x
1
 
1
azadsp创建-for-rbac-n"测试数据 x - sp"

你会得到一个 Json 响应, 这样

Java

 

x
1
 
1
{
2
"appId""fe7280c7-5705-4789-b17f-71a472340429"
3
"显示名称""测试数据 x - sp"
4
"名字""http://test-datax-sp",
5
6
"租户""42f988bf -86f1-42af-91ab-2d7cd011db42"
7
}

将服务主体详细信息设置为环境变量。在代码演练过程中,您将了解为什么需要这些特定的变量

Java

 

X
1
 
导出AZURE_CLIENT_ID="<appId>"

2
导出AZURE_CLIENT_SECRET="<密码>"
3
导出AZURE_TENANT_ID="<租户>"

你们都好定了!

创建 Azure 数据资源管理器群集

Java

 

x
1

1
./nameoftheazureregionforthegoadxcluster群集创建 -- 名称<nameoftheclusteryou创建tocreate>--群集的loc<azure区域为群集 >--rg<资源组group>-<azure订阅ID> name

例如:

Java

 

x
1

1
./goadx 群集cluster创建-名称Myadxcluster-loc"东南亚"-rg-adx-rg-9a42a42f-ae42-4242-b6a7-eea0ea42d342

这将创建一个实例群集与 DevNoSLAStandardD11V2 VM

这是硬编码,为简单/易用

群集创建需要一些时间,并且该时间段的代码块。请耐心;)喝杯咖啡, 检查推特或做任何让你忙约 10 - 15 分钟的事情。创建群集后,您将看到以下消息:

Java

 

x
1

1
创建群集MyAdxClusterID/订阅/9a42a42f-ae42-4242-b6a7-eea0ea42d342/资源组/我的-adx-rg/提供商/微软.-库斯托/集群/MyAdxCluster类型微软库斯托/集群

列出所有群集

您刚刚创建了一个群集,让我们确保可以获取其信息(包括资源组中可能已经拥有的任何其他群集)

Java

 

x
1
 
1
./goadxofthecluster群集列表--rggroup<资源组>-name<azure订阅ID> sub

例如

Java

 

x
1
 
1
./goadx群集列表-rg我的-adx-rg-9a42a42f-ae42-4242-b6a7-eea0ea42d342

您将获得这样的表格输出:

Java

 

x
1
 
1
+---------------+---------+----------------+-----------+-------------------------------------------------------+
2
|名称 | 状态 |   位置 |实例|                         乌里 |
+---------------+---------+----------------+-----------+-------------------------------------------------------+

4
|Myadx 群集|正在运行|东南亚Asia|1|HTTPS//MyAdxCluster.southeastasia.kusto.windows.net |
5
+---------------+---------+----------------+-----------+-------------------------------------------------------+

您拥有群集,它的时间创建数据库

在群集中创建数据库

Java

 

X
1

1
./tocreategoadxdbofthedatabaseyougroupnameoftheclusternamesubcriptionclusterdb创建-- 名称<创建>--群集<nnameadx群集> ----loc<azure区域>--rg<资源组名称name>--<azure子描述ID>

例如

Java

 

x
1
 
1
./goadxdbcluster创建create-名称testadxdb-群集Myadxcluster-loc "东南亚"-rgmy-adx-rg-sub9a42a42f-ae42-4242-b6a7-eea42d342 loc
Java

 

x
1
 
1
创建DbMyadxcluster/testadxdbwithID/订阅/9a42a42f-ae42-4242-b6a7-providerseea0ea42d342/资源组/我的-adx-rg/提供商 /微软/

库斯托/集群/数据库

要检查您刚刚创建的 DB...

Java

 

x
1
 
1
/goadx of the db 列表-群集 <name adx群集的名称 > -rg <资源组名称 name> - <azure 订阅 ID>

例如

Java

 

x
1

1
./goadxdb列表-群集Myadxcluster-rg我的-adx-rg-9a42a42f-ae42-4242-b6a7-eea0ea42d342

您将获得这样的表格输出:

Java

 

x
1

1
+---------------------------+-----------+----------------+------------------------------------+
2
|名称 |状态|   位置 |               类型 |
3
+---------------------------+-----------+----------------+------------------------------------+
4
|MyAdxCluster/testadxdb|成功|东南亚Asia|微软.库斯托/集群/数据库|
5

您可以继续进一步试验并创建更多群集和/或数据库

清理时间...

您可以直接删除群集,这样:

Java

 

x
1
 
1
./goadxcluster群集删除nameof-名称<adx群集的名称 >-rg<资源group组名称>-<azure子描述ID>
x
1
 
1
./goadx群集删除-名称Myadxcluster-rg我的-adx-rg-9a42a42f-ae42-4242-b6a7-eea0ea42d342

x
1
 
1
资源组中删除Adx 群集 MyAdxclusterfromresourcegroupmy-adx-rg

或者,您可以删除数据库本身

Java

 

x
1
 
1
./goadxdb删除-名称<数据库名称>>-群集<adxcluster群集名称>--rg<资源group组名称>--<azure订阅ID>
x
1
 
1
./goadxdb 删除delete-名称testadxdb-cluster群集 Myadxcluster-rg-adx-rg-9a42a42f-ae42-4242-b6a7-eea0ea42d342

x
1
 
1
群集MyAdxclusterfrom中删除了 Db testadxdb

好了, 现在你能做什么, 是时候看看它是如何做到的了!

代码演练

在高级别上,应用程序由两部分组成:

  • Azure 数据资源管理器操作(创建、读取、删除) - 包的一 ops 部分
  • CLI 命令 - 包的一 cli 部分

老实说,CLI 位并不重要(至少在博客的上下文中)com/spf13/眼镜蛇"rel="nofollow"=眼镜蛇包来实现群集和群集(顶级)命令和子命令 - createlist delete 。如果您有兴趣,请看以下内容:

  • root.go - 定义 CLI 入口点的根命令
  • 群集.go - 定义和实现群集操作的子命令
  • db.go - 定义和实现数据库操作的子命令

CLI 部分只是调用 Azure 数据资源管理器资源的 CRUD 执行,这是重要部分。所以,让我们通过他们

认证

这在操作/客户端.go 中处理。若要获取客户端组件执行所需操作的句柄,我们需要进行身份验证。例如,要获取 kusto.ClustersClient

Java

 

x
1
10

1
funcgetClustersClient订阅字符串库斯托.群集Client |
2
客户端=库斯托.新集群 (订阅
3
authrerr错误:\auth.环境的新作者 ()
4
如果错误! []
5
日志致命错误
6
  }
客户端。授权者 = 身份验证

8

9
返回客户端
10
}

需要注意的部分是身份验证。NewAuthorizerFromEn环境()用于寻找一组预定义的环境变量 - 这是基于用户的环境身份验证

群集操作

ops/cluster.go是群集创建、列表和删除处理的地方。下面是用于创建的代码段:

Java

 

x
1
 
1
func创建群集群集名称位置rgName字符串) |
2
  ...
3
结果错误=客户端createorUpdatectxrgName群集名称kusto

AzureSku=名称kusto.DevNoSLAStandardD11V2 容量 : 和数字,库斯托.基本*)

4
错误=结果等待完成参考 (上下文.后台客户端客户
5
r错误=结果结果客户端
6
  ...
7
}

CreateOrUpdate用于启动群集创建。由于这是一个长期运行的操作,它 ClustersCreateOrUpdateFuture 返回一个我们他们等待(使用

请注意,我已使用 context.Background() ,您可以使用其他上下文 e,g 一个超时或一个可以取消。

一旦这是一个,我们检查未来Result

列出资源组中的所有群集非常简单,可以使用ListByResourceGroup

Java

 

x
1
 
1
群集列表结果|

2
ctx=上下文背景()
3

4
结果错误=getClustersClient) 。ListBy资源组 (ctxrgName
5
如果错误! []
6
日志致命错误.错误())
7
  }
8

9
}

Delete类似于 Create 在意义上,它是一个运行时间长的操作。其相同的钻 - 启动删除 (使用删除), 等待它完成,然后确认结果

Java

 

x
1
 
[func 删除群集 (群集名称rgName 字符串)]

2
  ...
3
结果错误=客户端删除ctxrgName群集名
4
错误=结果等待完成参考 (上下文.后台客户端客户
5
r错误=结果结果客户端
6
  ...
7

数据库操作

ops/db.go是数据库创建、列表和删除处理的地方。下面是用于创建的代码段:

Java

 

x
1
 
1

2
  ...
3
未来错误=客户端CreateOrUpdatectxrgNameclustername dbNamekusto.dbName阅读写数据库 =善良的库斯托KindReadWriteLocation位置和位置location*)
4
错误=未来等待完成参考 (上下文.后台客户端客户
5

6
r错误=未来结果客户端
7
AsReadwrite 数据库 ()

8
  ...
9
}

列表是直接的,由ListByCluster

Java

 

x
1

1
funcListDbsrgNameclusterName 字符串stringkusto.数据库列表结果|
2
ctx=上下文背景()
3
结果错误=getdbClient) 。ListByClusterctxrgName群集名
4
如果错误! []
5
日志致命("无法获取群集中的数据库"错误
  }

7
返回结果
8
}

最后,使用Delete

Java

 

x
1

1
funcDeleteDBrgName群集名称dbName字符串) |
2
  ...
3
未来错误=getdbClient) 。删除ctxrgName群集名称dbName
4
错误=未来等待完成参考 (上下文.后台客户端客户
5
r错误=未来结果客户端
Comments are closed.