一,引言

  Azure Monitor 是 Azure 中的一项完整堆栈监视服务,是一种收集和分析遥测数据的服务。它提供了一组完整的功能来监视 Azure 资源以及其他云中和本地的资源。Azure Monitor  该服务有助于实现云应用程序以及本地资源和应用程序的最大性能和可用性。 它显示了应用程序的执行方式,并可识别应用程序存在的任何问题。

Azure Monitor 会收集两种基本类型的数据 - 指标和日志。 指标表明资源的执行方式,以及使用的其他资源。 日志包含显示资源创建/修改时间的记录。

Azure Monitor 从一系列组件中自动收集数据。 例如:

  1,应用程序数据:与自定义应用程序代码相关的数据。
  2,操作系统数据:来自托管应用程序的 Windows 或 Linux 虚拟机的数据。
  3,Azure 资源数据:与 Azure 资源(如 Web 应用或负载均衡器)的操作相关的数据。
  4,Azure 订阅数据:与订阅相关的数据。 它包括有关 Azure 运行状况和可用性的数据。
  5,Azure 租户数据:有关 Azure 组织级别服务的数据,例如 Azure Active Directory。
由于 Azure Monitor 是自动系统,因此在创建 Azure 资源(如虚拟机和 Web 应用)后,它会立即从这些源中收集数据。 可通过以下方式扩展 Azure Monitor 收集的数据:
  1,启用诊断:对于某些资源(如 Azure SQL 数据库),仅在启用诊断日志记录后才会收到有关资源的完整信息。 可使用 Azure 门户、Azure CLI 或 PowerShell 来启用诊断。
  2,添加代理:对于虚拟机,可安装 Log Analytics 代理,并将其配置为将数据发送到 Log Analytics 工作区。 此代理会增加发送到 Azure Monitor 的信息量。
开发人员可能还想要从自定义代码(例如 Web 应用、Azure 函数或移动应用)将数据发送到 Azure Monitor。 他们通过调用数据收集器 API 来发送数据。 你可通过 HTTP 与此 REST 接口通信。 此接口与各种开发框架(如 .NET Framework、Node.js 和 Python)兼容。 开发人员可选择自己最喜欢的语言和框架在 Azure Monitor 中记录数据。

日志

日志包含对资源所做更改的相关时间戳信息。 记录的信息类型因日志源而异。 日志数据会整理成记录,每种记录类型具有不同的属性集。 日志可以包含数字值(如 Azure Monitor 指标),但大多数日志包含文本数据,而不是数字值。
最常见的日志项目类型会记录事件。 事件可能偶尔发生,而不是按固定的间隔或根据某种计划发生。 事件由应用程序和服务创建,这些应用程序和服务为事件提供上下文。 可将指标数据存储在日志中,以便将其与其他监视数据合并起来用于分析。
在 Log Analytics 工作区中记录来自 Azure Monitor 的数据。 Azure 提供分析引擎和丰富的查询语言。 日志显示了上下文的任何问题,有助于确定根本原因。

指标

指标是数字值,用于描述系统某些方面在某个时间点的情况。 Azure Monitor 可以近乎实时地捕获指标。 这些指标按固定时间间隔收集,在因其频繁采样而发出警报时很有用。 可使用多种算法,将指标与其他指标进行比较,并观察随时间变化的趋势。
指标存储在时序数据库中。 分析时间戳数据时,使用此数据存储最为有效。 指标适用于警报和快速检测问题。 可通过指标了解有关系统性能的信息。 如果需要,可以将它们与日志进行合并,确定问题的根本原因。

  Azure Monitor 现在包括 Log Analytics 和 Application Insights,其提供的高级工具适用于收集和分析遥测数据,以便最大程度地提高云和本地的资源和应用程序的性能和可用性。 它可以帮助你了解应用程序的性能,并主动识别影响应用程序及其所依赖资源的问题。那么今天就先了解 Application Insights,通过它可以监控网站的可用性、性能和使用情况。快速诊断确定并诊断应用程序中的错误,而无需等待用户报告这些错误以及提供用户数据的分析,用户,会话,事件等,

二,正文

1,什么是 Application Insights?

  Application Insights 是 Azure Monitor 的一项功能。 使用它可以监视实时应用程序。 它将自动检测性能异常,并且包含了强大的分析工具来帮助诊断问题,了解用户在应用中实际执行了哪些操作。 它旨在帮助持续提高性能与可用性。 它适用于本地云、混合云或任何公有云中托管的各种平台(包括 .NET、Node.js、Java 和 Python)上的应用。 它与 DevOps 进程集成,并且具有与不同开发工具的连接点。 可以通过与 Visual Studio App Center 集成来监视和分析移动应用的遥测数据。

