Skip to content

Can create Histogram metrics on latest prom-client #651

@NotNikita

Description

@NotNikita

Description

Hey, i was trying to create simple Histogram metric via latest prom-client on express server, but prom-client keeps choking internally on the method "histogram.reset" that i am not even using. Maybe you can suggest something?

Error

2025-03-02 19:22:50 Warning: Not implemented: process.cpuUsage()
2025-03-02 19:22:50 Listening on http://0.0.0.0:8080/
2025-03-02 19:23:14  name="BatchSpanProcessor.Flush.ExportError" reason="Other(hyper_util::client::legacy::Error(Connect, ConnectError(\"tcp connect error\", Os { code: 111, kind: ConnectionRefused, message: \"Connection refused\" })))" message=Failed during the export process
2025-03-02 19:23:15 Warning: Not implemented: process.cpuUsage()
2025-03-02 19:23:15 Error generating metrics: TypeError: histogram.reset is not a function
2025-03-02 19:23:15     at Gauge.collect (file:///deno-dir/npm/registry.npmjs.org/prom-client/15.1.3/lib/metrics/eventLoopLag.js:63:15)
2025-03-02 19:23:15     at Gauge.get (file:///deno-dir/npm/registry.npmjs.org/prom-client/15.1.3/lib/gauge.js:110:19)
2025-03-02 19:23:15     at Registry.getMetricsAsString (file:///deno-dir/npm/registry.npmjs.org/prom-client/15.1.3/lib/registry.js:35:21)
2025-03-02 19:23:15     at file:///deno-dir/npm/registry.npmjs.org/prom-client/15.1.3/lib/registry.js:91:16
2025-03-02 19:23:15     at Array.map (<anonymous>)
2025-03-02 19:23:15     at Registry.metrics (file:///deno-dir/npm/registry.npmjs.org/prom-client/15.1.3/lib/registry.js:87:45)
2025-03-02 19:23:15     at file:///app/main.ts:18:38
2025-03-02 19:23:15     at mapped (ext:deno_http/00_serve.ts:391:24)
2025-03-02 19:23:15     at mapped (ext:deno_http/00_serve.ts:456:44)
2025-03-02 19:23:15     at ext:deno_http/00_serve.ts:631:29

Code

import client from "prom-client";
import { histogram } from "./histogram.ts";

// Creating a Registry to add it to metric
const register = new client.Registry();
client.collectDefaultMetrics({ register });
register.registerMetric(histogram);

Deno.serve({ port: config.appPort }, async (req) => {
  const url = new URL(req.url).pathname;

  if (url === "/metrics") {
    try {
      const metrics = await register.metrics();
      return new Response(metrics, {
        headers: { "Content-Type": register.contentType },
      });
    } catch (err) {
      console.error("Error generating metrics:", err);
      return new Response("Internal Server Error", { status: 500 });
    }
  }

  return new Response("Resource not found", { status: 404 });
});


import client from "prom-client";

export const histogram = new client.Histogram({
  name: "http_request_duration_ms",
  help: "Duration of HTTP requests in milliseconds",
  labelNames: ["method", "route", "code"],
  buckets: [
    30, 50, 70, 100, 150, 200, 250, 300, 400, 500, 600, 700, 800, 900, 1000,
  ],
});

Library version

prom-client: 15.1.3
express: 4.21.2

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions