riemann-syslog-ng 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 +7 -0
- data/.github/CODEOWNERS +1 -0
- data/.github/workflows/ci.yml +53 -0
- data/.gitignore +1 -0
- data/.rspec +1 -0
- data/.rubocop.yml +43 -0
- data/.simplecov +7 -0
- data/Gemfile +14 -0
- data/README.md +13 -0
- data/Rakefile +20 -0
- data/bin/riemann-syslog-ng +8 -0
- data/lib/riemann/tools/syslog_ng/version.rb +9 -0
- data/lib/riemann/tools/syslog_ng.rb +84 -0
- data/riemann-syslog-ng.gemspec +34 -0
- metadata +76 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f8296216cfac86bd15e8a9e7c432f515e23baa06bd20120fd589adb5bef0fbff
|
4
|
+
data.tar.gz: e8f8021b906ceb2192b33c42f1412031271efe1c486cbca40eef0413cce8f537
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e5864d1c7796df2aa8defd106231de7ccc016a58c8f6d527935bed9a760d2bd27cf4d0079357637f13093d83f58487564c50bfdb94451dccb3209f45b7622f53
|
7
|
+
data.tar.gz: bf368924284180e7f2d9c134b7d8d50a577e3890203b88638e8d63cdf5f8e905104cc0fa65debf90fc84338d4a47a026f4412103ebe87d4b38f9789dfda30a86
|
data/.github/CODEOWNERS
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
* @opus-codium/core @opus-codium/vittoria-conseil
|
@@ -0,0 +1,53 @@
|
|
1
|
+
---
|
2
|
+
name: CI
|
3
|
+
|
4
|
+
on:
|
5
|
+
push:
|
6
|
+
branches:
|
7
|
+
- main
|
8
|
+
pull_request:
|
9
|
+
branches:
|
10
|
+
- main
|
11
|
+
|
12
|
+
jobs:
|
13
|
+
rubocop:
|
14
|
+
runs-on: ubuntu-latest
|
15
|
+
steps:
|
16
|
+
- uses: actions/checkout@v3
|
17
|
+
- name: Setup ruby
|
18
|
+
uses: ruby/setup-ruby@v1
|
19
|
+
with:
|
20
|
+
ruby-version: 3.0
|
21
|
+
bundler-cache: true
|
22
|
+
- name: Run static code analysis
|
23
|
+
run: bundle exec rubocop
|
24
|
+
unit:
|
25
|
+
runs-on: ubuntu-latest
|
26
|
+
needs: rubocop
|
27
|
+
strategy:
|
28
|
+
matrix:
|
29
|
+
ruby:
|
30
|
+
- "2.6"
|
31
|
+
- "2.7"
|
32
|
+
- "3.0"
|
33
|
+
- "3.1"
|
34
|
+
- "3.2"
|
35
|
+
- "3.3"
|
36
|
+
name: Ruby ${{ matrix.ruby }}
|
37
|
+
steps:
|
38
|
+
- uses: actions/checkout@v3
|
39
|
+
- name: Setup ruby
|
40
|
+
uses: ruby/setup-ruby@v1
|
41
|
+
with:
|
42
|
+
ruby-version: ${{ matrix.ruby }}
|
43
|
+
bundler-cache: true
|
44
|
+
- name: Run tests without uploading code coverage
|
45
|
+
if: ${{ matrix.ruby != '3.0' }}
|
46
|
+
run: bundle exec rake
|
47
|
+
- name: Run tests and upload coverage to Code Climate
|
48
|
+
if: ${{ matrix.ruby == '3.0' }}
|
49
|
+
uses: paambaati/codeclimate-action@v3.1.1
|
50
|
+
env:
|
51
|
+
CC_TEST_REPORTER_ID: ${{ secrets.CODECLIMATE_TOKEN }}
|
52
|
+
with:
|
53
|
+
coverageCommand: bundle exec rake
|
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Gemfile.lock
|
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--require spec_helper
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
---
|
2
|
+
AllCops:
|
3
|
+
TargetRubyVersion: '2.6'
|
4
|
+
AllowSymlinksInCacheRootDirectory: true
|
5
|
+
NewCops: enable
|
6
|
+
Exclude:
|
7
|
+
- vendor/bundle/**/*
|
8
|
+
require:
|
9
|
+
- rubocop-rake
|
10
|
+
- rubocop-rspec
|
11
|
+
Layout/HashAlignment:
|
12
|
+
EnforcedHashRocketStyle: table
|
13
|
+
Layout/LineLength:
|
14
|
+
Enabled: false
|
15
|
+
Metrics/AbcSize:
|
16
|
+
Enabled: false
|
17
|
+
Metrics/BlockLength:
|
18
|
+
Enabled: false
|
19
|
+
Metrics/ClassLength:
|
20
|
+
Enabled: false
|
21
|
+
Metrics/CyclomaticComplexity:
|
22
|
+
Enabled: false
|
23
|
+
Metrics/MethodLength:
|
24
|
+
Enabled: false
|
25
|
+
Metrics/ParameterLists:
|
26
|
+
Enabled: false
|
27
|
+
Metrics/PerceivedComplexity:
|
28
|
+
Enabled: false
|
29
|
+
RSpec/SubjectStub:
|
30
|
+
Enabled: false
|
31
|
+
Style/Documentation:
|
32
|
+
Enabled: false
|
33
|
+
Style/NumericLiterals:
|
34
|
+
Enabled: false
|
35
|
+
Style/TrailingCommaInArguments:
|
36
|
+
EnforcedStyleForMultiline: consistent_comma
|
37
|
+
Style/TrailingCommaInArrayLiteral:
|
38
|
+
EnforcedStyleForMultiline: consistent_comma
|
39
|
+
Style/TrailingCommaInHashLiteral:
|
40
|
+
EnforcedStyleForMultiline: consistent_comma
|
41
|
+
Layout/FirstArrayElementIndentation:
|
42
|
+
EnforcedStyle: consistent
|
43
|
+
|
data/.simplecov
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
source 'https://rubygems.org'
|
4
|
+
|
5
|
+
# Specify your gem's dependencies in riemann-tools.gemspec
|
6
|
+
gemspec
|
7
|
+
|
8
|
+
gem 'github_changelog_generator'
|
9
|
+
gem 'rake'
|
10
|
+
gem 'rspec'
|
11
|
+
gem 'rubocop'
|
12
|
+
gem 'rubocop-rake'
|
13
|
+
gem 'rubocop-rspec'
|
14
|
+
gem 'simplecov'
|
data/README.md
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# riemann-syslog-ng
|
2
|
+
|
3
|
+
[](https://github.com/opus-codium/riemann-syslog-ng/actions/workflows/ci.yml)
|
4
|
+
[](https://codeclimate.com/github/opus-codium/riemann-syslog-ng/maintainability)
|
5
|
+
[](https://codeclimate.com/github/opus-codium/riemann-syslog-ng/test_coverage)
|
6
|
+
|
7
|
+
Submits syslog-ng information to riemann.
|
8
|
+
|
9
|
+
## Get started
|
10
|
+
|
11
|
+
```
|
12
|
+
gem install riemann-syslog-ng
|
13
|
+
```
|
data/Rakefile
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'riemann/tools/syslog_ng/version'
|
4
|
+
|
5
|
+
require 'bundler/gem_tasks'
|
6
|
+
require 'rspec/core/rake_task'
|
7
|
+
|
8
|
+
RSpec::Core::RakeTask.new(:spec)
|
9
|
+
|
10
|
+
task default: :spec
|
11
|
+
|
12
|
+
require 'github_changelog_generator/task'
|
13
|
+
|
14
|
+
GitHubChangelogGenerator::RakeTask.new :changelog do |config|
|
15
|
+
config.user = 'opus-codium'
|
16
|
+
config.project = 'riemann-syslog-ng'
|
17
|
+
config.exclude_labels = ['skip-changelog']
|
18
|
+
config.future_release = "v#{Riemann::Tools::SyslogNg::VERSION}"
|
19
|
+
config.since_tag = 'v1.0.0'
|
20
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'strscan'
|
4
|
+
|
5
|
+
require 'riemann/tools'
|
6
|
+
|
7
|
+
module Riemann
|
8
|
+
module Tools
|
9
|
+
class SyslogNg
|
10
|
+
include Riemann::Tools
|
11
|
+
|
12
|
+
opt :socket, 'Path to syslog-ng socket', short: :none, type: :string, default: '/var/lib/syslog-ng/syslog-ng.ctl'
|
13
|
+
opt :format, 'Format for service name', short: :none, type: :string, default: '%<source_name>s;%<source_id>s;%<source_instance>s;%<state>s;%<type>s'
|
14
|
+
|
15
|
+
opt :source_name, 'Filter on SourceName', short: :none, type: :strings
|
16
|
+
opt :source_id, 'Filter on SourceId', short: :none, type: :strings
|
17
|
+
opt :source_instance, 'Filter on SourceInstance', short: :none, type: :strings
|
18
|
+
opt :state, 'Filter on State', short: :none, type: :strings
|
19
|
+
opt :type, 'Filter on Type', short: :none, type: :strings
|
20
|
+
|
21
|
+
opt :queued_warning, 'Queued messages warning threshold', short: :none, default: 300
|
22
|
+
opt :queued_critical, 'Queued messages critical threshold', short: :none, default: 1000
|
23
|
+
|
24
|
+
def self.process_stdin
|
25
|
+
new.process_stdin
|
26
|
+
end
|
27
|
+
|
28
|
+
def initialize
|
29
|
+
@socket = UNIXSocket.new(opts[:socket])
|
30
|
+
end
|
31
|
+
|
32
|
+
def tick
|
33
|
+
statistics.each do |statistic|
|
34
|
+
report({
|
35
|
+
service: format(opts[:format], statistic),
|
36
|
+
metric: statistic[:metric],
|
37
|
+
state: statistic_state(statistic[:type], statistic[:metric]),
|
38
|
+
})
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def statistics
|
43
|
+
res = []
|
44
|
+
|
45
|
+
@socket.puts 'STATS CSV'
|
46
|
+
@socket.gets # discard header
|
47
|
+
while (line = @socket.gets.chomp) != '.'
|
48
|
+
source_name, source_id, source_instance, state, type, metric = line.split(';')
|
49
|
+
|
50
|
+
next if opts[:source_name] && !opts[:source_name].include?(source_name)
|
51
|
+
next if opts[:source_id] && !opts[:source_id].include?(source_id)
|
52
|
+
next if opts[:source_instance] && !opts[:source_instance].include?(source_instance)
|
53
|
+
next if opts[:state] && !opts[:state].include?(state)
|
54
|
+
next if opts[:type] && !opts[:type].include?(type)
|
55
|
+
|
56
|
+
res << {
|
57
|
+
source_name: source_name,
|
58
|
+
source_id: source_id,
|
59
|
+
source_instance: source_instance,
|
60
|
+
state: state,
|
61
|
+
type: type,
|
62
|
+
metric: metric.to_f,
|
63
|
+
}
|
64
|
+
end
|
65
|
+
|
66
|
+
res
|
67
|
+
end
|
68
|
+
|
69
|
+
def statistic_state(type, metric)
|
70
|
+
if type == 'dropped'
|
71
|
+
metric == 0.0 ? 'ok' : 'critical'
|
72
|
+
elsif type == 'queued'
|
73
|
+
if metric >= opts[:queued_critical]
|
74
|
+
'critical'
|
75
|
+
elsif metric >= opts[:queued_warning]
|
76
|
+
'warning'
|
77
|
+
else
|
78
|
+
'ok'
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'lib/riemann/tools/syslog_ng/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = 'riemann-syslog-ng'
|
7
|
+
spec.version = Riemann::Tools::SyslogNg::VERSION
|
8
|
+
spec.authors = ['Romain Tartière']
|
9
|
+
spec.email = ['romain@blogreen.org']
|
10
|
+
|
11
|
+
spec.summary = 'Submits syslog-ng information to riemann'
|
12
|
+
spec.homepage = 'https://github.com/opus-codium/riemann-syslog-ng'
|
13
|
+
spec.license = 'MIT'
|
14
|
+
spec.required_ruby_version = Gem::Requirement.new('>= 2.6.0')
|
15
|
+
|
16
|
+
spec.metadata['allowed_push_host'] = 'https://rubygems.org/'
|
17
|
+
|
18
|
+
spec.metadata['homepage_uri'] = spec.homepage
|
19
|
+
spec.metadata['source_code_uri'] = spec.homepage
|
20
|
+
spec.metadata['changelog_uri'] = spec.homepage
|
21
|
+
|
22
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
23
|
+
|
24
|
+
# Specify which files should be added to the gem when it is released.
|
25
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
26
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
27
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
28
|
+
end
|
29
|
+
spec.bindir = 'bin'
|
30
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
31
|
+
spec.require_paths = ['lib']
|
32
|
+
|
33
|
+
spec.add_runtime_dependency 'riemann-tools', '~> 1.0'
|
34
|
+
end
|
metadata
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: riemann-syslog-ng
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Romain Tartière
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2024-01-11 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: riemann-tools
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.0'
|
27
|
+
description:
|
28
|
+
email:
|
29
|
+
- romain@blogreen.org
|
30
|
+
executables:
|
31
|
+
- riemann-syslog-ng
|
32
|
+
extensions: []
|
33
|
+
extra_rdoc_files: []
|
34
|
+
files:
|
35
|
+
- ".github/CODEOWNERS"
|
36
|
+
- ".github/workflows/ci.yml"
|
37
|
+
- ".gitignore"
|
38
|
+
- ".rspec"
|
39
|
+
- ".rubocop.yml"
|
40
|
+
- ".simplecov"
|
41
|
+
- Gemfile
|
42
|
+
- README.md
|
43
|
+
- Rakefile
|
44
|
+
- bin/riemann-syslog-ng
|
45
|
+
- lib/riemann/tools/syslog_ng.rb
|
46
|
+
- lib/riemann/tools/syslog_ng/version.rb
|
47
|
+
- riemann-syslog-ng.gemspec
|
48
|
+
homepage: https://github.com/opus-codium/riemann-syslog-ng
|
49
|
+
licenses:
|
50
|
+
- MIT
|
51
|
+
metadata:
|
52
|
+
allowed_push_host: https://rubygems.org/
|
53
|
+
homepage_uri: https://github.com/opus-codium/riemann-syslog-ng
|
54
|
+
source_code_uri: https://github.com/opus-codium/riemann-syslog-ng
|
55
|
+
changelog_uri: https://github.com/opus-codium/riemann-syslog-ng
|
56
|
+
rubygems_mfa_required: 'true'
|
57
|
+
post_install_message:
|
58
|
+
rdoc_options: []
|
59
|
+
require_paths:
|
60
|
+
- lib
|
61
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 2.6.0
|
66
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
requirements: []
|
72
|
+
rubygems_version: 3.3.15
|
73
|
+
signing_key:
|
74
|
+
specification_version: 4
|
75
|
+
summary: Submits syslog-ng information to riemann
|
76
|
+
test_files: []
|