oohlalog_syslog 0.0.1

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.
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in oohlalog_syslog.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 David Estes
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,40 @@
1
+ # OohlalogSyslog
2
+
3
+ A syslog/log file tail monitor for forwarding to the oohlalog system.
4
+
5
+ ## Installation
6
+
7
+ Install the oohlalog_syslog scripts with:
8
+
9
+ gem install 'oohlalog_syslog'
10
+
11
+
12
+
13
+ ## Usage
14
+
15
+ To start monitoring your log files you must first configure which files you would like to monitor.
16
+
17
+ Create a configuration file in `/etc/oohlalog/config.yml`
18
+
19
+ ```
20
+ syslog:
21
+ path: /var/log/system.log
22
+ api_key: YOUR_API_KEY
23
+ ```
24
+
25
+ Multiple log files can be listed here by name (in the example above we are naming this log syslog).
26
+ This gives us the ability to tie logging into other services like perhaps your mysql logs, mongo logs, whatever log file you want to monitor really.
27
+
28
+ To kick off the monitor one can simply test by typing `oohlalog` in the shell. This will startup the monitor script and start forwarding log messages to oohlalog. It will also confirm your config is setup correctly.
29
+
30
+ To startup a daemon monitor for your logs simply run the `oohlalogd` command. This will also provide you a list of command options that can be used in daemon mode.
31
+
32
+ We have more updates and detail guide options coming. Please feel free to open any issues and suggest improvements.
33
+
34
+ ## Contributing
35
+
36
+ 1. Fork it
37
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
38
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
39
+ 4. Push to the branch (`git push origin my-new-feature`)
40
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/bin/oohlalog ADDED
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env ruby
2
+ require 'oohlalog_syslog'
3
+ require 'oohlalog'
4
+
5
+ # Oohlalog.host = "localhost"
6
+ # Oohlalog.port = 8196
7
+ configuration = OohlalogSyslog::Configuration.new('/etc/oohlalog/config.yml')
8
+
9
+ if !configuration.config
10
+ puts "Error loading Configuration file"
11
+ abort
12
+ end
13
+
14
+ threads = []
15
+
16
+ configuration.config.each do |key,value|
17
+ thr = Thread.new do
18
+ puts "Loading Key: #{key} - #{value}"
19
+ file_watcher = OohlalogSyslog::FileWatcher.new(value["path"],value)
20
+ file_watcher.run
21
+ end
22
+ threads << thr
23
+ end
24
+ puts "SysLog Monitor Loaded!"
25
+ threads.each { |thr| thr.join }
26
+ puts "Shutting Down"
data/bin/oohlalogd ADDED
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems' # if you use RubyGems
4
+ require 'daemons'
5
+ require 'oohlalog_syslog'
6
+ require 'oohlalog'
7
+
8
+ Daemons.run_proc('oohlalogd') do
9
+
10
+ # Oohlalog.host = "localhost"
11
+ # Oohlalog.port = 8196
12
+ configuration = OohlalogSyslog::Configuration.new('/etc/oohlalog/config.yml')
13
+
14
+ if !configuration.config
15
+ puts "Error loading Configuration file"
16
+ abort
17
+ end
18
+
19
+ threads = []
20
+
21
+ configuration.config.each do |key,value|
22
+ thr = Thread.new do
23
+ puts "Loading Key: #{key} - #{value}"
24
+ file_watcher = OohlalogSyslog::FileWatcher.new(value["path"],value)
25
+ file_watcher.run
26
+ end
27
+ threads << thr
28
+ end
29
+ puts "SysLog Monitor Loaded!"
30
+ threads.each { |thr| thr.join }
31
+ puts "Shutting Down"
32
+
33
+ end
@@ -0,0 +1,12 @@
1
+ require 'yaml'
2
+ module OohlalogSyslog
3
+ class Configuration
4
+ def initialize(file)
5
+ @config = YAML::load(File.open(file))
6
+ end
7
+
8
+ def config
9
+ return @config
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,32 @@
1
+ require 'oohlalog'
2
+
3
+ require 'file/tail'
4
+
5
+ class OohlalogSyslog::FileWatcher
6
+ def initialize(filename, options = {})
7
+ @filename = filename
8
+ @category = options["category"] || "NA"
9
+ @options = options
10
+ @logger = Oohlalog::Logger.new(100, 0, options)
11
+ end
12
+
13
+ def run
14
+ File::Tail::Logfile.open(@filename) do |log|
15
+ log.tail do |line|
16
+ if @options.has_key?("error_pattern") && line.match(@options["error_pattern"])
17
+ @logger.error(line, @category)
18
+ elsif @options.has_key?("fatal_pattern") && line.match(@options["fatal_pattern"])
19
+ @logger.fatal(line, @category)
20
+ elsif @options.has_key?("warn_pattern") && line.match(@options["warn_pattern"])
21
+ @logger.warn(line, @category)
22
+ elsif @options.has_key?("info_pattern") && line.match(@options["info_pattern"])
23
+ @logger.info(line, @category)
24
+ else
25
+ @logger.info(line, @category)
26
+ end
27
+ end
28
+ end
29
+ end
30
+
31
+
32
+ end
@@ -0,0 +1,3 @@
1
+ module OohlalogSyslog
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,9 @@
1
+ require "oohlalog_syslog/version"
2
+
3
+
4
+ module OohlalogSyslog
5
+ require 'oohlalog_syslog/configuration'
6
+ require 'oohlalog_syslog/file_watcher'
7
+ end
8
+
9
+
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'oohlalog_syslog/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "oohlalog_syslog"
8
+ spec.version = OohlalogSyslog::VERSION
9
+ spec.authors = ["David Estes"]
10
+ spec.email = ["destes@bcap.com"]
11
+ spec.description = "Log File Watcher Daemon Written in ruby"
12
+ spec.summary = "Monitors log files as specified in etc config and passes them to the oohlalog logging service."
13
+ spec.homepage = "http://www.oohlalog.com/"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "oohlalog"
22
+ spec.add_dependency "daemons"
23
+ spec.add_dependency "file-tail"
24
+
25
+ spec.add_development_dependency "bundler", "~> 1.3"
26
+ spec.add_development_dependency "rake"
27
+ end
@@ -0,0 +1,8 @@
1
+ syslog:
2
+ api_key: APIKEYHERE
3
+ path: "/var/log/syslog"
4
+ default_level: INFO
5
+ error_pattern: /ERROR/
6
+ warn_pattern: /WARN/
7
+ info_pattern: /INFO/
8
+
metadata ADDED
@@ -0,0 +1,142 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: oohlalog_syslog
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - David Estes
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-10-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: oohlalog
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: daemons
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: file-tail
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: bundler
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '1.3'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '1.3'
78
+ - !ruby/object:Gem::Dependency
79
+ name: rake
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ description: Log File Watcher Daemon Written in ruby
95
+ email:
96
+ - destes@bcap.com
97
+ executables:
98
+ - oohlalog
99
+ - oohlalogd
100
+ extensions: []
101
+ extra_rdoc_files: []
102
+ files:
103
+ - .gitignore
104
+ - Gemfile
105
+ - LICENSE.txt
106
+ - README.md
107
+ - Rakefile
108
+ - bin/oohlalog
109
+ - bin/oohlalogd
110
+ - lib/oohlalog_syslog.rb
111
+ - lib/oohlalog_syslog/configuration.rb
112
+ - lib/oohlalog_syslog/file_watcher.rb
113
+ - lib/oohlalog_syslog/version.rb
114
+ - oohlalog_syslog.gemspec
115
+ - sample_config.yaml
116
+ homepage: http://www.oohlalog.com/
117
+ licenses:
118
+ - MIT
119
+ post_install_message:
120
+ rdoc_options: []
121
+ require_paths:
122
+ - lib
123
+ required_ruby_version: !ruby/object:Gem::Requirement
124
+ none: false
125
+ requirements:
126
+ - - ! '>='
127
+ - !ruby/object:Gem::Version
128
+ version: '0'
129
+ required_rubygems_version: !ruby/object:Gem::Requirement
130
+ none: false
131
+ requirements:
132
+ - - ! '>='
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ requirements: []
136
+ rubyforge_project:
137
+ rubygems_version: 1.8.25
138
+ signing_key:
139
+ specification_version: 3
140
+ summary: Monitors log files as specified in etc config and passes them to the oohlalog
141
+ logging service.
142
+ test_files: []