telegraf 3.1.0 → 3.3.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: 3a3db63f503d4b63bc67c09e19f56ea31ad51a3e11fd6e96bb7d4238c09bc98b
4
- data.tar.gz: 8389b82b7ab525740074463d83c835fde5ca5b14934705d990b18cbb1cf321fe
3
+ metadata.gz: 7d7c2f55b121766ee4dcb043ab90c60b24f122485ff8b258f9a74670fbc698ea
4
+ data.tar.gz: e964b04492e9f17a3760a42304f7feb7cb3880cfcaf99c4a1318b4c98cc4be13
5
5
  SHA512:
6
- metadata.gz: e8e5fa0337d5b0e6754bf7434b875c6e21f330220f9c0a9d7d75a23d1c2dcb86395fdf40279203bab633703247e3152e717d9209a96736c880040ec064716196
7
- data.tar.gz: db3bb1afce88c9ab71e4b3f5c10da06abbf7883553a59fcd9db0252d063c047656588afcffda0a79d94fe08dd9b73a2a3090dfe93926ba401e64b921bda8bdc2
6
+ metadata.gz: a5e8c04e244d3994fda138e4c1af64cfef701c515506803509f080c476e8179e0cf0d67efd9ea7c84657f06ec1fb592c37a26e2c7231ab8fbc0f34b35f4a4f0b
7
+ data.tar.gz: e957dd0d408335e13cc6bd604b3ed03ccd5e611d1921aa5f464cd0e7a4980edb7072b40b9ebd277b5d3a9ba4b72e8db39fc586e9accee22069f30f17e0b963c2
@@ -30,6 +30,7 @@ jobs:
30
30
  - rack_2.0.gemfile
31
31
  - sidekiq_6.gemfile
32
32
  - sidekiq_7.gemfile
33
+ - sidekiq_8.gemfile
33
34
  exclude:
34
35
  - ruby: "3.4"
35
36
  gemfile: rails_7.0.gemfile
@@ -41,6 +42,8 @@ jobs:
41
42
  gemfile: rack_2.0.gemfile
42
43
  - ruby: "3.1"
43
44
  gemfile: rails_8.0.gemfile
45
+ - ruby: "3.1"
46
+ gemfile: sidekiq_8.gemfile
44
47
  fail-fast: false
45
48
 
46
49
  env:
data/Appraisals CHANGED
@@ -65,3 +65,9 @@ appraise 'sidekiq-7' do
65
65
  gem 'sidekiq', '~> 7.0'
66
66
  end
67
67
  end
