本文是Azure Application Insights REST API的简单介绍,并会包含一个通过Python消费API的示例/小工具。

新加入的team中的一项工作是制作日常的运维报表,制作方式是手工前往portal.azure.com,在网页中多次执行不同的查询语句、导出excel,之后再人工进行合并、分组、汇总、分析等等。这是一个繁琐的过程,其中大部分步骤其实不值得花费人工,应该交给程序。为了自动化这一过程,降低报表的制作成本,我尝试使用了Azure Application Insights REST API查询数据,使用python客户端进行处理、输出。下面把相关的一些知识和经验写在这里。

本文链接:https://www.cnblogs.com/hhelibeb/p/11543295.html

原创内容,转载请注明

Application Insights

Application Insights是Azure平台的监控功能的一部分,用于收集、分析和处理来自Azure或其它本地环境的遥测数据。它包含强有力的分析工具,可以帮助你发现问题、诊断问题、理解用户在app上的行为,可以支持你持续地改进应用的性能和可用性。它可以和DevOps过程集成,和很多开发工具有连接点。

它支持多种语言和框架,比如.NET, Java, 和Node.js等。

更多信息,参考:What is Application Insights?

Application Insights REST API

除了在Azure中使用外,Application Insights收集的数据也可以通过REST API获取,这使得你可以用自己的其它应用来使用相关数据。API可以分为3种:

  1. Metrics: 用于查询聚合结果,比如一定时间范围内的系统异常总数量。

  2. Events: 使用OData语法访问event数据,支持$filter, $orderBy, $search, $apply, $top, $skip and $format,可以返回单独的event数据或者event集的聚合数据。

  3. Query: 允许用户发送和在Application Insights Analytics中一样的Query查询数据,返回数据的同时也会返回数据的schema。这是我用到的类型。

格式

API的格式如下,

其中,

  1. hostname: api.applicationinsights.io

  2. resource: Application ID ,也就是你的Application Insights app的唯一标识符,可以在app的API Access选项中看到,见下图。(注意:这不是Instrumentation Key,不要用错)

  3. api-version: 路径中需要包含API versions,Beta或v1。

  4. area: 3中查询类型之一metrics, events或query。

  5. path: 查询的详细信息,比如要查询哪个metric。

  6. parameters: 和path相关的具体参数。

(这里是有关Public API format的部分,此外还有Azure API format)

认证

需要使用上文提到的Application ID和下面提到的API Key来访问API,否则调用接口会失败,返回认证错误的消息,比如,

AuthorizationRequiredError:"Valid authentication was not provided"。

在API Access选项下选择Create API key,填写描述并勾选"Read telemetry"。

点击Generate key,会得到一个key字符串。注意,在这里必须保存key,因为关闭页面之后,无法通过任何方式再查询到生成的key。如果key丢失,只能重建另一个key。

访问

有了Application ID和API key,就可以访问API了。

这个页面有一个很好的例子,可以参考:

GET/Query

可以用postman之类的工具测试http请求。

自己写的query工具

因为程序可能需要对不同的Application Insight的不同的API执行不同的Query,因此,基本的处理思路是在配置文件中配置相关信息,程序从配置文件中读取需要执行的全部query,逐一查询后,返回结果列表。

下面是json格式的配置文件(profile.json)和python代码。

配置文件

说明,

  • host:固定值http://api.applicationinsights.io

  • apps:Application Insight相关数据。

  • apis:Api相关数据。

  • queries:需要执行的query。

  • default_filter:默认的查询条件,目前只有默认时间功能,例子里的条件是最近7个整天。

查询

查询代码如下:

基本思路是从配置文件加载queries,逐个放入任务列表中,最后统一并发执行、获取结果。

其中使用了request发送http请求、asyncio实现并发。

总结

本文是我关于Azure Application Insights REST API的知识和实践的总结。这不是Azure Application Insights REST API的全部,可以参考微软文档以获取更多信息。

