telegraf 0.8.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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: "../"