codemonitor 0.6.6 → 0.7.0

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: 66a75b8e6b4c58d6c59f98c5953c4d6638fbfc478ecef138f5a33af21c37b6e5
4
- data.tar.gz: 227b8c303da35666afb239110761ed5de74866b690bc2c9b863c4fbee89c8149
3
+ metadata.gz: 98361b3cfcf085c2e8550cac0152795481c97eaa63a7acea43163f3e36459d6e
4
+ data.tar.gz: 1f12c1834e47e54e57abc517316e49a77ee0035691e269ff2520c0b03a6ee391
5
5
  SHA512:
6
- metadata.gz: dbf1927531abbfff9cc138efa66377591cf6e447c1092f715d2f1e555b2d2e2f56258f77aef5af4faf557ce3a7e82a3daeae7ed4fc713d1b8013f4a1142fcadb
7
- data.tar.gz: 35983bc1a143f0b31ca64c28819cf9718e7469a7d6df212ca8fd6b680fb405d2a75575b02cb8d8903a6ea565e10ddfb307746b2f5a790bdbc280f76db0f58359
6
+ metadata.gz: '0641854a90117ce93fd97ed7b61494afed8179b7b11e965c9b3acc10271e81f44e537d7ec551c91d8a334282e3cf8bc34a38cb3e72186450a2d5558a45d76ee2'
7
+ data.tar.gz: e333ae0ba2960898cc0e27f531e7564b3234fb74d198131453a215a313eb1fa70da9448fc88be4428d2a28a29e691eab5642ad527ac5240adb560fe964a39fa1
data/.tool-versions ADDED
@@ -0,0 +1 @@
1
+ ruby 3.3.5
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- codemonitor (0.6.6)
4
+ codemonitor (0.7.0)
5
5
  dogapi (~> 1.45)
6
6
  octokit (~> 9.0)
7
7
 
@@ -15,16 +15,16 @@ GEM
15
15
  diff-lcs (1.3)
16
16
  dogapi (1.45.0)
17
17
  multi_json
18
- faraday (2.12.2)
18
+ faraday (2.13.4)
19
19
  faraday-net_http (>= 2.0, < 3.5)
20
20
  json
21
21
  logger
22
- faraday-net_http (3.4.0)
22
+ faraday-net_http (3.4.1)
23
23
  net-http (>= 0.5.0)
24
- json (2.9.1)
25
- logger (1.6.5)
24
+ json (2.13.2)
25
+ logger (1.7.0)
26
26
  method_source (1.0.0)
27
- multi_json (1.15.0)
27
+ multi_json (1.17.0)
28
28
  net-http (0.6.0)
29
29
  uri
30
30
  octokit (9.2.0)
@@ -36,7 +36,7 @@ GEM
36
36
  pry (0.13.1)
37
37
  coderay (~> 1.1)
38
38
  method_source (~> 1.0)
39
- public_suffix (6.0.1)
39
+ public_suffix (6.0.2)
40
40
  rainbow (3.0.0)
41
41
  rake (13.0.3)
42
42
  regexp_parser (2.1.1)
@@ -70,7 +70,7 @@ GEM
70
70
  addressable (>= 2.3.5)
71
71
  faraday (>= 0.17.3, < 3)
72
72
  unicode-display_width (1.7.0)
73
- uri (1.0.2)
73
+ uri (1.0.3)
74
74
 
75
75
  PLATFORMS
76
76
  ruby
data/README.md CHANGED
@@ -135,11 +135,37 @@ scc -f json scc.output.json
135
135
 
136
136
  ## Console
137
137
 
138
- TODO
138
+ Simply outputs all metrics to the console.
139
+
140
+ **Usage**:
141
+
142
+ The console provider prints metrics in the format `metric_name: value`. If metrics include tags (using the `#` delimiter format), they are printed as is:
143
+
144
+ ```
145
+ requests: 100
146
+ errors: 5
147
+ requests#production: 200
148
+ latency#backend,region:us-east-1,env:prod: 150
149
+ ```
139
150
 
140
151
  ## Datadog
141
152
 
142
- TODO
153
+ Sends metrics to Datadog using the Datadog API. Supports metric tagging for better organization and filtering.
154
+
155
+ **Environment Variables**:
156
+
157
+ - `DATADOG_API_KEY` (required): your Datadog API key
158
+ - `DATADOG_PREFIX` (optional): prefix to add to all metric names (default: `'codemonitor.'`)
159
+
160
+ **Metric Tagging**:
161
+
162
+ The Datadog provider supports adding tags to metrics by including them in the metric name using the `#` delimiter:
163
+
164
+ - Format: `metric_name#tag1,tag2:value,tag3`
165
+ - Example: `requests#frontend,app:webserver` → sends metric `requests` with tags `['frontend', 'app:webserver']`
166
+ - Tags follow Datadog's standard format where tags can be simple (`tag`) or key-value pairs (`key:value`)
167
+
168
+ More about tagging: [https://docs.datadoghq.com/getting_started/tagging/](https://docs.datadoghq.com/getting_started/tagging/)
143
169
 
144
170
  # Contribute
145
171
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CodeMonitor
4
- VERSION = '0.6.6'
4
+ VERSION = '0.7.0'
5
5
  end
data/providers/datadog.rb CHANGED
@@ -17,9 +17,10 @@ module Providers
17
17
  def send
18
18
  datadog_client.batch_metrics do
19
19
  pending.each do |metric, value|
20
- metric = "#{metric_prefix}#{metric}"
21
- puts "#{metric}: #{value}"
22
- datadog_client.emit_point(metric, value, type: 'gauge')
20
+ metric_name, tags = extract_tags(metric)
21
+ metric_name = "#{metric_prefix}#{metric_name}"
22
+ puts "#{metric_name}#{tags ? "[#{tags.join(',')}]" : ''}: #{value}"
23
+ datadog_client.emit_point(metric_name, value, type: 'gauge', tags: tags)
23
24
  end
24
25
  end
25
26
  end
@@ -27,5 +28,15 @@ module Providers
27
28
  private
28
29
 
29
30
  attr_reader :pending, :metric_prefix, :datadog_client
31
+
32
+ def extract_tags(metric)
33
+ if metric.include?('#')
34
+ metric_name, tag_string = metric.split('#', 2)
35
+ tags = tag_string.split(',')
36
+ [metric_name, tags]
37
+ else
38
+ [metric, nil]
39
+ end
40
+ end
30
41
  end
31
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codemonitor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.6
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ferran Basora
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-01-21 00:00:00.000000000 Z
11
+ date: 2025-09-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dogapi
@@ -120,6 +120,7 @@ extra_rdoc_files:
120
120
  files:
121
121
  - ".gitignore"
122
122
  - ".rubocop.yml"
123
+ - ".tool-versions"
123
124
  - ".travis.yml"
124
125
  - Gemfile
125
126
  - Gemfile.lock
@@ -170,7 +171,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
170
171
  - !ruby/object:Gem::Version
171
172
  version: '0'
172
173
  requirements: []
173
- rubygems_version: 3.5.22
174
+ rubygems_version: 3.5.16
174
175
  signing_key:
175
176
  specification_version: 4
176
177
  summary: Collect many metrics your code is generating