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 +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: "../"
|