在日常系统工作中,我们为了洞察系统的问题和运作情况通常会记录日志的方式来进行分析,但是在很多情况下都是被动的在出问题后才会去查日志。在很多时候,我们可能更需要相对实时的了解整个系统或者某一时段的运行的情况,诸如系统出错的频率以及响应时间等等指标。这些动态的准实时信息对于监控整个系统的运行和健康状况非常重要,而本文的主角们能通过很好的配合帮助你实现这个目标,而且是一种高大上的实现方式。想想泡杯茶翘着二郎腿看着偌大的屏幕上有着一堆华丽的仪表和曲线图,即使看不懂也很牛B的样子啊!(谁知道我看得懂看不懂呢,是不是?)

Q: 那什么是App-Metrics?
A: App Metrics是一个开源和跨平台的.NET库,用于记录应用程序中各项指标。可以在.NET Core上运行,也可以在支持.NET 4.5.2的完整.NET框架上运行。
App Metrics对底层数据源做了很好的抽象以支持很多类型的数据库,例如:
InfluxDb、Prometheus、ElasticSearch等等。。
同时他又提供了很多Measurements比如Apdex, Gauges, Counters, Meters, Histograms 等等一大堆


1. 安装Grafana

Q: 什么是Grafana
A: 一个类似Kibana的可视化数据开源程序,一般配合时间序列数据库进行配合来展示数据

这里为了方便使用docker来运行Grafana

  1. docker run -d --name=grafana -p 3000:3000 grafana/grafana

  

接着我们确认下是否正常运行了

  1. docker ps -a

  


2. 安装 InfluxDB

InfluxDb是比较流行的时序数据库,可以根据需要替换成Prometheus同上为了方便我们还是使用docker来运行
如果你希望每次都能保持之前docker运行收集的数据可以用docker 的-v选项把目录映射到本机的目录以便持久化数据

  1. ==注意influxdb2个端口一个是admin一个database==
  1. docker run -d -p 8083:8083 -p 8086:8086 --expose 8090 --expose 8099 tutum/influxdb

  

如图另外开一个控制台我们看到后台已经运行了2个容器

输入http://127.0.0.1:8083/ 访问InfluxDb的控制界面以便创建数据库




3. 配置AspNet Core2.x

  • 先照常新建一个MVC项目

  • 安装所需的第三方库


    1. dotnet add package App.Metrics.Extensions.Mvc
    2. dotnet add package App.Metrics.Formatters.Json
    3. dotnet add package App.Metrics.Extensions.Reporting.InfluxDB

      

    控制台显示安装成功!


  • 修改Startup.cs


    1. using System;
    2. using System.Collections.Generic;
    3.  
    4. using System.Linq;
    5.  
    6. using System.Threading.Tasks;
    7.  
    8. using App.Metrics.Configuration;
    9.  
    10. using App.Metrics.Extensions.Reporting.InfluxDB;
    11.  
    12. using App.Metrics.Extensions.Reporting.InfluxDB.Client;
    13.  
    14. using App.Metrics.Reporting.Interfaces;
    15.  
    16. using Microsoft.AspNetCore.Builder;
    17.  
    18. using Microsoft.AspNetCore.Hosting;
    19.  
    20. using Microsoft.AspNetCore.Http;
    21.  
    22. using Microsoft.AspNetCore.HttpsPolicy;
    23.  
    24. using Microsoft.AspNetCore.Mvc;
    25.  
    26. using Microsoft.Extensions.Configuration;
    27.  
    28. using Microsoft.Extensions.DependencyInjection;
    29.  
    30. namespace WebApplication1
    31.  
    32. {
    33.  
    34. public class Startup
    35.  
    36. {
    37.  
    38. public Startup(IConfiguration configuration)
    39.  
    40. {
    41.  
    42. Configuration = configuration;
    43.  
    44. }
    45.  
    46. public IConfiguration Configuration { get; }
    47.  
    48. public void ConfigureServices(IServiceCollection services)
    49.  
    50. {
    51.  
    52. #region 注册 App-Metrics & 配置输出report到influxdb
    53.  
    54. var database = "MyMetrics";
    55.  
    56. var uri = new Uri(" http://127.0.0.1:8086 "); //本地Docker中运行的influx实例,注意InfluxDb有2个端口别搞错
    57.  
    58. services.AddMetrics(options =>
    59.  
    60. {
    61.  
    62. options.WithGlobalTags((globalTags, info) =>
    63.  
    64. {
    65.  
    66. globalTags.Add("app", info.EntryAssemblyName);
    67.  
    68. globalTags.Add("env", "stage");
    69.  
    70. });
    71.  
    72. })
    73.  
    74. .AddHealthChecks()
    75.  
    76. .AddReporting(
    77.  
    78. factory =>
    79.  
    80. {
    81.  
    82. factory.AddInfluxDb(
    83.  
    84. new InfluxDBReporterSettings
    85.  
    86. {
    87.  
    88. InfluxDbSettings = new InfluxDBSettings(database, uri),
    89.  
    90. ReportInterval = TimeSpan.FromSeconds(5)
    91.  
    92. });
    93.  
    94. })
    95.  
    96. .AddMetricsMiddleware(options => options.IgnoredHttpStatusCodes = new[] {404});
    97.  
    98. #endregion
    99.  
    100. services.Configure<CookiePolicyOptions>(options =>
    101.  
    102. {
    103.  
    104. options.CheckConsentNeeded = context => true;
    105.  
    106. options.MinimumSameSitePolicy = SameSiteMode.None;
    107.  
    108. });
    109.  
    110. //添加Metric Filter到mvc
    111.  
    112. services.AddMvc(options => options.AddMetricsResourceFilter())
    113.  
    114. .SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    115.  
    116. }
    117.  
    118. // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    119.  
    120. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IApplicationLifetime lifetime)
    121.  
    122. {
    123.  
    124. if (env.IsDevelopment())
    125.  
    126. {
    127.  
    128. app.UseDeveloperExceptionPage();
    129.  
    130. }
    131.  
    132. else
    133.  
    134. {
    135.  
    136. app.UseExceptionHandler("/Home/Error");
    137.  
    138. app.UseHsts();
    139.  
    140. }
    141.  
    142. app.UseHttpsRedirection();
    143.  
    144. app.UseStaticFiles();
    145.  
    146. app.UseCookiePolicy();
    147.  
    148. loggerFactory.AddConsole(Configuration.GetSection(" Logging "));
    149.  
    150. app.UseMetrics();
    151.  
    152. app.UseMetricsReporting(lifetime);
    153.  
    154. app.UseMvc(routes =>
    155.  
    156. {
    157.  
    158. routes.MapRoute(
    159.  
    160. name: "default",
    161.  
    162. template: "{controller=Home}/{action=Index}/{id?}");
    163.  
    164. });
    165.  
    166. }
    167.  
    168. }
    169.  
    170. }

      

  • 接下来就是配置豪华的Grafana了!
    打开浏览器试着访问docker内运行的Grafana容器,默认的用户名和密码是admin/admin 不用担心,第一次登录成功后系统会要求你重新设置新的密码,很贴心!!

    登录成功后,配置Datasource当然是选择我们之前运行的InfluxDb

按图进行配置

提交后,如下图显示即配置成功

