Azure 门户自定义磁贴 - Markdown 磁贴
Azure Portal Custom Tiles - Markdown tile
是否可以在 Azure 仪表板中显示自定义信息?
我正在搜索如何在 azure 仪表板中添加自定义内容,但没有找到任何内容。唯一接近的是允许显示 html 的降价图块。
考虑到这一点,经过大量挖掘,我找到了解决方案:
基本上我们需要一个自定义磁贴来显示从我们的 REST api 检索到的数据。
1.在新的或现有的仪表板上创建一个新的空 'Markdown' 磁贴,给它一个 'Title'
2。共享仪表板
3。导航到所有服务,在 ResourceGroup 过滤器 中按 'dashboards' 过滤
- 单击包含 'Markdown' 磁贴的仪表板
- 记下 'RESOURCE ID'
在我们的方案中,我们使用了 Azure 自动化 Runbook。在这种情况下,我们使用了 Azure 资源管理器 REST api.
4.创建一个新的 RunBook [Powershell Runbook]
以下步骤涉及以下内容:
- 登录到 ResourceManagerAPI
- 通过 ID [上面的资源 ID] 获取 Azure 资源
- 通过 ID [上面的资源 ID]
更新 Azure 资源
在继续之前,我们需要获取客户端凭据。为此:
- 单击门户菜单栏中的 Cloud Shell
- 输入 'az'
- 输入 'az ad sp create-for-rpac -n "runbooks"' //运行books 只是一个名字,随意输入不同的字符串
- 上述命令应列出所需的凭据。如果发生错误,请联系您的 Azure 管理员并从他们的帐户中 运行。
5.在空的 powershell 运行book 中,添加以下 2 个变量:
$ExpectedTileName = "Extension/HubsExtension/PartType/MarkdownPart"
$MarkdownTileTitle = "<The Markdown title you've set in the first step>"
6.获取 Access_Token [变量 <> 表示从上一步检索到的值]
#Get Bearer Token
$TenantId = '<Your tenantID>'
$LoginUri = "https://login.microsoftonline.com/"+$TenantId+"/oauth2/token"
$params = @{
"grant_type"="client_credentials";
"client_id"="<appId>";
"client_secret"="<password>";
"resource"="https://management.azure.com";
}
$LoginResponse = Invoke-RestMethod -Uri $LoginUri -Method Post -Body $params
$Access_Token = $LoginResponse.access_token;
$Access_TokenString = "Bearer " + $Access_Token
7.通过 ResourceID 获取 DashboardResource:
#Get Resource
$RMUri = "https://management.azure.com/"+ $DashboardId +"?api-version=2015-08-01-preview"
$DashboardResource = (Invoke-RestMethod -Uri $RMUri -Method Get -Headers @{'Authorization'=$Access_TokenString}) | ConvertTo-Json -Depth 100 | ConvertFrom-Json
8.遍历仪表板中的所有磁贴。请注意,图块不包含在数组中,因此您可能需要 increase/decrease for 循环的长度。
#Loop through all tiles within the dashboard
$Parts = $DashboardResource.properties.lenses.0.0.parts
For ($i=0; $i -lt 200; $i++)
{
$Part = $Parts | Select-Object -Property $i.toString()
if($Part.$i)
{
if($Part.$i.metadata.type -eq $ExpectedTileName -And $Part.$i.metadata.settings.content.settings.title -eq $MarkdownTileTitle)
{
$Part.$i.metadata.settings.content.settings.content = <CustomValue ex: invoke a get request to your api>
}
}
else
{
break
}
}
9.最后我们需要更新仪表板资源
#Update Resource
$UpdateUri = "https://management.azure.com/"+ $DashboardId +"?api-version=2015-08-01-preview"
$JsonValue = $DashboardResource | ConvertTo-Json -Depth 100
Invoke-RestMethod -Uri $UpdateUri -Method Put -Headers @{'Authorization'=$Access_TokenString; 'Content-type'='application/json'} -Body $JsonValue
总结一下:
$ExpectedTileName = "Extension/HubsExtension/PartType/MarkdownPart"
$MarkdownTileTitle = "<The Markdown title you've set in the first step>"
#Get Bearer Token
$TenantId = '<Your subscriptionID>'
$LoginUri = "https://login.microsoftonline.com/"+$TenantId+"/oauth2/token"
$params = @{
"grant_type"="client_credentials";
"client_id"="<appId>";
"client_secret"="<password>";
"resource"="https://management.azure.com";
}
$LoginResponse = Invoke-RestMethod -Uri $LoginUri -Method Post -Body $params
$Access_Token = $LoginResponse.access_token;
$Access_TokenString = "Bearer " + $Access_Token
#Get Resource
$RMUri = "https://management.azure.com/"+ $DashboardId +"?api-version=2015-08-01-preview"
$DashboardResource = (Invoke-RestMethod -Uri $RMUri -Method Get -Headers @{'Authorization'=$Access_TokenString}) | ConvertTo-Json -Depth 100 | ConvertFrom-Json
#Loop through all tiles within the dashboard
$Parts = $DashboardResource.properties.lenses.0.0.parts
For ($i=0; $i -lt 200; $i++)
{
$Part = $Parts | Select-Object -Property $i.toString()
if($Part.$i)
{
if($Part.$i.metadata.type -eq $ExpectedTileName -And $Part.$i.metadata.settings.content.settings.title -eq $MarkdownTileTitle)
{
$Part.$i.metadata.settings.content.settings.content = <CustomValue ex: invoke a get request to your api>
}
}
else
{
break
}
}
#Update Resource
$UpdateUri = "https://management.azure.com/"+ $DashboardId +"?api-version=2015-08-01-preview"
$JsonValue = $DashboardResource | ConvertTo-Json -Depth 100
Invoke-RestMethod -Uri $UpdateUri -Method Put -Headers @{'Authorization'=$Access_TokenString; 'Content-type'='application/json'} -Body $JsonValue
结论
有了这本新创建的 运行 图书,我们现在可以将其安排为每 1 小时 运行 一次。在我们的例子中,1 小时太多了。下面的文章展示了我们如何安排 运行本书每 1 分钟 运行。
是否可以在 Azure 仪表板中显示自定义信息? 我正在搜索如何在 azure 仪表板中添加自定义内容,但没有找到任何内容。唯一接近的是允许显示 html 的降价图块。
考虑到这一点,经过大量挖掘,我找到了解决方案:
基本上我们需要一个自定义磁贴来显示从我们的 REST api 检索到的数据。
1.在新的或现有的仪表板上创建一个新的空 'Markdown' 磁贴,给它一个 'Title'
2。共享仪表板
3。导航到所有服务,在 ResourceGroup 过滤器 中按 'dashboards' 过滤 - 单击包含 'Markdown' 磁贴的仪表板 - 记下 'RESOURCE ID'
在我们的方案中,我们使用了 Azure 自动化 Runbook。在这种情况下,我们使用了 Azure 资源管理器 REST api.
4.创建一个新的 RunBook [Powershell Runbook]
以下步骤涉及以下内容: - 登录到 ResourceManagerAPI - 通过 ID [上面的资源 ID] 获取 Azure 资源 - 通过 ID [上面的资源 ID]
更新 Azure 资源在继续之前,我们需要获取客户端凭据。为此: - 单击门户菜单栏中的 Cloud Shell - 输入 'az' - 输入 'az ad sp create-for-rpac -n "runbooks"' //运行books 只是一个名字,随意输入不同的字符串 - 上述命令应列出所需的凭据。如果发生错误,请联系您的 Azure 管理员并从他们的帐户中 运行。
5.在空的 powershell 运行book 中,添加以下 2 个变量:
$ExpectedTileName = "Extension/HubsExtension/PartType/MarkdownPart"
$MarkdownTileTitle = "<The Markdown title you've set in the first step>"
6.获取 Access_Token [变量 <> 表示从上一步检索到的值]
#Get Bearer Token
$TenantId = '<Your tenantID>'
$LoginUri = "https://login.microsoftonline.com/"+$TenantId+"/oauth2/token"
$params = @{
"grant_type"="client_credentials";
"client_id"="<appId>";
"client_secret"="<password>";
"resource"="https://management.azure.com";
}
$LoginResponse = Invoke-RestMethod -Uri $LoginUri -Method Post -Body $params
$Access_Token = $LoginResponse.access_token;
$Access_TokenString = "Bearer " + $Access_Token
7.通过 ResourceID 获取 DashboardResource:
#Get Resource
$RMUri = "https://management.azure.com/"+ $DashboardId +"?api-version=2015-08-01-preview"
$DashboardResource = (Invoke-RestMethod -Uri $RMUri -Method Get -Headers @{'Authorization'=$Access_TokenString}) | ConvertTo-Json -Depth 100 | ConvertFrom-Json
8.遍历仪表板中的所有磁贴。请注意,图块不包含在数组中,因此您可能需要 increase/decrease for 循环的长度。
#Loop through all tiles within the dashboard
$Parts = $DashboardResource.properties.lenses.0.0.parts
For ($i=0; $i -lt 200; $i++)
{
$Part = $Parts | Select-Object -Property $i.toString()
if($Part.$i)
{
if($Part.$i.metadata.type -eq $ExpectedTileName -And $Part.$i.metadata.settings.content.settings.title -eq $MarkdownTileTitle)
{
$Part.$i.metadata.settings.content.settings.content = <CustomValue ex: invoke a get request to your api>
}
}
else
{
break
}
}
9.最后我们需要更新仪表板资源
#Update Resource
$UpdateUri = "https://management.azure.com/"+ $DashboardId +"?api-version=2015-08-01-preview"
$JsonValue = $DashboardResource | ConvertTo-Json -Depth 100
Invoke-RestMethod -Uri $UpdateUri -Method Put -Headers @{'Authorization'=$Access_TokenString; 'Content-type'='application/json'} -Body $JsonValue
总结一下:
$ExpectedTileName = "Extension/HubsExtension/PartType/MarkdownPart"
$MarkdownTileTitle = "<The Markdown title you've set in the first step>"
#Get Bearer Token
$TenantId = '<Your subscriptionID>'
$LoginUri = "https://login.microsoftonline.com/"+$TenantId+"/oauth2/token"
$params = @{
"grant_type"="client_credentials";
"client_id"="<appId>";
"client_secret"="<password>";
"resource"="https://management.azure.com";
}
$LoginResponse = Invoke-RestMethod -Uri $LoginUri -Method Post -Body $params
$Access_Token = $LoginResponse.access_token;
$Access_TokenString = "Bearer " + $Access_Token
#Get Resource
$RMUri = "https://management.azure.com/"+ $DashboardId +"?api-version=2015-08-01-preview"
$DashboardResource = (Invoke-RestMethod -Uri $RMUri -Method Get -Headers @{'Authorization'=$Access_TokenString}) | ConvertTo-Json -Depth 100 | ConvertFrom-Json
#Loop through all tiles within the dashboard
$Parts = $DashboardResource.properties.lenses.0.0.parts
For ($i=0; $i -lt 200; $i++)
{
$Part = $Parts | Select-Object -Property $i.toString()
if($Part.$i)
{
if($Part.$i.metadata.type -eq $ExpectedTileName -And $Part.$i.metadata.settings.content.settings.title -eq $MarkdownTileTitle)
{
$Part.$i.metadata.settings.content.settings.content = <CustomValue ex: invoke a get request to your api>
}
}
else
{
break
}
}
#Update Resource
$UpdateUri = "https://management.azure.com/"+ $DashboardId +"?api-version=2015-08-01-preview"
$JsonValue = $DashboardResource | ConvertTo-Json -Depth 100
Invoke-RestMethod -Uri $UpdateUri -Method Put -Headers @{'Authorization'=$Access_TokenString; 'Content-type'='application/json'} -Body $JsonValue
结论 有了这本新创建的 运行 图书,我们现在可以将其安排为每 1 小时 运行 一次。在我们的例子中,1 小时太多了。下面的文章展示了我们如何安排 运行本书每 1 分钟 运行。