当前位置:网站首页>【應用程式見解 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
边栏推荐
- Natural language processing - BM25 commonly used in search
- Interface pressure test: installation, use and instruction of siege pressure test
- Python基础数据类型——tuple浅析
- Multi classification of unbalanced text using AWS sagemaker blazingtext
- Relationship between business policies, business rules, business processes and business master data - modern analysis
- Windows 10 tensorflow (2) regression analysis of principles, deep learning framework (gradient descent method to solve regression parameters)
- How to use parameters in ES6
- Summary of common algorithms of linked list
- Pattern matching: The gestalt approach一种序列的文本相似度方法
- 仅用六种字符来完成Hello World,你能做到吗?
猜你喜欢
Python Jieba segmentation (stuttering segmentation), extracting words, loading words, modifying word frequency, defining thesaurus
keras model.compile Loss function and optimizer
一篇文章教会你使用Python网络爬虫下载酷狗音乐
FastThreadLocal 是什么鬼?吊打 ThreadLocal 的存在!!
JVM memory area and garbage collection
Python基础变量类型——List浅析
The road of C + + Learning: from introduction to mastery
Using NLP and ml to extract and construct web data
【自学unity2d传奇游戏开发】如何让角色动起来
NLP model Bert: from introduction to mastery (1)
随机推荐
With the advent of tensorflow 2.0, can pytoch still shake the status of big brother?
一篇文章带你了解CSS3图片边框
ES6学习笔记(五):轻松了解ES6的内置扩展对象
Python saves the list data
大道至简 html + js 实现最朴实的小游戏俄罗斯方块
MeterSphere开发者手册
Pollard's Rho algorithm
Summary of common algorithms of binary tree
[Xinge education] poor learning host computer series -- building step 7 Simulation Environment
有了这个神器,快速告别垃圾短信邮件
ES6学习笔记(四):教你轻松搞懂ES6的新增语法
Word segmentation, naming subject recognition, part of speech and grammatical analysis in natural language processing
Thoughts on interview of Ali CCO project team
零基础打造一款属于自己的网页搜索引擎
What is the difference between data scientists and machine learning engineers? - kdnuggets
每个前端工程师都应该懂的前端性能优化总结:
Named entity recognition in natural language processing: tanford core LP ner (1)
How to use Python 2.7 after installing anaconda3?
这个项目可以让你在几分钟快速了解某个编程语言
C#和C/C++混合编程系列5-内存管理之GC协同