NOTE: Apart from
(and even then it's questionable, I'm Scottish). These are machine translated in languages I don't read. If they're terrible please contact me.
You can see how this translation was done in this article.
Wednesday, 18 September 2024
//Less than a minute
监测是维持您申请的健康和绩效的一个重要部分。 我已经用这个网站来监测用户访问 木美 例外和差错 Seq 单位 但现在我想把业绩监测加到组合中 在此指南中,我们将探讨如何利用格拉法纳和普罗米修斯对你们的 ASP.NET核心应用进行监测。
当然,你可以使用格拉法纳云服务, 但是对于这个指南, 我们将专注于在当地设置一切, 这样你就可以完全控制你的监控堆。
目标是得到一个像这样的仪表板:
就像这个网站一样,我想把格拉法纳元素和普罗米修斯元素 加入我的老二作曲文件, 这样我就可以把所有东西 都按一个命令上下旋转, 并把它包装起来。
在这里,你可以看到,我设置了布洛埃修斯 和folfana服务。 它们使用我共同的应用程序网络, 并有 docker 数量来持续数据 。
prometheus:
image: prom/prometheus:latest
container_name: prometheus
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
command:
- '--config.file=/etc/prometheus/prometheus.yml'
labels:
- "com.centurylinklabs.watchtower.enable=true"
networks:
- app_network
grafana:
image: grafana/grafana:latest
container_name: grafana
labels:
- "com.centurylinklabs.watchtower.enable=true"
volumes:
- grafana-data:/var/lib/grafana
networks:
- app_network
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=testpassword1234
- volumes:
grafana-data:
prometheus-data:
您会看到我设置了一个默认密码( 确定并在第一次运行时更改此密码! ) 。 我还用观测塔使这些设备自动更新。
你们会注意到,我不会在这里绘制任何港口的地图, 我会利用Caddy提供Grafana服务, 普罗米修斯只能从Docker网络内进入。
如果您想要,可以添加
# Prometheus
ports:
- "9090:9090"
# Grafana
ports:
- "3000:3000"
如果你是本地人的话,这很方便 在 Windows 中注意, 您可以在 IDE 中运行您的应用程序, 并使用“ 主机. docker. internal: 7240 ” (无论哪个端口) 在容器内访问您的应用程序 。 您也可以在您的 docker- complicate 文件中指定一个“ bridge” 网络 。
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
command:
- '--config.file=/etc/prometheus/prometheus.yml'
ports:
- "9090:9090"
networks:
- monitoring
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- "3000:3000"
networks:
- monitoring
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
networks:
monitoring:
driver: bridge
然后我们再增加一个新的 prometheus.yml
配置 Prometheus 的文件, 以从 ASP. NET 核心应用程序中抓取衡量标准 。 以下是这个文件可能长什么样的基本例子:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'mostlylucid'
metrics_path: /metrics
scheme: http
static_configs:
- targets: ['mostlylucid:8080']
你看,我用的是内部名称 mostlulucid
也就是我的 docker 服务的名称, 它的默认端口为 8080 。
我很快会在ASP.NET核心公司 报道你是如何实现这个功能的
跟着我,我跟着 在此找到的指南 要设置此设置。
您首先需要添加 OpenTelemetry.Exporter.Prometheus.AspNetCore
NuGet 软件包到您的 ASP. NET 核心项目 。 您可以在您的工程目录中运行以下命令来做到这一点 :
dotnet add package OpenTelemetry.Exporter.Prometheus.AspNetCore
下一步,您需要配置您的应用程序以暴露度量 。 在你的 Program.cs
文件, 您可以添加以下代码 :
services.AddOpenTelemetry()
.WithMetrics(builder =>
{
builder.AddPrometheusExporter();
builder.AddMeter("Microsoft.AspNetCore.Hosting", "Microsoft.AspNetCore.Server.Kestrel");
});
app.MapPrometheusScrapingEndpoint();
这为普罗米修斯刮刮痕提供了终点和数据,并建立了两个“计量器”,为ASP.NET Core和Kestrel提供了性能数据。
我花了一些时间来搞乱。 这是在.NET 8中的新特征, 似乎还是有点模糊。 上面的配置给出了 ASP. NET 仪表板所需的基本功能, 但是您可以传递更多信息给 Prometheus 。
首先是最新的 Open 遥测 Beta。 Expotor. prometheus. AspNetCore 似乎比 bita 1 版本( 至少在撰写本文时) 更稳定 。 所以我建议你用这个
dotnet add package OpenTelemetry.Exporter.Prometheus.AspNetCore --version 1.9.0-beta.2
然后您可以在您的应用程序中添加更完整的一套 Meters, 像这样 :
services.AddOpenTelemetry()
.WithMetrics(builder =>
{
builder.AddPrometheusExporter();
builder.AddAspNetCoreInstrumentation();
builder.AddRuntimeInstrumentation();
builder.AddHttpClientInstrumentation();
});
如果您将 F12 添加到这些框中, 您可以看到这些框和前面一样添加了软件包 :
例如 AddAspNetCoreInstrumentation
添加 ASP.NET Core 所建的所有度量。
return builder
.AddMeter("Microsoft.AspNetCore.Hosting")
.AddMeter("Microsoft.AspNetCore.Server.Kestrel")
.AddMeter("Microsoft.AspNetCore.Http.Connections")
.AddMeter("Microsoft.AspNetCore.Routing")
.AddMeter("Microsoft.AspNetCore.Diagnostics")
.AddMeter("Microsoft.AspNetCore.RateLimiting");
等
一旦这些功能被启用, 您可以在您的仪表板上获得更多的信息 。 例如,我在我体内添加了一个GC计数仪,以显示记忆的使用情况(并快速追踪记忆泄漏情况)。
现在Grafana开始运行 我在我的Caddyfile加了一些Caddy配置 将Grafana的服务 暴露给外面的世界。
grafana.mostlylucid.net
{
reverse_proxy grafana:3000
}
http://grafana.mostlyucid.net
{
redir https://{host}{uri}
}
我将我的域指向这个Caddy服务器, 现在我可以访问外部世界的Grafana。
网络浏览器的浏览器可以访问格拉法纳(http://localhost;如果本地运行的话,3000)。 使用您在 Docker Compose 文件中设定的证书记录 。
然后您需要为 Prometheus 设置数据源 。 要做到这一点,请单击左侧栏的齿轮图标,然后单击“数据源”。 点击“ 添加数据源 ”, 选择“ Prometheus ”, 并配置 URL 以指向您的 Prometheus 实例( http:// prometheus: 9090 if running local ) 。
在那之后,你可以开始创建仪表板 并想象你的量度!
我们将使用仪表板 将ASP.NET核心应用 收集的测量数据进行视觉化分析 您可以创建自己的仪表板或从格拉法纳仪表板库导入已有的仪表板。
为此,我们将使用以下仪表板
ASP.NET 核心概览 - 显示ASP.NET核心应用的最重要度量。
ASP.NET 核心端点设计板 - 在应用程序中显示单个端点的度量。
添加到 Dashboards - > new - > import 并粘贴进口字段的仪表板识别码。
这将在格拉法纳实例中添加仪表板。
然后我们可以进入那些新进口的仪表板, 并配置它们来指向我们的普罗米修斯数据源。
这应该能给你们带来我们在该条开头所看到的观点。 用于 Job
您选择了我们专门在 prometheus.yml
文件。 以我们为例 mostlylucid
.. 那你就应该开始看到 仪表板里充斥的量子了!
使用格拉法纳和普罗米修斯, 我们经历了多克、普罗米修斯和格拉法纳的配置步骤, 以及如何揭开ASP. 有了这个设置,你现在可以监测应用软件的性能, 并获得对其行为的有价值的洞察力。 快乐监控!