接着就是创建你的Dashboard,可以自己建立也可以自己配置json文件导入,网上有很多例子可以直接下载

  1. {
  2. "__inputs": [],
  3. "__requires": [
  4. {
  5. "type": "grafana",
  6. "id": "grafana",
  7. "name": "Grafana",
  8. "version": "4.2.0"
  9. },
  10. {
  11. "type": "panel",
  12. "id": "grafana-piechart-panel",
  13. "name": "Pie Chart",
  14. "version": "1.1.4"
  15. },
  16. {
  17. "type": "panel",
  18. "id": "graph",
  19. "name": "Graph",
  20. "version": ""
  21. },
  22. {
  23. "type": "panel",
  24. "id": "singlestat",
  25. "name": "Singlestat",
  26. "version": ""
  27. },
  28. {
  29. "type": "panel",
  30. "id": "table",
  31. "name": "Table",
  32. "version": ""
  33. }
  34. ],
  35. "annotations": {
  36. "list": []
  37. },
  38. "description": "Dashboard to visualize metrics captured by App Metrics ASP.NET Core Middleware 1.2.0, tested with App.Metrics.Extensions.Reporting.InfluxDB 1.2.0 - http://app-metrics.io/",
  39. "editable": true,
  40. "gnetId": 2125,
  41. "graphTooltip": 1,
  42. "hideControls": false,
  43. "id": null,
  44. "links": [],
  45. "refresh": "5s",
  46. "rows": [
  47. {
  48. "collapse": true,
  49. "height": "250",
  50. "panels": [
  51. {
  52. "cacheTimeout": null,
  53. "colorBackground": false,
  54. "colorValue": false,
  55. "colors": [
  56. "rgba(245, 54, 54, 0.9)",
  57. "rgba(237, 129, 40, 0.89)",
  58. "rgba(50, 172, 45, 0.97)"
  59. ],
  60. "datasource": "$datasource",
  61. "editable": true,
  62. "error": false,
  63. "format": "rpm",
  64. "gauge": {
  65. "maxValue": 100,
  66. "minValue": 0,
  67. "show": false,
  68. "thresholdLabels": false,
  69. "thresholdMarkers": true
  70. },
  71. "id": 8,
  72. "interval": "",
  73. "links": [],
  74. "mappingType": 1,
  75. "mappingTypes": [
  76. {
  77. "name": "value to text",
  78. "value": 1
  79. },
  80. {
  81. "name": "range to text",
  82. "value": 2
  83. }
  84. ],
  85. "maxDataPoints": 100,
  86. "nullPointMode": "connected",
  87. "nullText": null,
  88. "postfix": "",
  89. "postfixFontSize": "50%",
  90. "prefix": "",
  91. "prefixFontSize": "50%",
  92. "rangeMaps": [
  93. {
  94. "from": "null",
  95. "text": "N/A",
  96. "to": "null"
  97. }
  98. ],
  99. "span": 2,
  100. "sparkline": {
  101. "fillColor": "rgba(31, 118, 189, 0.18)",
  102. "full": true,
  103. "lineColor": "rgb(31, 120, 193)",
  104. "show": true
  105. },
  106. "targets": [
  107. {
  108. "dsType": "influxdb",
  109. "groupBy": [
  110. {
  111. "params": [
  112. "$interval"
  113. ],
  114. "type": "time"
  115. },
  116. {
  117. "params": [
  118. "null"
  119. ],
  120. "type": "fill"
  121. }
  122. ],
  123. "measurement": "application.httprequests__transactions",
  124. "policy": "default",
  125. "refId": "A",
  126. "resultFormat": "time_series",
  127. "select": [
  128. [
  129. {
  130. "params": [
  131. "rate1m"
  132. ],
  133. "type": "field"
  134. },
  135. {
  136. "params": [],
  137. "type": "last"
  138. }
  139. ]
  140. ],
  141. "tags": [
  142. {
  143. "key": "app",
  144. "operator": "=~",
  145. "value": "/^$application$/"
  146. },
  147. {
  148. "condition": "AND",
  149. "key": "env",
  150. "operator": "=~",
  151. "value": "/^$environment$/"
  152. },
  153. {
  154. "condition": "AND",
  155. "key": "server",
  156. "operator": "=~",
  157. "value": "/^$server$/"
  158. }
  159. ]
  160. }
  161. ],
  162. "thresholds": "",
  163. "title": "Throughput",
  164. "type": "singlestat",
  165. "valueFontSize": "80%",
  166. "valueMaps": [
  167. {
  168. "op": "=",
  169. "text": "N/A",
  170. "value": "null"
  171. }
  172. ],
  173. "valueName": "current"
  174. },
  175. {
  176. "cacheTimeout": null,
  177. "colorBackground": false,
  178. "colorValue": false,
  179. "colors": [
  180. "rgba(50, 172, 45, 0.97)",
  181. "rgba(237, 129, 40, 0.89)",
  182. "rgba(245, 54, 54, 0.9)"
  183. ],
  184. "datasource": "$datasource",
  185. "decimals": 4,
  186. "editable": true,
  187. "error": false,
  188. "format": "percent",
  189. "gauge": {
  190. "maxValue": 100,
  191. "minValue": 0,
  192. "show": false,
  193. "thresholdLabels": false,
  194. "thresholdMarkers": true
  195. },
  196. "id": 6,
  197. "interval": null,
  198. "links": [],
  199. "mappingType": 1,
  200. "mappingTypes": [
  201. {
  202. "name": "value to text",
  203. "value": 1
  204. },
  205. {
  206. "name": "range to text",
  207. "value": 2
  208. }
  209. ],
  210. "maxDataPoints": 100,
  211. "nullPointMode": "connected",
  212. "nullText": null,
  213. "postfix": "",
  214. "postfixFontSize": "50%",
  215. "prefix": "",
  216. "prefixFontSize": "50%",
  217. "rangeMaps": [
  218. {
  219. "from": "",
  220. "text": "",
  221. "to": ""
  222. }
  223. ],
  224. "span": 2,
  225. "sparkline": {
  226. "fillColor": "rgba(31, 118, 189, 0.18)",
  227. "full": true,
  228. "lineColor": "rgb(31, 120, 193)",
  229. "show": true
  230. },
  231. "targets": [
  232. {
  233. "dsType": "influxdb",
  234. "groupBy": [],
  235. "measurement": "application.httprequests__one_minute_error_percentage_rate",
  236. "policy": "default",
  237. "query": "SELECT \"value\" FROM \"application.httprequests__percentage_error_requests\" WHERE $timeFilter",
  238. "rawQuery": false,
  239. "refId": "A",
  240. "resultFormat": "time_series",
  241. "select": [
  242. [
  243. {
  244. "params": [
  245. "value"
  246. ],
  247. "type": "field"
  248. }
  249. ]
  250. ],
  251. "tags": [
  252. {
  253. "key": "env",
  254. "operator": "=~",
  255. "value": "/^$environment$/"
  256. },
  257. {
  258. "condition": "AND",
  259. "key": "app",
  260. "operator": "=~",
  261. "value": "/^$application$/"
  262. },
  263. {
  264. "condition": "AND",
  265. "key": "server",
  266. "operator": "=~",
  267. "value": "/^$server$/"
  268. }
  269. ]
  270. }
  271. ],
  272. "thresholds": "",
  273. "title": "Error %",
  274. "type": "singlestat",
  275. "valueFontSize": "80%",
  276. "valueMaps": [
  277. {
  278. "op": "=",
  279. "text": "0%",
  280. "value": "null"
  281. }
  282. ],
  283. "valueName": "current"
  284. },
  285. {
  286. "aliasColors": {},
  287. "bars": false,
  288. "datasource": "$datasource",
  289. "editable": true,
  290. "error": false,
  291. "fill": 2,
  292. "id": 13,
  293. "interval": "$summarize",
  294. "legend": {
  295. "avg": false,
  296. "current": false,
  297. "max": false,
  298. "min": false,
  299. "show": false,
  300. "total": false,
  301. "values": false
  302. },
  303. "lines": true,
  304. "linewidth": 1,
  305. "links": [],
  306. "nullPointMode": "connected",
  307. "percentage": false,
  308. "pointradius": 5,
  309. "points": false,
  310. "renderer": "flot",
  311. "seriesOverrides": [],
  312. "span": 4,
  313. "stack": false,
  314. "steppedLine": false,
  315. "targets": [
  316. {
  317. "alias": "",
  318. "dsType": "influxdb",
  319. "groupBy": [
  320. {
  321. "params": [
  322. "$interval"
  323. ],
  324. "type": "time"
  325. },
  326. {
  327. "params": [
  328. "null"
  329. ],
  330. "type": "fill"
  331. }
  332. ],
  333. "measurement": "application.httprequests__active",
  334. "policy": "default",
  335. "refId": "A",
  336. "resultFormat": "time_series",
  337. "select": [
  338. [
  339. {
  340. "params": [
  341. "value"
  342. ],
  343. "type": "field"
  344. },
  345. {
  346. "params": [],
  347. "type": "last"
  348. }
  349. ]
  350. ],
  351. "tags": [
  352. {
  353. "key": "env",
  354. "operator": "=~",
  355. "value": "/^$environment$/"
  356. },
  357. {
  358. "condition": "AND",
  359. "key": "app",
  360. "operator": "=~",
  361. "value": "/^$application$/"
  362. },
  363. {
  364. "condition": "AND",
  365. "key": "server",
  366. "operator": "=~",
  367. "value": "/^$server$/"
  368. }
  369. ]
  370. }
  371. ],
  372. "thresholds": [],
  373. "timeFrom": null,
  374. "timeShift": null,
  375. "title": "Active Requests",
  376. "tooltip": {
  377. "msResolution": false,
  378. "shared": true,
  379. "sort": 0,
  380. "value_type": "individual"
  381. },
  382. "type": "graph",
  383. "xaxis": {
  384. "mode": "time",
  385. "name": null,
  386. "show": true,
  387. "values": []
  388. },
  389. "yaxes": [
  390. {
  391. "format": "short",
  392. "label": null,
  393. "logBase": 1,
  394. "max": null,
  395. "min": null,
  396. "show": true
  397. },
  398. {
  399. "format": "short",
  400. "label": null,
  401. "logBase": 1,
  402. "max": null,
  403. "min": null,
  404. "show": true
  405. }
  406. ]
  407. },
  408. {
  409. "aliasColors": {
  410. "application.httprequests__apdex.last": "#6ED0E0"
  411. },
  412. "bars": false,
  413. "datasource": "$datasource",
  414. "editable": true,
  415. "error": false,
  416. "fill": 1,
  417. "height": "",
  418. "id": 7,
  419. "interval": "$summarize",
  420. "legend": {
  421. "avg": false,
  422. "current": false,
  423. "max": false,
  424. "min": false,
  425. "show": false,
  426. "total": false,
  427. "values": false
  428. },
  429. "lines": true,
  430. "linewidth": 3,
  431. "links": [],
  432. "nullPointMode": "connected",
  433. "percentage": false,
  434. "pointradius": 5,
  435. "points": false,
  436. "renderer": "flot",
  437. "seriesOverrides": [],
  438. "span": 4,
  439. "stack": false,
  440. "steppedLine": false,
  441. "targets": [
  442. {
  443. "dsType": "influxdb",
  444. "groupBy": [
  445. {
  446. "params": [
  447. "$interval"
  448. ],
  449. "type": "time"
  450. },
  451. {
  452. "params": [
  453. "null"
  454. ],
  455. "type": "fill"
  456. }
  457. ],
  458. "measurement": "application.httprequests__apdex",
  459. "policy": "default",
  460. "refId": "A",
  461. "resultFormat": "time_series",
  462. "select": [
  463. [
  464. {
  465. "params": [
  466. "score"
  467. ],
  468. "type": "field"
  469. },
  470. {
  471. "params": [],
  472. "type": "last"
  473. }
  474. ]
  475. ],
  476. "tags": [
  477. {
  478. "key": "app",
  479. "operator": "=~",
  480. "value": "/^$application$/"
  481. },
  482. {
  483. "condition": "AND",
  484. "key": "env",
  485. "operator": "=~",
  486. "value": "/^$environment$/"
  487. },
  488. {
  489. "condition": "AND",
  490. "key": "server",
  491. "operator": "=~",
  492. "value": "/^$server$/"
  493. }
  494. ]
  495. }
  496. ],
  497. "thresholds": [
  498. {
  499. "colorMode": "critical",
  500. "fill": true,
  501. "line": true,
  502. "op": "lt",
  503. "value": 0.5
  504. },
  505. {
  506. "colorMode": "warning",
  507. "fill": true,
  508. "line": true,
  509. "op": "gt",
  510. "value": 0.5
  511. },
  512. {
  513. "colorMode": "ok",
  514. "fill": true,
  515. "line": true,
  516. "op": "gt",
  517. "value": 0.75
  518. }
  519. ],
  520. "timeFrom": null,
  521. "timeShift": null,
  522. "title": "Apdex score",
  523. "tooltip": {
  524. "msResolution": false,
  525. "shared": true,
  526. "sort": 0,
  527. "value_type": "individual"
  528. },
  529. "type": "graph",
  530. "xaxis": {
  531. "mode": "time",
  532. "name": null,
  533. "show": true,
  534. "values": []
  535. },
  536. "yaxes": [
  537. {
  538. "format": "short",
  539. "label": "apdex",
  540. "logBase": 1,
  541. "max": "1",
  542. "min": "0",
  543. "show": true
  544. },
  545. {
  546. "format": "short",
  547. "label": null,
  548. "logBase": 1,
  549. "max": null,
  550. "min": null,
  551. "show": false
  552. }
  553. ]
  554. },
  555. {
  556. "aliasColors": {},
  557. "bars": false,
  558. "datasource": "$datasource",
  559. "editable": true,
  560. "error": false,
  561. "fill": 1,
  562. "height": "350",
  563. "id": 1,
  564. "interval": "$summarize",
  565. "legend": {
  566. "avg": false,
  567. "current": true,
  568. "max": false,
  569. "min": false,
  570. "show": true,
  571. "total": false,
  572. "values": true
  573. },
  574. "lines": true,
  575. "linewidth": 1,
  576. "links": [],
  577. "nullPointMode": "connected",
  578. "percentage": false,
  579. "pointradius": 5,
  580. "points": false,
  581. "renderer": "flot",
  582. "seriesOverrides": [],
  583. "span": 6,
  584. "stack": false,
  585. "steppedLine": false,
  586. "targets": [
  587. {
  588. "alias": "$col",
  589. "dsType": "influxdb",
  590. "groupBy": [
  591. {
  592. "params": [
  593. "$interval"
  594. ],
  595. "type": "time"
  596. },
  597. {
  598. "params": [
  599. "null"
  600. ],
  601. "type": "fill"
  602. }
  603. ],
  604. "measurement": "application.httprequests__transactions",
  605. "policy": "default",
  606. "refId": "A",
  607. "resultFormat": "time_series",
  608. "select": [
  609. [
  610. {
  611. "params": [
  612. "rate1m"
  613. ],
  614. "type": "field"
  615. },
  616. {
  617. "params": [],
  618. "type": "last"
  619. },
  620. {
  621. "params": [
  622. "1 min rate"
  623. ],
  624. "type": "alias"
  625. }
  626. ],
  627. [
  628. {
  629. "params": [
  630. "rate5m"
  631. ],
  632. "type": "field"
  633. },
  634. {
  635. "params": [],
  636. "type": "last"
  637. },
  638. {
  639. "params": [
  640. "5 min rate"
  641. ],
  642. "type": "alias"
  643. }
  644. ],
  645. [
  646. {
  647. "params": [
  648. "rate15m"
  649. ],
  650. "type": "field"
  651. },
  652. {
  653. "params": [],
  654. "type": "last"
  655. },
  656. {
  657. "params": [
  658. "15 min rate"
  659. ],
  660. "type": "alias"
  661. }
  662. ]
  663. ],
  664. "tags": [
  665. {
  666. "key": "env",
  667. "operator": "=~",
  668. "value": "/^$environment$/"
  669. },
  670. {
  671. "condition": "AND",
  672. "key": "app",
  673. "operator": "=~",
  674. "value": "/^$application$/"
  675. },
  676. {
  677. "condition": "AND",
  678. "key": "server",
  679. "operator": "=~",
  680. "value": "/^$server$/"
  681. }
  682. ]
  683. }
  684. ],
  685. "thresholds": [],
  686. "timeFrom": null,
  687. "timeShift": null,
  688. "title": "Throughput",
  689. "tooltip": {
  690. "msResolution": false,
  691. "shared": true,
  692. "sort": 0,
  693. "value_type": "individual"
  694. },
  695. "type": "graph",
  696. "xaxis": {
  697. "mode": "time",
  698. "name": null,
  699. "show": true,
  700. "values": []
  701. },
  702. "yaxes": [
  703. {
  704. "format": "rpm",
  705. "label": null,
  706. "logBase": 1,
  707. "max": null,
  708. "min": null,
  709. "show": true
  710. },
  711. {
  712. "format": "short",
  713. "label": null,
  714. "logBase": 1,
  715. "max": null,
  716. "min": null,
  717. "show": true
  718. }
  719. ]
  720. },
  721. {
  722. "aliasColors": {},
  723. "bars": false,
  724. "datasource": "$datasource",
  725. "editable": true,
  726. "error": false,
  727. "fill": 1,
  728. "height": "350",
  729. "id": 2,
  730. "interval": "$summarize",
  731. "legend": {
  732. "alignAsTable": false,
  733. "avg": false,
  734. "current": false,
  735. "max": false,
  736. "min": false,
  737. "rightSide": false,
  738. "show": true,
  739. "total": false,
  740. "values": false
  741. },
  742. "lines": true,
  743. "linewidth": 1,
  744. "links": [],
  745. "nullPointMode": "connected",
  746. "percentage": false,
  747. "pointradius": 5,
  748. "points": false,
  749. "renderer": "flot",
  750. "seriesOverrides": [],
  751. "span": 6,
  752. "stack": false,
  753. "steppedLine": false,
  754. "targets": [
  755. {
  756. "alias": "$col",
  757. "dsType": "influxdb",
  758. "groupBy": [
  759. {
  760. "params": [
  761. "$interval"
  762. ],
  763. "type": "time"
  764. },
  765. {
  766. "params": [
  767. "null"
  768. ],
  769. "type": "fill"
  770. }
  771. ],
  772. "measurement": "application.httprequests__transactions",
  773. "policy": "default",
  774. "refId": "A",
  775. "resultFormat": "time_series",
  776. "select": [
  777. [
  778. {
  779. "params": [
  780. "p95"
  781. ],
  782. "type": "field"
  783. },
  784. {
  785. "params": [],
  786. "type": "last"
  787. },
  788. {
  789. "params": [
  790. "95th Percentile"
  791. ],
  792. "type": "alias"
  793. }
  794. ],
  795. [
  796. {
  797. "params": [
  798. "p98"
  799. ],
  800. "type": "field"
  801. },
  802. {
  803. "params": [],
  804. "type": "last"
  805. },
  806. {
  807. "params": [
  808. "98th Percentile"
  809. ],
  810. "type": "alias"
  811. }
  812. ],
  813. [
  814. {
  815. "params": [
  816. "p99"
  817. ],
  818. "type": "field"
  819. },
  820. {
  821. "params": [],
  822. "type": "last"
  823. },
  824. {
  825. "params": [
  826. "99th Percentile"
  827. ],
  828. "type": "alias"
  829. }
  830. ]
  831. ],
  832. "tags": [
  833. {
  834. "key": "env",
  835. "operator": "=~",
  836. "value": "/^$environment$/"
  837. },
  838. {
  839. "condition": "AND",
  840. "key": "app",
  841. "operator": "=~",
  842. "value": "/^$application$/"
  843. },
  844. {
  845. "condition": "AND",
  846. "key": "server",
  847. "operator": "=~",
  848. "value": "/^$server$/"
  849. }
  850. ]
  851. }
  852. ],
  853. "thresholds": [],
  854. "timeFrom": null,
  855. "timeShift": null,
  856. "title": "Response Time",
  857. "tooltip": {
  858. "msResolution": false,
  859. "shared": true,
  860. "sort": 0,
  861. "value_type": "individual"
  862. },
  863. "type": "graph",
  864. "xaxis": {
  865. "mode": "time",
  866. "name": null,
  867. "show": true,
  868. "values": []
  869. },
  870. "yaxes": [
  871. {
  872. "format": "ms",
  873. "label": null,
  874. "logBase": 1,
  875. "max": null,
  876. "min": null,
  877. "show": true
  878. },
  879. {
  880. "format": "short",
  881. "label": null,
  882. "logBase": 1,
  883. "max": null,
  884. "min": null,
  885. "show": true
  886. }
  887. ]
  888. },
  889. {
  890. "aliasColors": {},
  891. "bars": false,
  892. "datasource": "$datasource",
  893. "editable": true,
  894. "error": false,
  895. "fill": 1,
  896. "height": "",
  897. "id": 9,
  898. "interval": "$summarize",
  899. "legend": {
  900. "alignAsTable": true,
  901. "avg": false,
  902. "current": true,
  903. "max": false,
  904. "min": false,
  905. "rightSide": true,
  906. "show": false,
  907. "total": false,
  908. "values": true
  909. },
  910. "lines": true,
  911. "linewidth": 1,
  912. "links": [],
  913. "nullPointMode": "connected",
  914. "percentage": false,
  915. "pointradius": 5,
  916. "points": false,
  917. "renderer": "flot",
  918. "seriesOverrides": [],
  919. "span": 6,
  920. "stack": false,
  921. "steppedLine": false,
  922. "targets": [
  923. {
  924. "alias": "",
  925. "dsType": "influxdb",
  926. "groupBy": [
  927. {
  928. "params": [
  929. "$interval"
  930. ],
  931. "type": "time"
  932. },
  933. {
  934. "params": [
  935. "null"
  936. ],
  937. "type": "fill"
  938. }
  939. ],
  940. "measurement": "application.httprequests__one_minute_error_percentage_rate",
  941. "policy": "default",
  942. "refId": "A",
  943. "resultFormat": "time_series",
  944. "select": [
  945. [
  946. {
  947. "params": [
  948. "value"
  949. ],
  950. "type": "field"
  951. },
  952. {
  953. "params": [],
  954. "type": "last"
  955. }
  956. ]
  957. ],
  958. "tags": [
  959. {
  960. "key": "app",
  961. "operator": "=~",
  962. "value": "/^$application$/"
  963. },
  964. {
  965. "condition": "AND",
  966. "key": "env",
  967. "operator": "=~",
  968. "value": "/^$environment$/"
  969. },
  970. {
  971. "condition": "AND",
  972. "key": "server",
  973. "operator": "=~",
  974. "value": "/^$server$/"
  975. }
  976. ]
  977. }
  978. ],
  979. "thresholds": [],
  980. "timeFrom": null,
  981. "timeShift": null,
  982. "title": "Error Rate %",
  983. "tooltip": {
  984. "msResolution": false,
  985. "shared": true,
  986. "sort": 0,
  987. "value_type": "individual"
  988. },
  989. "type": "graph",
  990. "xaxis": {
  991. "mode": "time",
  992. "name": null,
  993. "show": true,
  994. "values": []
  995. },
  996. "yaxes": [
  997. {
  998. "format": "percent",
  999. "label": null,
  1000. "logBase": 1,
  1001. "max": "100",
  1002. "min": "0",
  1003. "show": true
  1004. },
  1005. {
  1006. "format": "short",
  1007. "label": null,
  1008. "logBase": 1,
  1009. "max": null,
  1010. "min": null,
  1011. "show": true
  1012. }
  1013. ]
  1014. },
  1015. {
  1016. "aliasColors": {},
  1017. "bars": false,
  1018. "datasource": "$datasource",
  1019. "decimals": 2,
  1020. "editable": true,
  1021. "error": false,
  1022. "fill": 1,
  1023. "height": "250px",
  1024. "id": 3,
  1025. "interval": "$summarize",
  1026. "legend": {
  1027. "alignAsTable": true,
  1028. "avg": false,
  1029. "current": true,
  1030. "max": false,
  1031. "min": false,
  1032. "rightSide": true,
  1033. "show": true,
  1034. "total": false,
  1035. "values": true
  1036. },
  1037. "lines": true,
  1038. "linewidth": 1,
  1039. "links": [],
  1040. "nullPointMode": "connected",
  1041. "percentage": false,
  1042. "pointradius": 5,
  1043. "points": false,
  1044. "renderer": "flot",
  1045. "seriesOverrides": [],
  1046. "span": 6,
  1047. "stack": false,
  1048. "steppedLine": false,
  1049. "targets": [
  1050. {
  1051. "alias": "$col",
  1052. "dsType": "influxdb",
  1053. "groupBy": [
  1054. {
  1055. "params": [
  1056. "$interval"
  1057. ],
  1058. "type": "time"
  1059. },
  1060. {
  1061. "params": [
  1062. "null"
  1063. ],
  1064. "type": "fill"
  1065. }
  1066. ],
  1067. "measurement": "application.httprequests__error_rate",
  1068. "policy": "default",
  1069. "refId": "A",
  1070. "resultFormat": "time_series",
  1071. "select": [
  1072. [
  1073. {
  1074. "params": [
  1075. "rate1m"
  1076. ],
  1077. "type": "field"
  1078. },
  1079. {
  1080. "params": [],
  1081. "type": "last"
  1082. },
  1083. {
  1084. "params": [
  1085. "1min rate"
  1086. ],
  1087. "type": "alias"
  1088. }
  1089. ],
  1090. [
  1091. {
  1092. "params": [
  1093. "rate5m"
  1094. ],
  1095. "type": "field"
  1096. },
  1097. {
  1098. "params": [],
  1099. "type": "last"
  1100. },
  1101. {
  1102. "params": [
  1103. "5min rate"
  1104. ],
  1105. "type": "alias"
  1106. }
  1107. ],
  1108. [
  1109. {
  1110. "params": [
  1111. "rate15m"
  1112. ],
  1113. "type": "field"
  1114. },
  1115. {
  1116. "params": [],
  1117. "type": "last"
  1118. },
  1119. {
  1120. "params": [
  1121. "15min rate"
  1122. ],
  1123. "type": "alias"
  1124. }
  1125. ]
  1126. ],
  1127. "tags": [
  1128. {
  1129. "key": "app",
  1130. "operator": "=~",
  1131. "value": "/^$application$/"
  1132. },
  1133. {
  1134. "condition": "AND",
  1135. "key": "env",
  1136. "operator": "=~",
  1137. "value": "/^$environment$/"
  1138. },
  1139. {
  1140. "condition": "AND",
  1141. "key": "server",
  1142. "operator": "=~",
  1143. "value": "/^$server$/"
  1144. }
  1145. ]
  1146. }
  1147. ],
  1148. "thresholds": [],
  1149. "timeFrom": null,
  1150. "timeShift": null,
  1151. "title": "Error Rate",
  1152. "tooltip": {
  1153. "msResolution": false,
  1154. "shared": true,
  1155. "sort": 2,
  1156. "value_type": "individual"
  1157. },
  1158. "type": "graph",
  1159. "xaxis": {
  1160. "mode": "time",
  1161. "name": null,
  1162. "show": true,
  1163. "values": []
  1164. },
  1165. "yaxes": [
  1166. {
  1167. "format": "rpm",
  1168. "label": null,
  1169. "logBase": 1,
  1170. "max": null,
  1171. "min": null,
  1172. "show": true
  1173. },
  1174. {
  1175. "format": "short",
  1176. "label": null,
  1177. "logBase": 1,
  1178. "max": null,
  1179. "min": null,
  1180. "show": true
  1181. }
  1182. ]
  1183. },
  1184. {
  1185. "aliasColors": {},
  1186. "cacheTimeout": null,
  1187. "combine": {
  1188. "label": "Others",
  1189. "threshold": 0
  1190. },
  1191. "datasource": "$datasource",
  1192. "editable": true,
  1193. "error": false,
  1194. "fontSize": "80%",
  1195. "format": "percent",
  1196. "height": "250px",
  1197. "id": 4,
  1198. "interval": "",
  1199. "legend": {
  1200. "percentage": true,
  1201. "show": true,
  1202. "sort": null,
  1203. "sortDesc": null,
  1204. "values": true
  1205. },
  1206. "legendType": "Right side",
  1207. "links": [],
  1208. "maxDataPoints": 3,
  1209. "nullPointMode": "connected",
  1210. "pieType": "pie",
  1211. "span": 5,
  1212. "strokeWidth": 1,
  1213. "targets": [
  1214. {
  1215. "alias": "$tag_http_status_code",
  1216. "dsType": "influxdb",
  1217. "groupBy": [
  1218. {
  1219. "params": [
  1220. "http_status_code"
  1221. ],
  1222. "type": "tag"
  1223. }
  1224. ],
  1225. "measurement": "application.httprequests__errors",
  1226. "policy": "default",
  1227. "refId": "A",
  1228. "resultFormat": "time_series",
  1229. "select": [
  1230. [
  1231. {
  1232. "params": [
  1233. "value"
  1234. ],
  1235. "type": "field"
  1236. },
  1237. {
  1238. "params": [],
  1239. "type": "sum"
  1240. }
  1241. ]
  1242. ],
  1243. "tags": [
  1244. {
  1245. "key": "app",
  1246. "operator": "=~",
  1247. "value": "/^$application$/"
  1248. },
  1249. {
  1250. "condition": "AND",
  1251. "key": "env",
  1252. "operator": "=~",
  1253. "value": "/^$environment$/"
  1254. },
  1255. {
  1256. "condition": "AND",
  1257. "key": "server",
  1258. "operator": "=~",
  1259. "value": "/^$server$/"
  1260. }
  1261. ]
  1262. }
  1263. ],
  1264. "title": "Errors",
  1265. "type": "grafana-piechart-panel",
  1266. "valueName": "current"
  1267. },
  1268. {
  1269. "columns": [
  1270. {
  1271. "text": "Total",
  1272. "value": "total"
  1273. }
  1274. ],
  1275. "datasource": "$datasource",
  1276. "editable": true,
  1277. "error": false,
  1278. "filterNull": true,
  1279. "fontSize": "100%",
  1280. "id": 24,
  1281. "interval": "",
  1282. "links": [],
  1283. "pageSize": 20,
  1284. "scroll": true,
  1285. "showHeader": true,
  1286. "sort": {
  1287. "col": 1,
  1288. "desc": true
  1289. },
  1290. "span": 7,
  1291. "styles": [
  1292. {
  1293. "dateFormat": "YYYY-MM-DD HH:mm:ss",
  1294. "pattern": "Time",
  1295. "type": "date"
  1296. },
  1297. {
  1298. "colorMode": null,
  1299. "colors": [
  1300. "rgba(245, 54, 54, 0.9)",
  1301. "rgba(237, 129, 40, 0.89)",
  1302. "rgba(50, 172, 45, 0.97)"
  1303. ],
  1304. "decimals": 0,
  1305. "pattern": "/.*/",
  1306. "thresholds": [],
  1307. "type": "number",
  1308. "unit": "none"
  1309. }
  1310. ],
  1311. "targets": [
  1312. {
  1313. "alias": "$tag_exception",
  1314. "dsType": "influxdb",
  1315. "groupBy": [
  1316. {
  1317. "params": [
  1318. "$interval"
  1319. ],
  1320. "type": "time"
  1321. },
  1322. {
  1323. "params": [
  1324. "exception"
  1325. ],
  1326. "type": "tag"
  1327. }
  1328. ],
  1329. "measurement": "application.httprequests__exceptions",
  1330. "policy": "default",
  1331. "refId": "A",
  1332. "resultFormat": "time_series",
  1333. "select": [
  1334. [
  1335. {
  1336. "params": [
  1337. "value"
  1338. ],
  1339. "type": "field"
  1340. },
  1341. {
  1342. "params": [],
  1343. "type": "last"
  1344. }
  1345. ]
  1346. ],
  1347. "tags": [
  1348. {
  1349. "key": "env",
  1350. "operator": "=~",
  1351. "value": "/^$environment$/"
  1352. },
  1353. {
  1354. "condition": "AND",
  1355. "key": "app",
  1356. "operator": "=~",
  1357. "value": "/^$application$/"
  1358. },
  1359. {
  1360. "condition": "AND",
  1361. "key": "server",
  1362. "operator": "=~",
  1363. "value": "/^$server$/"
  1364. }
  1365. ]
  1366. }
  1367. ],
  1368. "title": "Uncaught Exceptions Thrown",
  1369. "transform": "timeseries_aggregations",
  1370. "type": "table"
  1371. }
  1372. ],
  1373. "repeat": null,
  1374. "repeatIteration": null,
  1375. "repeatRowId": null,
  1376. "showTitle": true,
  1377. "title": "Overview",
  1378. "titleSize": "h6"
  1379. },
  1380. {
  1381. "collapse": false,
  1382. "height": "300",
  1383. "panels": [
  1384. {
  1385. "aliasColors": {},
  1386. "bars": false,
  1387. "datasource": "$datasource",
  1388. "editable": true,
  1389. "error": false,
  1390. "fill": 1,
  1391. "height": "350",
  1392. "id": 16,
  1393. "interval": "$summarize",
  1394. "legend": {
  1395. "alignAsTable": true,
  1396. "avg": false,
  1397. "current": false,
  1398. "max": false,
  1399. "min": false,
  1400. "rightSide": true,
  1401. "show": true,
  1402. "sort": "current",
  1403. "sortDesc": true,
  1404. "total": false,
  1405. "values": false
  1406. },
  1407. "lines": true,
  1408. "linewidth": 1,
  1409. "links": [],
  1410. "nullPointMode": "connected",
  1411. "percentage": false,
  1412. "pointradius": 5,
  1413. "points": false,
  1414. "renderer": "flot",
  1415. "seriesOverrides": [],
  1416. "span": 6,
  1417. "stack": true,
  1418. "steppedLine": false,
  1419. "targets": [
  1420. {
  1421. "alias": "$tag_route",
  1422. "dsType": "influxdb",
  1423. "groupBy": [
  1424. {
  1425. "params": [
  1426. "$interval"
  1427. ],
  1428. "type": "time"
  1429. },
  1430. {
  1431. "params": [
  1432. "route"
  1433. ],
  1434. "type": "tag"
  1435. },
  1436. {
  1437. "params": [
  1438. "null"
  1439. ],
  1440. "type": "fill"
  1441. }
  1442. ],
  1443. "measurement": "application.httprequests__transactions_per_endpoint",
  1444. "policy": "default",
  1445. "refId": "A",
  1446. "resultFormat": "time_series",
  1447. "select": [
  1448. [
  1449. {
  1450. "params": [
  1451. "rate1m"
  1452. ],
  1453. "type": "field"
  1454. },
  1455. {
  1456. "params": [],
  1457. "type": "last"
  1458. }
  1459. ]
  1460. ],
  1461. "tags": [
  1462. {
  1463. "key": "env",
  1464. "operator": "=~",
  1465. "value": "/^$environment$/"
  1466. },
  1467. {
  1468. "condition": "AND",
  1469. "key": "app",
  1470. "operator": "=~",
  1471. "value": "/^$application$/"
  1472. },
  1473. {
  1474. "condition": "AND",
  1475. "key": "server",
  1476. "operator": "=~",
  1477. "value": "/^$server$/"
  1478. }
  1479. ]
  1480. }
  1481. ],
  1482. "thresholds": [],
  1483. "timeFrom": null,
  1484. "timeShift": null,
  1485. "title": "Throughput / Endpoint",
  1486. "tooltip": {
  1487. "msResolution": false,
  1488. "shared": true,
  1489. "sort": 2,
  1490. "value_type": "individual"
  1491. },
  1492. "transparent": false,
  1493. "type": "graph",
  1494. "xaxis": {
  1495. "mode": "time",
  1496. "name": null,
  1497. "show": true,
  1498. "values": []
  1499. },
  1500. "yaxes": [
  1501. {
  1502. "format": "rpm",
  1503. "label": null,
  1504. "logBase": 1,
  1505. "max": null,
  1506. "min": null,
  1507. "show": true
  1508. },
  1509. {
  1510. "format": "short",
  1511. "label": null,
  1512. "logBase": 1,
  1513. "max": null,
  1514. "min": null,
  1515. "show": true
  1516. }
  1517. ]
  1518. },
  1519. {
  1520. "aliasColors": {},
  1521. "bars": false,
  1522. "datasource": "$datasource",
  1523. "editable": true,
  1524. "error": false,
  1525. "fill": 1,
  1526. "height": "350",
  1527. "id": 17,
  1528. "interval": "$summarize",
  1529. "legend": {
  1530. "alignAsTable": true,
  1531. "avg": false,
  1532. "current": false,
  1533. "max": false,
  1534. "min": false,
  1535. "rightSide": true,
  1536. "show": true,
  1537. "total": false,
  1538. "values": false
  1539. },
  1540. "lines": true,
  1541. "linewidth": 1,
  1542. "links": [],
  1543. "nullPointMode": "connected",
  1544. "percentage": false,
  1545. "pointradius": 5,
  1546. "points": false,
  1547. "renderer": "flot",
  1548. "seriesOverrides": [],
  1549. "span": 6,
  1550. "stack": false,
  1551. "steppedLine": false,
  1552. "targets": [
  1553. {
  1554. "alias": "$tag_route",
  1555. "dsType": "influxdb",
  1556. "groupBy": [
  1557. {
  1558. "params": [
  1559. "$interval"
  1560. ],
  1561. "type": "time"
  1562. },
  1563. {
  1564. "params": [
  1565. "route"
  1566. ],
  1567. "type": "tag"
  1568. },
  1569. {
  1570. "params": [
  1571. "null"
  1572. ],
  1573. "type": "fill"
  1574. }
  1575. ],
  1576. "measurement": "application.httprequests__transactions_per_endpoint",
  1577. "policy": "default",
  1578. "refId": "A",
  1579. "resultFormat": "time_series",
  1580. "select": [
  1581. [
  1582. {
  1583. "params": [
  1584. "p95"
  1585. ],
  1586. "type": "field"
  1587. },
  1588. {
  1589. "params": [],
  1590. "type": "last"
  1591. },
  1592. {
  1593. "params": [
  1594. "95th Percentile"
  1595. ],
  1596. "type": "alias"
  1597. }
  1598. ]
  1599. ],
  1600. "tags": [
  1601. {
  1602. "key": "env",
  1603. "operator": "=~",
  1604. "value": "/^$environment$/"
  1605. },
  1606. {
  1607. "condition": "AND",
  1608. "key": "app",
  1609. "operator": "=~",
  1610. "value": "/^$application$/"
  1611. },
  1612. {
  1613. "condition": "AND",
  1614. "key": "server",
  1615. "operator": "=~",
  1616. "value": "/^$server$/"
  1617. }
  1618. ]
  1619. }
  1620. ],
  1621. "thresholds": [],
  1622. "timeFrom": null,
  1623. "timeShift": null,
  1624. "title": "Response Time / Endpoint",
  1625. "tooltip": {
  1626. "msResolution": false,
  1627. "shared": true,
  1628. "sort": 0,
  1629. "value_type": "individual"
  1630. },
  1631. "type": "graph",
  1632. "xaxis": {
  1633. "mode": "time",
  1634. "name": null,
  1635. "show": true,
  1636. "values": []
  1637. },
  1638. "yaxes": [
  1639. {
  1640. "format": "ms",
  1641. "label": null,
  1642. "logBase": 1,
  1643. "max": null,
  1644. "min": null,
  1645. "show": true
  1646. },
  1647. {
  1648. "format": "short",
  1649. "label": null,
  1650. "logBase": 1,
  1651. "max": null,
  1652. "min": null,
  1653. "show": true
  1654. }
  1655. ]
  1656. },
  1657. {
  1658. "columns": [
  1659. {
  1660. "text": "Current",
  1661. "value": "current"
  1662. }
  1663. ],
  1664. "datasource": "$datasource",
  1665. "editable": true,
  1666. "error": false,
  1667. "filterNull": false,
  1668. "fontSize": "100%",
  1669. "id": 10,
  1670. "interval": "",
  1671. "links": [],
  1672. "pageSize": null,
  1673. "scroll": true,
  1674. "showHeader": true,
  1675. "sort": {
  1676. "col": 1,
  1677. "desc": true
  1678. },
  1679. "span": 6,
  1680. "styles": [
  1681. {
  1682. "dateFormat": "YYYY-MM-DD HH:mm:ss",
  1683. "pattern": "Time",
  1684. "type": "date"
  1685. },
  1686. {
  1687. "colorMode": null,
  1688. "colors": [
  1689. "rgba(245, 54, 54, 0.9)",
  1690. "rgba(237, 129, 40, 0.89)",
  1691. "rgba(50, 172, 45, 0.97)"
  1692. ],
  1693. "decimals": 2,
  1694. "pattern": "/.*/",
  1695. "thresholds": [],
  1696. "type": "number",
  1697. "unit": "ms"
  1698. }
  1699. ],
  1700. "targets": [
  1701. {
  1702. "alias": "$tag_route",
  1703. "dsType": "influxdb",
  1704. "groupBy": [
  1705. {
  1706. "params": [
  1707. "$interval"
  1708. ],
  1709. "type": "time"
  1710. },
  1711. {
  1712. "params": [
  1713. "route"
  1714. ],
  1715. "type": "tag"
  1716. },
  1717. {
  1718. "params": [
  1719. "null"
  1720. ],
  1721. "type": "fill"
  1722. }
  1723. ],
  1724. "measurement": "application.httprequests__transactions_per_endpoint",
  1725. "policy": "default",
  1726. "refId": "A",
  1727. "resultFormat": "time_series",
  1728. "select": [
  1729. [
  1730. {
  1731. "params": [
  1732. "p95"
  1733. ],
  1734. "type": "field"
  1735. },
  1736. {
  1737. "params": [],
  1738. "type": "last"
  1739. }
  1740. ]
  1741. ],
  1742. "tags": [
  1743. {
  1744. "key": "env",
  1745. "operator": "=~",
  1746. "value": "/^$environment$/"
  1747. },
  1748. {
  1749. "condition": "AND",
  1750. "key": "app",
  1751. "operator": "=~",
  1752. "value": "/^$application$/"
  1753. },
  1754. {
  1755. "condition": "AND",
  1756. "key": "server",
  1757. "operator": "=~",
  1758. "value": "/^$server$/"
  1759. }
  1760. ]
  1761. }
  1762. ],
  1763. "title": "Response Times / Endpoint",
  1764. "transform": "timeseries_aggregations",
  1765. "type": "table"
  1766. },
  1767. {
  1768. "columns": [
  1769. {
  1770. "text": "Current",
  1771. "value": "current"
  1772. }
  1773. ],
  1774. "datasource": "$datasource",
  1775. "editable": true,
  1776. "error": false,
  1777. "filterNull": false,
  1778. "fontSize": "100%",
  1779. "id": 12,
  1780. "interval": "",
  1781. "links": [],
  1782. "pageSize": null,
  1783. "scroll": true,
  1784. "showHeader": true,
  1785. "sort": {
  1786. "col": 1,
  1787. "desc": true
  1788. },
  1789. "span": 6,
  1790. "styles": [
  1791. {
  1792. "dateFormat": "YYYY-MM-DD HH:mm:ss",
  1793. "pattern": "Time",
  1794. "type": "date"
  1795. },
  1796. {
  1797. "colorMode": null,
  1798. "colors": [
  1799. "rgba(245, 54, 54, 0.9)",
  1800. "rgba(237, 129, 40, 0.89)",
  1801. "rgba(50, 172, 45, 0.97)"
  1802. ],
  1803. "decimals": 2,
  1804. "pattern": "/.*/",
  1805. "thresholds": [],
  1806. "type": "number",
  1807. "unit": "rpm"
  1808. }
  1809. ],
  1810. "targets": [
  1811. {
  1812. "alias": "$tag_route",
  1813. "dsType": "influxdb",
  1814. "groupBy": [
  1815. {
  1816. "params": [
  1817. "$interval"
  1818. ],
  1819. "type": "time"
  1820. },
  1821. {
  1822. "params": [
  1823. "route"
  1824. ],
  1825. "type": "tag"
  1826. },
  1827. {
  1828. "params": [
  1829. "null"
  1830. ],
  1831. "type": "fill"
  1832. }
  1833. ],
  1834. "measurement": "application.httprequests__transactions_per_endpoint",
  1835. "policy": "default",
  1836. "refId": "A",
  1837. "resultFormat": "time_series",
  1838. "select": [
  1839. [
  1840. {
  1841. "params": [
  1842. "rate1m"
  1843. ],
  1844. "type": "field"
  1845. },
  1846. {
  1847. "params": [],
  1848. "type": "last"
  1849. }
  1850. ]
  1851. ],
  1852. "tags": [
  1853. {
  1854. "key": "env",
  1855. "operator": "=~",
  1856. "value": "/^$environment$/"
  1857. },
  1858. {
  1859. "condition": "AND",
  1860. "key": "app",
  1861. "operator": "=~",
  1862. "value": "/^$application$/"
  1863. },
  1864. {
  1865. "condition": "AND",
  1866. "key": "server",
  1867. "operator": "=~",
  1868. "value": "/^$server$/"
  1869. }
  1870. ]
  1871. }
  1872. ],
  1873. "title": "Throughput / Endpoint",
  1874. "transform": "timeseries_aggregations",
  1875. "type": "table"
  1876. },
  1877. {
  1878. "columns": [
  1879. {
  1880. "text": "Current",
  1881. "value": "current"
  1882. }
  1883. ],
  1884. "datasource": "$datasource",
  1885. "editable": true,
  1886. "error": false,
  1887. "filterNull": false,
  1888. "fontSize": "100%",
  1889. "id": 11,
  1890. "interval": "",
  1891. "links": [],
  1892. "pageSize": null,
  1893. "scroll": true,
  1894. "showHeader": true,
  1895. "sort": {
  1896. "col": null,
  1897. "desc": false
  1898. },
  1899. "span": 6,
  1900. "styles": [
  1901. {
  1902. "dateFormat": "YYYY-MM-DD HH:mm:ss",
  1903. "pattern": "Time",
  1904. "type": "date"
  1905. },
  1906. {
  1907. "colorMode": null,
  1908. "colors": [
  1909. "rgba(245, 54, 54, 0.9)",
  1910. "rgba(237, 129, 40, 0.89)",
  1911. "rgba(50, 172, 45, 0.97)"
  1912. ],
  1913. "decimals": 0,
  1914. "pattern": "/.*/",
  1915. "thresholds": [],
  1916. "type": "number",
  1917. "unit": "percent"
  1918. }
  1919. ],
  1920. "targets": [
  1921. {
  1922. "alias": "$tag_route",
  1923. "dsType": "influxdb",
  1924. "groupBy": [
  1925. {
  1926. "params": [
  1927. "$interval"
  1928. ],
  1929. "type": "time"
  1930. },
  1931. {
  1932. "params": [
  1933. "route"
  1934. ],
  1935. "type": "tag"
  1936. },
  1937. {
  1938. "params": [
  1939. "null"
  1940. ],
  1941. "type": "fill"
  1942. }
  1943. ],
  1944. "measurement": "application.httprequests__one_minute_error_percentage_rate_per_endpoint",
  1945. "policy": "default",
  1946. "refId": "A",
  1947. "resultFormat": "time_series",
  1948. "select": [
  1949. [
  1950. {
  1951. "params": [
  1952. "value"
  1953. ],
  1954. "type": "field"
  1955. },
  1956. {
  1957. "params": [],
  1958. "type": "last"
  1959. }
  1960. ]
  1961. ],
  1962. "tags": [
  1963. {
  1964. "key": "app",
  1965. "operator": "=~",
  1966. "value": "/^$application$/"
  1967. },
  1968. {
  1969. "condition": "AND",
  1970. "key": "env",
  1971. "operator": "=~",
  1972. "value": "/^$environment$/"
  1973. },
  1974. {
  1975. "condition": "AND",
  1976. "key": "server",
  1977. "operator": "=~",
  1978. "value": "/^$server$/"
  1979. }
  1980. ]
  1981. }
  1982. ],
  1983. "title": "Error Request Percentage / Endpoint",
  1984. "transform": "timeseries_aggregations",
  1985. "type": "table"
  1986. },
  1987. {
  1988. "columns": [
  1989. {
  1990. "text": "Total",
  1991. "value": "total"
  1992. }
  1993. ],
  1994. "datasource": "$datasource",
  1995. "editable": true,
  1996. "error": false,
  1997. "filterNull": false,
  1998. "fontSize": "100%",
  1999. "id": 25,
  2000. "interval": "",
  2001. "links": [],
  2002. "pageSize": null,
  2003. "scroll": true,
  2004. "showHeader": true,
  2005. "sort": {
  2006. "col": 1,
  2007. "desc": true
  2008. },
  2009. "span": 6,
  2010. "styles": [
  2011. {
  2012. "dateFormat": "YYYY-MM-DD HH:mm:ss",
  2013. "pattern": "Time",
  2014. "type": "date"
  2015. },
  2016. {
  2017. "colorMode": null,
  2018. "colors": [
  2019. "rgba(245, 54, 54, 0.9)",
  2020. "rgba(237, 129, 40, 0.89)",
  2021. "rgba(50, 172, 45, 0.97)"
  2022. ],
  2023. "decimals": 0,
  2024. "pattern": "/.*/",
  2025. "thresholds": [],
  2026. "type": "number",
  2027. "unit": "none"
  2028. }
  2029. ],
  2030. "targets": [
  2031. {
  2032. "alias": "$tag_route [$tag_exception]",
  2033. "dsType": "influxdb",
  2034. "groupBy": [
  2035. {
  2036. "params": [
  2037. "$interval"
  2038. ],
  2039. "type": "time"
  2040. },
  2041. {
  2042. "params": [
  2043. "route"
  2044. ],
  2045. "type": "tag"
  2046. },
  2047. {
  2048. "params": [
  2049. "exception"
  2050. ],
  2051. "type": "tag"
  2052. }
  2053. ],
  2054. "measurement": "application.httprequests__exceptions",
  2055. "policy": "default",
  2056. "refId": "A",
  2057. "resultFormat": "time_series",
  2058. "select": [
  2059. [
  2060. {
  2061. "params": [
  2062. "value"
  2063. ],
  2064. "type": "field"
  2065. },
  2066. {
  2067. "params": [],
  2068. "type": "last"
  2069. }
  2070. ]
  2071. ],
  2072. "tags": [
  2073. {
  2074. "key": "env",
  2075. "operator": "=~",
  2076. "value": "/^$environment$/"
  2077. },
  2078. {
  2079. "condition": "AND",
  2080. "key": "app",
  2081. "operator": "=~",
  2082. "value": "/^$application$/"
  2083. },
  2084. {
  2085. "condition": "AND",
  2086. "key": "server",
  2087. "operator": "=~",
  2088. "value": "/^$server$/"
  2089. }
  2090. ]
  2091. }
  2092. ],
  2093. "title": "Uncaught Exceptions Thrown / Endpoint",
  2094. "transform": "timeseries_aggregations",
  2095. "type": "table"
  2096. }
  2097. ],
  2098. "repeat": null,
  2099. "repeatIteration": null,
  2100. "repeatRowId": null,
  2101. "showTitle": true,
  2102. "title": "Endpoints",
  2103. "titleSize": "h6"
  2104. },
  2105. {
  2106. "collapse": false,
  2107. "height": "250",
  2108. "panels": [
  2109. {
  2110. "columns": [
  2111. {
  2112. "text": "Current",
  2113. "value": "current"
  2114. }
  2115. ],
  2116. "datasource": "$datasource",
  2117. "editable": true,
  2118. "error": false,
  2119. "filterNull": false,
  2120. "fontSize": "100%",
  2121. "hideTimeOverride": true,
  2122. "id": 22,
  2123. "interval": "",
  2124. "links": [],
  2125. "pageSize": null,
  2126. "scroll": true,
  2127. "showHeader": true,
  2128. "sort": {
  2129. "col": 0,
  2130. "desc": true
  2131. },
  2132. "span": 9,
  2133. "styles": [
  2134. {
  2135. "dateFormat": "YYYY-MM-DD HH:mm:ss",
  2136. "pattern": "Time",
  2137. "type": "date"
  2138. },
  2139. {
  2140. "colorMode": "row",
  2141. "colors": [
  2142. "rgba(245, 54, 54, 0.9)",
  2143. "rgba(237, 129, 40, 0.89)",
  2144. "rgba(50, 172, 45, 0.97)"
  2145. ],
  2146. "decimals": 1,
  2147. "pattern": "/.*/",
  2148. "thresholds": [
  2149. "0.5",
  2150. "1"
  2151. ],
  2152. "type": "number",
  2153. "unit": "short"
  2154. }
  2155. ],
  2156. "targets": [
  2157. {
  2158. "alias": "$tag_health_check_name",
  2159. "dsType": "influxdb",
  2160. "groupBy": [
  2161. {
  2162. "params": [
  2163. "$interval"
  2164. ],
  2165. "type": "time"
  2166. },
  2167. {
  2168. "params": [
  2169. "health_check_name"
  2170. ],
  2171. "type": "tag"
  2172. },
  2173. {
  2174. "params": [
  2175. "null"
  2176. ],
  2177. "type": "fill"
  2178. }
  2179. ],
  2180. "measurement": "application.health__results",
  2181. "policy": "default",
  2182. "refId": "A",
  2183. "resultFormat": "time_series",
  2184. "select": [
  2185. [
  2186. {
  2187. "params": [
  2188. "value"
  2189. ],
  2190. "type": "field"
  2191. },
  2192. {
  2193. "params": [],
  2194. "type": "last"
  2195. }
  2196. ]
  2197. ],
  2198. "tags": [
  2199. {
  2200. "key": "env",
  2201. "operator": "=~",
  2202. "value": "/^$environment$/"
  2203. },
  2204. {
  2205. "condition": "AND",
  2206. "key": "app",
  2207. "operator": "=~",
  2208. "value": "/^$application$/"
  2209. },
  2210. {
  2211. "condition": "AND",
  2212. "key": "server",
  2213. "operator": "=~",
  2214. "value": "/^$server$/"
  2215. }
  2216. ]
  2217. }
  2218. ],
  2219. "timeFrom": null,
  2220. "title": "Results",
  2221. "transform": "timeseries_aggregations",
  2222. "transparent": true,
  2223. "type": "table"
  2224. },
  2225. {
  2226. "cacheTimeout": null,
  2227. "colorBackground": true,
  2228. "colorValue": false,
  2229. "colors": [
  2230. "rgba(245, 54, 54, 0.9)",
  2231. "rgba(237, 129, 40, 0.89)",
  2232. "rgba(50, 172, 45, 0.97)"
  2233. ],
  2234. "datasource": "$datasource",
  2235. "editable": true,
  2236. "error": false,
  2237. "format": "none",
  2238. "gauge": {
  2239. "maxValue": 100,
  2240. "minValue": 0,
  2241. "show": false,
  2242. "thresholdLabels": false,
  2243. "thresholdMarkers": true
  2244. },
  2245. "hideTimeOverride": true,
  2246. "id": 19,
  2247. "interval": null,
  2248. "links": [
  2249. {
  2250. "type": "dashboard"
  2251. }
  2252. ],
  2253. "mappingType": 2,
  2254. "mappingTypes": [
  2255. {
  2256. "name": "value to text",
  2257. "value": 1
  2258. },
  2259. {
  2260. "name": "range to text",
  2261. "value": 2
  2262. }
  2263. ],
  2264. "maxDataPoints": 100,
  2265. "nullPointMode": "connected",
  2266. "nullText": null,
  2267. "postfix": "",
  2268. "postfixFontSize": "50%",
  2269. "prefix": "",
  2270. "prefixFontSize": "50%",
  2271. "rangeMaps": [
  2272. {
  2273. "from": "0",
  2274. "text": "Unhealthy",
  2275. "to": "0.49"
  2276. },
  2277. {
  2278. "from": "0.5",
  2279. "text": "Degraded",
  2280. "to": "0.9"
  2281. },
  2282. {
  2283. "from": "1.0",
  2284. "text": "Healthy",
  2285. "to": "2.0"
  2286. }
  2287. ],
  2288. "span": 3,
  2289. "sparkline": {
  2290. "fillColor": "rgba(31, 118, 189, 0.18)",
  2291. "full": false,
  2292. "lineColor": "rgb(31, 120, 193)",
  2293. "show": false
  2294. },
  2295. "targets": [
  2296. {
  2297. "dsType": "influxdb",
  2298. "groupBy": [
  2299. {
  2300. "params": [
  2301. "$interval"
  2302. ],
  2303. "type": "time"
  2304. },
  2305. {
  2306. "params": [
  2307. "null"
  2308. ],
  2309. "type": "fill"
  2310. }
  2311. ],
  2312. "measurement": "application.health__score",
  2313. "policy": "default",
  2314. "refId": "A",
  2315. "resultFormat": "time_series",
  2316. "select": [
  2317. [
  2318. {
  2319. "params": [
  2320. "value"
  2321. ],
  2322. "type": "field"
  2323. },
  2324. {
  2325. "params": [],
  2326. "type": "last"
  2327. }
  2328. ]
  2329. ],
  2330. "tags": [
  2331. {
  2332. "key": "env",
  2333. "operator": "=~",
  2334. "value": "/^$environment$/"
  2335. },
  2336. {
  2337. "condition": "AND",
  2338. "key": "app",
  2339. "operator": "=~",
  2340. "value": "/^$application$/"
  2341. },
  2342. {
  2343. "condition": "AND",
  2344. "key": "server",
  2345. "operator": "=~",
  2346. "value": "/^$server$/"
  2347. }
  2348. ]
  2349. }
  2350. ],
  2351. "thresholds": "0.5,1",
  2352. "timeFrom": null,
  2353. "title": "",
  2354. "transparent": true,
  2355. "type": "singlestat",
  2356. "valueFontSize": "80%",
  2357. "valueMaps": [
  2358. {
  2359. "op": "=",
  2360. "text": "Unhealthy",
  2361. "value": "0"
  2362. },
  2363. {
  2364. "op": "=",
  2365. "text": "Degraded",
  2366. "value": "0.5"
  2367. },
  2368. {
  2369. "op": "=",
  2370. "text": "Healthy",
  2371. "value": "1.0"
  2372. }
  2373. ],
  2374. "valueName": "current"
  2375. }
  2376. ],
  2377. "repeat": null,
  2378. "repeatIteration": null,
  2379. "repeatRowId": null,
  2380. "showTitle": true,
  2381. "title": "Health",
  2382. "titleSize": "h6"
  2383. },
  2384. {
  2385. "collapse": false,
  2386. "height": "300",
  2387. "panels": [
  2388. {
  2389. "aliasColors": {},
  2390. "bars": false,
  2391. "datasource": "$datasource",
  2392. "editable": true,
  2393. "error": false,
  2394. "fill": 1,
  2395. "id": 14,
  2396. "interval": "$summarize",
  2397. "legend": {
  2398. "alignAsTable": true,
  2399. "avg": false,
  2400. "current": true,
  2401. "hideEmpty": false,
  2402. "max": false,
  2403. "min": false,
  2404. "rightSide": true,
  2405. "show": true,
  2406. "total": false,
  2407. "values": true
  2408. },
  2409. "lines": true,
  2410. "linewidth": 1,
  2411. "links": [],
  2412. "nullPointMode": "connected",
  2413. "percentage": false,
  2414. "pointradius": 5,
  2415. "points": false,
  2416. "renderer": "flot",
  2417. "seriesOverrides": [],
  2418. "span": 6,
  2419. "stack": false,
  2420. "steppedLine": false,
  2421. "targets": [
  2422. {
  2423. "alias": "$col",
  2424. "dsType": "influxdb",
  2425. "groupBy": [
  2426. {
  2427. "params": [
  2428. "$interval"
  2429. ],
  2430. "type": "time"
  2431. },
  2432. {
  2433. "params": [
  2434. "null"
  2435. ],
  2436. "type": "fill"
  2437. }
  2438. ],
  2439. "measurement": "application.httprequests__post_size",
  2440. "policy": "default",
  2441. "refId": "A",
  2442. "resultFormat": "time_series",
  2443. "select": [
  2444. [
  2445. {
  2446. "params": [
  2447. "p95"
  2448. ],
  2449. "type": "field"
  2450. },
  2451. {
  2452. "params": [],
  2453. "type": "last"
  2454. },
  2455. {
  2456. "params": [
  2457. "95th percentile"
  2458. ],
  2459. "type": "alias"
  2460. }
  2461. ],
  2462. [
  2463. {
  2464. "params": [
  2465. "p98"
  2466. ],
  2467. "type": "field"
  2468. },
  2469. {
  2470. "params": [],
  2471. "type": "last"
  2472. },
  2473. {
  2474. "params": [
  2475. "98th percentile"
  2476. ],
  2477. "type": "alias"
  2478. }
  2479. ],
  2480. [
  2481. {
  2482. "params": [
  2483. "p99"
  2484. ],
  2485. "type": "field"
  2486. },
  2487. {
  2488. "params": [],
  2489. "type": "last"
  2490. },
  2491. {
  2492. "params": [
  2493. "99th percentile"
  2494. ],
  2495. "type": "alias"
  2496. }
  2497. ],
  2498. [
  2499. {
  2500. "params": [
  2501. "last"
  2502. ],
  2503. "type": "field"
  2504. },
  2505. {
  2506. "params": [],
  2507. "type": "median"
  2508. },
  2509. {
  2510. "params": [
  2511. "median"
  2512. ],
  2513. "type": "alias"
  2514. }
  2515. ]
  2516. ],
  2517. "tags": [
  2518. {
  2519. "key": "app",
  2520. "operator": "=~",
  2521. "value": "/^$application$/"
  2522. },
  2523. {
  2524. "condition": "AND",
  2525. "key": "env",
  2526. "operator": "=~",
  2527. "value": "/^$environment$/"
  2528. },
  2529. {
  2530. "condition": "AND",
  2531. "key": "server",
  2532. "operator": "=~",
  2533. "value": "/^$server$/"
  2534. }
  2535. ]
  2536. }
  2537. ],
  2538. "thresholds": [],
  2539. "timeFrom": null,
  2540. "timeShift": null,
  2541. "title": "Post Request Size",
  2542. "tooltip": {
  2543. "msResolution": false,
  2544. "shared": true,
  2545. "sort": 0,
  2546. "value_type": "individual"
  2547. },
  2548. "type": "graph",
  2549. "xaxis": {
  2550. "mode": "time",
  2551. "name": null,
  2552. "show": true,
  2553. "values": []
  2554. },
  2555. "yaxes": [
  2556. {
  2557. "format": "decbytes",
  2558. "label": null,
  2559. "logBase": 1,
  2560. "max": null,
  2561. "min": null,
  2562. "show": true
  2563. },
  2564. {
  2565. "format": "short",
  2566. "label": null,
  2567. "logBase": 1,
  2568. "max": null,
  2569. "min": null,
  2570. "show": true
  2571. }
  2572. ]
  2573. },
  2574. {
  2575. "aliasColors": {},
  2576. "bars": false,
  2577. "datasource": "$datasource",
  2578. "editable": true,
  2579. "error": false,
  2580. "fill": 1,
  2581. "id": 15,
  2582. "interval": "$summarize",
  2583. "legend": {
  2584. "alignAsTable": true,
  2585. "avg": false,
  2586. "current": true,
  2587. "max": false,
  2588. "min": false,
  2589. "rightSide": true,
  2590. "show": true,
  2591. "total": false,
  2592. "values": true
  2593. },
  2594. "lines": true,
  2595. "linewidth": 1,
  2596. "links": [],
  2597. "nullPointMode": "connected",
  2598. "percentage": false,
  2599. "pointradius": 5,
  2600. "points": false,
  2601. "renderer": "flot",
  2602. "seriesOverrides": [],
  2603. "span": 6,
  2604. "stack": false,
  2605. "steppedLine": false,
  2606. "targets": [
  2607. {
  2608. "alias": "$col",
  2609. "dsType": "influxdb",
  2610. "groupBy": [
  2611. {
  2612. "params": [
  2613. "$interval"
  2614. ],
  2615. "type": "time"
  2616. },
  2617. {
  2618. "params": [
  2619. "null"
  2620. ],
  2621. "type": "fill"
  2622. }
  2623. ],
  2624. "measurement": "application.httprequests__put_size",
  2625. "policy": "default",
  2626. "refId": "A",
  2627. "resultFormat": "time_series",
  2628. "select": [
  2629. [
  2630. {
  2631. "params": [
  2632. "p95"
  2633. ],
  2634. "type": "field"
  2635. },
  2636. {
  2637. "params": [],
  2638. "type": "last"
  2639. },
  2640. {
  2641. "params": [
  2642. "95th percentile"
  2643. ],
  2644. "type": "alias"
  2645. }
  2646. ],
  2647. [
  2648. {
  2649. "params": [
  2650. "p98"
  2651. ],
  2652. "type": "field"
  2653. },
  2654. {
  2655. "params": [],
  2656. "type": "last"
  2657. },
  2658. {
  2659. "params": [
  2660. "98th percentile"
  2661. ],
  2662. "type": "alias"
  2663. }
  2664. ],
  2665. [
  2666. {
  2667. "params": [
  2668. "p99"
  2669. ],
  2670. "type": "field"
  2671. },
  2672. {
  2673. "params": [],
  2674. "type": "last"
  2675. },
  2676. {
  2677. "params": [
  2678. "99th percentile"
  2679. ],
  2680. "type": "alias"
  2681. }
  2682. ],
  2683. [
  2684. {
  2685. "params": [
  2686. "median"
  2687. ],
  2688. "type": "field"
  2689. },
  2690. {
  2691. "params": [],
  2692. "type": "median"
  2693. },
  2694. {
  2695. "params": [
  2696. "median"
  2697. ],
  2698. "type": "alias"
  2699. }
  2700. ]
  2701. ],
  2702. "tags": [
  2703. {
  2704. "key": "app",
  2705. "operator": "=~",
  2706. "value": "/^$application$/"
  2707. },
  2708. {
  2709. "condition": "AND",
  2710. "key": "env",
  2711. "operator": "=~",
  2712. "value": "/^$environment$/"
  2713. },
  2714. {
  2715. "condition": "AND",
  2716. "key": "server",
  2717. "operator": "=~",
  2718. "value": "/^$server$/"
  2719. }
  2720. ]
  2721. }
  2722. ],
  2723. "thresholds": [],
  2724. "timeFrom": null,
  2725. "timeShift": null,
  2726. "title": "Put Request Size",
  2727. "tooltip": {
  2728. "msResolution": false,
  2729. "shared": true,
  2730. "sort": 0,
  2731. "value_type": "individual"
  2732. },
  2733. "type": "graph",
  2734. "xaxis": {
  2735. "mode": "time",
  2736. "name": null,
  2737. "show": true,
  2738. "values": []
  2739. },
  2740. "yaxes": [
  2741. {
  2742. "format": "bytes",
  2743. "label": null,
  2744. "logBase": 1,
  2745. "max": null,
  2746. "min": null,
  2747. "show": true
  2748. },
  2749. {
  2750. "format": "short",
  2751. "label": null,
  2752. "logBase": 1,
  2753. "max": null,
  2754. "min": null,
  2755. "show": true
  2756. }
  2757. ]
  2758. }
  2759. ],
  2760. "repeat": null,
  2761. "repeatIteration": null,
  2762. "repeatRowId": null,
  2763. "showTitle": true,
  2764. "title": "PUT & POST Request Size",
  2765. "titleSize": "h6"
  2766. }
  2767. ],
  2768. "schemaVersion": 14,
  2769. "style": "dark",
  2770. "tags": [
  2771. "influxdb"
  2772. ],
  2773. "templating": {
  2774. "list": [
  2775. {
  2776. "allValue": null,
  2777. "current": {},
  2778. "datasource": "$datasource",
  2779. "hide": 0,
  2780. "includeAll": false,
  2781. "label": null,
  2782. "multi": false,
  2783. "name": "environment",
  2784. "options": [],
  2785. "query": "SHOW TAG VALUES WITH KEY = \"env\"",
  2786. "refresh": 1,
  2787. "regex": "",
  2788. "sort": 1,
  2789. "tagValuesQuery": null,
  2790. "tags": [],
  2791. "tagsQuery": null,
  2792. "type": "query",
  2793. "useTags": false
  2794. },
  2795. {
  2796. "allValue": null,
  2797. "current": {},
  2798. "datasource": "$datasource",
  2799. "hide": 0,
  2800. "includeAll": false,
  2801. "label": null,
  2802. "multi": false,
  2803. "name": "application",
  2804. "options": [],
  2805. "query": "SHOW TAG VALUES WITH KEY = \"app\"",
  2806. "refresh": 1,
  2807. "regex": "",
  2808. "sort": 1,
  2809. "tagValuesQuery": null,
  2810. "tags": [],
  2811. "tagsQuery": null,
  2812. "type": "query",
  2813. "useTags": false
  2814. },
  2815. {
  2816. "current": {
  2817. "text": "AppMetricsSandbox",
  2818. "value": "AppMetricsSandbox"
  2819. },
  2820. "hide": 0,
  2821. "label": null,
  2822. "name": "datasource",
  2823. "options": [],
  2824. "query": "influxdb",
  2825. "refresh": 1,
  2826. "regex": "",
  2827. "type": "datasource"
  2828. },
  2829. {
  2830. "auto": false,
  2831. "auto_count": 30,
  2832. "auto_min": "10s",
  2833. "current": {
  2834. "text": "5s",
  2835. "value": "5s"
  2836. },
  2837. "hide": 0,
  2838. "label": null,
  2839. "name": "summarize",
  2840. "options": [
  2841. {
  2842. "selected": true,
  2843. "text": "5s",
  2844. "value": "5s"
  2845. },
  2846. {
  2847. "selected": false,
  2848. "text": "10s",
  2849. "value": "10s"
  2850. },
  2851. {
  2852. "selected": false,
  2853. "text": "30s",
  2854. "value": "30s"
  2855. },
  2856. {
  2857. "selected": false,
  2858. "text": "1m",
  2859. "value": "1m"
  2860. },
  2861. {
  2862. "selected": false,
  2863. "text": "10m",
  2864. "value": "10m"
  2865. },
  2866. {
  2867. "selected": false,
  2868. "text": "30m",
  2869. "value": "30m"
  2870. },
  2871. {
  2872. "selected": false,
  2873. "text": "1h",
  2874. "value": "1h"
  2875. },
  2876. {
  2877. "selected": false,
  2878. "text": "6h",
  2879. "value": "6h"
  2880. },
  2881. {
  2882. "selected": false,
  2883. "text": "12h",
  2884. "value": "12h"
  2885. },
  2886. {
  2887. "selected": false,
  2888. "text": "1d",
  2889. "value": "1d"
  2890. },
  2891. {
  2892. "selected": false,
  2893. "text": "7d",
  2894. "value": "7d"
  2895. },
  2896. {
  2897. "selected": false,
  2898. "text": "14d",
  2899. "value": "14d"
  2900. },
  2901. {
  2902. "selected": false,
  2903. "text": "30d",
  2904. "value": "30d"
  2905. }
  2906. ],
  2907. "query": "5s,10s,30s,1m,10m,30m,1h,6h,12h,1d,7d,14d,30d",
  2908. "refresh": 2,
  2909. "type": "interval"
  2910. },
  2911. {
  2912. "allValue": null,
  2913. "current": {},
  2914. "datasource": "$datasource",
  2915. "hide": 0,
  2916. "includeAll": true,
  2917. "label": null,
  2918. "multi": true,
  2919. "name": "server",
  2920. "options": [],
  2921. "query": "SHOW TAG VALUES WITH KEY = \"server\"",
  2922. "refresh": 1,
  2923. "regex": "",
  2924. "sort": 0,
  2925. "tagValuesQuery": "",
  2926. "tags": [],
  2927. "tagsQuery": "",
  2928. "type": "query",
  2929. "useTags": false
  2930. }
  2931. ]
  2932. },
  2933. "time": {
  2934. "from": "now-5m",
  2935. "to": "now"
  2936. },
  2937. "timepicker": {
  2938. "refresh_intervals": [
  2939. "5s",
  2940. "10s",
  2941. "30s",
  2942. "1m",
  2943. "5m",
  2944. "15m",
  2945. "30m",
  2946. "1h",
  2947. "2h",
  2948. "1d"
  2949. ],
  2950. "time_options": [
  2951. "5m",
  2952. "15m",
  2953. "1h",
  2954. "6h",
  2955. "12h",
  2956. "24h",
  2957. "2d",
  2958. "7d",
  2959. "30d"
  2960. ]
  2961. },
  2962. "timezone": "browser",
  2963. "title": "App Metrics - Web Monitoring - InfluxDB",
  2964. "version": 21
  2965. }

  

