bipbip 0.5.8 → 0.5.9
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 +61 -120
- data/lib/bipbip/plugin/puppet.rb +22 -14
- data/lib/bipbip/storage/copperegg.rb +4 -1
- data/lib/bipbip/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 940f0155867f0e16e1c4a7c0b7ba8b710b0a0191
|
4
|
+
data.tar.gz: ffa66de8788189c9774081d1e8a2fe63d085b071
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 897fd316611fdd5a84e41299381098b099edb3a1d531a92c950a8ee74aed2352dc3dc96017d127ab700ea75119610fb16e72f79e70ba080584bb8e27b601d10a
|
7
|
+
data.tar.gz: 3258dfbf44197e4d6c49a7094396a64b9d6a826a2e794c93c7954f5ae38c23a48ec727ca9bc460dffe912872012ce004f59050cdc5afd176eacc1804766e40a2
|
data/README.md
CHANGED
@@ -2,7 +2,6 @@ bipbip [](https://tr
|
|
2
2
|
======
|
3
3
|
Agent to collect server metrics and send them to the [CopperEgg RevealMetrics](http://copperegg.com/) platform.
|
4
4
|
Plugins for different metrics available.
|
5
|
-
Will spawn a child process for every plugin and server you tell it to monitor.
|
6
5
|
|
7
6
|
Installation
|
8
7
|
------------
|
@@ -10,14 +9,15 @@ Installation
|
|
10
9
|
gem install bipbip
|
11
10
|
```
|
12
11
|
|
13
|
-
|
14
|
-
|
12
|
+
There's a [puppet module for Debian](https://github.com/cargomedia/puppet-packages/tree/master/modules/bipbip) available to install *bipbip* as a system daemon.
|
13
|
+
|
14
|
+
### Configuration
|
15
15
|
Pass the path to your configuration file to `bipbip` using the `-c` command line argument.
|
16
16
|
```sh
|
17
17
|
bipbip -c /etc/bipbip/config.yml
|
18
18
|
```
|
19
19
|
|
20
|
-
|
20
|
+
Example with CopperEgg as a storage and service plugins for *memcached* and *mysql* configured:
|
21
21
|
```yml
|
22
22
|
logfile: /var/log/bipbip.log
|
23
23
|
loglevel: INFO
|
@@ -27,7 +27,7 @@ include: services.d/
|
|
27
27
|
storages:
|
28
28
|
-
|
29
29
|
name: copperegg
|
30
|
-
api_key: YOUR_APIKEY
|
30
|
+
api_key: <YOUR_APIKEY>
|
31
31
|
|
32
32
|
services:
|
33
33
|
-
|
@@ -38,132 +38,73 @@ services:
|
|
38
38
|
plugin: mysql
|
39
39
|
hostname: localhost
|
40
40
|
port: 3306
|
41
|
-
username: root
|
42
|
-
password: root
|
43
|
-
-
|
44
|
-
plugin: mongodb
|
45
|
-
hostname: localhost
|
46
|
-
port: 27017
|
47
|
-
username:
|
48
|
-
password:
|
49
|
-
-
|
50
|
-
plugin: redis
|
51
|
-
hostname: localhost
|
52
|
-
port: 6379
|
53
|
-
-
|
54
|
-
plugin: resque
|
55
|
-
hostname: localhost
|
56
|
-
port: 6379
|
57
|
-
database: 10
|
58
|
-
namespace: resque-prefix
|
59
|
-
frequency: 60
|
60
|
-
-
|
61
|
-
plugin: gearman
|
62
|
-
hostname: localhost
|
63
|
-
port: 4730
|
64
|
-
-
|
65
|
-
plugin: apache2
|
66
|
-
url: http://localhost:80/server-status?auto
|
67
|
-
-
|
68
|
-
plugin: nginx
|
69
|
-
url: http://localhost:80/server-status
|
70
|
-
-
|
71
|
-
plugin: network
|
72
|
-
-
|
73
|
-
plugin: monit
|
74
|
-
hostname: localhost
|
75
|
-
port: 2888
|
76
|
-
ssl: true
|
77
|
-
auth: true
|
78
|
-
username: foo
|
79
|
-
password: bar
|
80
|
-
-
|
81
|
-
plugin: php-apc
|
82
|
-
url: http://localhost:80/apc-status
|
83
|
-
-
|
84
|
-
plugin: fastcgi-php-fpm
|
85
|
-
host: localhost
|
86
|
-
port: 9000
|
87
|
-
path: /fpm-status
|
88
|
-
-
|
89
|
-
plugin: fastcgi-php-apc
|
90
|
-
host: localhost
|
91
|
-
port: 9000
|
92
|
-
-
|
93
|
-
plugin: fastcgi-php-opcache
|
94
|
-
host: localhost
|
95
|
-
port: 9000
|
96
|
-
-
|
97
|
-
plugin: log-parser
|
98
|
-
path: /var/log/syslog
|
99
|
-
matchers:
|
100
|
-
-
|
101
|
-
name: oom_killer
|
102
|
-
regexp: 'invoked oom_killer'
|
103
|
-
-
|
104
|
-
name: segfault
|
105
|
-
regexp: segfault
|
106
|
-
-
|
107
|
-
plugin: postfix
|
108
|
-
-
|
109
|
-
plugin: elasticsearch
|
110
|
-
hostname: localhost
|
111
|
-
port: 9200
|
112
|
-
-
|
113
|
-
plugin: puppet
|
114
41
|
```
|
115
42
|
|
116
|
-
|
117
|
-
-
|
118
|
-
-
|
43
|
+
Configuration options:
|
44
|
+
- **logfile** (optional): Path to log file. If not provided will log to `STDOUT`.
|
45
|
+
- **loglevel** (optional): One of [Logger's levels](http://www.ruby-doc.org/stdlib-2.1.0/libdoc/logger/rdoc/Logger.html). Defaults to `INFO`.
|
46
|
+
- **frequency** (optional): How often to measure metrics (in seconds). Defaults to `60`.
|
47
|
+
- **include** (optional): Optional directory where to look for *service plugin configurations* (relative to config file).
|
48
|
+
- **storage**: List of storages to send data to.
|
49
|
+
- **services**: List of service plugins from which to gather metrics.
|
119
50
|
|
120
|
-
|
121
|
-
---------------------
|
122
|
-
In your configuration you can specify a directory to include service configurations from:
|
51
|
+
The `include` directive allows to set a directory from which to load additional *service plugin* configurations. The above example could also be structured with multiple files:
|
123
52
|
```
|
124
|
-
|
53
|
+
.
|
54
|
+
|-- config.yml
|
55
|
+
`-- services.d
|
56
|
+
|-- memcached.yml
|
57
|
+
`-- mysql.yml
|
125
58
|
```
|
126
|
-
|
127
|
-
|
128
|
-
You could then add a file `/etc/bipbip/services.d/memcached.yml`:
|
59
|
+
Where `memcached.yml` would contain:
|
129
60
|
```yml
|
130
61
|
plugin: memcached
|
131
62
|
hostname: localhost
|
132
63
|
port: 11211
|
133
64
|
```
|
134
65
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
66
|
+
The configuration for each *service plugin* is described further down.
|
67
|
+
The following options are available for all plugins:
|
68
|
+
- `frequency`: Override the global measurement frequency.
|
69
|
+
- `metric_group`: Use a metric group name different from the plugin's name. Useful when using the same plugin twice.
|
70
|
+
|
71
|
+
Storages
|
72
|
+
--------
|
73
|
+
Currently *bipbip* has only one storage available, but more could be added.
|
74
|
+
|
75
|
+
### copperegg
|
76
|
+
Send metrics to [CopperEgg](http://copperegg.com/)'s custom metrics API (*RevealMetrics*).
|
77
|
+
|
78
|
+
Configuration options:
|
79
|
+
- **api_key**: Your API key
|
80
|
+
|
81
|
+
Service Plugins
|
82
|
+
---------------
|
83
|
+
These service plugins ship with bipbip:
|
84
|
+
- memcached
|
85
|
+
- mysql
|
86
|
+
- mongodb
|
87
|
+
- redis
|
88
|
+
- resque
|
89
|
+
- gearman
|
90
|
+
- apache2
|
91
|
+
- nginx
|
92
|
+
- network
|
93
|
+
- monit
|
94
|
+
- php-apc
|
95
|
+
- fastcgi-php-fpm
|
96
|
+
- fastcgi-php-apc
|
97
|
+
- fastcgi-php-opcache
|
98
|
+
- log-parser
|
99
|
+
- postfix
|
100
|
+
- elasticsearch
|
101
|
+
- puppet
|
102
|
+
|
103
|
+
Please refer to [/docu/services.md](/docu/services.md) for information about the individual plugins and their configuration options.
|
104
|
+
|
105
|
+
Custom Service Plugins
|
106
|
+
----------------------
|
107
|
+
Additional service plugins can be created as independent gems.
|
167
108
|
They should include a class `Plugin::MyPlugin` in the `BipBip` module extending `Plugin`.
|
168
109
|
On that class the functions `metrics_schema` and `monitor` should be implemented.
|
169
110
|
|
data/lib/bipbip/plugin/puppet.rb
CHANGED
@@ -7,11 +7,9 @@ module Bipbip
|
|
7
7
|
|
8
8
|
def metrics_schema
|
9
9
|
[
|
10
|
+
{:name => 'report_ok', :type => 'gauge', :unit => 'Boolean'},
|
10
11
|
{:name => 'last_run_total_time', :type => 'gauge', :unit => 'Seconds'},
|
11
12
|
{:name => 'last_run_age', :type => 'gauge', :unit => 'Seconds'},
|
12
|
-
{:name => 'has_event', :type => 'gauge', :unit => 'Boolean'},
|
13
|
-
{:name => 'has_resources', :type => 'gauge', :unit => 'Boolean'},
|
14
|
-
{:name => 'has_changes', :type => 'gauge', :unit => 'Boolean'},
|
15
13
|
{:name => 'events_failure_count', :type => 'gauge', :unit => 'Events'},
|
16
14
|
{:name => 'events_success_count', :type => 'gauge', :unit => 'Events'},
|
17
15
|
{:name => 'events_total_count', :type => 'gauge', :unit => 'Events'},
|
@@ -29,20 +27,30 @@ module Bipbip
|
|
29
27
|
has_events = puppet_report.has_key?('events')
|
30
28
|
has_resources = puppet_report.has_key?('resources')
|
31
29
|
has_changes = puppet_report.has_key?('changes')
|
32
|
-
|
30
|
+
|
31
|
+
metrics = {
|
32
|
+
'report_ok' => ((has_events and has_changes and has_resources) ? 1 : 0),
|
33
33
|
'last_run_total_time' => puppet_report['time']['total'].to_i,
|
34
34
|
'last_run_age' => report_age,
|
35
|
-
'has_events' => has_events,
|
36
|
-
'has_resources' => has_resources,
|
37
|
-
'has_changes' => has_resources,
|
38
|
-
'events_failure_count' => (has_events ? puppet_report['events']['failure'].to_i : 0),
|
39
|
-
'events_success_count' => (has_events ? puppet_report['events']['success'].to_i : 0),
|
40
|
-
'events_total_count' => (has_events ? puppet_report['events']['total'].to_i : 0),
|
41
|
-
'resources_failed_count' => (has_resources ? puppet_report['resources']['failed'].to_i : 0),
|
42
|
-
'resources_skipped_count' => (has_resources ? puppet_report['resources']['skipped'].to_i : 0),
|
43
|
-
'resources_total_count' => (has_resources ? puppet_report['resources']['total'].to_i : 0),
|
44
|
-
'changes_total_count' => (has_changes ? puppet_report['changes']['total'].to_i : 0),
|
45
35
|
}
|
36
|
+
|
37
|
+
if has_events
|
38
|
+
metrics['events_failure_count'] = puppet_report['events']['failure'].to_i
|
39
|
+
metrics['events_success_count'] = puppet_report['events']['success'].to_i
|
40
|
+
metrics['events_total_count'] = puppet_report['events']['total'].to_i
|
41
|
+
end
|
42
|
+
|
43
|
+
if has_resources
|
44
|
+
metrics['resources_failed_count'] = puppet_report['resources']['failed'].to_i
|
45
|
+
metrics['resources_skipped_count'] = puppet_report['resources']['skipped'].to_i
|
46
|
+
metrics['resources_total_count'] = puppet_report['resources']['total'].to_i
|
47
|
+
end
|
48
|
+
|
49
|
+
if has_changes
|
50
|
+
metrics['changes_total_count'] = puppet_report['changes']['total'].to_i
|
51
|
+
end
|
52
|
+
|
53
|
+
metrics
|
46
54
|
end
|
47
55
|
|
48
56
|
private
|
@@ -40,7 +40,10 @@ module Bipbip
|
|
40
40
|
end
|
41
41
|
|
42
42
|
def store_sample(plugin, time, data)
|
43
|
-
CopperEgg::MetricSample.save(plugin.metric_group, plugin.source_identifier, time.to_i, data)
|
43
|
+
response = CopperEgg::MetricSample.save(plugin.metric_group, plugin.source_identifier, time.to_i, data)
|
44
|
+
if response.code != '200'
|
45
|
+
raise("Cannot store copperegg data `#{data}`. Response code `#{response.code}`, message `#{response.message}`, body `#{response.body}`")
|
46
|
+
end
|
44
47
|
end
|
45
48
|
|
46
49
|
def _load_metric_groups
|
data/lib/bipbip/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bipbip
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cargo Media
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-01-
|
13
|
+
date: 2015-01-12 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: copperegg
|