fluent-plugin-cloudstack 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.textile +20 -17
- data/VERSION +1 -1
- data/lib/fluent/plugin/in_cloudstack.rb +29 -28
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c04b0483c9975c8fc4f196907a71df1a31f5d911
|
4
|
+
data.tar.gz: e0a41f5b7d8d2f9a1bf6d3a1c1889fc92a98073e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 39b8c083cfa1a443e6b24d4868b80fb2aa0aa175fc589d55e2542e455a0a53172ddc408837f4eb00287775096cb0d7322f587962b301ae286eeefc45ec769a29
|
7
|
+
data.tar.gz: a2a0791de3be0c2ebf06c606c8d3040dc77cac0a20d442d2d828a49e1450bc4955881eb3727a6cc4a087bec641e1e4664e10c0114eef40519b8312f5781ed9c2
|
data/README.textile
CHANGED
@@ -10,6 +10,8 @@ Fluentd input plugin to get usages and events from CloudStack API.
|
|
10
10
|
** usages_per_service_offering
|
11
11
|
** usages_per_disk_offering
|
12
12
|
* event
|
13
|
+
** event_log
|
14
|
+
** event_flow(per interval)
|
13
15
|
|
14
16
|
|
15
17
|
h2. Installation
|
@@ -60,25 +62,26 @@ h2. Configuration
|
|
60
62
|
h2. Data Example
|
61
63
|
|
62
64
|
<pre>
|
63
|
-
20130507T041336+0000 cloudstack.event
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
20131028T133511+0000 cloudstack.usages {"
|
76
|
-
"
|
77
|
-
"
|
78
|
-
"
|
79
|
-
"
|
65
|
+
20130507T041336+0000 cloudstack.event {"id":"xxxxxxx-4e64-4fa5-8045-5ecffb7e2417",
|
66
|
+
"username":"clnxxxxxxxxx",
|
67
|
+
"type":"USER.LOGIN",
|
68
|
+
"level":"INFO",
|
69
|
+
"description":"user has logged in from IP Address xxx.xxx.xxx.xxx",
|
70
|
+
"account":"clnxxxxxxx",
|
71
|
+
"domainid":"xxxxxxxx-dcc3-486b-90e8-02c514c93d1f",
|
72
|
+
"domain":"cln10000004",
|
73
|
+
"created":"2013-05-07T13:13:36+0900",
|
74
|
+
"state":"Completed",
|
75
|
+
"parentid":"0"}
|
76
|
+
|
77
|
+
20131028T133511+0000 cloudstack.usages {"vm_sum":1,
|
78
|
+
"memory_sum":512,
|
79
|
+
"cpu_sum":1,
|
80
|
+
"root_volume_sum":16106127360,
|
81
|
+
"data_volume_sum":42949672960,
|
80
82
|
"t1.micro":1,
|
81
83
|
"Datadisk_40GB":1}
|
84
|
+
20131028T133511+0000 cloudstack.usages {"event_flow":5}
|
82
85
|
|
83
86
|
</pre>
|
84
87
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.4
|
@@ -2,7 +2,7 @@ module Fluent
|
|
2
2
|
class CloudStackInput < Input
|
3
3
|
Fluent::Plugin.register_input("cloudstack", self)
|
4
4
|
|
5
|
-
INTERVAL_MIN =
|
5
|
+
INTERVAL_MIN = 300
|
6
6
|
|
7
7
|
config_param :host
|
8
8
|
config_param :path, :default =>'/client/api'
|
@@ -23,14 +23,6 @@ module Fluent
|
|
23
23
|
require "eventmachine"
|
24
24
|
init_eventmachine
|
25
25
|
|
26
|
-
@before_events_filepath = "logs/before_events.yml"
|
27
|
-
|
28
|
-
if File.exist?(@before_events_filepath)
|
29
|
-
@before_events = YAML.load_file(@before_events_filepath)
|
30
|
-
else
|
31
|
-
@before_events = nil
|
32
|
-
end
|
33
|
-
|
34
26
|
super
|
35
27
|
end
|
36
28
|
|
@@ -44,6 +36,17 @@ module Fluent
|
|
44
36
|
if @interval < INTERVAL_MIN
|
45
37
|
raise ConfigError, "'interval' must be over #{INTERVAL_MIN}."
|
46
38
|
end
|
39
|
+
|
40
|
+
@before_events_filepath = "logs/before_events.yml"
|
41
|
+
|
42
|
+
if File.exist?(@before_events_filepath)
|
43
|
+
@before_events = YAML.load_file(@before_events_filepath)
|
44
|
+
else
|
45
|
+
@before_events = nil
|
46
|
+
end
|
47
|
+
|
48
|
+
@event_output_tag = "#{@tag}.event"
|
49
|
+
@usages_output_tag = "#{@tag}.usages"
|
47
50
|
end
|
48
51
|
|
49
52
|
def start
|
@@ -69,18 +72,16 @@ module Fluent
|
|
69
72
|
|
70
73
|
def emit_new_events
|
71
74
|
new_events = get_new_events
|
72
|
-
output_tag = "#{@tag}.event"
|
73
75
|
new_events.each do |event|
|
74
76
|
time = Time.parse(event["created"]).to_i
|
75
|
-
Engine.emit(
|
77
|
+
Engine.emit(@event_output_tag, time, event)
|
76
78
|
end
|
79
|
+
|
80
|
+
Engine.emit("#{@usages_output_tag}", Engine.now, {"events_flow" => new_events.size})
|
77
81
|
end
|
78
82
|
|
79
83
|
def emit_usages
|
80
|
-
|
81
|
-
time = Engine.now
|
82
|
-
output_tag = "#{@tag}.usages"
|
83
|
-
Engine.emit("#{output_tag}", time, usages)
|
84
|
+
Engine.emit("#{@usages_output_tag}", Engine.now, get_usages)
|
84
85
|
end
|
85
86
|
|
86
87
|
def get_new_events
|
@@ -108,18 +109,18 @@ module Fluent
|
|
108
109
|
def get_usages
|
109
110
|
usages_per_service_offering = Hash.new(0)
|
110
111
|
usages_per_disk_offering = Hash.new(0)
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
112
|
+
memory_sum = 0
|
113
|
+
cpu_sum = 0
|
114
|
+
root_volume_sum = 0
|
115
|
+
data_volume_sum = 0
|
115
116
|
|
116
117
|
vms_responses = cs.list_virtual_machines(:domainid=>@domain_id)
|
117
118
|
vms = vms_responses["listvirtualmachinesresponse"]["virtualmachine"]
|
118
119
|
|
119
120
|
if vms
|
120
121
|
vms.each do |vm|
|
121
|
-
|
122
|
-
|
122
|
+
memory_sum += vm["memory"].to_i
|
123
|
+
cpu_sum += vm["cpunumber"].to_i
|
123
124
|
usages_per_service_offering[vm["serviceofferingname"]] += 1
|
124
125
|
end
|
125
126
|
end
|
@@ -131,19 +132,19 @@ module Fluent
|
|
131
132
|
volumes.each do |volume|
|
132
133
|
case volume["type"]
|
133
134
|
when "ROOT"
|
134
|
-
|
135
|
+
root_volume_sum += volume["size"]
|
135
136
|
when "DATADISK"
|
136
|
-
|
137
|
+
data_volume_sum += volume["size"]
|
137
138
|
usages_per_disk_offering[volume["diskofferingname"].gsub(' ','_')] += 1
|
138
139
|
end
|
139
140
|
end
|
140
141
|
end
|
141
142
|
|
142
|
-
results = {:
|
143
|
-
:
|
144
|
-
:
|
145
|
-
:
|
146
|
-
:
|
143
|
+
results = {:vm_sum => vms.size,
|
144
|
+
:memory_sum => memory_sum,
|
145
|
+
:cpu_sum => cpu_sum,
|
146
|
+
:root_volume_sum => root_volume_sum,
|
147
|
+
:data_volume_sum => data_volume_sum,
|
147
148
|
}
|
148
149
|
|
149
150
|
usages_per_service_offering.each do |key,value|
|