当前位置:网站首页>【應用程式見解 Application Insights】Application Insights 使用 Application Maps 構建請求鏈路檢視
【應用程式見解 Application Insights】Application Insights 使用 Application Maps 構建請求鏈路檢視
2020-11-06 21:13:00 【itread01】
Applicaotn Insigths 使用 Application Maps 構建請求鏈路檢視
構建系統時,請求的邏輯操作大多數情況下都需要在不同的服務,或介面中完成整個請求鏈路。一個請求可以經歷多個元件,極有可能出現客戶端請求站點1,站點1請求站點2, … 站點N才是最終處理資料然後依次返回。
在這樣的情況,如果有一個直觀的檢視來展示請求在每一個站點上的狀態(成功,失敗),當問題發生時,非常有幫助定位問題發生的地點。藉助Azure 應用程式見解(Application Insights)中的遙測關聯建立的Application Maps就能實現
效果展示
實現原理
Application Insights定義了用於分配遙測關聯的資料模型,每個傳出操作(例如,對另一個元件的 HTTP 呼叫)是由依賴項遙測表示的。 依賴項遙測也定義了自身的全域性獨一無二的 id,此依賴項呼叫發起的請求遙測將此 id 用作其 operation_parentId。通過operation_Id、operation_parentId 和 request.id,即可以生成分散式邏輯操作的檢視 (這些欄位也定義了遙測呼叫的因果關係順序)。
例項構建Application Maps
在例項中,這一個請求進行了4段轉發。
第一段:原生代碼訪問APIM(test01.azure-api.cn),
第二段:APIM訪問站點1(lbphptest.chinacloudsites.cn)
第三段:站點1訪問站點2(lbjavatest.chinacloudsites.cn)
第四段:站點2訪問最終處理請求的Azure Function(Http Trigger)( functionapp120201013155425.chinacloudsites.cn).
準備條件
- 建立Application Insights (lbphptest202011050549)
- 建立APIM(test01)
- 建立兩個App Service (lbphptest 和lbjavatest)
- 建立一個Azure Function(functionapp120201013155425)
注:如不熟悉如何建立以上資源,可以導航到文末的參考資料部分
步驟一:在Azure Funciton中啟用並關聯Application Insights服務
進入Azure Funciton門戶,選擇Application Insights功能,根據頁面提示選擇已建立好的Application Insights (lbphptest202011050549).
建立的Function為預設的HttpTrigger模式,測試目的,程式碼可以不需任何修改。參考下圖獲取到Function的URL,用於下一步在站點2中呼叫。
步驟二:在站點2(lbjavatest)中啟用並關聯Application Insights服務,並部署程式碼請求Azure Function
進入站點2的門戶頁面,在Application Insights目錄中根據提示Enable Application Insights並選擇相同的Application Insights。
部署程式碼呼叫步驟一中的Azure Function
//Level 3
[HttpGet]
[Route("[Action]")]
public string Fun([FromQuery] string name)
{
using (HttpClient httpClient = new HttpClient())
{
var url = $"https://functionapp120201013155425.chinacloudsites.cn/api/HttpTrigger1?name={name}";
HttpRequestMessage httpRequest = new HttpRequestMessage(HttpMethod.Get, url);
httpRequest.Headers.Add("Accept", "application/json, text/plain, */*");
var response = httpClient.SendAsync(httpRequest).Result;
string responseContent = response.Content.ReadAsStringAsync().Result;
return responseContent;
}
}
步驟三:在站點1(lbphptest)中啟用並關聯Application Insights服務,並部署程式碼請求站點2
進入站點1的門戶頁面,在Application Insights目錄中根據提示Enable Application Insights並選擇相同的Application Insights。
部署程式碼呼叫步驟二中的站點2的URL,程式碼與訪問Azure Function相似。
//Level 2
[HttpGet]
[Route("[Action]")]
public string FunSub([FromQuery] string name)
{
using (HttpClient httpClient = new HttpClient())
{
var url = $"https://lbjavatest.chinacloudsites.cn/WeatherForecast/fun?name={name}";
HttpRequestMessage httpRequest = new HttpRequestMessage(HttpMethod.Get, url);
httpRequest.Headers.Add("Accept", "application/json, text/plain, */*");
var response = httpClient.SendAsync(httpRequest).Result;
string responseContent = response.Content.ReadAsStringAsync().Result;
return responseContent;
}
}
步驟四:在APIM中啟用並關聯Application Insights服務, 並設定API訪問站點1
進入APIM的門戶頁面,在Application Insights目錄中新增相同的Application Insights。
在APIM配置API訪問站點1(lbphptest)
- 點選“Add API” 按鈕
- 選擇從App Service中建立
- 選擇站點1(lbphptest)
在介面中新增操作一個新操作,訪問站點1中的介面/weatherforecast/funsub?name={name}
步驟五:在ASP.NET Core程式碼中新增Application Insights SDK並配置連線字串,在介面中訪問APIM.
在原生代碼中新增Application Insights SDK
配置連線字串(字串中Application Insights的Overview頁面複製)
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"ApplicationInsights": {
"ConnectionString": "InstrumentationKey=xxx-xxx-xxx-xxx-xxxxx;EndpointSuffix=applicationinsights.azure.cn;IngestionEndpoint=https://chinaeast2-0.in.applicationinsights.azure.cn/"
},
"AllowedHosts": "*"
}
啟動本地程式,並通過在瀏覽器中訪問 https://localhost:44323/weatherforecast/Funsubfornt?name=test from local -- apim -- app 1 – app 2 -- function
檢視最終效果圖:
【END】
參考文件:
在 Azure 門戶中建立第一個函式: https://docs.azure.cn/zh-cn/azure-functions/functions-create-first-azure-function
適用於 ASP.NET Core 應用程式的 Application Insights : https://docs.azure.cn/zh-cn/azure-monitor/app/asp-net-core
關於 API 管理: https://docs.azure.cn/zh-cn/api-management/api-management-key-concepts
在 Azure 中建立 ASP.NET Core Web 應用: https://docs.azure.cn/zh-cn/app-service/quickstart-dotnetcore?pivots=platform-linux
&n
版权声明
本文为[itread01]所创,转载请带上原文链接,感谢
https://www.itread01.com/content/1604668025.html
边栏推荐
- 【自学unity2d传奇游戏开发】如何让角色动起来
- Windows 10 tensorflow (2) regression analysis of principles, deep learning framework (gradient descent method to solve regression parameters)
- Introduction to quantitative investment and Trading (Python introduction to financial analysis)
- Solve the problem of database insert data garbled in PL / SQL developer
- Linked blocking Queue Analysis of blocking queue
- (1) ASP.NET Introduction to core3.1 Ocelot
- 一篇文章带你了解CSS 分页实例
- 開源一套極簡的前後端分離專案腳手架
- Electron application uses electronic builder and electronic updater to realize automatic update
- Installing ns-3 on ubuntu18.04
猜你喜欢

