fluent-plugin-systemd 0.0.5 → 0.0.6

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
  SHA1:
3
- metadata.gz: 6ef99806c3d56bcdc8988de35331f23cdd1720f2
4
- data.tar.gz: 6a71459493bbc7a522ffa903d6968749e545057d
3
+ metadata.gz: b743a85ec91f64910f7c323a6ac9c3ba2f3dc8be
4
+ data.tar.gz: df1ca5c2c12b2d46e7d97fc03dc7c8c6fedf388e
5
5
  SHA512:
6
- metadata.gz: 01b4fa6a252a234113b2d94746a08e87f05879f9141f82195235221e20971ba3e4a9c69056fe2d6fcec07dc928f5f28ad0d2d8e454bcee031c6d77b64573647d
7
- data.tar.gz: 937e956bbeffbe21443c6669ed35cabd17fe0a692468f0c25679fcc2cdae1b971324f7417405c59d715b3250f5dd138818d8790e84fab84dfc40dfbf6fc44c0f
6
+ metadata.gz: 8c9e624bc2f7ee2d996b28180d7fd9dbf46748b9f3d45dc65b6ad90bbedf57da2b44a72e25db87782f1f02dd00f8f1af14eb1b5a30205cf953ec0e0e8a8ea8e0
7
+ data.tar.gz: 624889ccba1c2176c71fd763699cc57470136820f4afa2a8241a61a7fe7586cfebe3d499bf7a65dd531fbfa0d1680b3041802a56c5e501f64087f39ba95a4eae
data/Gemfile CHANGED
@@ -1,3 +1,4 @@
1
1
  source "https://rubygems.org"
2
2
 
3
+ gem "fluentd", "0.12.31"
3
4
  gemspec
data/Gemfile.lock CHANGED
@@ -1,38 +1,37 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fluent-plugin-systemd (0.0.5)
4
+ fluent-plugin-systemd (0.0.6)
5
5
  fluentd (~> 0.12)
6
6
  systemd-journal (~> 1.2)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- ast (2.2.0)
11
+ ast (2.3.0)
12
12
  astrolabe (1.3.1)
13
13
  parser (~> 2.2)
14
- cool.io (1.4.4)
15
- ffi (1.9.14)
16
- fluentd (0.14.2)
17
- cool.io (>= 1.4.3, < 2.0.0)
14
+ cool.io (1.4.5)
15
+ ffi (1.9.17)
16
+ fluentd (0.12.31)
17
+ cool.io (>= 1.2.2, < 2.0.0)
18
18
  http_parser.rb (>= 0.5.1, < 0.7.0)
19
19
  json (>= 1.4.3)
20
- msgpack (>= 0.7.0)
21
- serverengine (>= 1.6.4)
20
+ msgpack (>= 0.5.11, < 0.6.0)
22
21
  sigdump (~> 0.2.2)
23
- strptime (>= 0.1.7)
22
+ string-scrub (>= 0.0.3, <= 0.0.5)
24
23
  tzinfo (>= 1.0.0)
25
24
  tzinfo-data (>= 1.0.0)
26
25
  yajl-ruby (~> 1.0)
27
26
  http_parser.rb (0.6.0)
28
- json (2.0.2)
29
- msgpack (1.0.0)
30
- parser (2.3.1.0)
27
+ json (2.0.3)
28
+ msgpack (0.5.12)
29
+ parser (2.3.3.1)
31
30
  ast (~> 2.2)
32
31
  powerpack (0.0.9)
33
- rainbow (2.1.0)
34
- rake (10.5.0)
35
- reevoocop (0.0.8)
32
+ rainbow (2.2.1)
33
+ rake (12.0.0)
34
+ reevoocop (0.0.9)
36
35
  rubocop (= 0.28.0)
37
36
  rubocop (0.28.0)
38
37
  astrolabe (~> 1.3)
@@ -40,20 +39,18 @@ GEM
40
39
  powerpack (~> 0.0.6)
41
40
  rainbow (>= 1.99.1, < 3.0)
42
41
  ruby-progressbar (~> 1.4)
43
- ruby-progressbar (1.8.0)
44
- serverengine (1.6.4)
45
- sigdump (~> 0.2.2)
42
+ ruby-progressbar (1.8.1)
46
43
  sigdump (0.2.4)
47
- strptime (0.1.8)
48
- systemd-journal (1.2.2)
49
- ffi (~> 1.9.0)
44
+ string-scrub (0.0.5)
45
+ systemd-journal (1.2.3)
46
+ ffi (~> 1.9)
50
47
  test-unit (2.5.5)
51
48
  thread_safe (0.3.5)
52
49
  tzinfo (1.2.2)
53
50
  thread_safe (~> 0.1)
54
- tzinfo-data (1.2016.6)
51
+ tzinfo-data (1.2016.10)
55
52
  tzinfo (>= 1.0.0)
56
- yajl-ruby (1.2.1)
53
+ yajl-ruby (1.3.0)
57
54
 
58
55
  PLATFORMS
59
56
  ruby
