设为首页 收藏本站
查看: 1148|回复: 0

[经验分享] [博客迁移]探索Windows Azure 监控和自动伸缩系列1

[复制链接]

尚未签到

发表于 2017-6-30 09:34:25 | 显示全部楼层 |阅读模式
  最近准备基于Microsoft Azure Management Libraries 实现虚拟机的监控。主要的需求就是获取虚拟机内置的性能计数器数据,基于性能计数器实现后续的监控和自动伸缩。
  作为这一票研究的第一篇,我们以连接中国区的Azure作为起步吧。
  通过Azure的订阅(Subscription)建立Azure的连接
  首先要有连接的凭据,通过代码验证,这里主要有两种连接凭据:令牌凭据(TokenCloudCredentials)和证书凭据(CertificateCloudCredentials)。
  我们主要介绍令牌凭据(TokenCloudCredentials):这里用到了Window Azure的OAuth认证,需要在Azure Manage Portal中允许我们的App访问Azure。
  微软提供了一个入门的链接,不过貌似不是针对咱们天朝的,同时有代码编译不通过的问题,可以参考一下:
  https://msdn.microsoft.com/en-us/zh-us/library/azure/dn722415.aspx
  整体上分为三步:


  • 在Azure AD(活动目录)中添加一个应用程序
  • 创建Project添加Nuget应用
  • 创建令牌连接Azure
  我们一步一步来:
  1. 在Azure AD中添加一个应用程序
  访问https://manage.windowsazure.cn,输入用户名和密码登录,用户必须有Active Dictionary权限。
  左边菜单倒数第二个Active Directory,选择对应的目录,点击应用程序(Applications)Tab选型卡,添加一个应用程序:AzureTestApp,类型是Native Client Application,Redirect URL设置为:http://localhost
DSC0000.png

DSC0001.png

DSC0002.png

DSC0003.png

DSC0004.png

DSC0005.png

  记得要保存:
DSC0006.png

  2. 创建Project添加Nuget引用
  这里使用Console工程好了,主要添加Microsoft Azure Management LibrariesActive Directory Authentication Library
  Package文件是这样的:
DSC0007.png

  3. 创建令牌连接Azure
  在创建令牌之前,我们需要先配置一下App.Config,将我们的订阅、应用程序信息、Login服务器、ApiEndPoint信息等,这些信息又用到了我们刚才创建的应用程序。
  微软给的msdn指导说明中是这样的:我们主要用前5个:
DSC0008.png

  有个疑问,这几个key主要用在哪,后续代码中大家一看就明白了。微软给的示例说明中的URL,很明显是Azure Global的,我们需要搞成中国的URL,其中
  login:https://login.chinacloudapi.cn/{0}
  apiEndpoint:https://management.core.chinacloudapi.cn/
  不要问我为什么,哥也是在鞠强老大的指导下,配置成这样的。
  然后,ClientID、tenantID从哪找呢?subscriptionId肯定是你的订阅的ID,比如:37a8***-5107-4f9b-***-a11***0226
DSC0009.png

DSC00010.png

DSC00011.png

  这样我们的App.Config就OK了,对了,还有一个redirectUri : http://localhost/
   DSC00012.png
  撸代码吧:
  访问App.Config肯定要添加System.configuration引用。
  为了方便凭据管理,我们设计一个Azure认证器类:Authorizator



namespace AzureTest
{
using System.Configuration;
using Microsoft.WindowsAzure;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
/// <summary>
/// Window Azure登录验证器
/// </summary>
class Authorizator
{
/// <summary>
/// 获取令牌凭据
/// </summary>
/// <returns>令牌凭据</returns>
public static TokenCloudCredentials GetCredentials(string subscriptionId = "")
{
var token = GetAccessToken();
if(string.IsNullOrEmpty(subscriptionId))
subscriptionId = ConfigurationManager.AppSettings["subscriptionId"];
var credential = new TokenCloudCredentials(subscriptionId, token);
return credential;
}
/// <summary>
/// 获取访问令牌
/// </summary>
/// <returns>访问令牌</returns>
private static string GetAccessToken()
{
AuthenticationResult result = null;
var context = new AuthenticationContext(string.Format(
ConfigurationManager.AppSettings["login"],
ConfigurationManager.AppSettings["tenantId"]));
result = context.AcquireToken(
ConfigurationManager.AppSettings["apiEndpoint"],
ConfigurationManager.AppSettings["clientId"],
new Uri(ConfigurationManager.AppSettings["redirectUri"]));
if (result == null)
{
throw new InvalidOperationException("Failed to obtain the JWT token");
}
return result.AccessToken;
}
}
}
  上面代码中,Azure连接认证就ok了,我们测试一下,应该弹出Azure登录验证界面:



static void Main(string[] args)
{            
var credential = Authorizator.GetCredentials();
client = new MonitorClient(credential);
client.GetMetricDefinitions();
Console.ReadLine();
}
DSC00013.png

  至此,Azure连接就可以了,上面代码中有些监控的代码,MonitorClient,我们将在下一篇中介绍如何获取VM的监控指标和监控数据。
  周国庆
  @济南 2016/3

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-389628-1-1.html 上篇帖子: Azure Service Febric 笔记:Web API应用 下篇帖子: Azure SQL DB容灾到本地脚本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表