quark 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. metadata +21 -23
  2. data/bin/collectd-quark.py +0 -126
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quark
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2014-05-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_json
16
- requirement: &9385380 !ruby/object:Gem::Requirement
16
+ requirement: &21798240 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - =
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.7.9
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *9385380
24
+ version_requirements: *21798240
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: eventmachine
27
- requirement: &9384660 !ruby/object:Gem::Requirement
27
+ requirement: &21797600 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.0.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *9384660
35
+ version_requirements: *21797600
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: redis
38
- requirement: &9384040 !ruby/object:Gem::Requirement
38
+ requirement: &21813340 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 3.0.0
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *9384040
46
+ version_requirements: *21813340
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: hiredis
49
- requirement: &9383440 !ruby/object:Gem::Requirement
49
+ requirement: &21812640 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.5.2
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *9383440
57
+ version_requirements: *21812640
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: em-synchrony
60
- requirement: &9382940 !ruby/object:Gem::Requirement
60
+ requirement: &21812200 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.0.3
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *9382940
68
+ version_requirements: *21812200
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: em-websocket
71
- requirement: &9382440 !ruby/object:Gem::Requirement
71
+ requirement: &21811760 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 0.5.1
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *9382440
79
+ version_requirements: *21811760
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: hashlib
82
- requirement: &9381880 !ruby/object:Gem::Requirement
82
+ requirement: &21811140 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 0.0.35
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *9381880
90
+ version_requirements: *21811140
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: sinatra
93
- requirement: &9381280 !ruby/object:Gem::Requirement
93
+ requirement: &21810480 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :runtime
100
100
  prerelease: false
101
- version_requirements: *9381280
101
+ version_requirements: *21810480
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: sinatra-cross_origin
104
- requirement: &9396740 !ruby/object:Gem::Requirement
104
+ requirement: &21809720 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0'
110
110
  type: :runtime
111
111
  prerelease: false
112
- version_requirements: *9396740
112
+ version_requirements: *21809720
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: thin
115
- requirement: &9396060 !ruby/object:Gem::Requirement
115
+ requirement: &21809020 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,13 +120,12 @@ dependencies:
120
120
  version: '0'
121
121
  type: :runtime
122
122
  prerelease: false
123
- version_requirements: *9396060
123
+ version_requirements: *21809020
124
124
  description: A small service for logging and retrieving timeseries metrics into a
125
125
  Redis server
126
126
  email: garyhetzel@gmail.com
127
127
  executables:
128
128
  - quark
129
- - collectd-quark.py
130
129
  extensions: []
131
130
  extra_rdoc_files: []
132
131
  files:
@@ -148,7 +147,6 @@ files:
148
147
  - lib/quark/server.rb
149
148
  - lib/quark/base_server.rb
150
149
  - bin/quark
151
- - bin/collectd-quark.py
152
150
  homepage: https://github.com/ghetzel/quark
153
151
  licenses: []
154
152
  post_install_message:
@@ -1,126 +0,0 @@
1
- #!/bin/false
2
- #===============================================================================
3
- # collectd-quark - a write plugin to forward collectd metrics to a Quark server
4
- #
5
- # SOURCE
6
- # https://github.com/ghetzel/quark
7
- #
8
- # AUTHOR
9
- # Gary Hetzel <garyhetzel@gmail.com>
10
- #===============================================================================
11
- import collectd
12
- import json
13
- import sys
14
- import os
15
- import re
16
- import subprocess
17
- import socket
18
- import time
19
- import urllib2
20
-
21
- ACTIONS = ['exec']
22
- PLUGIN_NAME='quark'
23
-
24
- quark_hostname = '127.0.0.1'
25
- quark_port = 12161
26
- quark_socket = None
27
- quark_mode = 'tcp'
28
- quark_prefix = ''
29
-
30
- # -----------------------------------------------------------------------------
31
- # CALLBACK: config()
32
- # processes the collectd.conf configuration stanza for this plugin
33
- #
34
- def config(c):
35
- global quark_hostname, quark_port, quark_socket, quark_mode, quark_prefix
36
-
37
- for ci in c.children:
38
- if ci.key == 'Hostname':
39
- quark_hostname = ci.values[0]
40
- elif ci.key == 'Port':
41
- quark_port = int(ci.values[0])
42
- elif ci.key == 'Socket':
43
- quark_socket = ci.values[0]
44
- elif ci.key == 'Mode':
45
- quark_mode = ci.values[0]
46
- elif ci.key == 'Prefix':
47
- quark_prefix = ci.values[0]
48
-
49
- if not quark_mode:
50
- raise Exception('Must specify a Mode: socket,tcp,udp,http')
51
-
52
-
53
- # -----------------------------------------------------------------------------
54
- # CALLBACK: collectd write()
55
- # this is what collectd calls when it receives a new metric observation
56
- #
57
- def write(vl, data=None):
58
- global quark_prefix
59
-
60
- plugin = vl.plugin + ('-'+vl.plugin_instance if len(vl.plugin_instance) > 0 else '')
61
- type = vl.type + ('-'+vl.type_instance if len(vl.type_instance) > 0 else '')
62
- metric = quark_prefix + vl.host + '.' + plugin + ('.'+type if len(type) > 0 else '')
63
-
64
- for i in vl.values:
65
- observe = push_metric(vl, metric, i)
66
-
67
-
68
-
69
- # -----------------------------------------------------------------------------
70
- # push_metric
71
- # pushes a new metric observation onto a host/metric-keyed stack (checkstack)
72
- # also performs the value check (calls check_value) and stores the status code
73
- # finally, determines whether this observation is in violation based on the
74
- # threshold configuration
75
- #
76
- # returns:
77
- # the observation record as stored in checkstack (for convenience)
78
- #
79
- def push_metric(vlist, metric, value):
80
- global quark_hostname, quark_port, quark_socket, quark_mode
81
- rv = None
82
- tm = vlist.time
83
- if tm == 0:
84
- tm = time.time()
85
-
86
- tm = int(tm*1000)
87
-
88
- payload = "OBSERVE %s %s %s" % (metric, value, tm)
89
-
90
- if quark_mode == 'tcp':
91
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
92
- s.connect((quark_hostname, quark_port))
93
- s.send(payload)
94
- rv = s.recv(1024)
95
- s.close()
96
-
97
- elif quark_mode == 'udp':
98
- s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
99
- s.sendto(payload, (quark_hostname, quark_port))
100
-
101
- elif quark_mode == 'socket':
102
- s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
103
- s.connect(quark_socket)
104
- s.send(payload)
105
- rv = s.recv(1024)
106
- s.close()
107
-
108
- elif quark_mode == 'http':
109
- rv = urllib2.urlopen("http://%s:%s/observe/%s/%s/%s" % (quark_hostname, quark_port, metric, value, tm)).read()
110
-
111
- if not rv is None:
112
- rv = json.loads(rv)
113
-
114
- return rv
115
-
116
- def shutdown():
117
- print "Stopping collectd-quark"
118
-
119
-
120
- # -----------------------------------------------------------------------------
121
- # Register Callbacks
122
- # -----------------------------------------------------------------------------
123
- #collectd.register_init(init)
124
- collectd.register_config(config)
125
- collectd.register_write(write)
126
- collectd.register_shutdown(shutdown)