标签: prometheus-net

在另一个端口上公开 ASP.NET Core Prometheus 指标

我正在为我的 ASP.NET Core 3.1 应用程序设置 Prometheus 导出器。

我已经导入了

<PackageReference Include="prometheus-net.AspNetCore" Version="4.1.1" />

这就是我的配置:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    ...

    app.UseRouting();
    app.UseHttpMetrics();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
        endpoints.MapMetrics();
    });
}
Run Code Online (Sandbox Code Playgroud)

这将在与 ASP.NET Core 应用程序的其余部分相同的端口上公开指标端点,例如:my.api.com:80/metrics.

我需要做什么才能/metrics在另一个端口上公开端点?我希望我的 API 在端口 80 上运行,/metrics端点在端口 9102 上运行。

确实找不到任何相关文档。

编辑

我正在将其部署到 Kubernetes 中

kubernetes prometheus asp.net-core prometheus-net asp.net-core-3.1

6
推荐指数
1
解决办法
4474
查看次数

如何在 ASP.NET 4.7.1 中报告 Prometheus-net 指标

如何在常规 ASP.NET 4.7.1 应用程序中使用 prometheus-net?在 .Net Core 中很容易,但我找不到在 4.7.1 中向 Grafana 报告指标的好方法

理想的情况是拥有/metrics报告指标的路径。

我试图创建一个粗略的测试控制器来运行,MetricServer但出现错误。

// horrible test code
[RoutePrefix("metrics")]
public class MetricsController : ApiController
{
    static readonly MetricServer _server = new MetricServer(7777);

    static MetricsController()
    {
        _server.Start();
    }

    [Route("")]
    public async Task<IHttpActionResult> Get()
    {
        using (var client = new HttpClient())
        {
            var metrics = await client.GetAsync("http://localhost:7777/metrics");
            return Content(HttpStatusCode.OK, await metrics.Content.ReadAsStringAsync(),null, metrics.Content.Headers.ContentType.ToString());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

System.Net.HttpListenerException: '访问被拒绝'

c# asp.net asp.net-mvc prometheus-net

5
推荐指数
2
解决办法
2682
查看次数

可以在普罗米修斯中比较两个不同的时间序列吗?

我想比较以下两个彼此不同的时间序列。我要做的就是将第二时间序列的结果除以第一时间序列的结果,如果值小于1,则生成警报。我使用的查询低于我在下面提到的时间序列。如何实现我的目标?

第一次系列:

container_memory_usage_bytes {container_name =“ documentation”}

结果:

container_memory_usage_bytes{
   beta_kubernetes_io_arch="amd64",
   beta_kubernetes_io_fluentd_ds_ready="true",
   beta_kubernetes_io_instance_type="n1-highmem-8",
   beta_kubernetes_io_os="linux",
   cloud_google_com_gke_nodepool="pool-1",
   container_name="documentation",
   failure_domain_beta_kubernetes_io_region="europe-west1",
   failure_domain_beta_kubernetes_io_zone="europe-west1-b",
   id="/kubepods/burstable/podb79239ff-1ee9-11e8-a6c1-42010a840fd9/3ccdaa6597d5bd306d228e37d9d4c65a9681dba2e894aa7b7ed4502ec54e5619",
   image="gcr.io/ingenious-169318/publicapi/documentation@sha256:60a5454bb40ed34f24cbeb9f330e1097191754cf2890eee1ca4f2988188a7705",
   instance="gke-ingenious-pool-1-bbd77706-5rbz",
   job="kubernetes-cadvisor",
   kubernetes_io_hostname="gke-ingenious-pool-1-bbd77706-5rbz",
   name="k8s_documentation_documentation-6c4c4c9f5f-dn2bv_apimanager_b79239ff-1ee9-11e8-a6c1-42010a840fd9_0",
   namespace="apimanager",
   pod_name="documentation-6c4c4c9f5f-dn2bv"
}
Run Code Online (Sandbox Code Playgroud)

第二时间系列:-

kube_pod_container_resource_requests_memory_bytes {container =“ documentation”}

结果:

kube_pod_container_resource_requests_memory_bytes{
   container="documentation",
   instance="10.32.0.30:8080",
   job="kubernetes-service-endpoints",
   k8s_app="kube-state-metrics",
   kubernetes_name="kube-state-metrics",
   kubernetes_namespace="kube-system",
   namespace="apimanager",
   node="gke-ingenious-pool-1-bbd77706-pdsz",
   pod="documentation-6c4c4c9f5f-mzd54"
}
Run Code Online (Sandbox Code Playgroud)

PromQL:

kube_pod_container_resource_requests_memory_bytes {container =“ documentation”} /((container_memory_usage_bytes {namespace =“ apimanager”})

prometheus prometheus-operator prometheus-net

2
推荐指数
1
解决办法
2417
查看次数