最后启动AspNetCore站点,再建立点post get put什么的控制器和Action随便访问几次就可以了

源代码下载处(grafana.json是文中导入的dashboard配置文件)

AspNet Core下利用 app-metrics+Grafana + InfluxDB实现高大上的性能监控界面的更多相关文章

  1. AspNet Core 下利用普罗米修斯+Grafana构建Metrics和服务器性能的监控 (无心打造文字不喜勿喷谢谢!)

    概述 Prometheus的主要特点 组件 结构图 适用场景 不适用场景 安装node_exporter,系统性能指数收集(收集系统性能情况) 下载文件 解压并复制node_exporter应用程序到 ...

  2. Asp.net core下利用EF core实现从数据实现多租户(1)

    前言 随着互联网的的高速发展,大多数的公司由于一开始使用的传统的硬件/软件架构,导致在业务不断发展的同时,系统也逐渐地逼近传统结构的极限. 于是,系统也急需进行结构上的升级换代. 在服务端,系统的I/ ...

  3. Asp.net core下利用EF core实现从数据实现多租户(3): 按Schema分离 附加:EF Migration 操作

    前言 前段时间写了EF core实现多租户的文章,实现了根据数据库,数据表进行多租户数据隔离. 今天开始写按照Schema分离的文章. 其实还有一种,是通过在数据表内添加一个字段做多租户的,但是这种模 ...

  4. EF Core下利用Mysql进行数据存储在并发访问下的数据同步问题

    小故事 在开始讲这篇文章之前,我们来说一个小故事,纯素虚构(真实的存钱逻辑并非如此) 小刘发工资后,赶忙拿着现金去银行,准备把钱存起来,而与此同时,小刘的老婆刘嫂知道小刘的品性,知道他发工资的日子,也 ...

  5. Asp.net core下利用EF core实现从数据实现多租户(2) : 按表分离

    前言 在上一篇文章中,我们介绍了如何根据不同的租户进行数据分离,分离的办法是一个租户一个数据库. 也提到了这种模式还是相对比较重,所以本文会介绍一种更加普遍使用的办法: 按表分离租户. 这样做的好处是 ...

  6. 在k8s集群中,利用prometheus的jmx_exporter进行tomcat的JVM性能监控,并用grafana作前端展示

    查找了很多文档,没有完全达到我要求的, 于是,作了一定的调整,成现在这样. 操作步骤如下: 一,准备好两个文件. jmx_prometheus_javaagent-0.3.1.jar jmx_expo ...

  7. docker-compose(grafana influxdb) + telegraf 快速搭建简单监控

     灵活实现方案:   1:     telegraf 为go 语言写得占用内存小 收集主机各项监控数据 定时写入 时序DB   influxdb ------------------------&qu ...

  8. Linux下利用Valgrind工具进行内存泄露检测和性能分析

    from http://www.linuxidc.com/Linux/2012-06/63754.htm Valgrind通常用来成分析程序性能及程序中的内存泄露错误 一 Valgrind工具集简绍 ...

  9. Apache SkyWalking 为.NET Core带来开箱即用的分布式追踪和应用性能监控

    在大型网站系统设计中,随着分布式架构,特别是微服务架构的流行,我们将系统解耦成更小的单元,通过不断的添加新的.小的模块或者重用已经有的模块来构建复杂的系统.随着模块的不断增多,一次请求可能会涉及到十几 ...