How to encapsulate distributed locks more elegantly

Cglib 如何实现多重代理?

It is really necessary to build a distributed ID generation service

What to do if you are squeezed by old programmers? I don't want to quit

MeterSphere开发者手册

Construction of encoder decoder model with keras LSTM

I'm afraid that the spread sequence calculation of arbitrage strategy is not as simple as you think

Linked blocking Queue Analysis of blocking queue

Brief introduction of TF flags

零基础打造一款属于自己的网页搜索引擎
随机推荐
Introduction to X Window System
给字节的学姐讲如何准备“系统设计面试”
带你学习ES5中新增的方法
use Asponse.Words Working with word templates
6.1.2 handlermapping mapping processor (2) (in-depth analysis of SSM and project practice)
Recommendation system based on deep learning
教你轻松搞懂vue-codemirror的基本用法:主要实现代码编辑、验证提示、代码格式化
Analysis of ThreadLocal principle
Electron application uses electronic builder and electronic updater to realize automatic update
大道至简 html + js 实现最朴实的小游戏俄罗斯方块
From zero learning artificial intelligence, open the road of career planning!
Introduction to Google software testing
Cglib 如何实现多重代理?
MeterSphere开发者手册
Basic usage of GDB debugging
Word segmentation, naming subject recognition, part of speech and grammatical analysis in natural language processing
Pattern matching: The gestalt approach一种序列的文本相似度方法
Solve the problem of database insert data garbled in PL / SQL developer
The dynamic thread pool in Kitty supports Nacos and Apollo multi configuration centers
C + + and C + + programmers are about to be eliminated from the market