1. 程式人生 > >ASP.NET Core之跨平臺的實時效能監控

ASP.NET Core之跨平臺的實時效能監控

前言

前面我們聊了一下一個應用程式 應該監控的8個關鍵位置.

. 嗯..地址如下:

最後賣了個小關子,是關於如何監控ASP.NET Core的.

今天我們就來講講如何監控它,下面上效果圖:

閱讀本文需要了解的相關技術與內容:

InfluxDb(分散式時序資料庫,開源)(注:分散式部分已商業化最新的分散式版本已不在開源,單例的繼續開源)

Grafana(開源的,功能齊全的度量儀表盤和圖形編輯器)

App Metrics(主角,開源的支援.NET Core的監控外掛,採用管道注入的方式,對程式碼的入侵性極小)

本文測試環境為Windows64位,當然 這個方案全部都可以在linux上實現(甚至windows才應該是備用方案 - -,尷尬.)

所以本文分為3個步驟

1.安裝InfluxDb,並建立資料庫

2.安裝Grafana,並新增相關配置

3.在ASP.NET Core中使用App Metrics

下面我們正式開始

正文

1.安裝InfluxDb,並建立資料庫

今天我們主要已InfluxDb為例子.

首先下載,InfluxDb

知道你們懶得找..地址如下:https://portal.influxdata.com/downloads#influxdb

下載你需要的對應的系統的版本.這裡我就直接下載Windows Binaries (64-bit)

linux的安裝步驟我就不多說了,網上一大把..講一下windows安裝InfluxDb的注意事項(..這玩意對liunx的支援比windows好的多)..

解壓後開啟influxdb.conf,因為influxdb的預設配置全是針對linux配置的..所以我們要修改一下配置檔案.

修改下面3個liunx的路徑,改為winodws路徑如下:

[meta]
  # Where the metadata/raft database is stored
  dir = "D:/influxdb/meta"
[data]
  # The directory where the TSM storage engine stores TSM files.
  dir = "D:/influxdb/data"
  # The directory where
the TSM storage engine stores WAL files. wal-dir = "D:/influxdb/wal"

然後修改網頁圖形化管理介面配置,埠如下:

[admin]
  # Determines whether the admin service is enabled.
   enabled = true

  # The default bind address used by the admin service.
   bind-address = ":8083"

最後cmd執行,進入到你的解壓目錄,執行命令:

influxd -config influxdb.conf

得到如圖效果:

我們就安裝完成了.

我們進入管理介面的監聽埠:http://localhost:8083/,會看到如下介面:

然後我們輸入SQL語句  CREATE DATABASE "你的庫名"

看到下圖,就是執行成功了.

我們查一下看是不是真的,輸入SQL語句:SHOW DATABASES

如圖:

除了預設的第一個庫以外,還有你自己新增的庫名,就說明是加成功了,好了,安裝就到此結束

2.安裝Grafana,並新增相關配置

然後我們安裝Grafana,

下載地址:https://grafana.com/get

我們解壓後進入bin目錄,如圖:

直接執行grafana-server.exe即可.

Grafana預設會監聽3000的埠,所以我們進入http://localhost:3000,

會讓你登陸,直接輸入本地的管理員帳戶即可,帳戶:admin  密碼:admin,進入後如圖:

安裝完成之後,我們下載相關的儀表模版.

地址如下:https://grafana.com/dashboards/2140   (是個json檔案)

然後我們匯入我們的儀表:如圖操作即可:

然後,新增我們上面的資料來源.

如圖:

選擇Add DataSource,然後操作如下:

這樣,我們就完成了Grafana的安裝配置和新增資料來源

3.在ASP.NET Core中使用App Metrics

接下來就是我們的重頭戲了,在ASP.NET Core中使用AppMetrics.

我們隨便建立一個ASP.NET Core MVC專案,如圖:

 用nuget包新增引用:

核心程式:

管道注入的擴充套件:

ASP.NET Core MVC的擴充套件:

其他相關要用到的庫:(注:我們這裡的資料來源是influxDB所以用的這個庫,其他的庫請搜尋其他庫的字尾)

我們回到我們熟悉的C#程式碼,在Startup中我們編寫注入程式碼如下:

首先修改ConfigureServices方法,如下:

 public void ConfigureServices(IServiceCollection services)
        {
            var database = "TestData";
            var uri = new Uri("http://127.0.0.1:8086");

            services.AddMetrics(options =>
            {
                options.GlobalTags.Add("app", "sample app");
                options.GlobalTags.Add("env", "stage");
            })
               .AddHealthChecks()
               .AddJsonSerialization()
               .AddReporting(
                  factory =>
                  {
                      factory.AddInfluxDb(
                new InfluxDBReporterSettings
                        {
                            InfluxDbSettings = new InfluxDBSettings(database, uri),
                            ReportInterval = TimeSpan.FromSeconds(5)
                        });
                  })
               .AddMetricsMiddleware(options => options.IgnoredHttpStatusCodes = new[] { 404 });


            // Add framework services.
            services.AddMvc();
        }