@@ -61,7 +58,8 @@ PLATFORMS
61
58
  DEPENDENCIES
62
59
  bundler (~> 1.10)
63
60
  fluent-plugin-systemd!
64
- rake (~> 10.4)
61
+ fluentd (= 0.12.31)
62
+ rake
65
63
  reevoocop
66
64
  test-unit (~> 2.5)
67
65
 
data/README.md CHANGED
@@ -2,6 +2,22 @@
2
2
 
3
3
  [![Build Status](https://travis-ci.org/reevoo/fluent-plugin-systemd.svg?branch=master)](https://travis-ci.org/reevoo/fluent-plugin-systemd) [![Code Climate GPA](https://codeclimate.com/github/reevoo/fluent-plugin-systemd/badges/gpa.svg)](https://codeclimate.com/github/reevoo/fluent-plugin-systemd) [![Gem Version](https://badge.fury.io/rb/fluent-plugin-systemd.svg)](https://rubygems.org/gems/fluent-plugin-systemd)
4
4
 
5
+ # Requirements <a name="requirements"></a>
6
+
7
+
8
+ |fluent-plugin-systemd|fluentd|ruby|
9
+ |----|----|----|
10
+ | 0.1.x | >= 0.14.11, < 2 | >= 2.1 |
11
+ | 0.0.x | ~> 0.12.0 | >= 1.9 |
12
+
13
+ ## WARNING
14
+ this is the maintenance branch for the **0.0.x** series that supports fluentd
15
+ v0.12.x we plan to backport commits from master at least until td-agent is
16
+ based on fluentd v0.14
17
+
18
+ please install the [0.1.x release](https://github.com/reevoo/fluent-plugin-systemd)
19
+ if you are using fluentd v0.14 for the latest and greatest features
20
+
5
21
  ## Overview
6
22
 
7
23
  **systemd** input plugin reads logs from the systemd journal
@@ -10,20 +26,16 @@
10
26
 
11
27
  Simply use RubyGems:
12
28
 
13
- gem install fluent-plugin-systemd -v 0.0.5
14
-
15
- or
16
-
17
- fluent-gem install fluent-plugin-systemd -v 0.0.5
29
+ gem install fluent-plugin-systemd -v 0.0.6
18
30
 
19
31
  or
20
32
 
21
- td-agent-gem install fluent-plugin-systemd -v 0.0.5
33
+ td-agent-gem install fluent-plugin-systemd -v 0.0.6
22
34
 
23
35
  ## Configuration
24
36
 
25
37
  <source>
26
- type systemd
38
+ @type systemd
27
39
  path /var/log/journal
28
40
  filters [{ "_SYSTEMD_UNIT": "kube-proxy.service" }]
29
41
  pos_file kube-proxy.pos
@@ -5,13 +5,13 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "fluent-plugin-systemd"
8
- spec.version = "0.0.5"
8
+ spec.version = "0.0.6"
9
9
  spec.authors = ["Ed Robinson"]
10
10
  spec.email = ["ed@reevoo.com"]
11
11
 
12
12
  spec.summary = "Input plugin to read from systemd journal."
13
13
  spec.description = "This is a fluentd input plugin. It reads logs from the systemd journal."
14
- spec.homepage = "https://github.com/assemblyline/fluent-plugin-systemd"
14
+ spec.homepage = "https://github.com/reevoo/fluent-plugin-systemd"
15
15
  spec.license = "MIT"
16
16
 
17
17
 
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.10"
22
- spec.add_development_dependency "rake", "~> 10.4"
22
+ spec.add_development_dependency "rake"
23
23
  spec.add_development_dependency "test-unit", "~> 2.5"
24
24
  spec.add_development_dependency "reevoocop"
25
25
 
@@ -13,21 +13,18 @@ module Fluent
13
13
  config_param :strip_underscores, :bool, default: false
14
14
  config_param :tag, :string
15
15
 
16
- attr_reader :tag
17
-
18
16
  def configure(conf)
19
17
  super
20
- @pos_writer = PosWriter.new(conf["pos_file"])
21
- @journal = Systemd::Journal.new(path: path)
22
- @read_from_head = conf["read_from_head"]
23
- journal.filter(*filters)
18
+ @pos_writer = PosWriter.new(@pos_file)
19
+ @journal = Systemd::Journal.new(path: @path)
20
+ @journal.filter(*@filters)
24
21
  seek
25
22
  end
26
23
 
27
24
  def start
28
25
  super
29
26
  @running = true
30
- pos_writer.start
27
+ @pos_writer.start
31
28
  @thread = Thread.new(&method(:run))
32
29
  end
33
30
 
@@ -35,29 +32,37 @@ module Fluent
35
32
  super
36
33
  @running = false
37
34
  @thread.join
38
- pos_writer.shutdown
35
+ @pos_writer.shutdown
39
36
  end
40
37
 
41
38
  private
42
39
 
43
- attr_reader :journal, :running, :lock, :cursor, :path, :pos_writer, :strip_underscores, :read_from_head
44
-
45
40
  def seek
46
- journal.seek(@pos_writer.cursor || read_from)
41
+ seek_to(@pos_writer.cursor || read_from)
47
42
  rescue Systemd::JournalError
48
43
  log.warn("Could not seek to cursor #{@pos_writer.cursor} found in pos file: #{@pos_writer.path}")
49
- journal.seek(read_from)
44
+ seek_to(read_from)
45
+ end
46
+
47
+ # according to https://github.com/ledbettj/systemd-journal/issues/64#issuecomment-271056644
48
+ # and https://bugs.freedesktop.org/show_bug.cgi?id=64614, after doing a seek(:tail),
49
+ # you must move back in such a way that the next move_next will return the last
50
+ # record
51
+ def seek_to(pos)
52
+ @journal.seek(pos)
53
+ return unless pos == :tail
54
+ @journal.move(-2)
50
55
  end
51
56
 
52
57
  def read_from
53
- read_from_head ? :head : :tail
58
+ @read_from_head ? :head : :tail
54
59
  end
55
60
 
56
61
  def run
57
62
  Thread.current.abort_on_exception = true
58
63
  watch do |entry|
59
64
  begin
60
- router.emit(tag, entry.realtime_timestamp.to_i, formatted(entry))
65
+ router.emit(@tag, entry.realtime_timestamp.to_i, formatted(entry))
61
66
  rescue => e
62
67
  log.error("Exception emitting record: #{e}")
63
68
  end
@@ -65,16 +70,16 @@ module Fluent
65
70
  end
66
71
 
67
72
  def formatted(entry)
68
- return entry.to_h unless strip_underscores
73
+ return entry.to_h unless @strip_underscores
69
74
  Hash[entry.to_h.map { |k, v| [k.gsub(/\A_+/, ""), v] }]
70
75
  end
71
76
 
72
77
  def watch
73
- while running
74
- next unless journal.wait(1_000_000)
75
- while journal.move_next && running
76
- yield journal.current_entry
77
- pos_writer.update(journal.cursor)
78
+ while @running
79
+ next unless @journal.wait(1_000_000)
80
+ while @journal.move_next && @running
81
+ yield @journal.current_entry
82
+ @pos_writer.update(@journal.cursor)
78
83
  end
79
84
  end
80
85
  end
@@ -5,53 +5,53 @@ module Fluent
5
5
  class PosWriter
6
6
  def initialize(pos_file)
7
7
  @path = pos_file
8
+ @lock = Mutex.new
9
+ @cursor = nil
10
+ @written_cursor = nil
8
11
  setup
9
12
  end
10
13
 
11
14
  attr_reader :cursor, :path
12
15
 
13
16
  def start
14
- return unless path
17
+ return unless @path
15
18
  @running = true
16
19
  @thread = Thread.new(&method(:work))
17
20
  end
18
21
 
19
22
  def shutdown
20
- return unless path
23
+ return unless @path
21
24
  @running = false
22
- thread.join
25
+ @thread.join
23
26
  write_pos
24
27
  end
25
28
 
26
29
  def update(c)
27
- return unless path
28
- lock.synchronize { @cursor = c }
30
+ return unless @path
31
+ @lock.synchronize { @cursor = c }
29
32
  end
30
33
 
31
34
  private
32
35
 
33
- attr_reader :lock, :thread, :running
34
-
35
36
  def setup
36
- return unless path
37
- @lock = Mutex.new
38
- @cursor = IO.read(path).chomp if File.exist?(path)
37
+ return unless @path && File.exist?(@path)
38
+ @cursor = IO.read(@path).chomp
39
39
  end
40
40
 
41
41
  def work
42
- while running
42
+ while @running
43
43
  write_pos
44
44
  sleep 1
45
45
  end
46
46
  end
47
47
 
48
48
  def write_pos
49
- lock.synchronize do
50
- if @written_cursor != cursor
51
- file = File.open(path, "w+")
52
- file.print cursor
49
+ @lock.synchronize do
50
+ if @written_cursor != @cursor
51
+ file = File.open(@path, "w+")
52
+ file.print @cursor
53
53
  file.close
54
- @written_cursor = cursor
54
+ @written_cursor = @cursor
55
55
  end
56
56
  end
57
57
  end
Binary file
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-systemd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ed Robinson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-25 00:00:00.000000000 Z
11
+ date: 2017-01-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '10.4'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '10.4'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: test-unit
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -111,7 +111,9 @@ files:
111
111
  - lib/fluent/plugin/systemd/pos_writer.rb
112
112
  - pkg/fluent-plugin-systemd-0.0.3.gem
113
113
  - pkg/fluent-plugin-systemd-0.0.4.gem
114
- homepage: https://github.com/assemblyline/fluent-plugin-systemd
114
+ - pkg/fluent-plugin-systemd-0.0.5.gem
115
+ - pkg/fluent-plugin-systemd-0.1.0.gem
116
+ homepage: https://github.com/reevoo/fluent-plugin-systemd
115
117
  licenses:
116
118
  - MIT
117
119
  metadata: {}