当前位置:网站首页>【應用程式見解 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
边栏推荐
- Python download module to accelerate the implementation of recording
- Flink的DataSource三部曲之一:直接API
- The choice of enterprise database is usually decided by the system architect - the newstack
- [C / C + + 1] clion configuration and running C language
- Three Python tips for reading, creating and running multiple files
- 5.5 controlleradvice notes - SSM in depth analysis and project practice
- FastThreadLocal 是什么鬼?吊打 ThreadLocal 的存在!!
- NLP model Bert: from introduction to mastery (2)
- 教你轻松搞懂vue-codemirror的基本用法:主要实现代码编辑、验证提示、代码格式化
- 只有1个字节的文件实际占用多少磁盘空间
猜你喜欢

Discussion on the technical scheme of text de duplication (1)

Linked blocking Queue Analysis of blocking queue

零基础打造一款属于自己的网页搜索引擎

Arrangement of basic knowledge points

Recommendation system based on deep learning

Using NLP and ml to extract and construct web data

Architecture article collection

【转发】查看lua中userdata的方法

JVM memory area and garbage collection

理解格式化原理
随机推荐
Natural language processing - BM25 commonly used in search
Discussion on the technical scheme of text de duplication (1)
6.3 handlerexceptionresolver exception handling (in-depth analysis of SSM and project practice)
前端基础牢记的一些操作-Github仓库管理
Arrangement of basic knowledge points
use Asponse.Words Working with word templates
Analysis of query intention recognition
6.1.2 handlermapping mapping processor (2) (in-depth analysis of SSM and project practice)
5.5 controlleradvice notes - SSM in depth analysis and project practice
NLP model Bert: from introduction to mastery (2)
I think it is necessary to write a general idempotent component
C + + and C + + programmers are about to be eliminated from the market
Cglib 如何实现多重代理?
Solve the problem of database insert data garbled in PL / SQL developer
Music generation through deep neural network
游戏主题音乐对游戏的作用
一部完整的游戏,需要制作哪些音乐?
零基础打造一款属于自己的网页搜索引擎
Pollard's Rho algorithm
Vite + TS quickly build vue3 project and introduce related features