2,为NET.Core Web项目添加Application Insights

新增 NET Core Web 项目

 管理 NuGet 包=》Microsoft.ApplicationInsights.AspNetCore

注册Application Insights 遥测收集服务

services.AddApplicationInsightsTelemetry();

azure portal 新建 Applaction Insights 服务

点击 “Create” 按钮

选择已有的资源组/创建新的资源组,填写 Application Insights 的服务名称 “Azure.Monitor.Application_Insights” (我这里是之前已经创建服务名称为 “Azure.Monitor.Application_Insights” ,这里忽略图中名称后面没有 s)

复制图中圈起来的检测密钥:Instrumentation Key

配置 appsetting 配置文件中的 InstrumentationKey 的值

{
"ApplicationInsights": {
"InstrumentationKey": "putinstrumentationkeyhere"
},
"Logging": {
"LogLevel": {
"Default": "Warning"
}
}
}

3,运行 Web 应用程序,查看遥测数据

选择 Monitoring=》Logs

消息实时上报差不多需要3-5分钟,差不多3分钟后,我们再次点击 “Run”,我们只看到 “Warning”,“Error”,“Critical”,我们没有得到 “Information” 和 “Debug” (后面会讲到)

同时,如下图所示,我们还可以写一些查询语句,比如根据时间戳降序排列

我们还可以编写where 条件,例如 查询 message=="Warning 1"的警告信息

Monitoring Logs的这个功能还是很强大的,它可以浏览我们的日志信息,同时展开当前日志,可以展示更多的信息,比如 “operation_ParentId”,可以用来关联来自同一个Http请求的所有的消息的ID

圈起来的两组数据,是我相隔2分钟后的请求日志结果,我们可以看到它们对ID都有相同的操作。因为是对于我们在一分钟内看到的是同一个Http请求。

查看手动抛的异常 Exception

我们可以看出异常的时间,异常信息,异常发生的位置,异常的类型,操作等等

记录的异常行号为37行,可以对比一下手动抛出异常的行数

同时,application insights还提供了一个可视化的地方,Investigate=》Failures,从这里可以看到

  1,正常,异常的请求。

  2,请求对应的响应码。

  3,各个接口/页面的异常情况。

  4,异常类型的分布。

  5,依赖性信息

其实,我们可以从代码中可以看到,我们自己手动抛了一个异常,异常虽然用try catch 进行包裹,但是对于应用程序来说,这个异常还没有进行正确的处理掉,比如返回信息,返回状态码等等。

切换到 Exceptions,可以看到这个异常的信息了

同时,我们可以得到一些额外的堆栈信息,甚至可以看到异常的代码行,控制器方法,类等信息

回到上一个话题,Application Insights 默认情况下只监控 “Warnning”,“Error”,“Critical” 类型的信息,我们可以通过appsetting 配置文件设置Application Insights的监视级别

"ApplicationInsights": {
"LogLevel": {
"Default": "Debug",
"Miccrosoft": "Error"
}
},

全部代码 牵扯隐私的部分,这里使用 “0”进行替代

