telegraf 0.8.0 → 1.0.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: d24537357d52b68f806f668f2e356a2272f5a2964050051827fed20afcf775b2
4
- data.tar.gz: c6cfdaa89a5cd249dc1533c7aedda8237157e9778a42e501cc7d26b439cdcaef
3
+ metadata.gz: 1992e9545cbbf54646dec6c4830190258a5756d1c536b71a42378ca5c7717eed
4
+ data.tar.gz: 6e00f1a167a6ac9663903623317fe1d896b882feb5d866eb52385da54603ed09
5
5
  SHA512:
6
- metadata.gz: '085618264388f4883a978265487b0c5c7659297e4db42c04924281ed96e99fabb0ba20f0d4e4294237e5bed48bbae298a40a5c395e8d3b3ed48d9ac1a1db765a'
7
- data.tar.gz: 825e81ddf41b25254b1d6a048223dda4e840a42171303a8080ed27e03d250ff5e130c4e6e348472cd6c3618c9eff848f5db1324e7b04df4d62990addfa214577
6
+ metadata.gz: 949c16ce2e986feef4362d1060290b64efd01ed08a08222129a59577f22c3a4d643dc80324ede1f27f10dee63fcf0519f4c3386547c67c435418e68634644627
7
+ data.tar.gz: 8eafa264491cff6861f7b346e3548bf51ef5b570f2779a7b3d31e02dc62c2d8c011c9eeaeda6fc6b0e64ff79fba7ccb839615bb43101fa73f0d177600e18f216
@@ -0,0 +1,20 @@
1
+ name: Lint
2
+ on: [push]
3
+ jobs:
4
+ rubocop:
5
+ name: rubocop
6
+ runs-on: ubuntu-20.04
7
+
8
+ env:
9
+ BUNDLE_WITHOUT: development
10
+ BUNDLE_JOBS: 4
11
+ BUNDLE_RETRY: 3
12
+
13
+ steps:
14
+ - uses: actions/checkout@master
15
+ - uses: ruby/setup-ruby@v1
16
+ with:
17
+ ruby-version: 2.7
18
+ bundler-cache: true
19
+
20
+ - run: bundle exec rubocop --parallel --color
@@ -0,0 +1,37 @@
1
+ name: Test
2
+ on: [push]
3
+ jobs:
4
+ test:
5
+ name: Ruby ${{ matrix.ruby }} / ${{ matrix.gemfile }}
6
+ runs-on: ubuntu-20.04
7
+
8
+ strategy:
9
+ matrix:
10
+ ruby:
11
+ - '2.7'
12
+ - '2.6'
13
+ - '2.5'
14
+ gemfile:
15
+ - rails_5.2.gemfile
16
+ - rails_6.0.gemfile
17
+ - rails_6.1.gemfile
18
+ - rack_2.0.gemfile
19
+ - rack_2.1.gemfile
20
+ - rack_2.2.gemfile
21
+ fail-fast: false
22
+
23
+ env:
24
+ BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}
25
+ BUNDLE_WITHOUT: development
26
+ BUNDLE_JOBS: 4
27
+ BUNDLE_RETRY: 3
28
+
29
+ steps:
30
+ - uses: actions/checkout@master
31
+
32
+ - uses: ruby/setup-ruby@v1
33
+ with:
34
+ ruby-version: ${{ matrix.ruby }}
35
+ bundler-cache: true
36
+
37
+ - run: bundle exec rspec --color --format documentation
@@ -1,6 +1,8 @@
1
1
  AllCops:
2
2
  Include:
3
- - '**/*.rb'
3
+ - "**/*.rb"
4
+ NewCops: enable
5
+ SuggestExtensions: false
4
6
  TargetRubyVersion: 2.5
5
7
 
6
8
 
@@ -62,6 +64,9 @@ Style/HashTransformKeys:
62
64
  Style/HashTransformValues:
63
65
  Enabled: false
64
66
 
67
+ Style/IfUnlessModifier:
68
+ Enabled: false
69
+
65
70
  Style/RescueModifier:
66
71
  Exclude:
67
72
  - spec/**/*_spec.rb
data/Appraisals CHANGED
@@ -1,43 +1,37 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- appraise "rails-5.0" do
3
+ appraise 'rails-5.2' do
4
4
  group :test do
5
- gem "rails", "~> 5.0.0"
5
+ gem 'rails', '~> 5.2.0'
6
6
  end
7
7
  end
8
8
 
9
- appraise "rails-5.1" do
9
+ appraise 'rails-6.0' do
10
10
  group :test do
11
- gem "rails", "~> 5.1.0"
11
+ gem 'rails', '~> 6.0.0'
12
12
  end
13
13
  end
14
14
 
15
- appraise "rails-5.2" do
15
+ appraise 'rails-6.1' do
16
16
  group :test do
17
- gem "rails", "~> 5.2.0"
17
+ gem 'rails', '~> 6.1.0'
18
18
  end
19
19
  end
20
20
 
21
- appraise "rails-6.0" do
21
+ appraise 'rack-2.0' do
22
22
  group :test do
23
- gem "rails", "~> 6.0.0"
23
+ gem 'rack', '~> 2.0.0'
24
24
  end
25
25
  end
26
26
 
27
- appraise "rack-2.0" do
27
+ appraise 'rack-2.1' do
28
28
  group :test do
29
- gem "rack", "~> 2.0.0"
29
+ gem 'rack', '~> 2.1.0'
30
30
  end
31
31
  end
32
32
 
33
- appraise "rack-2.1" do
33
+ appraise 'rack-2.2' do
34
34
  group :test do
35
- gem "rack", "~> 2.1.0"
36
- end
37
- end
38
-
39
- appraise "rack-2.2" do
40
- group :test do
41
- gem "rack", "~> 2.2.0"
35
+ gem 'rack', '~> 2.2.0'
42
36
  end
43
37
  end
