尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Nancy模块性能监控指南:Metrics.NET的Nancy.Metrics适配器与NLog指标输出实战

Nancy模块性能监控指南:Metrics.NET的Nancy.Metrics适配器与NLog指标输出实战 Nancy模块性能监控指南Metrics.NET的Nancy.Metrics适配器与NLog指标输出实战【免费下载链接】Metrics.NETThe Metrics.NET library provides a way of instrumenting applications with custom metrics (timers, histograms, counters etc) that can be reported in various ways and can provide insights on what is happening inside a running application.项目地址: https://gitcode.com/gh_mirrors/me/Metrics.NETMetrics.NET 是一个 .NET 应用性能监控库其中的Nancy.Metrics 适配器可以将 Nancy Web 框架的每次请求自动采集为指标请求耗时、错误率、活跃连接数等而Metrics.NLog 适配器则支持把这些指标通过 NLog 日志框架定期输出为 CSV 文件或文本日志。本文将带你快速完成这两项能力的接入让 Nancy 应用的运行状态一目了然。为什么需要给 Nancy 应用做指标监控线上服务常见的玄学问题——某个接口偶尔变慢、某类请求错误率飙升、并发升高后响应时间翻倍——靠肉眼翻日志很难发现规律。Metrics.NET 的思路是用极低开销的埋点持续记录数字再由各种报告器Reporter周期性输出。对于 Nancy 应用适配器已经帮你把最常用的埋点都写好了一行配置即可启用。快速上手3 步接入 Nancy.Metrics 适配器核心配置在 Nancy 的 Bootstrapper 中完成调用链非常简洁示例见 Samples/NancyFx.Sample/SampleBootstrapper.csprotected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines) { base.ApplicationStartup(container, pipelines); Metric.Config .WithReporting(r r.WithNLogCSVReports(TimeSpan.FromSeconds(5))) // NLog 指标输出 .WithNancy(pipelines); // 启用 Nancy 适配器 }第 1 步调用WithNancy(pipelines)挂接 Nancy 流水线pipeline自动注册全部全局指标实现位于Src/Adapters/Nancy.Metrics/NancyMetrics.cs第 2 步它会同时自动注册/metrics端点模块Src/Adapters/Nancy.Metrics/MetricsModule.cs无需额外编写 Controller第 3 步配置报告器。本文重点演示 NLog 方式下一节也可以换成WithConsoleReport、CSV 文件、Graphite、InfluxDB 等。如果想精细控制启用哪些指标可以传入配置回调Metric.Config .WithNancy(pipelines, nancy nancy .WithNancyMetrics(m m.WithAllMetrics()) // 或按需只启用部分指标 .WithMetricsModule()); // 暴露 /metrics 端点内置的 5 类 Nancy 请求性能指标WithAllMetrics()一次注册 5 种指标全部定义在Src/Adapters/Nancy.Metrics/NancyGlobalMetrics.cs指标名类型监控内容NancyFx.RequestsTimer每秒请求数 请求耗时分布NancyFx.ErrorsMeter未处理异常的频率NancyFx.ActiveRequestsCounter当前正在处理的请求数NancyFx.PostPutRequestSizeHistogramPOST/PUT 请求体大小分布GET /item/{id}等路由名Timer每个路由单独的耗时统计其中按路由计时特别实用——每个请求会按其匹配到的路由自动归入名为GET /test这样的独立 Timer方便你直接对比各接口的 P95、P99 延迟。此外Src/Adapters/Nancy.Metrics/NancyModuleMetricExtensions.cs还提供了模块级扩展方法可对指定路由做更细粒度的埋点// 在 NancyModule 构造函数中 this.MetricForRequestTimeAndResponseSize(TestRequest, Get, /test); this.MetricForRequestSize(TestRequestSize, Post, /action);更多用法可参考Samples/NancyFx.Sample/SampleModule.cs。实时查看指标/metrics 端点启用后浏览器直接访问应用即可看到数据Src/Adapters/Nancy.Metrics/MetricsModule.cs/metrics— 内置 Flot 图表可视化页面自动 gzip 压缩/metrics/json— 标准 JSON 格式可对接第三方系统/metrics/v2/json— V2 版 JSON/metrics/text— 人类可读文本/metrics/health— 健康检查结果不健康时返回 HTTP 500/metrics/ping— 存活探测如果需要加认证可以这样配置Src/Adapters/Nancy.Metrics/NancyMetricsConfig.cs.WithMetricsModule(m m.RequiresAuthentication())NLog 指标输出实战定期写入 CSV 文件这是本文的重点。Metrics.NLog 适配器Src/Adapters/Metrics.NLog/让指标可以借用 NLog 强大的目标配置能力——按指标类型分文件、自动滚动归档。1. 注册 NLog 报告器扩展方法在Src/Adapters/Metrics.NLog/NLogReportsConfigExtensions.cs两种形式// 按类型输出 CSVGauge / Counter / Meter / Histogram / Timer 各写一份 .WithNLogCSVReports(TimeSpan.FromSeconds(5)) // 输出人类可读文本 .WithNLogTextReports(TimeSpan.FromSeconds(30))工作原理适配器把每种指标注册为 NLog 自定义 Layout如CsvTimerLayout见Src/Adapters/Metrics.NLog/CsvMetricLayout.cs并通过Src/Adapters/Metrics.NLog/NLogCSVAppender.cs把 CSV 行写进日志事件NLogTextReporter.cs则把每行文本挂到Metrics.Text.{类型}.{指标名}这类 logger 名上。2. 配置 NLog 目标与规则参考项目自带示例Samples/Metrics.SamplesConsole/NLog.config关键片段variable nameLogDir value.\Logs/ variable nameMetricType value${event-context:itemMetricType}/ variable nameMetricName value${event-context:itemMetricName}/ target xsi:typeFile nameMetrics.CSV.Timer fileName${LogDir}/Metrics.CSV.${MetricType}.${MetricName}.csv archiveAboveSize10485760 archiveNumberingRolling layout xsi:typeCsvTimerLayout/ /target rules logger nameMetrics.CSV.Timer.* minlevelInfo writeToMetrics.CSV.Timer / /rules效果每个指标都会单独生成一个 CSV 文件如Logs/Metrics.CSV.Timer.Requests.csv文件超过 10MB 自动滚动归档。你可以把Rules中其他类型Gauge/Counter/Meter/Histogram的注释一并放开即可全量落盘。 小技巧NLog 事件属性MetricType/MetricName就是适配器在日志事件中注入的因此路由到不同目标文件完全由 NLog 规则驱动无需写一行代码。相关文件速查模块路径Nancy 适配器入口Src/Adapters/Nancy.Metrics/NancyMetrics.csNancy 全局指标定义Src/Adapters/Nancy.Metrics/NancyGlobalMetrics.cs指标端点模块Src/Adapters/Nancy.Metrics/MetricsModule.cs模块级埋点扩展Src/Adapters/Nancy.Metrics/NancyModuleMetricExtensions.csNLog 报告器扩展Src/Adapters/Metrics.NLog/NLogReportsConfigExtensions.csNLog CSV 布局Src/Adapters/Metrics.NLog/CsvMetricLayout.csNancy 示例工程Samples/NancyFx.Sample/NLog 配置示例Samples/Metrics.SamplesConsole/NLog.config总结一行WithNancy(pipelines)即可让 Nancy 应用获得请求耗时、错误率、活跃请求数等开箱即用的性能监控/metrics端点提供可视化页面与 JSON 接口方便排障和对接监控体系借助WithNLogCSVReports指标可按指标名自动分文件写入 CSV 并滚动归档是 .NET 老项目中零依赖落盘指标的低成本方案需要更多输出渠道Graphite、InfluxDB、ElasticSearch 等可继续探索Src/Metrics/下的其他报告器。现在打开你的 Nancy 项目把埋点加上吧【免费下载链接】Metrics.NETThe Metrics.NET library provides a way of instrumenting applications with custom metrics (timers, histograms, counters etc) that can be reported in various ways and can provide insights on what is happening inside a running application.项目地址: https://gitcode.com/gh_mirrors/me/Metrics.NET创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表