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 +4 -4
- data/.github/workflows/lint.yml +20 -0
- data/.github/workflows/test.yml +37 -0
- data/.rubocop.yml +6 -1
- data/Appraisals +12 -18
- data/CHANGELOG.md +13 -4
- data/Gemfile +2 -1
- data/README.md +28 -3
- data/gemfiles/rack_2.0.gemfile +2 -1
- data/gemfiles/rack_2.1.gemfile +2 -1
- data/gemfiles/rack_2.2.gemfile +2 -1
- data/gemfiles/rails_5.2.gemfile +2 -1
- data/gemfiles/rails_6.0.gemfile +2 -1
- data/gemfiles/{rails_5.0.gemfile → rails_6.1.gemfile} +3 -2
- data/lib/telegraf/agent.rb +5 -3
- data/lib/telegraf/rack.rb +6 -0
- data/lib/telegraf/railtie.rb +4 -1
- data/lib/telegraf/version.rb +2 -2
- metadata +6 -6
- data/.travis.yml +0 -15
- data/gemfiles/rails_5.1.gemfile +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1992e9545cbbf54646dec6c4830190258a5756d1c536b71a42378ca5c7717eed
|
4
|
+
data.tar.gz: 6e00f1a167a6ac9663903623317fe1d896b882feb5d866eb52385da54603ed09
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
data/.rubocop.yml
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
AllCops:
|
2
2
|
Include:
|
3
|
-
-
|
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
|
3
|
+
appraise 'rails-5.2' do
|
4
4
|
group :test do
|
5
|
-
gem
|
5
|
+
gem 'rails', '~> 5.2.0'
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
9
|
-
appraise
|
9
|
+
appraise 'rails-6.0' do
|
10
10
|
group :test do
|
11
|
-
gem
|
11
|
+
gem 'rails', '~> 6.0.0'
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
appraise
|
15
|
+
appraise 'rails-6.1' do
|
16
16
|
group :test do
|
17
|
-
gem
|
17
|
+
gem 'rails', '~> 6.1.0'
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
appraise
|
21
|
+
appraise 'rack-2.0' do
|
22
22
|
group :test do
|
23
|
-
gem
|
23
|
+
gem 'rack', '~> 2.0.0'
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
appraise
|
27
|
+
appraise 'rack-2.1' do
|
28
28
|
group :test do
|
29
|
-
gem
|
29
|
+
gem 'rack', '~> 2.1.0'
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
-
appraise
|
33
|
+
appraise 'rack-2.2' do
|
34
34
|
group :test do
|
35
|
-
gem
|
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
|
data/CHANGELOG.md
CHANGED
@@ -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
|
-
[
|
28
|
-
[0.
|
29
|
-
[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
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
|
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
|
data/gemfiles/rack_2.0.gemfile
CHANGED
data/gemfiles/rack_2.1.gemfile
CHANGED
data/gemfiles/rack_2.2.gemfile
CHANGED
data/gemfiles/rails_5.2.gemfile
CHANGED
data/gemfiles/rails_6.0.gemfile
CHANGED
@@ -4,11 +4,12 @@ source "https://rubygems.org"
|
|
4
4
|
|
5
5
|
gem "rake"
|
6
6
|
gem "rspec", "~> 3.8"
|
7
|
-
gem "rubocop", "~>
|
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", "~>
|
12
|
+
gem "rails", "~> 6.1.0"
|
12
13
|
gem "sidekiq", "~> 6.0"
|
13
14
|
end
|
14
15
|
|
data/lib/telegraf/agent.rb
CHANGED
@@ -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
|
data/lib/telegraf/rack.rb
CHANGED
@@ -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
|
data/lib/telegraf/railtie.rb
CHANGED
@@ -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
|
|
data/lib/telegraf/version.rb
CHANGED
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.
|
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:
|
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.
|
96
|
+
rubygems_version: 3.2.4
|
97
97
|
signing_key:
|
98
98
|
specification_version: 4
|
99
99
|
summary: Metric Reporter to local telegraf agent
|
data/.travis.yml
DELETED
@@ -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
|
data/gemfiles/rails_5.1.gemfile
DELETED
@@ -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: "../"
|