加入我們influxDB相關配置,其中database就是你自己輸入的資料庫名. uri就是你資料庫的地址.

然後我們需要在程式啟動的時候就注入我們的Metrics監控,所以修改Configure程式碼如下:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IApplicationLifetime lifetime)
        {
            loggerFactory.AddConsole(Configuration.GetSection("Logging"));
            app.UseMetrics();
            app.UseMetricsReporting(lifetime);
            //loggerFactory.AddDebug();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseBrowserLink();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

            app.UseStaticFiles();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
        }

其中app.UseMetrics();  app.UseMetricsReporting(lifetime) ,是我們的注入程式碼..

其他的地方.不用動一絲一毫..怎麼樣 是不是幾乎沒有什麼入侵性~.

 最後,我們跑起來.

隨便在home中點選幾下頁面,或者呼叫一下..

然後進入到Grafana的監控頁面中,就可以看到如下資訊:

寫在最後

這篇只是簡單的講了如何做到初級的監控,其實還有心跳檢測等比較多的功能,後面會慢慢來講..

.Net Core也就今年社群才慢慢起步,所這個監控也是剛剛完成,作者一直在積極的更新中.

比較遺憾的是本來這個是支援 .NET4.5.2以上的,但是由於關注的人比較少.所以就只出了RC的預覽版.對最新版支援不完善.

我也在GitHub上給作者提了Issues,https://github.com/alhardy/AppMetrics/issues/177

希望感興趣的基友們一起加入,這裡也吐槽一下,..我就一句話..社群需要我們共通建立,而不是等著摘現成的桃子..

相關推薦

ASP.NET Core跨平臺實時效能監控(2.健康檢查) ASP.NET Core跨平臺實時效能監控

原文: ASP.NET Core之跨平臺的實時效能監控(2.健康檢查) 前言 上篇我們講了如何使用App Metrics 做一個簡單的APM監控,最後提到過健康檢查這個東西. 這篇主要就是講解健康檢查的內容. 沒看過上篇的,請移步:ASP.NET Core之跨平臺的實時效能監控 首先

ASP.NET Core跨平臺實時效能監控 應用程式的8個關鍵效能指標以及測量方法

原文: ASP.NET Core之跨平臺的實時效能監控 前言 前面我們聊了一下一個應用程式 應該監控的8個關鍵位置. . 嗯..地址如下: 應用程式的8個關鍵效能指標以及測量方法 最後賣了個小關子,是關於如何監控ASP.NET Core的. 今天我們就來講講如何監控它,下面上效果圖:

ASP.NET Core跨平臺實時效能監控

