prometheus_exporter 0.4.4 → 0.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b60596255e84ca5aedae095d4ae7dda21f1c324e49a495e73e5f8e8a6adb3472
4
- data.tar.gz: 990f03708492b5a2b5d13cf6a9bf67e091bdf62c819b1a559a0a240e6d9660bc
3
+ metadata.gz: 82048f57a2ee65b704b92d2e74c2e8033215e0331c8604c1e45a63d16f8c3a1d
4
+ data.tar.gz: fc18bcc997f15bbdb182d5199543cd11e6ccad6a774ee838586b313eaa2a6de6
5
5
  SHA512:
6
- metadata.gz: d914be65e9857dcf5173e03a8fd230d0a2004aea8cf454fd1671229c856730ee72a9793624eddcf01ee561768d228e9e2e06eddd1a72629726d1dc994f34614b
7
- data.tar.gz: 6a05a048eaa75641b749761ed823be1aa694e83d3c2f0d35e860e9237dd0f82569dc31c4c3d0e24293b10d1dcd5d36f16d893348c620f21efae9c16596b29b3c
6
+ metadata.gz: ec6a0e811258775d28e2de42713481ddde3bbd40a7c6ec9773aaf1f0a557facf5b85a6ca00646b17747381c9b39481d5f3cb6b53a66db676b0bc30e74549990f
7
+ data.tar.gz: c15fb3209e8045e113169aaa884de7bc7bfe96d2cb20dcc6a1c57e3a82b68b828e4b513c0fc96e7b156f1dcc721055f036a37fe747a684f70a2b01f6eb238061
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ 0.4.4 - 14-02-2019
2
+
3
+ - Feature: Allow process collector to ship custom labels for all process metrics
4
+ - Fix: Always scope process metrics on hostname in collector
5
+
1
6
  0.4.3 - 11-02-2019
2
7
 
3
8
  - Feature: Add alias for Gauge #observe called #set, this makes it a bit easier to migrate from prom
data/README.md CHANGED
@@ -68,7 +68,7 @@ server.start
68
68
  PrometheusExporter::Client.default = PrometheusExporter::LocalClient.new(collector: server.collector)
69
69
 
70
70
  # this ensures basic process instrumentation metrics are added such as RSS and Ruby metrics
71
- PrometheusExporter::Instrumentation::Process.start
71
+ PrometheusExporter::Instrumentation::Process.start(type: "my program", labels: {my_custom: "label for all process metrics"})
72
72
 
73
73
  gauge = PrometheusExporter::Metric::Gauge.new("rss", "used RSS for process")
74
74
  counter = PrometheusExporter::Metric::Counter.new("web_requests", "number of web requests")
@@ -3,8 +3,18 @@
3
3
  # collects stats from currently running process
4
4
  module PrometheusExporter::Instrumentation
5
5
  class Process
6
- def self.start(client: nil, type: "ruby", frequency: 30)
7
- process_collector = new(type)
6
+ def self.start(client: nil, type: "ruby", frequency: 30, labels: nil)
7
+
8
+ metric_labels =
9
+ if labels && type
10
+ labels.merge(type: type)
11
+ elsif labels
12
+ labels
13
+ else
14
+ { type: type }
15
+ end
16
+
17
+ process_collector = new(metric_labels)
8
18
  client ||= PrometheusExporter::Client.default
9
19
 
10
20
  stop if @thread
@@ -30,14 +40,26 @@ module PrometheusExporter::Instrumentation
30
40
  end
31
41
  end
32
42
 
33
- def initialize(type)
34
- @type = type
43
+ def initialize(metric_labels)
44
+ @metric_labels = metric_labels
45
+ @hostname = nil
46
+ end
47
+
48
+ def hostname
49
+ @hostname ||=
50
+ begin
51
+ `hostname`.strip
52
+ rescue => e
53
+ STDERR.puts "Unable to lookup hostname #{e}"
54
+ "unknown-host"
55
+ end
35
56
  end
36
57
 
37
58
  def collect
38
59
  metric = {}
39
60
  metric[:type] = "process"
40
- metric[:process_type] = @type
61
+ metric[:metric_labels] = @metric_labels
62
+ metric[:hostname] = hostname
41
63
  collect_gc_stats(metric)
42
64
  collect_v8_stats(metric)
43
65
  collect_process_stats(metric)
@@ -34,7 +34,7 @@ module PrometheusExporter::Server
34
34
  metrics = {}
35
35
 
36
36
  @process_metrics.map do |m|
37
- metric_key = { pid: m["pid"], type: m["process_type"] }
37
+ metric_key = m["metric_labels"].merge("pid" => m["pid"])
38
38
 
39
39
  PROCESS_GAUGES.map do |k, help|
40
40
  k = k.to_s
@@ -62,8 +62,10 @@ module PrometheusExporter::Server
62
62
  obj["created_at"] = now
63
63
 
64
64
  @process_metrics.delete_if do |current|
65
- obj["pid"] == current["pid"] || (current["created_at"] + MAX_PROCESS_METRIC_AGE < now)
65
+ (obj["pid"] == current["pid"] && obj["hostname"] == current["hostname"]) ||
66
+ (current["created_at"] + MAX_PROCESS_METRIC_AGE < now)
66
67
  end
68
+
67
69
  @process_metrics << obj
68
70
  end
69
71
  end
@@ -1,3 +1,3 @@
1
1
  module PrometheusExporter
2
- VERSION = "0.4.4"
2
+ VERSION = "0.4.5"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prometheus_exporter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Saffron