codemonitor 0.6.6 → 0.7.1
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 +4 -4
- data/.tool-versions +1 -0
- data/Gemfile.lock +8 -8
- data/README.md +28 -2
- data/lib/codemonitor/version.rb +1 -1
- data/providers/base_provider.rb +15 -0
- data/providers/console.rb +3 -13
- data/providers/datadog.rb +18 -10
- data/providers/test.rb +3 -11
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3827599eb7fa2efbf7519ac50cab319cbb558ccd8c8919bbbc655699c12c10e8
|
4
|
+
data.tar.gz: 574ea905f2ab2643a83e807a9109a2d3761e2b89e6d657aad9e9c7c4d0cca4be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1dbcd9264909f8a556b97752c1c600bca72a072799855cd897485d1acbde01ece7277a17662db12056d7ff37230c100d47a4dcdfb99efe1e24de35de885cd7c2
|
7
|
+
data.tar.gz: 63bd28af1b58d502e4a1f767050b3062d37994e5bdf90a4b0592162286ea9eebd7b843018f9d4978910551f829cffd70e07038a3d04d65e562fdef4874e2ea66
|
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.
|
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.
|
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.
|
22
|
+
faraday-net_http (3.4.1)
|
23
23
|
net-http (>= 0.5.0)
|
24
|
-
json (2.
|
25
|
-
logger (1.
|
24
|
+
json (2.13.2)
|
25
|
+
logger (1.7.0)
|
26
26
|
method_source (1.0.0)
|
27
|
-
multi_json (1.
|
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.
|
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.
|
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
|
-
|
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
|
-
|
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
|
|
data/lib/codemonitor/version.rb
CHANGED
data/providers/console.rb
CHANGED
@@ -1,23 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
class Console
|
5
|
-
def initialize
|
6
|
-
@pending = {}
|
7
|
-
end
|
8
|
-
|
9
|
-
def emit(metrics)
|
10
|
-
@pending = pending.merge(metrics)
|
11
|
-
end
|
3
|
+
require_relative 'base_provider'
|
12
4
|
|
5
|
+
module Providers
|
6
|
+
class Console < BaseProvider
|
13
7
|
def send
|
14
8
|
pending.map do |metric, value|
|
15
9
|
puts "#{metric}: #{value}"
|
16
10
|
end
|
17
11
|
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
attr_reader :pending
|
22
12
|
end
|
23
13
|
end
|
data/providers/datadog.rb
CHANGED
@@ -1,31 +1,39 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative 'base_provider'
|
3
4
|
require 'dogapi'
|
4
5
|
|
5
6
|
module Providers
|
6
|
-
class Datadog
|
7
|
+
class Datadog < BaseProvider
|
7
8
|
def initialize
|
8
|
-
|
9
|
+
super
|
9
10
|
@metric_prefix = ENV['DATADOG_PREFIX'] || 'codemonitor.'
|
10
11
|
@datadog_client = Dogapi::Client.new(ENV['DATADOG_API_KEY'])
|
11
12
|
end
|
12
13
|
|
13
|
-
def emit(metrics)
|
14
|
-
@pending = pending.merge(metrics)
|
15
|
-
end
|
16
|
-
|
17
14
|
def send
|
18
15
|
datadog_client.batch_metrics do
|
19
16
|
pending.each do |metric, value|
|
20
|
-
|
21
|
-
|
22
|
-
|
17
|
+
metric_name, tags = extract_tags(metric)
|
18
|
+
metric_name = "#{metric_prefix}#{metric_name}"
|
19
|
+
puts "#{metric_name}#{tags ? "[#{tags.join(',')}]" : ''}: #{value}"
|
20
|
+
datadog_client.emit_point(metric_name, value, type: 'gauge', tags: tags)
|
23
21
|
end
|
24
22
|
end
|
25
23
|
end
|
26
24
|
|
27
25
|
private
|
28
26
|
|
29
|
-
attr_reader :
|
27
|
+
attr_reader :metric_prefix, :datadog_client
|
28
|
+
|
29
|
+
def extract_tags(metric)
|
30
|
+
if metric.include?('#')
|
31
|
+
metric_name, tag_string = metric.split('#', 2)
|
32
|
+
tags = tag_string.split(',')
|
33
|
+
[metric_name, tags]
|
34
|
+
else
|
35
|
+
[metric, nil]
|
36
|
+
end
|
37
|
+
end
|
30
38
|
end
|
31
39
|
end
|
data/providers/test.rb
CHANGED
@@ -1,17 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
class Test
|
5
|
-
def initialize
|
6
|
-
@pending = {}
|
7
|
-
end
|
8
|
-
|
9
|
-
def emit(metrics)
|
10
|
-
@pending = pending.merge(metrics)
|
11
|
-
end
|
3
|
+
require_relative 'base_provider'
|
12
4
|
|
5
|
+
module Providers
|
6
|
+
class Test < BaseProvider
|
13
7
|
def send; end
|
14
|
-
|
15
|
-
attr_reader :pending
|
16
8
|
end
|
17
9
|
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.
|
4
|
+
version: 0.7.1
|
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-
|
11
|
+
date: 2025-09-04 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
|
@@ -146,6 +147,7 @@ files:
|
|
146
147
|
- exe/codemonitor
|
147
148
|
- lib/codemonitor/version.rb
|
148
149
|
- lib/shell.rb
|
150
|
+
- providers/base_provider.rb
|
149
151
|
- providers/console.rb
|
150
152
|
- providers/datadog.rb
|
151
153
|
- providers/test.rb
|
@@ -170,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
170
172
|
- !ruby/object:Gem::Version
|
171
173
|
version: '0'
|
172
174
|
requirements: []
|
173
|
-
rubygems_version: 3.5.
|
175
|
+
rubygems_version: 3.5.16
|
174
176
|
signing_key:
|
175
177
|
specification_version: 4
|
176
178
|
summary: Collect many metrics your code is generating
|