fluent-plugin-cloudstack 0.0.3 → 0.0.4
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.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|
|