Azure 服务监控API调用
概述
在使用Azure的过程中,很多用户希望通过code的方式获取服务在管理门户中显示的监视信息,如虚拟机的CPU、服务总线的总消息出入数等。目前Azure的大部分服务都已经支持通过监控器的API查询和访问这些指标,使用过程中请使用2018-01-01 API版本。
本文首先介绍如何通过Rest API获取认证信息Authorization,然后以获取虚拟机CPU监控指标为示例演示
监控API的使用,最后介绍通过SDK获取监控。
获取认证Authorization(三种方式)
1、通过浏览器快速获取
在开发测试过程中,可以通过Chrome浏览器F12功能快速获取认证信息。
2、通过AD认证信息获取
关于AD应用的创建,请参考链接通过 PowerShell 获取认证凭据部分的创建示例脚本,当然也可以直接在Azure管理门户手动创建AD Application。如果是手动创建,请注意权限的授予问题,如果是第一次使用对门户不熟悉,请直接使用PowerShell脚本。
POST /b388b808-0ec9-4a09-a414-a7cbbd8b7e9b/oauth2/token?api-version=1.0 HTTP/1.1
Host: login.chinacloudapi.cn
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
Postman-Token: 5ea61bff-49b0-ec09-44bd-f9437d53932e
grant_type=client_credentials&resource=https%3A%2F%2Fmanagement.chinacloudapi.cn%2F&client_id=42c02c81-eff8-4dff-cc84-4e43b6ea8a6f&client_secret=123456

关于参数的获取,请参考创建AD应用脚本的说明。
3、通过账户名和秘钥获取
POST /common/oauth2/token?api-version=1.0 HTTP/1.1
Host: login.chinacloudapi.cn
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
Postman-Token: c35a61d2-e2af-28e9-36b2-70ef717c7013
grant_type=password&resource=https%3A%2F%2Fmanagement.chinacloudapi.cn%2F&username=tao.yu%40microsoftinternal.partner.onmschina.cn&password=123456&client_id=1950a258-227b-4e31-a9cf-717495945fc2

获取虚拟机CPU Rest请求示例
目前监控器已经支持的监控指标请参考Azure监控器支持的指标。
URL: https://management.chinacloudapi.cn/subscriptions/ecf1d1be-9348-434c-86ef-f903f7bb7001/resourceGroups/yuvmtest2/providers/Microsoft.Compute/virtualMachines/yuvmtest2/providers/microsoft.insights/metrics?metricnames=Percentage CPU&api-version=2018-01-01
Authorization:Bearer + 空格 + token