前言 前面我們聊了一下一個應用程式 應該監控的8個關鍵位置. . 嗯..地址如下: 最後賣了個小關子,是關於如何監控ASP.NET Core的. 今天我們就來講講如何監控它,下面上效果圖: 閱讀本文需要了解的相關技術與內容: InfluxDb(分散式時序資料庫,開源)(注:分散式部分已

ASP.NET Core跨平臺實時性能監控

js應用程序的8個關鍵性能指標以及測量方法最後賣了個小關子,是關於如何監控ASP.NET Core的.今天我們就來講講如何監控它,下面上效果圖: 閱讀本文需要了解的相關技術與內容:InfluxDb(分布式時序數據庫,開源)(註:分布式部分已商業化最新的分布式版本已不在開源,單例的繼續開源)Grafana(開源

Asp.Net Core @Html.Action 遷移

ML csdn core catch true ESS 方法 actor AS 想必只要 接觸了 net core的小夥伴們 已經發現 @html.Action()方法 官方已經不提供支持了,轉而使用 ViewComponents替代了,同時也增加了TagHelper。但是

Asp.Net Core + SignalR 實現實時通訊

一、搭建專案 1、建立一個ASP.NET Core MVC 專案   2、nuget 下載和安裝 MicroSoft.AspNetCore.SignalR vs提示版本衝突 這時我們選擇低版本即可 二、SignalR配置 1、在model中建立一個類MyHub 程式

ASP.NET Core Identity 入門(二)

前言 在 上篇文章 中講了關於 Identity 需要了解的單詞以及相對應的幾個知識點,並且知道了Identity處在整個登入流程中的位置,本篇主要是在 .NET 整個認證系統中比較重要的一個環節,就是 認證(Authentication),因為想要把 Identity 講清楚,是繞不過 Authentica

ASP.NET Core Identity 入門(一)

前言 在 ASP.NET Core 中,仍然沿用了 ASP.NET裡面的 Identity 元件庫,負責對使用者的身份進行認證,總體來說的話,沒有MVC 5 裡面那麼複雜,因為在MVC 5裡面引入了OWIN的東西,所以很多初學者在學習來很費勁,對於 Identity 都是一頭霧水,包括我也是,曾經在學 ide

我眼中的ASP.NET Core微服務

我們先不看專案的字尾名稱 OnXXX ,因為除了 OnContainers 還有 OnAzure,OnWeb,OnKubernetes 以及 OnServiceFabric。 我們就還是來先說說 eShop 這個專案吧,eShop 是 ASP.NET Core 釋出之後微軟

.Net Core 2.0+ InfluxDB+Grafana+App Metrics 實現跨平臺實時效能監控

最近這段時間一直在忙,沒時間寫部落格,負責了一個專案,從前端到後端一直忙,同時還有其他第幾個專案的系統架構要處理。 去年就開始關注net core了,只是平時寫寫demo,沒用在專案中,正好這次機會就用了net core,具體是什麼時候開始的不太記得了,總之剛開始是用core 1.0開發,然後在開發的時候突

asp.net core api網關 實時性能監控

seo www. blog 設置 gen 官方文檔 spn env tin asp.net core api網關 實時性能監控 使用InfluxDB、Grafana Dockerfile 運行 InfluxDB、Grafana influxdb: image: influx

ASP.NET Core學習三 NLog日誌

width itl .com 添加引用 manage skip mono cas ans 上一篇簡單介紹了日誌的使用方法,也僅僅是用來做下學習,更何況只能在console輸出。 NLog已是日誌庫的一員大佬,使用也簡單方便,本文介紹的環境是居於.NET CORE 2.0

ASP.NET CORE系列【六】Entity Framework Core 數據庫遷移

snapshot 文章 src AD data 上下 ont pre 發生 前言 最近打算用.NET Core寫一份簡單的後臺系統,來練練手 然後又用到了Entity Framework Core 發現園子裏有些文章講得不是那麽細節,對於新手小白來說,可能會有點懵。 特意

ASP.NET Core 2.0 : 九.從Windows發布到CentOS的跨平臺部署

emc org 常用 .org and 好用 system 可能 import 本文聊一下如何在Windows上用VS開發並發布, 然後將其部署到CentOS上。對於我們一些常在Windows上逛的來說,CentOS用起來還真有些麻煩。MSDN官方有篇文章大概講了一下(鏈接

C# ASP.NET MVC SignalR 學習 實時數據推送顯示 配合 Echarts 推送實時圖表

from fig 大致 threading HA href value config build 本文主要是我在剛開始學習 SignalR 的技術總結,網上找的學習方法和例子大多只是翻譯了官方給的一個例子,並沒有給出其他一些經典情況的示例,所以才有了本文總結,我在實現推送簡

asp.net core 微信支付工具類(H5支付,掃碼支付,公眾號支付,app支付)2-H5支付

IV app支付 tno 方式 quest ces sys net ota   上一篇說到微信掃碼支付,今天來分享下微信H5支付,適用場景為手機端非微信瀏覽器調用微信H5支付驚醒網站支付業務處理。申請開通微信H5支付工作不多做介紹,直接上代碼。   首先是微信支付業務類(W

微服務介紹及Asp.net Core實戰項目系列微服務介紹

管理 col 數據強一致性 pan 基於 數據存儲 tlab fdm 人的 0、目錄 整體架構目錄:ASP.NET Core分布式項目實戰-目錄 一、微服務選型 在做微服務架構的技術選型的時候,以“無侵入”和“社區活躍”為主要的考量點,將來升級為原子服務架構、量子

【轉】ASP.NET Core開發HttpContext

tde ont req build tro use 如何使用 ram web ASP.NET Core中的HttpContext開發,在ASP.NET開發中我們總是會經常用到HttpContext。 那麽在ASP.NET Core中要如何使用HttpContext呢,下面

CentOS ASP.NET Core Runtime Jexus跨平臺布署

rhel dset ros nohup 我們 install 開源 微軟官方 hidden .net core 開源和跨平臺,能布署到當前主流的Windows,Linux,macOS 系統上。本篇我們將在 Linux 系統上使用 ASP.NET Core Runtime 和

TechEmpower最新一輪的效能測試出爐,ASP.NET Core依舊錶現不俗

TechEmpower在10月30釋出最新一輪(Round 17)針對“Web Framework Benchmarks”的效能測試報告,ASP.NET Core依舊錶現不俗,在一些指標上甚至是碾壓其他主流Web框架。為此我們做了一個簡單的統計,看看ASP.NET Core和其他我們熟悉的Web框架,比如Se