Azure Application Insights REST API使用教程相关推荐

  1. 微软发布Azure Application Insights for Node.js 1.0版本

    在北美举行的Node.js交互大会上,微软发布了用于Node.js的Application Insights SDK. \\ 来自微软JavaScript平台和工具部门的高级经理Arunesh Cha ...

  2. 用Azure Application Insights 监控Python应用(1)

    Azure Monitor是Azure上提供的通过监控一系列数据来监测应用程序的可用性和性能的解决方案,监测的数据包括Metrics,Logs,监测的平台可以是一个Azure的订阅,资源组,也可以是这 ...

  3. larvel 中的api.php_Laravel API 系列教程(一): 基于 Laravel 5.5 构建 测试 RESTful API...

    Laravel API 系列教程(一): 基于 Laravel 5.5 构建 & 测试 RESTful API 由 学院君 创建于2年前, 最后更新于 9个月前 版本号 #3 171702 v ...

  4. 使用Azure Application Insignhts监控ASP.NET Core应用程序

    Application Insignhts是微软开发的一套监控程序.他可以对线上的应用程序进行全方位的监控,比如监控每秒的请求数,失败的请求,追踪异常,对每个请求进行监控,从http的耗时,到SQL查 ...

  5. Ocelot Api网关教程(9)- QoS

    本文介绍Ocelot中的QoS(Quality of Service),其使用了Polly对超时等请求下游失败等情况进行熔断. 1.添加Nuget包 添加 Ocelot.Provider.Polly  ...

  6. .Netcore 2.0 Ocelot Api网关教程(8)- 缓存

    Ocelot中使用 CacheManager 来支持缓存,官方文档中强烈建议使用该包作为缓存工具. 以下介绍通过使用CacheManager来实现Ocelot缓存. 1.通过Nuget添加 Ocelo ...

  7. 从申请到调用:全国快递物流查询 API 使用教程

    引言 面对越来越多的快递需求和快递公司的日益增多,手动查询快递状态的工作变得愈发繁琐.此时,一个全国快递物流查询 API 的出现能够极大地提高查询的效率和准确性,解决人工查询的问题,为用户提供更加便捷 ...

  8. Android百度地图API使用教程

    课1 百度地图应用 百度地图.ppt 百度地图API:API文档 http://wiki.lbsyun.baidu.com/cms/androidsdk/doc/v3_2_0/ 67个类:其中6大核心 ...

  9. 从申请到调用:空号检测 API 使用教程

    引言 在当今数字化的时代,手机号码成为了我们日常生活和商业活动中重要的联系方式之一.然而,随着电话号码的泛滥和变动性,验证手机号码的有效性变得越来越重要. 本文将深入探讨空号检测API 的背景和应用场 ...

最新文章

  1. MySQL解压缩安装
  2. producer send源码_RocketMq系列之Producer顺序消息发送源码分析(四)
  3. 【ARM】Tiny4412裸板编程之按键
  4. c语言链表实践报告,双向链表的实践(C语言)
  5. hackbar 使用教程_hackbar简单安装使用教程
  6. onCreateView中加载大位图
  7. java中获取配置文件数据_Java 读取、获取配置文件.properties中的数据
  8. android百度经纬度转gps坐标,GPS经纬度怎么转百度经纬度
  9. 安装打印机驱动步骤(win10)
  10. 萌新的51之旅——串口通信(2)
  11. linux java 自动安装_Centos7 linux 卸载自带安装的jdk 并yum自动安装jdk1.8
  12. 二手苹果手机价格一览表
  13. ES嵌套(Nested)文档使用
  14. 爬虫笔记-Bugku秋名山老司机(入门)
  15. 【FPGA】五、蜂鸣器播放音乐
  16. 数独求解程序(暴力求解)
  17. 【markdown】【xSliders | slidev | mindshow】markdown文档生成PPT/视频
  18. 关于 Redlock 的讨论
  19. hazelcast-management-center安装配置
  20. 虚拟机实现(C语言)

热门文章

  1. LUA面向对象编程技巧
  2. 国外网站评出对程序员最具影响的书籍清单
  3. vista任务栏透明_在Windows XP中获取Vista任务栏缩略图预览
  4. roku能不能安装软件_如何在Roku中使用Google Assistant
  5. 荣耀9igoogle模式_iGoogle个性化主页的6种替代方法
  6. rimraf 秒删 node_modules
  7. 思科三层交换机充当路由器实现全网互通
  8. 消息队列入门(三)JMS标准及实现
  9. 从Visual Studio中生成Linux设备
  10. SSH连接linux时,长时间不操作就断开的解决方案