@@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
5
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [Unreleased]
8
+
9
+ ## [1.0.0] - 2021-01-26
10
+ ### Added
11
+ - Global tags (#6)
12
+
7
13
  ## [0.8.0] - 2020-12-02
8
14
  ### Added
9
15
  - ActiveJob instrumentation (#10)
@@ -20,10 +26,13 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
20
26
  ### Added
21
27
  - New Rack middleware and Rails plugin to collect request events (#5)
22
28
 
23
- ## 0.5.0
29
+ ## 0.5.0 - undefined
24
30
  ### Changed
25
31
  - Remove `influxdb` not unnecessarily restrict users needing a specific influxdb client.
26
32
 
27
- [0.7.0]: https://github.com/:jgraichen/telegraf-ruby/compare/v0.6.1...v0.7.0
28
- [0.6.1]: https://github.com/:jgraichen/telegraf-ruby/compare/v0.6.0...v0.6.1
29
- [0.6.0]: https://github.com/:jgraichen/telegraf-ruby/compare/v0.5.0...v0.6.0
33
+ [Unreleased]: https://github.com/jgraichen/telegraf-ruby/compare/v1.0.0...HEAD
34
+ [1.0.0]: https://github.com/jgraichen/telegraf-ruby/compare/v0.8.0...v1.0.0
35
+ [0.8.0]: https://github.com/jgraichen/telegraf-ruby/compare/v0.7.0...v0.8.0
36
+ [0.7.0]: https://github.com/jgraichen/telegraf-ruby/compare/v0.6.1...v0.7.0
37
+ [0.6.1]: https://github.com/jgraichen/telegraf-ruby/compare/v0.6.0...v0.6.1
38
+ [0.6.0]: https://github.com/jgraichen/telegraf-ruby/compare/v0.5.0...v0.6.0
data/Gemfile CHANGED
@@ -7,7 +7,8 @@ gemspec
7
7
 
8
8
  gem 'rake'
9
9
  gem 'rspec', '~> 3.8'
10
- gem 'rubocop', '~> 0.80.0'
10
+ gem 'rubocop', '~> 1.7'
11
+ gem 'rubocop-rspec', '~> 1.41'
11
12
 
12
13
  group :test do
13
14
  gem 'rack'
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Send events to a local [Telegraf](https://github.com/influxdata/telegraf) agent or anything that can receive the InfluxDB line protocol.
4
4
 
5
- It further includes plugins for Rack, Rails and Sidekiq to collect request events. See plugin usage details below.
5
+ It further includes plugins for Rack, Rails, ActiveJob and Sidekiq to collect request events. See plugin usage details below.
6
6
 
7
7
  This gem only uses the line protocol from the `influxdb` gem and does not depend on any specific version. This may break in the future but does not restrict you in using a your preferred `influxdb` gem version.
8
8
 
@@ -51,7 +51,7 @@ There is no exception handling.
51
51
 
52
52
  ## Using the Rack and Rails plugins
53
53
 
54
- This gem include a Rails plugin and middlewares for Rack and Sidekiq to collect request events. They need to be explicitly required to be used:
54
+ This gem include a Rails plugin and middlewares / adapters for Rack, ActiveJob and Sidekiq to collect request and background worker events. They need to be explicitly required to be used:
55
55
 
56
56
  ### Rack
57
57
 
@@ -68,22 +68,32 @@ The Rack middleware supports parsing the `X-Request-Start: t=<timestamp>` header
68
68
 
69
69
  ### Rails
70
70
 
71
- The Rails plugin needs to required, too, but by default automatically installs required components (Rack, Sidekiq and Rails-specific instrumentation).
71
+ The Rails plugin needs to be required, too, but will automatically install additional components (Rack, ActiveJob, Sidekiq and Rails-specific instrumentation).
72
72
 
73
73
  ```ruby
74
74
  # e.g. in application.rb
75
75
 
76
+ # Load rails plugin (!) or add `require: 'telegraf/rails'` to Gemfile
76
77
  require "telegraf/rails"
77
78
 
78
79
  class MyApplication > ::Rails::Application
79
80
  # Configure receiver
80
81
  config.telegraf.connect = "udp://localhost:9084"
81
82
 
83
+ # Global tags added to all events. These will override
84
+ # any local tag with the same name.
85
+ config.telegraf.tags = {}
86
+
82
87
  # By default the Rack middleware to collect events is installed
83
88
  config.telegraf.rack.enabled = true
84
89
  config.telegraf.rack.series = "requests"
85
90
  config.telegraf.rack.tags = {}
86
91
 
92
+ # These are the default settings when ActiveJob is detected
93
+ config.telegraf.active_job.enabled = true
94
+ config.telegraf.active_job.series = "active_job"
95
+ config.telegraf.active_job.tags = {}
96
+
87
97
  # These are the default settings when Sidekiq is detected
88
98
  config.telegraf.sidekiq.enabled = true
89
99
  config.telegraf.sidekiq.series = "sidekiq"
@@ -104,8 +114,23 @@ requests,action=index,controller=TestController,instance=TestController#index,me
104
114
  See the various classes' documentation for more details on the collected tags and values:
105
115
  - [Rack middleware](lib/telegraf/rack.rb)
106
116
  - [Rails plugin](lib/telegraf/railtie.rb)
117
+ - [ActiveJob plugin](lib/telegraf/active_job.rb)
107
118
  - [Sidekiq middleware](lib/telegraf/sidekiq.rb)
108
119
 
120
+ ### ActiveJob
121
+
122
+ ```ruby
123
+ require "telegraf/active_job"
124
+
125
+ agent = ::Telegraf::Agent.new
126
+ ActiveSupport::Notifications.subscribe(
127
+ 'perform.active_job',
128
+ Telegraf::ActiveJob.new(agent: agent, series: 'background', tags: {global: 'tag'})
129
+ )
130
+ ```
131
+
132
+ See plugin [class documentation](lib/telegraf/active_job.rb) for more details.
133
+
109
134
  ### Sidekiq
110
135
 
111
136
  ```ruby
@@ -4,7 +4,8 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "rake"
6
6
  gem "rspec", "~> 3.8"
7
- gem "rubocop", "~> 0.80.0"
7
+ gem "rubocop", "~> 1.7"
8
+ gem "rubocop-rspec", "~> 1.41"
8
9
 
9
10
  group :test do
10
11
  gem "rack", "~> 2.0.0"
@@ -4,7 +4,8 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "rake"
6
6
  gem "rspec", "~> 3.8"
7
- gem "rubocop", "~> 0.80.0"
7
+ gem "rubocop", "~> 1.7"
8
+ gem "rubocop-rspec", "~> 1.41"
8
9
 
9
10
  group :test do
10
11
  gem "rack", "~> 2.1.0"
@@ -4,7 +4,8 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "rake"
6
6
  gem "rspec", "~> 3.8"
7
- gem "rubocop", "~> 0.80.0"
7
+ gem "rubocop", "~> 1.7"
8
+ gem "rubocop-rspec", "~> 1.41"
8
9
 
9
10
  group :test do
10
11
  gem "rack", "~> 2.2.0"
@@ -4,7 +4,8 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "rake"
6
6
  gem "rspec", "~> 3.8"
7
- gem "rubocop", "~> 0.80.0"
7
+ gem "rubocop", "~> 1.7"
8
+ gem "rubocop-rspec", "~> 1.41"
8
9
 
9
10
  group :test do
10
11
  gem "rack"
@@ -4,7 +4,8 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "rake"
6
6
  gem "rspec", "~> 3.8"
7
- gem "rubocop", "~> 0.80.0"
7
+ gem "rubocop", "~> 1.7"
8
+ gem "rubocop-rspec", "~> 1.41"
8
9
 
9
10
  group :test do
10
11
  gem "rack"
@@ -4,11 +4,12 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "rake"
6
6
  gem "rspec", "~> 3.8"
7
- gem "rubocop", "~> 0.80.0"
7
+ gem "rubocop", "~> 1.7"
8
+ gem "rubocop-rspec", "~> 1.41"
8
9
 
9
10
  group :test do
10
11
  gem "rack"
11
- gem "rails", "~> 5.0.0"
12
+ gem "rails", "~> 6.1.0"
12
13
  gem "sidekiq", "~> 6.0"
13
14
  end
14
15
 
@@ -4,11 +4,11 @@ module Telegraf
4
4
  class Agent
5
5
  DEFAULT_CONNECTION = 'udp://localhost:8094'
6
6
 
7
- attr_reader :uri
8
- attr_reader :logger
7
+ attr_reader :uri, :logger, :tags
9
8
 
10
- def initialize(uri = nil, logger: nil)
9
+ def initialize(uri = nil, logger: nil, tags: {})
11
10
  @uri = URI.parse(uri || DEFAULT_CONNECTION)
11
+ @tags = tags
12
12
  @logger = logger
13
13
  end
14
14
 
@@ -21,6 +21,8 @@ module Telegraf
21
21
  end
22
22
 
23
23
  def write!(data, series: nil, tags: nil, values: nil)
24
+ tags = tags.merge(@tags) unless @tags.empty?
25
+
24
26
  if values
25
27
  data = [{series: series || data.to_s, tags: tags, values: values}]
26
28
  end
@@ -44,7 +44,13 @@ module Telegraf
44
44
  FIELD_NAME = 'telegraf.rack.point'
45
45
  HEADER_REGEX = /t=(\d+(\.\d+)?)/.freeze
46
46
 
47
+ # Warning: `:values` member overrides `Struct#values` and it may be
48
+ # unexpected, but nothing we can change here as this is an import public API
49
+ # right now.
50
+ #
51
+ # rubocop:disable Lint/StructNewOverride
47
52
  Point = Struct.new(:tags, :values)
53
+ # rubocop:enable Lint/StructNewOverride
48
54
 
49
55
  def initialize(app, agent:, series: 'rack', tags: {}, logger: nil)
50
56
  @app = app
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'rails'
4
+ require 'telegraf'
4
5
  require 'telegraf/active_job'
5
6
  require 'telegraf/rack'
6
7
  require 'telegraf/sidekiq'
@@ -45,6 +46,7 @@ module Telegraf
45
46
 
46
47
  # Connect URI or tuple
47
48
  config.telegraf.connect = ::Telegraf::Agent::DEFAULT_CONNECTION
49
+ config.telegraf.tags = {}
48
50
 
49
51
  # Install Rack middlewares
50
52
  config.telegraf.rack = ::ActiveSupport::OrderedOptions.new
@@ -71,7 +73,8 @@ module Telegraf
71
73
  app.config.telegraf.agent ||= begin
72
74
  ::Telegraf::Agent.new \
73
75
  app.config.telegraf.connect,
74
- logger: Rails.logger
76
+ logger: Rails.logger,
77
+ tags: app.config.telegraf.tags
75
78
  end
76
79
  end
77
80
 
@@ -2,8 +2,8 @@
2
2
 
3
3
  module Telegraf
4
4
  module VERSION
5
- MAJOR = 0
6
- MINOR = 8
5
+ MAJOR = 1
6
+ MINOR = 0
7
7
  PATCH = 0
8
8
  STAGE = nil
9
9
  STRING = [MAJOR, MINOR, PATCH, STAGE].reject(&:nil?).join('.').freeze
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: telegraf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Graichen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-12-02 00:00:00.000000000 Z
11
+ date: 2021-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: influxdb
@@ -46,10 +46,11 @@ extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
48
  - ".editorconfig"
49
+ - ".github/workflows/lint.yml"
50
+ - ".github/workflows/test.yml"
49
51
  - ".gitignore"
50
52
  - ".rspec"
51
53
  - ".rubocop.yml"
52
- - ".travis.yml"
53
54
  - Appraisals
54
55
  - CHANGELOG.md
55
56
  - Gemfile
@@ -61,10 +62,9 @@ files:
61
62
  - gemfiles/rack_2.0.gemfile
62
63
  - gemfiles/rack_2.1.gemfile
63
64
  - gemfiles/rack_2.2.gemfile
64
- - gemfiles/rails_5.0.gemfile
65
- - gemfiles/rails_5.1.gemfile
66
65
  - gemfiles/rails_5.2.gemfile
67
66
  - gemfiles/rails_6.0.gemfile
67
+ - gemfiles/rails_6.1.gemfile
68
68
  - lib/telegraf.rb
69
69
  - lib/telegraf/active_job.rb
70
70
  - lib/telegraf/agent.rb
@@ -93,7 +93,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
93
93
  - !ruby/object:Gem::Version
94
94
  version: '0'
95
95
  requirements: []
96
- rubygems_version: 3.0.8
96
+ rubygems_version: 3.2.4
97
97
  signing_key:
98
98
  specification_version: 4
99
99
  summary: Metric Reporter to local telegraf agent
@@ -1,15 +0,0 @@
1
- sudo: false
2
- dist: bionic
3
- language: ruby
4
- rvm:
5
- - 2.7.0
6
- - 2.6.5
7
- - 2.5.7
8
- gemfile:
9
- - gemfiles/rails_5.0.gemfile
10
- - gemfiles/rails_5.1.gemfile
11
- - gemfiles/rails_5.2.gemfile
12
- - gemfiles/rails_6.0.gemfile
13
- - gemfiles/rack_2.0.gemfile
14
- - gemfiles/rack_2.1.gemfile
15
- - gemfiles/rack_2.2.gemfile
@@ -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", "~> 0.80.0"
8
-
9
- group :test do
10
- gem "rack"
11
- gem "rails", "~> 5.1.0"
12
- gem "sidekiq", "~> 6.0"
13
- end
14
-
15
- group :development do
16
- gem "appraisal"
17
- gem "rake-release", "~> 1.2"
18
- end
19
-
20
- gemspec path: "../"