随机推荐

  1. re模块正则表达式

    regular expression / regex / RE 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配.Python 自1.5版本起增加了re 模块,它提供 ...

  2. Flash设置(各种版本浏览器包括低版本IE)

    涉及到的各种版本flash百度下都能下到的,不再说明. Flash的安装比较麻烦,涉及多种浏览器.多种操作系统支持,安装.设置的地方比较多,以下说明基本涉及大部分安装过程中可能遇到的问题,如果安装或视 ...

  3. python之路(8)常用模块

    目录 os模块 sys模块 json模块 pickle模块 xml模块 re模块 logging模块 configparser模块 hashlib模块 time模块 random模块 subproce ...

  4. ClassLoader那事儿

    ClassLoader是什么 ClassLoader中文类加载器,java编写出来的是.java文件,然后编译成.class文件,而ClassLoader就是把class文件加载到jvm内存中:但jv ...

  5. docker 基础知识分享ppt

    给团队做的docker基础分享ppt, 见下面的附件. https://files.cnblogs.com/files/harrychinese/docker_intro.pptx

  6. Groovy中的GString

    在讨论GString之前,我们先讨论一下Groovy里面的String.在Groovy里面String有 println 'test string' println '''test string''' ...

  7. 解决本地SqlServer无法连接远程服务器数据库,错误10060

    本地SqlServer 连不上服务器的数据库环境,错误信息如下图,折腾来折腾去,最终还是解决了 第一步 查看服务器本地端口是否已经打开,查看方法:首先向C:\Windows\System32文件夹添加 ...

  8. L1-Day10

    1.你需要的是更多的练习.[我的翻译]That you need is more practice.[标准答案]What you need is more practice[对比分析]主语从句用Tha ...

  9. 论文笔记:Learning wrapped guidance for blind face restoration

    这篇论文主要是讲人脸修复的,所谓人脸修复,其实就是将低清的,或者经过压缩等操作的人脸图像进行高清复原.这可以近似为针对人脸的图像修复工作.在图像修复中,我们都会假设退化的图像是高清图像经过某种函数映射 ...

  10. golang interface类型转string等其他类型

    inter 是interface类型,转化为string类型是: str := inter .(string) 转为其他类型也类似