{
"Logging": {
"ApplicationInsights": {
"LogLevel": {
"Default": "Debug",
"Miccrosoft": "Error"
}
},
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"ApplicationInsights": {
"InstrumentationKey": "000000-0000-0000-0000-00000000000000"
}
}

继续在Application Insights的logs查看监测数据

bingo,修改监测默认配置成功!

三,总结

  Application Insights 可以用来监控网站的可用性、性能和使用情况。快速诊断确定并诊断应用程序中的错误,而无需等待用户报告这些错误。提供用户数据的分析,用户,会话,事件等Application Insights 提供服务器端监视和客户端/浏览器监视功能,它默认数据保留90天,同时还有支持实时流数据上报(延时低至1秒,不保留数据),增加自定义埋点(自定义的指标)等

  Application Insights 服务处理数据并将数据聚合到一个表单中,方便查询和可视化。

--------------我是分割线-----------------

作者:Allen

版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。

Azure Monitor(一)Application Insights的更多相关文章

  1. 【应用程序见解 Application Insights】使用Azure Monitor Application Insights Agent获取Azure VM中监控数据及IIS请求指标等信息

    问题情形 为了使用Application Insights也可以监控Azure VM中的相关性能数据,如CPU, Memory,IIS Reuqest等信息,可以在VM中开始一个一个扩展插件: Azu ...

  2. 【Azure 应用程序见解】Application Insights Java Agent 3.1.0的使用实验,通过修改单个URL的采样率来减少请求及依赖项的数据采集

    问题描述 近日好消息,如果是一个Java Spring Cloud的项目,想使用Azure Applicaiton Insights来收集日志及一些应用程序见解.但是有不愿意集成SDK来修改代码或者配 ...

  3. Azure Application Insights REST API使用教程

    本文是Azure Application Insights REST API的简单介绍,并会包含一个通过Python消费API的示例/小工具. 新加入的team中的一项工作是制作日常的运维报表,制作方 ...

  4. 【Azure Application Insights】在Azure Function中启用Application Insights后,如何配置不输出某些日志到AI 的Trace中

    问题描述 基于.NET Core的Function App如果配置了Application Insights之后,每有一个函数被执行,则在Application Insights中的Logs中的tra ...

  5. 【Azure 应用程序见解】 Application Insights 对App Service的支持问题

    问题描述 Web App 发布后, Application Insights 收集不到数据了 问题分析 在应用服务(App Service)中收集应用的监控数据(如Request,Exception, ...

  6. Azure Monitor(二)Log Analytics

    一,引言( 前情回顾) Azure Monitor 包括 Log Analytics 和 Application Insights,其提供的高级工具适用于收集和分析遥测数据,以便最大程度地提高云和本地 ...

  7. 使用Application Insights 做分析

    Application Insights on Windows Desktop apps, services and worker roles : https://azure.microsoft.co ...

  8. 关于Application Insights遥测功能使用【遇到问题】

    简介:Application Insights是微软发布的一个在线服务,可以监测自己的网站应用,进行性能管理以及使用分析. Application Insights功能一开始是出现在Visualstu ...

  9. [Windows Azure] Configuring and Deploying the Windows Azure Email Service application - 2 of 5

    Configuring and Deploying the Windows Azure Email Service application - 2 of 5 This is the second tu ...

随机推荐

  1. R语言入门一

    一.数据分析相关概念 数据:是指对事物或对象各方面进行描述的符号,包括事物的基本属性.特征.性质.状态.相互关系等:比如描述人的数据有:身高.年龄.性别.兴趣.性格.婚姻状态等等. 分析:是指把事物或 ...

  2. 在 MacOS 中使用 multipass 安装 microk8s 环境

    在 MacOS 中使用 multipass 安装 microk8s 环境 Multipass & MicroK8s 介绍 What is Kubernetes? Kubernetes clus ...

  3. Rocket - tilelink - Bits vs. UInt

    https://mp.weixin.qq.com/s/lzDmIHkUph3b1Fxgx66ySg   分析移位/取反操作在Intellij中提示错误的问题.   1. 问题   用到移位/取反的地方 ...

  4. 实现一个字符串匹配算法,从字符串 H 中,查找 是否存在字符串 Y ,若是存在返回所在位置的索引,不存在返回 -1(不基于indexOf/includes方法)

    /** 1.循环原始字符串的每一项,让每一项从当前位置向后截取 H.length 个字符, 然后和 Y 进行比较,如果不一样,继续循环:如果一样返回当前索引即可 **/ function myInde ...

  5. 我终于看懂了HBase,太不容易了...

    前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 在我还不了解分布式和大数据的时候已经听说过HBa ...

  6. Cypress系列(9)- Cypress 编写和组织测试用例篇 之 钩子函数Hook

    如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html Hook 就是常说的钩子函数,在 pyt ...

  7. Linux(二) 系统远程访问

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1. Why?为什么需要远程访问? 人和人之间对话有两种方式,一种是面对面直接交谈,另一种是打电话. 我 ...

  8. Linux(六)文件系统

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.根目录内容 1.概述 Linux系统中只有一个文件系统,以“/”作为根目录,从根目录出发可以找到任何 ...

  9. Java实现 LeetCode 699 掉落的方块(线段树?)

    699. 掉落的方块 在无限长的数轴(即 x 轴)上,我们根据给定的顺序放置对应的正方形方块. 第 i 个掉落的方块(positions[i] = (left, side_length))是正方形,其 ...

  10. Java实现 LeetCode 599 两个列表的最小索引总和(使用hash提高效率)

    599. 两个列表的最小索引总和 假设Andy和Doris想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示. 你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅 ...