日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET Core with 微服务 - Elastic APM

發布時間:2023/12/4 asp.net 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET Core with 微服务 - Elastic APM 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一次我們介紹了Seq日志聚合組件。這次要給大家介紹的是Elastic APM ,一款應用程序性能監控組件。APM 監控圍繞對應用、服務、容器的健康監控,對接口的調用鏈、性能進行監控。在我們實施微服務后,由于復雜的業務邏輯,服務之間的調用會像蜘蛛網一樣復雜。有了調用鏈監控后服務之間的調用可以用圖像的方式展示出來,每個請求的性能,響應等都會記錄下來。對于提前防范問題,以及排查問題有非常大的意義。

Elastic APM

大家對 ELK 套件一定非常熟悉。ELastic APM 同樣也是 Elastic 系列產品的一個組件。Elastic APM 是一款免費開源的應用程序性能監控組件。它底層依賴 Elasticsearch 來存儲跟查詢數據,使用 Kibana 來展示分析數據。它支持多種程序語音的探針,包括 JAVA,.NET, Nodejs 等語音。對于 .NET 的集成非常方便,只要簡單的配置就可以采集 .NET 程序的信息,對代碼幾乎是零入侵。

Elastic APM 的架構由4個部分組成。

  • Elasticsearch 負責數據的持久化,查詢等能力

  • Kibana APM數據的分析展示界面

  • APM Agent 每個服務集成對應的 sdk 后就是一個個 agent,負責采集程序的各種指標數據

  • APM Server ,agent 采集到數據后會上報給 APM Server ,由APM Server匯集數據后存儲到 Elasticsearch 。

  • 使用 docker-compose 安裝

    elasticsearch:image: docker.elastic.co/elasticsearch/elasticsearch:7.13.2restart: alwayscontainer_name: elasticsearchhostname: elasticsearchenvironment:- discovery.type=single-nodeports:- 9200:9200- 9300:9300kibana:image: docker.elastic.co/kibana/kibana:7.13.2restart: alwayscontainer_name: kibanahostname: kibanaenvironment:- ELASTICSEARCH_HOSTS=http://elasticsearch:9200ports:- 5601:5601depends_on:- elasticsearchapm_server:image: docker.elastic.co/apm/apm-server:7.13.2restart: alwayscontainer_name: apm_serverhostname: apm_servercommand: --strict.perms=false -eenvironment:- output.elasticsearch.hosts=["elasticsearch:9200"]ports:- 8200:8200depends_on:- kibana- elasticsearch

    使用 docker-compose 來安裝 Elastic APM 。Elastic APM 依賴 elasticsearch kibana,所以 docker-compose 文件需要定義3個service。其中 apmserver 定義dependson:kibana,elasticsearch 。

    訪問 http://localhost:5601 出現 kabina 界面。點擊"Add Data" 出現添加 Apm Server 指引。

    滾動到最后,點擊 "Check APM Server Status "。

    如果出現 “You have correctly setup APM Server” 的提示,說明我們的APM Server安裝成功了。

    在 ASP.NET Core 集成 Elastic APM

    Install-Package Elastic.Apm.NetCoreAll

    使用 nuget 來安裝 Elastic APM 的sdk包。在 nuget 上搜索 Elastic apm 會出現多個包,這里選擇 Elastic.Apm.NetCoreAll 包。

    "ElasticApm": {"ServerUrls": "http://192.168.18.164:8200", //Set custom APM Server URL"ServiceName": "ordering_service", //allowed characters: a-z, A-Z, 0-9, -, _, and space. Default is the entry assembly of the application"Environment": "dev" // Set the service environment}

    在 appsettings.json 文件內添加一個 ElasticApm 節點。

    • ServerUrls:apm server 地址

    • ServiceName:服務的名稱

    • Environment:環境

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env){app.UseAllElasticApm(Configuration);if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}app.UseRouting();app.UseAuthorization();app.UseEndpoints(endpoints =>{endpoints.MapControllers();});}

    在 startup 類的 Configure 方法的頂部注入 ElasticApm 的中間件。這樣 Elastic APM 就跟 asp.net core 集成好了,整個過程還是很方便的。

    查看 Kibana UI

    我們把幾個示例項目集成后之后運行起來,隨便訪問幾個http接口。

    打開 kibana 界面,點擊菜單 “APM” 。

    可以看到我們3個服務已經出現在服務列表里面。列表上顯示了環境,TPM等信息。

    點擊 “Traces” 標簽,這里就會列出剛才所有的請求列表。

    隨便點擊一個服務,會出現這個服務的詳細信息,顯示了并發情況,延遲情況,已經請求的歷史。

    查看調用鏈

    在微服務架構下,服務之間的調用是非常復雜的。這給我們排錯的時候帶來非常大的壓力。現在有了 APM 可以幫我們改進這個問題。Elastic APM 可以幫我們顯示每個請求的調用鏈情況。

    以我們訂單服務的獲取訂單詳情接口為例。我們找到/order/OD001 這個請求,點擊展示它的明細信息。可以看到這個請求里面包含了另外兩次調用。第一次是訪問Consul獲取會員服務的地址,第二次是訪問會員服務獲取會員明細信息。點擊每一次請求,里面都有詳細的元數據。這為我們調試,排錯,監控帶來了非常大的便利。

    Metrics 指標

    這個頁面展示了服務的硬件指標,主要是顯示了CPU,內存利用率。

    總結

    我們通過以上內容,介紹了什么是Elastic APM ,如何安裝Elastic APM,如何在 ASP.NET Core 程序里集成 Elastic APM 的 sdk ,以及簡單介紹了 Kibana 上的展示信息,特別是服務調用鏈的內容。可以看到Elastic APM 還是非常不錯的一款 APM 組件,特別是對 ASP.NET Core 的集成做到了幾乎零代碼入侵,界面也非常友好。

    演示項目地址

    https://github.com/kklldog/myhotel_microservice

    相關文章

    NET Core with 微服務 - 什么是微服務
    .Net Core with 微服務 - 架構圖
    .Net Core with 微服務 - Ocelot 網關
    .Net Core with 微服務 - Consul 注冊中心
    .Net Core with 微服務 - Seq 日志聚合

    關注我的公眾號一起玩轉技術

    總結

    以上是生活随笔為你收集整理的.NET Core with 微服务 - Elastic APM的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。