redis_alerting 1.3.2 → 1.4.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.
- checksums.yaml +4 -4
- data/README.md +16 -0
- data/bin/redis-alerting +1 -0
- data/etc/config.yml +1 -0
- data/lib/redis_alerting/config.rb +2 -0
- data/lib/redis_alerting/engine.rb +3 -2
- data/lib/redis_alerting/faye_publisher.rb +19 -0
- data/lib/redis_alerting/redis_publisher.rb +14 -0
- data/lib/redis_alerting/version.rb +1 -1
- data/lib/redis_alerting.rb +14 -4
- data/redis_alerting.gemspec +1 -1
- metadata +8 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a362dc26fffaa5486de92d039dc8faedd7053c6
|
4
|
+
data.tar.gz: 1a81505cad316a2c186836bcecc1858d4d8c18ea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 165adae5b617fc8d6521590bd3d73067755eeb61eac0b314cd6e192937bb608ba25704ef0ee981f5e64b5f68c4dbd5c34cac5d3e44eece4969caa7e24049618b
|
7
|
+
data.tar.gz: 3de8b783b0ed529bd749ba3e111e26d2a13d11620738f426010deefe19a89246e71b101a6005adfbb96b509aca940187d4a799fdb232d790f7ec282d271251d1
|
data/README.md
CHANGED
@@ -57,6 +57,7 @@ Given the config file below we will describe how the gem would check some limits
|
|
57
57
|
:namespace: alerts # the namespace to use for tracking active alerts/conditions
|
58
58
|
:separator: . # redis namespace separator
|
59
59
|
:channel: alerts # publish alert messages to this channel
|
60
|
+
:faye_url: http://localhost/faye # the URL of the Faye endpoint to publish to
|
60
61
|
:extrema: # details for where to find extrema information
|
61
62
|
:min: min # what you call your minimum
|
62
63
|
:max: max # what you call your maximum
|
@@ -133,6 +134,21 @@ When an alert is no longer active, this message will be published:
|
|
133
134
|
}
|
134
135
|
```
|
135
136
|
|
137
|
+
#### Publishing to Faye
|
138
|
+
|
139
|
+
There is also support for publishing to a [Faye](http://faye.jcoglan.com/) URL. Simply put the Faye URL in your config file like so:
|
140
|
+
|
141
|
+
```yaml
|
142
|
+
:faye_url: http://localhost/faye
|
143
|
+
:channel: alerts
|
144
|
+
```
|
145
|
+
|
146
|
+
Or set it at command line:
|
147
|
+
|
148
|
+
$ redis-alerting run -- -c config.yml --faye-url http://localhost/faye
|
149
|
+
|
150
|
+
This will disable publishing to redis. The channel will automatically be set to `/alerts` if you leave out the leading slash.
|
151
|
+
|
136
152
|
### Simple example
|
137
153
|
|
138
154
|
With the engine started try this (still sticking with the keys in the config file above):
|
data/bin/redis-alerting
CHANGED
data/etc/config.yml
CHANGED
@@ -19,6 +19,8 @@ module RedisAlerting
|
|
19
19
|
@config[:config] = File.expand_path(@config[:config], @config[:pwd])
|
20
20
|
end
|
21
21
|
|
22
|
+
@config[:faye_url] = @config[:"faye-url"] || @config[:faye_url]
|
23
|
+
|
22
24
|
raise ArgumentError, "Invalid config file: #{@config[:config]}" unless File.exists? @config[:config]
|
23
25
|
|
24
26
|
yaml = YAML.load_file(@config[:config])
|
@@ -1,7 +1,8 @@
|
|
1
1
|
module RedisAlerting
|
2
2
|
class Engine
|
3
|
-
def initialize(config, redis, log)
|
3
|
+
def initialize(config, redis, log, publisher)
|
4
4
|
@config = config
|
5
|
+
@publisher = publisher
|
5
6
|
@active_set = "#{@config[:namespace]}#{@config[:separator]}active"
|
6
7
|
@redis = redis
|
7
8
|
@log = log
|
@@ -95,7 +96,7 @@ module RedisAlerting
|
|
95
96
|
end
|
96
97
|
|
97
98
|
def publish(message)
|
98
|
-
@
|
99
|
+
@publisher.publish @config[:channel], message
|
99
100
|
@log.info "Pushed message: #{message.inspect}"
|
100
101
|
end
|
101
102
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'faye'
|
2
|
+
require 'faye/redis'
|
3
|
+
require 'eventmachine'
|
4
|
+
|
5
|
+
module RedisAlerting
|
6
|
+
class FayePublisher
|
7
|
+
|
8
|
+
def initialize(url)
|
9
|
+
Thread.new { EventMachine.run } unless EventMachine.reactor_running? && EventMachine.reactor_thread.alive?
|
10
|
+
@client = Faye::Client.new(url)
|
11
|
+
end
|
12
|
+
|
13
|
+
def publish(channel, message)
|
14
|
+
channel = "/#{channel}" unless channel.start_with?("/")
|
15
|
+
@client.publish(channel, message)
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
data/lib/redis_alerting.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require "redis_alerting/version"
|
2
2
|
require "redis_alerting/engine"
|
3
3
|
require "redis_alerting/config"
|
4
|
+
require "redis_alerting/faye_publisher"
|
4
5
|
require 'redis'
|
5
6
|
require 'logger'
|
6
7
|
require 'yaml'
|
@@ -9,14 +10,23 @@ require 'json'
|
|
9
10
|
module RedisAlerting
|
10
11
|
class << self
|
11
12
|
def run(opts)
|
12
|
-
config = RedisAlerting::Config.new(opts).to_hash
|
13
|
+
@config = RedisAlerting::Config.new(opts).to_hash
|
13
14
|
log = Logger.new STDOUT
|
14
|
-
log.level = config[:log_level]
|
15
|
-
|
15
|
+
log.level = @config[:log_level]
|
16
|
+
@redis = ::Redis.new
|
17
|
+
engine = RedisAlerting::Engine.new(@config, @redis, log, publisher)
|
16
18
|
|
17
19
|
loop do
|
18
20
|
engine.run
|
19
|
-
sleep config[:interval]
|
21
|
+
sleep @config[:interval]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def publisher
|
26
|
+
if @config[:faye_url]
|
27
|
+
return RedisAlerting::FayePublisher.new(@config[:faye_url])
|
28
|
+
else
|
29
|
+
return RedisAlerting::RedisPublisher.new(@redis)
|
20
30
|
end
|
21
31
|
end
|
22
32
|
end
|
data/redis_alerting.gemspec
CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_dependency "redis"
|
22
|
-
spec.add_dependency "slop"
|
22
|
+
spec.add_dependency "slop", '~> 3.6.0'
|
23
23
|
spec.add_dependency "daemons"
|
24
24
|
|
25
25
|
spec.add_development_dependency "bundler", "~> 1.7"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis_alerting
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert McLeod
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|
@@ -28,16 +28,16 @@ dependencies:
|
|
28
28
|
name: slop
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 3.6.0
|
34
34
|
type: :runtime
|
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:
|
40
|
+
version: 3.6.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: daemons
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -127,6 +127,8 @@ files:
|
|
127
127
|
- lib/redis_alerting.rb
|
128
128
|
- lib/redis_alerting/config.rb
|
129
129
|
- lib/redis_alerting/engine.rb
|
130
|
+
- lib/redis_alerting/faye_publisher.rb
|
131
|
+
- lib/redis_alerting/redis_publisher.rb
|
130
132
|
- lib/redis_alerting/version.rb
|
131
133
|
- redis_alerting.gemspec
|
132
134
|
- spec/lib/redis_alerting/engine_spec.rb
|