注意: Rest认证使用的是Bearer格式进行的认证,所以使用之前方式获取的token需要在前面加上"Bearer + 空格"
示例只是简单的演示了获取VM CPU的方式,用户可以根据自己的需要,调整请求的参数,获取其它类型资源的监控信息,当然也可以添加相应的过滤条件获取需要的信息。
更多示例请参考: Azure监控RESTAPI演练
使用C# SDK获取监控信息
目前关于Monitor的sdk还在Preview阶段,最新版本的sdk还无法使用VS安装。
可以安装预览版本:0.18.1-preview进行测试,(Install-Package Microsoft.Azure.Management.Monitor -Version 0.18.1-preview)
其它包的安装
Install-Package Microsoft.Rest.ClientRuntime.Azure.Authentication -Version 2.3.4
Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory -Version 3.19.8
下面的测试Code是在Net Core环境下进行的测试。
using System;
using System.Collections.Generic;
using Microsoft.Azure.Management.Monitor;
using Microsoft.Azure.Management.Monitor.Models;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using Microsoft.Rest.Azure.Authentication;
namespace GetAzureVmMonitor
{
namespace Vmtest
{
class Program
{
//对应虚拟机属性信息
private const string ResourceUri = "/subscriptions/ecf1d1be-9348-434c-86ef-f903f7bb7001/resourceGroups/yuvmtest2/providers/Microsoft.Compute/virtualMachines/yuvmtest2";
static void Main(string[] args)
{
//AD APPlication 信息
string domain = "b388b808-0ec9-4a09-a414-a7cbbd811e9b";
string clientId = "42c02c81-eff8-4df6-8884-4e43b6e11a6f";
string clientSecret = "123456";
//使用AD获取认证
var credentials = ApplicationTokenProvider.LoginSilentAsync(domain, new ClientCredential(clientId, clientSecret), ActiveDirectoryServiceSettings.AzureChina).Result;
//创建Monitor client对象
MonitorClient monitorClient = new MonitorClient(new Uri("https://management.chinacloudapi.cn"), credentials);
var actualMetrics = monitorClient.Metrics.List(resourceUri: ResourceUri,
metric: "Percentage CPU",
resultType: ResultType.Data
);
IEnumerable<Metric> value = actualMetrics.Value;
EnumerateMetrics(value);
Console.ReadKey(true);
}
/// <summary>
/// 打印输出部分结果
/// </summary>
/// <param name="metrics"></param>
/// <param name="maxRecords"></param>
private static void EnumerateMetrics(IEnumerable<Metric> metrics, int maxRecords = 5)
{
foreach (var metric in metrics)
{
Console.WriteLine(metric.Id);
foreach (var test in metric.Timeseries)
{
foreach (var data in test.Data)
{
Console.WriteLine(data.TimeStamp + " : " + data.Average);
}
Console.WriteLine("----------");
}
}
}
}
}
}
ResourceUri 对应管理门户虚拟机的Properties -> RESOURCE ID。
参考链接
Azure 服务监控API调用的更多相关文章
- k8s监控api调用
k8s监控api调用 curl -s --cacert /etc/kubernetes/ssl/ca.pem -basic -u fengjian:fengjian --insecure -X GET ...
- 通讯服务类API调用的代码示例合集:短信服务、手机号归属地查询、电信基站查询等
以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 短信服务:通知类和验证码短信,全国三网合一通道,5秒内到达,费用低 ...
- 出行服务类API调用的代码示例合集:长途汽车查询、车型大全、火车票查询等
以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 长途汽车查询:全国主要城市的长途汽车时刻查询,汽车站查询 车型大全 ...
- 如何通过Azure Service Management REST API管理Azure服务
通过本文你将了解: 什么是Azure Service Management REST API 如何获取微软Azure 订阅号 如何获取Azure管理证书 如何调用Azure Service Manag ...
- 关于一个服务和api监控的界面,涉及ajax-jsonp,promise应用
<!DOCTYPE html> <html class="mobile hairline" data-dpr=""> <head& ...
- 信鸽推送 .NET (C#) 服务端 SDK rest api 调用库(v1.2)
信鸽推送 .NET 服务端 SDK rest api 调用库-介绍 该版本是基于信鸽推送v2版本的时候封装的,先拿出来与大家分享,封装还还凑合,不依赖其他http调用件,唯一依赖json序列化dll ...
- 微服务 通过EnableFeignClients调用其他服务的api
今天在项目上遇到一个问题,通过当前service服务要调用到其他service服务的api接口时,可通过EnableFeignClients调用其他服务的api,大概的步骤如下: 1.在springb ...
- Azure 认知服务--计算机视觉 API - 分析图像
在本节中,笔者将详细介绍 Azure 认知服务中的一种:计算机视觉 (Computer Vision) API. 我的一个客户有需求,他们需要消费者与自己的产品合照,然后上传到服务器并转发到朋友圈. ...
- 反射实现Model修改前后的内容对比 【API调用】腾讯云短信 Windows操作系统下Redis服务安装图文详解 Redis入门学习
反射实现Model修改前后的内容对比 在开发过程中,我们会遇到这样一个问题,编辑了一个对象之后,我们想要把这个对象修改了哪些内容保存下来,以便将来查看和追责. 首先我们要创建一个User类 1 p ...
随机推荐
- 【点分治】【FFT】Gym - 101234D - Forest Game
存个求树上每种长度(长度定义为路径上点数)的路径条数的模板:num数组中除了长度为1的以外,都算了2次. 不造为啥FFT数组要开八倍. #include<cstdio> #include& ...
- 【二分】【字符串哈希】【二分图最大匹配】【最大流】XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem I. Minimum Prefix
给你n个字符串,问你最小的长度的前缀,使得每个字符串任意循环滑动之后,这些前缀都两两不同. 二分答案mid之后,将每个字符串长度为mid的循环子串都哈希出来,相当于对每个字符串,找一个与其他字符串所选 ...
- 【线段树(单点修改,区间求和)】HDU1166 - 敌军布阵
hdu1166 敌兵布阵,单点修改,区间求和. [ATTENTION]MAXN要开成节点数的4倍,开得不够会提示TLE. #include<iostream> #include<cs ...
- UVA 12284 Digital Matrix
思路:这个分清楚情况就很好做了. 注意一点当A的转置等于B的时候(对角线除外),记录A的下三角(或上三角)有cnt个的数与B不同,如果cnt>1则 不需要额外的步数就可以了,否则当k==2时结果 ...
- Mac下JAVA开发环境搭建
最近开始学习JAVA, 首先配置下环境! 1.Mac自带的jdk版本老了,需要到oracle官网去下载新的jdk,具体下载那个版本看个人需求,然后安装. 安装完成之后打开Terminal, 执行命 ...
- delphi AlphaControls
http://blog.csdn.net/akof1314/article/details/7076804
- easyui combobox可编辑的情况下,只能首字母开始过滤的问题选项
esayui中的combobox下拉列表在可编辑的情况下可以输入内容来过滤下拉框的选项,而1.4.2版本只能在从首字母开始过滤例如其中一个选项是"test", 只能输入" ...
- asp.net core 系列之允许跨越访问(Enable Cross-Origin Requests:CORS)
这篇文章介绍如何允许跨域访问 浏览器安全不允许不同域名的网页之间发送请求.这种限制叫做同源策略(the same-origin policy). 同源策略可以防止一个恶意的站点读取另一个站点的敏感数据 ...
- Bayesian statistics
文件夹 1Bayesian model selection贝叶斯模型选择 1奥卡姆剃刀Occams razor原理 2Computing the marginal likelihood evidenc ...
- LeetCode56:Jump Game
Given an array of non-negative integers, you are initially positioned at the first index of the arra ...
