前面我們聊了一下一個(gè)應(yīng)用程序 應(yīng)該監(jiān)控的8個(gè)關(guān)鍵位置.
. 嗯..地址如下:
應(yīng)用程序的8個(gè)關(guān)鍵性能指標(biāo)以及測量方法
最后賣了個(gè)小關(guān)子,是關(guān)于如何監(jiān)控ASP.NET Core的.
今天我們就來講講如何監(jiān)控它,下面上效果圖:
閱讀本文需要了解的相關(guān)技術(shù)與內(nèi)容:
InfluxDb(分布式時(shí)序數(shù)據(jù)庫,開源)(注:分布式部分已商業(yè)化最新的分布式版本已不在開源,單例的繼續(xù)開源)
Grafana(開源的,功能齊全的度量儀表盤和圖形編輯器)
App Metrics(主角,開源的支持.NET Core的監(jiān)控插件,采用管道注入的方式,對代碼的入侵性極小)
本文測試環(huán)境為Windows64位,當(dāng)然 這個(gè)方案全部都可以在linux上實(shí)現(xiàn)(甚至windows才應(yīng)該是備用方案 - -,尷尬.)
所以本文分為3個(gè)步驟
1.安裝InfluxDb,并創(chuàng)建數(shù)據(jù)庫
2.安裝Grafana,并添加相關(guān)配置
3.在ASP.NET Core中使用App Metrics
下面我們正式開始
正文
1.安裝InfluxDb,并創(chuàng)建數(shù)據(jù)庫
App.Metrics支持的庫很多,有InfluxDB、Graphite 、Prometheus.
今天我們主要已InfluxDb為例子.
首先下載,InfluxDb
知道你們懶得找..地址如下:https://portal.influxdata.com/downloads#influxdb
下載你需要的對應(yīng)的系統(tǒng)的版本.這里我就直接下載Windows Binaries (64-bit)
linux的安裝步驟我就不多說了,網(wǎng)上一大把..講一下windows安裝InfluxDb的注意事項(xiàng)(..這玩意對liunx的支持比windows好的多)..
解壓后打開influxdb.conf,因?yàn)閕nfluxdb的默認(rèn)配置全是針對linux配置的..所以我們要修改一下配置文件.
修改下面3個(gè)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"
然后修改網(wǎng)頁圖形化管理界面配置,端口如下:
[admin] # Determines whether the admin service is enabled. enabled = true # The default bind address used by the admin service. bind-address = ":8083"
最后cmd運(yùn)行,進(jìn)入到你的解壓目錄,執(zhí)行命令:
influxd -config influxdb.conf
得到如圖效果:
我們就安裝完成了.
我們進(jìn)入管理界面的監(jiān)聽端口:http://localhost:8083/,會(huì)看到如下界面:
然后我們輸入SQL語句 CREATE DATABASE "你的庫名"
看到下圖,就是執(zhí)行成功了.
我們查一下看是不是真的,輸入SQL語句:SHOW DATABASES
如圖:
除了默認(rèn)的第一個(gè)庫以外,還有你自己添加的庫名,就說明是加成功了,好了,安裝就到此結(jié)束
2.安裝Grafana,并添加相關(guān)配置
然后我們安裝Grafana,
下載地址:https://grafana.com/get
我們解壓后進(jìn)入bin目錄,如圖:
直接運(yùn)行g(shù)rafana-server.exe即可.
Grafana默認(rèn)會(huì)監(jiān)聽3000的端口,所以我們進(jìn)入http://localhost:3000,
會(huì)讓你登陸,直接輸入本地的管理員帳戶即可,帳戶:admin 密碼:admin,進(jìn)入后如圖:
安裝完成之后,我們下載相關(guān)的儀表模版.
地址如下:https://grafana.com/dashboards/2140 (是個(gè)json文件)
然后我們導(dǎo)入我們的儀表:如圖操作即可:
然后,添加我們上面的數(shù)據(jù)源.
如圖:
選擇Add DataSource,然后操作如下:
這樣,我們就完成了Grafana的安裝配置和添加數(shù)據(jù)源
3.在ASP.NET Core中使用App Metrics
接下來就是我們的重頭戲了,在ASP.NET Core中使用AppMetrics.
我們隨便創(chuàng)建一個(gè)ASP.NET Core MVC項(xiàng)目,如圖:
用nuget包添加引用:
核心程序:
管道注入的擴(kuò)展:
ASP.NET Core MVC的擴(kuò)展:
其他相關(guān)要用到的庫:(注:我們這里的數(shù)據(jù)源是influxDB所以用的這個(gè)庫,其他的庫請搜索其他庫的后綴)
我們回到我們熟悉的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相關(guān)配置,其中database就是你自己輸入的數(shù)據(jù)庫名. uri就是你數(shù)據(jù)庫的地址.
然后我們需要在程序啟動(dòng)的時(shí)候就注入我們的Metrics監(jiān)控,所以修改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) ,是我們的注入代碼..
其他的地方.不用動(dòng)一絲一毫..怎么樣 是不是幾乎沒有什么入侵性~.
最后,我們跑起來.
隨便在home中點(diǎn)擊幾下頁面,或者調(diào)用一下..
然后進(jìn)入到Grafana的監(jiān)控頁面中,就可以看到如下信息:
寫在最后
這篇只是簡單的講了如何做到初級的監(jiān)控,其實(shí)還有心跳檢測等比較多的功能,后面會(huì)慢慢來講..
.Net Core也就今年社區(qū)才慢慢起步,所這個(gè)監(jiān)控也是剛剛完成,作者一直在積極的更新中.
比較遺憾的是本來這個(gè)是支持 .NET4.5.2以上的,但是由于關(guān)注的人比較少.所以就只出了RC的預(yù)覽版.對最新版支持不完善.
我也在GitHub上給作者提了Issues,https://github.com/alhardy/AppMetrics/issues/177
希望感興趣的基友們一起加入,這里也吐槽一下,..我就一句話..社區(qū)需要我們共通創(chuàng)建,而不是等著摘現(xiàn)成的桃子..
作者:顧振印 出處:http://www.cnblogs.com/GuZhenYin/ 如果您覺得閱讀本文對您有幫助,請點(diǎn)一下“推薦”按鈕,您的“推薦”將是我最大的寫作動(dòng)力!本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面
http://www.cnblogs.com/GuZhenYin/p/7170010.html