68
+
69
+ appraise 'sidekiq-8' do
70
+ group :test do
71
+ gem 'sidekiq', '~> 8.0'
72
+ end
73
+ end
data/CHANGELOG.md CHANGED
@@ -6,6 +6,16 @@ All notable changes to this project will be documented in this file.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ### Added
10
+
11
+ - Support for integer timestamps in X-Request-Start by @leshik (#37)
12
+
13
+ ## [3.2.0] - 2025-03-08
14
+
15
+ ### Added
16
+
17
+ - Support for Sidekiq 8
18
+
9
19
  ## [3.1.0] - 2025-01-31
10
20
 
11
21
  ### Added
@@ -78,7 +88,8 @@ All notable changes to this project will be documented in this file.
78
88
 
79
89
  - Remove `influxdb` not unnecessarily restrict users needing a specific influxdb client.
80
90
 
81
- [Unreleased]: https://github.com/jgraichen/telegraf-ruby/compare/v3.1.0...HEAD
91
+ [Unreleased]: https://github.com/jgraichen/telegraf-ruby/compare/v3.2.0...HEAD
92
+ [3.2.0]: https://github.com/jgraichen/telegraf-ruby/compare/v3.1.0...v3.2.0
82
93
  [3.1.0]: https://github.com/jgraichen/telegraf-ruby/compare/v3.0.0...v3.1.0
83
94
  [3.0.0]: https://github.com/jgraichen/telegraf-ruby/compare/v2.1.1...v3.0.0
84
95
  [2.1.1]: https://github.com/jgraichen/telegraf-ruby/compare/v2.1.0...v2.1.1
data/Gemfile CHANGED
@@ -11,12 +11,13 @@ gem 'rake-release', '~> 1.2'
11
11
  gem 'rspec', '~> 3.8'
12
12
  gem 'rspec-github', require: false
13
13
 
14
- gem 'rubocop-config', github: 'jgraichen/rubocop-config', tag: 'v13'
14
+ gem 'rubocop-config', github: 'jgraichen/rubocop-config', tag: 'v14'
15
15
 
16
16
  group :test do
17
17
  gem 'rack'
18
18
  gem 'rails'
19
19
  gem 'sidekiq'
20
+ gem 'timecop'
20
21
  end
21
22
 
22
23
  group :development do
data/README.md CHANGED
@@ -51,7 +51,7 @@ It further includes plugins for Rack, Rails, ActiveJob and Sidekiq to collect re
51
51
  ## Installation
52
52
 
53
53
  ```ruby
54
- gem 'telegraf'
54
+ gem 'telegraf', '~> 3.3'
55
55
  ```
56
56
 
57
57
  And then execute:
@@ -194,7 +194,7 @@ See middleware [class documentation](lib/telegraf/sidekiq.rb) for more details.
194
194
 
195
195
  ## License
196
196
 
197
- Copyright (C) 2017-2024 Jan Graichen
197
+ Copyright (C) 2017-2025 Jan Graichen
198
198
 
199
199
  This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
200
200
 
@@ -3,19 +3,20 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rake"
6
+ gem "rake-release", "~> 1.2"
6
7
  gem "rspec", "~> 3.8"
7
8
  gem "rspec-github", require: false
8
- gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v13"
9
+ gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v14"
9
10
 
10
11
  group :test do
11
12
  gem "rack", "~> 2.0.0"
12
13
  gem "rails"
13
14
  gem "sidekiq"
15
+ gem "timecop"
14
16
  end
15
17
 
16
18
  group :development do
17
19
  gem "appraisal"
18
- gem "rake-release", "~> 1.2"
19
20
  end
20
21
 
21
22
  gemspec path: "../"
@@ -3,19 +3,20 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rake"
6
+ gem "rake-release", "~> 1.2"
6
7
  gem "rspec", "~> 3.8"
7
8
  gem "rspec-github", require: false
8
- gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v13"
9
+ gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v14"
9
10
 
10
11
  group :test do
11
12
  gem "rack", "~> 2.1.0"
12
13
  gem "rails"
13
14
  gem "sidekiq"
15
+ gem "timecop"
14
16
  end
15
17
 
16
18
  group :development do
17
19
  gem "appraisal"
18
- gem "rake-release", "~> 1.2"
19
20
  end
20
21
 
21
22
  gemspec path: "../"
@@ -3,19 +3,20 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rake"
6
+ gem "rake-release", "~> 1.2"
6
7
  gem "rspec", "~> 3.8"
7
8
  gem "rspec-github", require: false
8
- gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v13"
9
+ gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v14"
9
10
 
10
11
  group :test do
11
12
  gem "rack", "~> 2.2.0"
12
13
  gem "rails"
13
14
  gem "sidekiq"
15
+ gem "timecop"
14
16
  end
15
17
 
16
18
  group :development do
17
19
  gem "appraisal"
18
- gem "rake-release", "~> 1.2"
19
20
  end
20
21
 
21
22
  gemspec path: "../"
@@ -3,19 +3,20 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rake"
6
+ gem "rake-release", "~> 1.2"
6
7
  gem "rspec", "~> 3.8"
7
8
  gem "rspec-github", require: false
8
- gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v13"
9
+ gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v14"
9
10
 
10
11
  group :test do
11
12
  gem "rack", "~> 3.0"
12
13
  gem "rails"
13
14
  gem "sidekiq"
15
+ gem "timecop"
14
16
  end
15
17
 
16
18
  group :development do
17
19
  gem "appraisal"
18
- gem "rake-release", "~> 1.2"
19
20
  end
20
21
 
21
22
  gemspec path: "../"
@@ -3,19 +3,20 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rake"
6
+ gem "rake-release", "~> 1.2"
6
7
  gem "rspec", "~> 3.8"
7
8
  gem "rspec-github", require: false
8
- gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v13"
9
+ gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v14"
9
10
 
10
11
  group :test do
11
12
  gem "rack"
12
13
  gem "rails", "~> 6.1.0"
13
14
  gem "sidekiq"
15
+ gem "timecop"
14
16
  end
15
17
 
16
18
  group :development do
17
19
  gem "appraisal"
18
- gem "rake-release", "~> 1.2"
19
20
  end
20
21
 
21
22
  gemspec path: "../"
@@ -3,19 +3,20 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rake"
6
+ gem "rake-release", "~> 1.2"
6
7
  gem "rspec", "~> 3.8"
7
8
  gem "rspec-github", require: false
8
- gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v13"
9
+ gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v14"
9
10
 
10
11
  group :test do
11
12
  gem "rack"
12
13
  gem "rails", "~> 7.0.0"
13
14
  gem "sidekiq"
15
+ gem "timecop"
14
16
  end
15
17
 
16
18
  group :development do
17
19
  gem "appraisal"
18
- gem "rake-release", "~> 1.2"
19
20
  end
20
21
 
21
22
  gemspec path: "../"
@@ -3,19 +3,20 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rake"
6
+ gem "rake-release", "~> 1.2"
6
7
  gem "rspec", "~> 3.8"
7
8
  gem "rspec-github", require: false
8
- gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v13"
9
+ gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v14"
9
10
 
10
11
  group :test do
11
12
  gem "rack"
12
13
  gem "rails", "~> 7.1.0"
13
14
  gem "sidekiq"
15
+ gem "timecop"
14
16
  end
15
17
 
16
18
  group :development do
17
19
  gem "appraisal"
18
- gem "rake-release", "~> 1.2"
19
20
  end
20
21
 
21
22
  gemspec path: "../"
@@ -3,19 +3,20 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rake"
6
+ gem "rake-release", "~> 1.2"
6
7
  gem "rspec", "~> 3.8"
7
8
  gem "rspec-github", require: false
8
- gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v13"
9
+ gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v14"
9
10
 
10
11
  group :test do
11
12
  gem "rack"
12
13
  gem "rails", "~> 7.2.0"
13
14
  gem "sidekiq"
15
+ gem "timecop"
14
16
  end
15
17
 
16
18
  group :development do
17
19
  gem "appraisal"
18
- gem "rake-release", "~> 1.2"
19
20
  end
20
21
 
21
22
  gemspec path: "../"
@@ -3,19 +3,20 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rake"
6
+ gem "rake-release", "~> 1.2"
6
7
  gem "rspec", "~> 3.8"
7
8
  gem "rspec-github", require: false
8
- gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v13"
9
+ gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v14"
9
10
 
10
11
  group :test do
11
12
  gem "rack"
12
13
  gem "rails", "~> 8.0.0"
13
14
  gem "sidekiq"
15
+ gem "timecop"
14
16
  end
15
17
 
16
18
  group :development do
17
19
  gem "appraisal"
18
- gem "rake-release", "~> 1.2"
19
20
  end
20
21
 
21
22
  gemspec path: "../"
@@ -3,19 +3,20 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rake"
6
+ gem "rake-release", "~> 1.2"
6
7
  gem "rspec", "~> 3.8"
7
8
  gem "rspec-github", require: false
8
- gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v13"
9
+ gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v14"
9
10
 
10
11
  group :test do
11
12
  gem "rack"
12
13
  gem "rails"
13
14
  gem "sidekiq", "~> 6.0"
15
+ gem "timecop"
14
16
  end
15
17
 
16
18
  group :development do
17
19
  gem "appraisal"
18
- gem "rake-release", "~> 1.2"
19
20
  end
20
21
 
21
22
  gemspec path: "../"
@@ -3,19 +3,20 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rake"
6
+ gem "rake-release", "~> 1.2"
6
7
  gem "rspec", "~> 3.8"
7
8
  gem "rspec-github", require: false
8
- gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v13"
9
+ gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v14"
9
10
 
10
11
  group :test do
11
12
  gem "rack"
12
13
  gem "rails"
13
14
  gem "sidekiq", "~> 7.0"
15
+ gem "timecop"
14
16
  end
15
17
 
16
18
  group :development do
17
19
  gem "appraisal"
18
- gem "rake-release", "~> 1.2"
19
20
  end
20
21
 
21
22
  gemspec path: "../"
@@ -3,18 +3,20 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rake"
6
+ gem "rake-release", "~> 1.2"
6
7
  gem "rspec", "~> 3.8"
7
- gem "rubocop-config", github: "jgraichen/rubocop-config", ref: "v11"
8
+ gem "rspec-github", require: false
9
+ gem "rubocop-config", github: "jgraichen/rubocop-config", tag: "v14"
8
10
 
9
11
  group :test do
10
12
  gem "rack"
11
- gem "rails", "~> 5.2.0"
12
- gem "sidekiq"
13
+ gem "rails"
14
+ gem "sidekiq", "~> 8.0"
15
+ gem "timecop"
13
16
  end
14
17
 
15
18
  group :development do
16
19
  gem "appraisal"
17
- gem "rake-release", "~> 1.2"
18
20
  end
19
21
 
20
22
  gemspec path: "../"
data/lib/telegraf/rack.rb CHANGED
@@ -2,6 +2,9 @@
2
2
 
3
3
  require 'rack'
4
4
 
5
+ require 'bigdecimal'
6
+ require 'bigdecimal/util'
7
+
5
8
  module Telegraf
6
9
  # Telegraf::Rack
7
10
  #
@@ -38,7 +41,8 @@ module Telegraf
38
41
  # * `queue_ms`:
39
42
  # Queue time calculated from a `X-Request-Start` header if present. The
40
43
  # header is expected to be formatted like this `t=<timestamp>` and
41
- # contain a floating point timestamp in seconds.
44
+ # contain either a floating point timestamp in seconds, or an integer
45
+ # timestamp in milliseconds or microseconds or nanoseconds.
42
46
  #
43
47
  class Rack
44
48
  include ::Telegraf::Plugin
@@ -100,7 +104,10 @@ module Telegraf
100
104
  return unless env.key?('HTTP_X_REQUEST_START')
101
105
 
102
106
  if (m = HEADER_REGEX.match(env['HTTP_X_REQUEST_START']))
103
- ::Time.at(m[1].to_f).utc
107
+ # TODO: This code works because the current timestamp in seconds
108
+ # has 11 characters, and will break on 2286-11-20 17:46:40.
109
+ value = m[2].nil? ? "#{m[1][0, 10]}.#{m[1][10, 13]}" : m[1]
110
+ ::Time.at(value.to_d).utc
104
111
  end
105
112
  rescue FloatDomainError
106
113
  # Ignore obscure floats in Time.at (e.g. infinity)
@@ -68,7 +68,14 @@ module Telegraf
68
68
  # The "enqueued_at" key is not present for scheduled jobs.
69
69
  # See https://github.com/mperham/sidekiq/wiki/Job-Format.
70
70
  if job.key?('enqueued_at')
71
- enqueued_at = ::Time.at(job['enqueued_at'].to_f).utc
71
+ enqueued_at = Time.at(
72
+ if defined?(::Sidekiq::MAJOR) && ::Sidekiq::MAJOR >= 8
73
+ job['enqueued_at'].to_f / 1000
74
+ else
75
+ job['enqueued_at'].to_f
76
+ end,
77
+ ).utc
78
+
72
79
  point.values[:queue_ms] = (job_start - enqueued_at) * 1000 # milliseconds
73
80
  end
74
81
 
@@ -3,7 +3,7 @@
3
3
  module Telegraf
4
4
  module VERSION
5
5
  MAJOR = 3
6
- MINOR = 1
6
+ MINOR = 3
7
7
  PATCH = 0
8
8
  STAGE = nil
9
9
  STRING = [MAJOR, MINOR, PATCH, STAGE].compact.join('.').freeze
data/telegraf.gemspec CHANGED
@@ -28,4 +28,6 @@ Gem::Specification.new do |spec|
28
28
  spec.require_paths = ['lib']
29
29
 
30
30
  spec.required_ruby_version = '>= 2.7'
31
+
32
+ spec.add_dependency 'bigdecimal'
31
33
  end
metadata CHANGED
@@ -1,14 +1,28 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: telegraf
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Graichen
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-01-31 00:00:00.000000000 Z
11
- dependencies: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: bigdecimal
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
12
26
  description: Metric Reporter to local telegraf agent
13
27
  email:
14
28
  - jgraichen@altimos.de
@@ -44,8 +58,6 @@ files:
44
58
  - gemfiles/rack_2.1.gemfile
45
59
  - gemfiles/rack_2.2.gemfile
46
60
  - gemfiles/rack_3.gemfile
47
- - gemfiles/rails_5.2.gemfile
48
- - gemfiles/rails_6.0.gemfile
49
61
  - gemfiles/rails_6.1.gemfile
50
62
  - gemfiles/rails_7.0.gemfile
51
63
  - gemfiles/rails_7.1.gemfile
@@ -53,6 +65,7 @@ files:
53
65
  - gemfiles/rails_8.0.gemfile
54
66
  - gemfiles/sidekiq_6.gemfile
55
67
  - gemfiles/sidekiq_7.gemfile
68
+ - gemfiles/sidekiq_8.gemfile
56
69
  - lib/telegraf.rb
57
70
  - lib/telegraf/active_job.rb
58
71
  - lib/telegraf/agent.rb
@@ -85,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
98
  - !ruby/object:Gem::Version
86
99
  version: '0'
87
100
  requirements: []
88
- rubygems_version: 3.6.2
101
+ rubygems_version: 3.6.7
89
102
  specification_version: 4
90
103
  summary: Metric Reporter to local telegraf agent
91
104
  test_files: []
@@ -1,20 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rake"
6
- gem "rspec", "~> 3.8"
7
- gem "rubocop-config", github: "jgraichen/rubocop-config", ref: "v11"
8
-
9
- group :test do
10
- gem "rack"
11
- gem "rails", "~> 6.0.0"
12
- gem "sidekiq"
13
- end
14
-
15
- group :development do
16
- gem "appraisal"
17
- gem "rake-release", "~> 1.2"
18
- end
19
-
20
- gemspec path: "../"