大家好!
预览:我对收集 .NET Framework 和 Core 中的指标这一主题并不陌生。每天我都在学习新的东西,但脑子里已经在耳边流淌,所以我真的希望得到社区的帮助。
关于系统: ASP.NET Core 应用程序在 Windows Iron 服务器上运行。自然 - 它托管在 IIS 上。在这里(以及在许多其他服务器上)ASP.NET(非核心)应用程序和螺旋服务正在旋转,它们将它们的指标(包括自定义指标)存储在 Windows 性能计数器中,Zabbex 代理和 Telegraf 代理从那里获取它们。存储收集的 InfluxDB 指标。画格拉法纳。
任务 1:与 Windows Performance Counters(以下简称 WPC)交 ASP.NET Core 朋友。甚至可能吗?
任务 2:如果这不可能 - 您需要最可靠的方法来收集指标并在将它们发送到 InfluxDB 之前保存它们,即使在某些步骤出现问题(例如,网络问题、InfluxDB 的服务器崩溃等)。 .)。希望 Zabbex 或 Telegraf 代理参与其中。
Prometeus 服务器不是一种选择,因为当电报和 InfluxDB 可用时,没有人愿意部署另一项服务,但不排除使用 Prometeus 客户端的可能性,因为电报可以读取它。
目前我正在尝试了解是否有可能与电报建立 App Metrics ( https://www.app-metrics.io ) 朋友,但到目前为止还没有成功,因为对 ASP.NET Core 3.0+ 的支持已经还没有在这个库中完全实现,一半的功能是愚蠢的拒绝工作(库 4.0 预览版,还没有文档)。此外,如果电报由于某种原因无法接收到度量值,如何处理这些度量值的问题尚未得到解决(这里,在 Framework-a 的情况下,WPC 提供帮助,它存储度量值并且代理可以接收它们随时)。
App Metrics 可以写入文件(到目前为止它不能,而且我还没有弄清楚 - 它在我弯曲的手中,或者库还没有准备好,但是文件没有创建并且有没有错误),现在我想知道电报是否可以从文件度量中读取(还没有找到答案)。但即使它可以 - 阅读后如何处理这个文件?如果我们一直在写入文件,它会很快增长到一个巨大的大小,并且如果我们启用覆盖模式(AppendMetricsToTextFile = false;) - 我们没有解决如果没有人可以选择保存度量的问题现在起来。
也许您知道如何通过电报与另一个图书馆交朋友?
我很想阅读您的解决方案并感谢任何建议。
上:App Metrics 的最新进展 - 设法打开端点 https://{my-site}/metrics(以 JSON 格式返回指标)和 https://{my-site}/metrics-text(以格式化文本返回指标) . https://{my-site}/env 仍然不起作用。这并不能解决在代理未运行时存储指标的问题,但有些东西已经存在。我要去看看电报。也许代理可以在家里积累指标,直到它发送。
Up:找到允许从 Prometeus 和其他客户端读取指标的电报配置。现在我正在为 Zabbix 代理寻找类似的配置。一切准备就绪后,我将在答案中发布详细信息。
Ap:在 Zabbix 代理配置中有一个以下格式的 UserParameter: UserParameter=<ключ>,<powershell команда/скрипт>,这使得收集数据成为可能,例如,通过对我们的端点的 http 请求/metrics,但这是两难的。我真的不想使用 app-metrics,因为它还没有真正为 ASP.NET Core 3+ 做好准备,而且普罗米修斯的输出是愚蠢的文本。有人知道如何将 prometheus 输出转换为 JSON,以便使用 pavershell 脚本对其进行解析并将正确格式的字符串从脚本返回到 zabbix?
