cloudscale-monitor 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (190) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +22 -0
  3. data/README.md +33 -0
  4. data/lib/cloudscale/monitor.rb +131 -0
  5. data/lib/cloudscale/monitor/agent/init.rb +95 -0
  6. data/lib/cloudscale/monitor/agent/init_components.rb +88 -0
  7. data/lib/cloudscale/monitor/agent/init_menus.rb +53 -0
  8. data/lib/cloudscale/monitor/agent/preops/general_preop.rb +35 -0
  9. data/lib/cloudscale/monitor/agent/preops/preop.rb +48 -0
  10. data/lib/cloudscale/monitor/model/agent/agent_instance.rb +33 -0
  11. data/lib/cloudscale/monitor/model/agent/agent_instance_settings.rb +26 -0
  12. data/lib/cloudscale/monitor/model/component/component.rb +29 -0
  13. data/lib/cloudscale/monitor/model/constants/agent_instance_store.rb +42 -0
  14. data/lib/cloudscale/monitor/model/constants/agent_store.rb +23 -0
  15. data/lib/cloudscale/monitor/model/constants/agent_unit_store.rb +69 -0
  16. data/lib/cloudscale/monitor/model/constants/setup/display_unit_store.rb +210 -0
  17. data/lib/cloudscale/monitor/model/constants/statistic_store.rb +67 -0
  18. data/lib/cloudscale/monitor/model/coredata/coredata.rb +32 -0
  19. data/lib/cloudscale/monitor/model/format/format.rb +69 -0
  20. data/lib/cloudscale/monitor/model/measurement/chart.rb +37 -0
  21. data/lib/cloudscale/monitor/model/measurement/measurement.rb +29 -0
  22. data/lib/cloudscale/monitor/model/measurement/statistic.rb +27 -0
  23. data/lib/cloudscale/monitor/model/measurement/unit.rb +31 -0
  24. data/lib/cloudscale/monitor/model/measurement/value.rb +32 -0
  25. data/lib/cloudscale/monitor/model/metric/metric.rb +29 -0
  26. data/lib/cloudscale/monitor/model/table/table.rb +34 -0
  27. data/lib/cloudscale/monitor/version.rb +11 -0
  28. data/lib/cloudscale/plugins/apache/apache2_server_status.rb +125 -0
  29. data/lib/cloudscale/plugins/cpu/sigar_cpu_info.rb +52 -0
  30. data/lib/cloudscale/plugins/cpu/sigar_cpu_perc.rb +69 -0
  31. data/lib/cloudscale/plugins/cpu/sigar_cpu_time.rb +48 -0
  32. data/lib/cloudscale/plugins/definition/plugin_components.rb +384 -0
  33. data/lib/cloudscale/plugins/definition/plugin_components_apache.rb +158 -0
  34. data/lib/cloudscale/plugins/definition/plugin_components_java.rb +68 -0
  35. data/lib/cloudscale/plugins/definition/plugin_components_mongodb.rb +358 -0
  36. data/lib/cloudscale/plugins/definition/plugin_components_postgres.rb +196 -0
  37. data/lib/cloudscale/plugins/definition/plugin_menus.rb +148 -0
  38. data/lib/cloudscale/plugins/definition/plugin_menus_apache.rb +85 -0
  39. data/lib/cloudscale/plugins/definition/plugin_menus_java.rb +67 -0
  40. data/lib/cloudscale/plugins/definition/plugin_menus_mongodb.rb +125 -0
  41. data/lib/cloudscale/plugins/definition/plugin_menus_postgres.rb +99 -0
  42. data/lib/cloudscale/plugins/disk/sigar_disk_iops.rb +71 -0
  43. data/lib/cloudscale/plugins/disk/sigar_disk_space.rb +67 -0
  44. data/lib/cloudscale/plugins/general/sigar_net_info.rb +55 -0
  45. data/lib/cloudscale/plugins/general/sigar_os_information.rb +45 -0
  46. data/lib/cloudscale/plugins/java/jvm_status.rb +110 -0
  47. data/lib/cloudscale/plugins/mongo/mongo_db_status.rb +74 -0
  48. data/lib/cloudscale/plugins/mongo/mongo_replica_status.rb +108 -0
  49. data/lib/cloudscale/plugins/mongo/mongo_server_status.rb +177 -0
  50. data/lib/cloudscale/plugins/net/sigar_byte_information.rb +64 -0
  51. data/lib/cloudscale/plugins/net/sigar_packet_information.rb +84 -0
  52. data/lib/cloudscale/plugins/plugin.rb +252 -0
  53. data/lib/cloudscale/plugins/postgres/postgres_server_status.rb +148 -0
  54. data/lib/cloudscale/plugins/preops/plugin_apache_preop.rb +48 -0
  55. data/lib/cloudscale/plugins/preops/plugin_mongodb_preop.rb +105 -0
  56. data/lib/cloudscale/plugins/preops/plugin_postgres_preop.rb +70 -0
  57. data/lib/cloudscale/plugins/preops/plugin_preop.rb +51 -0
  58. data/lib/cloudscale/plugins/ram/sigar_ram_usage.rb +61 -0
  59. data/lib/cloudscale/plugins/ram/sigar_swap_usage.rb +61 -0
  60. data/lib/cloudscale/rest/rest_client.rb +178 -0
  61. data/lib/cloudscale/rest/rest_client_helper.rb +70 -0
  62. data/lib/cloudscale/schedule.rb +45 -0
  63. data/lib/cloudscale/store/agent/agent.store +2 -0
  64. data/lib/cloudscale/store/agent/agent_instance.store +11 -0
  65. data/lib/cloudscale/store/charts/cpuPercCombinedAreaChart +0 -0
  66. data/lib/cloudscale/store/charts/cpuPercIdleAreaChart +0 -0
  67. data/lib/cloudscale/store/charts/cpuPercNiceAreaChart +0 -0
  68. data/lib/cloudscale/store/charts/cpuPercSysAreaChart +0 -0
  69. data/lib/cloudscale/store/charts/cpuPercWaitAreaChart +0 -0
  70. data/lib/cloudscale/store/charts/diskFreeAreaChart- +0 -0
  71. data/lib/cloudscale/store/charts/diskFreeAreaChart-dev +0 -0
  72. data/lib/cloudscale/store/charts/diskReadBytesPerSecondAreaChart- +0 -0
  73. data/lib/cloudscale/store/charts/diskReadBytesPerSecondAreaChart-dev +0 -0
  74. data/lib/cloudscale/store/charts/diskReadsPerSecondAreaChart- +0 -0
  75. data/lib/cloudscale/store/charts/diskReadsPerSecondAreaChart-dev +0 -0
  76. data/lib/cloudscale/store/charts/diskTotalAreaChart- +0 -0
  77. data/lib/cloudscale/store/charts/diskTotalAreaChart-dev +0 -0
  78. data/lib/cloudscale/store/charts/diskUsedAreaChart- +0 -0
  79. data/lib/cloudscale/store/charts/diskUsedAreaChart-dev +0 -0
  80. data/lib/cloudscale/store/charts/diskWriteBytesPerSecondAreaChart- +0 -0
  81. data/lib/cloudscale/store/charts/diskWriteBytesPerSecondAreaChart-dev +0 -0
  82. data/lib/cloudscale/store/charts/diskWritesPerSecondAreaChart- +0 -0
  83. data/lib/cloudscale/store/charts/diskWritesPerSecondAreaChart-dev +0 -0
  84. data/lib/cloudscale/store/charts/ramFreeAreaChart +0 -0
  85. data/lib/cloudscale/store/charts/ramTotalAreaChart +0 -0
  86. data/lib/cloudscale/store/charts/ramUsedAreaChart +0 -0
  87. data/lib/cloudscale/store/charts/receivedBytesChart-bridge0 +0 -0
  88. data/lib/cloudscale/store/charts/receivedBytesChart-en0 +0 -0
  89. data/lib/cloudscale/store/charts/receivedBytesChart-en1 +0 -0
  90. data/lib/cloudscale/store/charts/receivedBytesChart-en2 +0 -0
  91. data/lib/cloudscale/store/charts/receivedBytesChart-en4 +0 -0
  92. data/lib/cloudscale/store/charts/receivedBytesChart-lo0 +0 -0
  93. data/lib/cloudscale/store/charts/receivedBytesChart-p2p0 +0 -0
  94. data/lib/cloudscale/store/charts/receivedBytesChart-vmnet1 +0 -0
  95. data/lib/cloudscale/store/charts/receivedBytesChart-vmnet8 +0 -0
  96. data/lib/cloudscale/store/charts/receivedPacketsChart-bridge0 +0 -0
  97. data/lib/cloudscale/store/charts/receivedPacketsChart-en0 +0 -0
  98. data/lib/cloudscale/store/charts/receivedPacketsChart-en1 +0 -0
  99. data/lib/cloudscale/store/charts/receivedPacketsChart-en2 +0 -0
  100. data/lib/cloudscale/store/charts/receivedPacketsChart-en4 +0 -0
  101. data/lib/cloudscale/store/charts/receivedPacketsChart-lo0 +0 -0
  102. data/lib/cloudscale/store/charts/receivedPacketsChart-p2p0 +0 -0
  103. data/lib/cloudscale/store/charts/receivedPacketsChart-vmnet1 +0 -0
  104. data/lib/cloudscale/store/charts/receivedPacketsChart-vmnet8 +0 -0
  105. data/lib/cloudscale/store/charts/receivedPacketsDroppedChart-bridge0 +0 -0
  106. data/lib/cloudscale/store/charts/receivedPacketsDroppedChart-en0 +0 -0
  107. data/lib/cloudscale/store/charts/receivedPacketsDroppedChart-en1 +0 -0
  108. data/lib/cloudscale/store/charts/receivedPacketsDroppedChart-en2 +0 -0
  109. data/lib/cloudscale/store/charts/receivedPacketsDroppedChart-en4 +0 -0
  110. data/lib/cloudscale/store/charts/receivedPacketsDroppedChart-lo0 +0 -0
  111. data/lib/cloudscale/store/charts/receivedPacketsDroppedChart-p2p0 +0 -0
  112. data/lib/cloudscale/store/charts/receivedPacketsDroppedChart-vmnet1 +0 -0
  113. data/lib/cloudscale/store/charts/receivedPacketsDroppedChart-vmnet8 +0 -0
  114. data/lib/cloudscale/store/charts/receivedPacketsErrorChart-bridge0 +0 -0
  115. data/lib/cloudscale/store/charts/receivedPacketsErrorChart-en0 +0 -0
  116. data/lib/cloudscale/store/charts/receivedPacketsErrorChart-en1 +0 -0
  117. data/lib/cloudscale/store/charts/receivedPacketsErrorChart-en2 +0 -0
  118. data/lib/cloudscale/store/charts/receivedPacketsErrorChart-en4 +0 -0
  119. data/lib/cloudscale/store/charts/receivedPacketsErrorChart-lo0 +0 -0
  120. data/lib/cloudscale/store/charts/receivedPacketsErrorChart-p2p0 +0 -0
  121. data/lib/cloudscale/store/charts/receivedPacketsErrorChart-vmnet1 +0 -0
  122. data/lib/cloudscale/store/charts/receivedPacketsErrorChart-vmnet8 +0 -0
  123. data/lib/cloudscale/store/charts/sendBytesChart-bridge0 +0 -0
  124. data/lib/cloudscale/store/charts/sendBytesChart-en0 +0 -0
  125. data/lib/cloudscale/store/charts/sendBytesChart-en1 +0 -0
  126. data/lib/cloudscale/store/charts/sendBytesChart-en2 +0 -0
  127. data/lib/cloudscale/store/charts/sendBytesChart-en4 +0 -0
  128. data/lib/cloudscale/store/charts/sendBytesChart-lo0 +0 -0
  129. data/lib/cloudscale/store/charts/sendBytesChart-p2p0 +0 -0
  130. data/lib/cloudscale/store/charts/sendBytesChart-vmnet1 +0 -0
  131. data/lib/cloudscale/store/charts/sendBytesChart-vmnet8 +0 -0
  132. data/lib/cloudscale/store/charts/sendPacketsChart-bridge0 +0 -0
  133. data/lib/cloudscale/store/charts/sendPacketsChart-en0 +0 -0
  134. data/lib/cloudscale/store/charts/sendPacketsChart-en1 +0 -0
  135. data/lib/cloudscale/store/charts/sendPacketsChart-en2 +0 -0
  136. data/lib/cloudscale/store/charts/sendPacketsChart-en4 +0 -0
  137. data/lib/cloudscale/store/charts/sendPacketsChart-lo0 +0 -0
  138. data/lib/cloudscale/store/charts/sendPacketsChart-p2p0 +0 -0
  139. data/lib/cloudscale/store/charts/sendPacketsChart-vmnet1 +0 -0
  140. data/lib/cloudscale/store/charts/sendPacketsChart-vmnet8 +0 -0
  141. data/lib/cloudscale/store/charts/sendPacketsDroppedChart-bridge0 +0 -0
  142. data/lib/cloudscale/store/charts/sendPacketsDroppedChart-en0 +0 -0
  143. data/lib/cloudscale/store/charts/sendPacketsDroppedChart-en1 +0 -0
  144. data/lib/cloudscale/store/charts/sendPacketsDroppedChart-en2 +0 -0
  145. data/lib/cloudscale/store/charts/sendPacketsDroppedChart-en4 +0 -0
  146. data/lib/cloudscale/store/charts/sendPacketsDroppedChart-lo0 +0 -0
  147. data/lib/cloudscale/store/charts/sendPacketsDroppedChart-p2p0 +0 -0
  148. data/lib/cloudscale/store/charts/sendPacketsDroppedChart-vmnet1 +0 -0
  149. data/lib/cloudscale/store/charts/sendPacketsDroppedChart-vmnet8 +0 -0
  150. data/lib/cloudscale/store/charts/sendPacketsErrorChart-bridge0 +0 -0
  151. data/lib/cloudscale/store/charts/sendPacketsErrorChart-en0 +0 -0
  152. data/lib/cloudscale/store/charts/sendPacketsErrorChart-en1 +0 -0
  153. data/lib/cloudscale/store/charts/sendPacketsErrorChart-en2 +0 -0
  154. data/lib/cloudscale/store/charts/sendPacketsErrorChart-en4 +0 -0
  155. data/lib/cloudscale/store/charts/sendPacketsErrorChart-lo0 +0 -0
  156. data/lib/cloudscale/store/charts/sendPacketsErrorChart-p2p0 +0 -0
  157. data/lib/cloudscale/store/charts/sendPacketsErrorChart-vmnet1 +0 -0
  158. data/lib/cloudscale/store/charts/sendPacketsErrorChart-vmnet8 +0 -0
  159. data/lib/cloudscale/store/charts/swapFreeAreaChart +0 -0
  160. data/lib/cloudscale/store/charts/swapTotalAreaChart +0 -0
  161. data/lib/cloudscale/store/charts/swapUsedAreaChart +0 -0
  162. data/lib/cloudscale/store/data/agent_unit.store +21 -0
  163. data/lib/cloudscale/store/plugin/token +1 -0
  164. data/lib/cloudscale/store/plugin_components.store +268 -0
  165. data/lib/cloudscale/store/plugin_menu.store +80 -0
  166. data/lib/cloudscale/store/rest/settings.yml +3 -0
  167. data/lib/test/agent/init_test.rb +18 -0
  168. data/lib/test/dynamicops/test_dynamic_ops.rb +90 -0
  169. data/lib/test/dynamicops/test_static_ops.rb +81 -0
  170. data/lib/test/model/constants/agent_store_test.rb +20 -0
  171. data/lib/test/model/constants/agent_unit_store_test.rb +20 -0
  172. data/lib/test/model/constants/setup/display_unit_store_test.rb +22 -0
  173. data/lib/test/model/constants/statistic_store_test.rb +21 -0
  174. data/lib/test/model/measurement/settings/chart_settings_test.rb +33 -0
  175. data/lib/test/model/statistic/create_statistic_test.rb +28 -0
  176. data/lib/test/model/statistic/create_units_test.rb +49 -0
  177. data/lib/test/plugins/apache/apache2_server_status_test.rb +23 -0
  178. data/lib/test/plugins/java/jvm_status_test.rb +16 -0
  179. data/lib/test/plugins/mongo/mongo_db_stats.rb +17 -0
  180. data/lib/test/plugins/mongo/mongo_db_wrapper_test.rb +21 -0
  181. data/lib/test/plugins/mongo/mongo_server_replica_set.rb +17 -0
  182. data/lib/test/plugins/mongo/mongo_server_status_test.rb +37 -0
  183. data/lib/test/plugins/plugin_test.rb +74 -0
  184. data/lib/test/plugins/postgres/postgres_cluster_stats.rb +20 -0
  185. data/lib/test/plugins/postgres/postgres_wrapper_test.rb +20 -0
  186. data/lib/test/plugins/tomcat/tomcat_monitoring.rb +255 -0
  187. data/lib/test/rest/rest_client_test.rb +50 -0
  188. data/lib/test/sigar/sigar_test.rb +25 -0
  189. data/lib/test/stringUtils/common_test.rb +25 -0
  190. metadata +359 -0
@@ -0,0 +1,125 @@
1
+ require "yaml/store"
2
+ require "logger"
3
+
4
+ ##
5
+ #
6
+ # @author Johannes Hiemer, cloudscale.
7
+ #
8
+ ##
9
+ module Cloudscale
10
+ module Plugins
11
+ class PluginMenusMongoDb
12
+
13
+ @@PLUGIN_MENU_PATH = "#{File.dirname(__FILE__)}/../../store/plugin_menu.store"
14
+
15
+ #
16
+ # Define the components and metrics of a Plugin
17
+ #
18
+ def self.init_menus
19
+ @store = YAML::Store.new(@@PLUGIN_MENU_PATH)
20
+ hash = {
21
+ "mongodb-db-stats" => {
22
+ "name" => "mongodb-db-stats" ,
23
+ "label" => "MongoDB DB Statistics",
24
+ "description" => "Monitoring details for MongoDB Database",
25
+ "order" => 0,
26
+ "agentInstanceId" => nil,
27
+ "subItems" => [{
28
+ "menuId" => "databaseStatistics",
29
+ "name" => "objdatabaseStatisticsects",
30
+ "label" => "General Database Statistics",
31
+ "description" => "TODO",
32
+ "order" => 0,
33
+ }]
34
+ },
35
+ "mongodb-server-stats" => {
36
+ "name" => "mongodb-server-stats" ,
37
+ "label" => "MongoDB Server Statistics",
38
+ "description" => "Monitoring details for MongoDB Server",
39
+ "order" => 0,
40
+ "agentInstanceId" => nil,
41
+ "subItems" => [{
42
+ "menuId" => "generalInformation",
43
+ "name" => "generalInformation",
44
+ "label" => "General MongoDB Information",
45
+ "description" => "TODO",
46
+ "order" => 0
47
+ },{
48
+ "menuId" => "indexCounters",
49
+ "name" => "indexCounters",
50
+ "label" => "Index Counter",
51
+ "description" => "TODO",
52
+ "order" => 0
53
+ },{
54
+ "menuId" => "globalLock",
55
+ "name" => "globalLock",
56
+ "label" => "Global Locks",
57
+ "description" => "TODO",
58
+ "order" => 1
59
+ },{
60
+ "menuId" => "opCounters",
61
+ "name" => "opcounters",
62
+ "label" => "Operation Counter",
63
+ "description" => "TODO",
64
+ "order" => 1
65
+ },{
66
+ "menuId" => "memory",
67
+ "name" => "memory",
68
+ "label" => "Memory",
69
+ "description" => "TODO",
70
+ "order" => 1
71
+ },{
72
+ "menuId" => "network",
73
+ "name" => "network",
74
+ "label" => "Network",
75
+ "description" => "TODO",
76
+ "order" => 1
77
+ }]
78
+ },
79
+ "mongodb-replica-stats" => {
80
+ "name" => "mongodb-replica-stats" ,
81
+ "label" => "MongoDB Repilcation Statistics",
82
+ "description" => "Monitoring details for MongoDB Server",
83
+ "order" => 0,
84
+ "agentInstanceId" => nil,
85
+ "subItems" => [{
86
+ "menuId" => "replicaClusterStatus",
87
+ "name" => "replicaClusterStatus",
88
+ "label" => "Replication Cluster Status",
89
+ "description" => "TODO",
90
+ "order" => 0
91
+ }]
92
+ }}
93
+
94
+ @store.transaction { hash.each { | k, v | @store[k] = v } }
95
+ end
96
+
97
+ def self.is_initialized
98
+ begin
99
+ return File.read(@@PLUGIN_MENU_PATH) != nil
100
+ rescue
101
+ return false
102
+ end
103
+ end
104
+
105
+ def self.remove_menus
106
+ begin
107
+ file = File.read(@@PLUGIN_MENU_PATH)
108
+ if (file != nil)
109
+ File.delete(@@PLUGIN_MENU_PATH)
110
+ end
111
+ rescue
112
+ end
113
+ end
114
+
115
+ def self.load_hash
116
+ begin
117
+ YAML.load(File.read(@@PLUGIN_MENU_PATH))
118
+ rescue
119
+ return nil
120
+ end
121
+ end
122
+
123
+ end
124
+ end
125
+ end
@@ -0,0 +1,99 @@
1
+ require "yaml/store"
2
+ require "logger"
3
+
4
+ ##
5
+ #
6
+ # @author Johannes Hiemer, cloudscale.
7
+ #
8
+ ##
9
+ module Cloudscale
10
+ module Plugins
11
+ class PluginMenusPostgres
12
+
13
+ @@PLUGIN_MENU_PATH = "#{File.dirname(__FILE__)}/../../store/plugin_menu.store"
14
+
15
+ #
16
+ # Define the components and metrics of a Plugin
17
+ #
18
+ def self.init_menus
19
+ @store = YAML::Store.new(@@PLUGIN_MENU_PATH)
20
+ hash = {
21
+ "pgDatabaseStats" => {
22
+ "name" => "pgDatabaseStats" ,
23
+ "label" => "Postgres Database Statistics",
24
+ "description" => "TODO",
25
+ "order" => 0,
26
+ "agentInstanceId" => nil,
27
+ "subItems" => [{
28
+ "menuId" => "generalInformation",
29
+ "name" => "generalInformation",
30
+ "label" => "General Information",
31
+ "description" => "TODO",
32
+ "order" => 0
33
+ },{
34
+ "menuId" => "numBackends",
35
+ "name" => "numBackends",
36
+ "label" => "Number of Backends",
37
+ "description" => "TODO",
38
+ "order" => 0
39
+ },{
40
+ "menuId" => "transactionInformation",
41
+ "name" => "xactCommit",
42
+ "label" => "Transaction Commits",
43
+ "description" => "TODO",
44
+ "order" => 0
45
+ },{
46
+ "menuId" => "bulkOps",
47
+ "name" => "bulkOps",
48
+ "label" => "Buld Operations",
49
+ "description" => "TODO",
50
+ "order" => 0
51
+ }]
52
+ },
53
+ "pgTableStats" => {
54
+ "name" => "pgTableStats" ,
55
+ "label" => "Postgres Table Statistics",
56
+ "description" => "TODO",
57
+ "order" => 0,
58
+ "agentInstanceId" => nil,
59
+ "subItems" => [{
60
+ "menuId" => "rowStats",
61
+ "name" => "rowStats",
62
+ "label" => "Row Statistics",
63
+ "description" => "TODO",
64
+ "order" => 0
65
+ }]
66
+ }}
67
+
68
+ @store.transaction { hash.each { | k, v | @store[k] = v } }
69
+ end
70
+
71
+ def self.is_initialized
72
+ begin
73
+ return File.read(@@PLUGIN_MENU_PATH) != nil
74
+ rescue
75
+ return false
76
+ end
77
+ end
78
+
79
+ def self.remove_menus
80
+ begin
81
+ file = File.read(@@PLUGIN_MENU_PATH)
82
+ if (file != nil)
83
+ File.delete(@@PLUGIN_MENU_PATH)
84
+ end
85
+ rescue
86
+ end
87
+ end
88
+
89
+ def self.load_hash
90
+ begin
91
+ YAML.load(File.read(@@PLUGIN_MENU_PATH))
92
+ rescue
93
+ return nil
94
+ end
95
+ end
96
+
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,71 @@
1
+ require "#{File.dirname(__FILE__)}/../../monitor/model/measurement/chart"
2
+ require "#{File.dirname(__FILE__)}/../../monitor/model/measurement/measurement"
3
+ require "#{File.dirname(__FILE__)}/../../monitor/model/measurement/value"
4
+ require "#{File.dirname(__FILE__)}/../../monitor/model/measurement/statistic"
5
+ require "#{File.dirname(__FILE__)}/../../monitor/model/measurement/unit"
6
+ require "#{File.dirname(__FILE__)}/../preops/plugin_preop"
7
+ require "#{File.dirname(__FILE__)}/../plugin"
8
+
9
+ ##
10
+ #
11
+ # @author Johannes Hiemer, cloudscale.
12
+ #
13
+ ##
14
+ module Cloudscale
15
+ module Plugins
16
+ class SigarDiskIops < Plugins::Plugin
17
+ attr_reader :menuDiskReadsWrites, :menuDiskByteReadsWrites, :disk_reads, :disk_writes, :disk_read_bytes, :disk_write_bytes
18
+
19
+ def log
20
+ @log = Logger.new(STDOUT)
21
+ end
22
+
23
+ def is_enabled
24
+ true
25
+ end
26
+
27
+ def initialize
28
+ super
29
+ if is_enabled
30
+ menus = Plugins::PluginMenus.load_hash()
31
+ @menuDiskReadsWrites = load_menu(menus["disk"], "diskReadsWrites")
32
+ @menuDiskByteReadsWrites = load_menu(menus["disk"], "diskByteReadsAndWrite")
33
+
34
+ hash = Plugins::PluginComponents.load_hash()
35
+ @disk_reads = load_metric(hash["disk"], "diskReads")
36
+ @disk_writes = load_metric(hash["disk"], "diskWrites")
37
+ @disk_read_bytes = load_metric(hash["disk"], "diskReadBytes")
38
+ @disk_write_bytes = load_metric(hash["disk"], "diskWriteBytes")
39
+ @sigar = Plugins::PluginPreop.instance.sigar
40
+ end
41
+ end
42
+
43
+ def collect(agentInstanceId)
44
+ log.info("Calling Collect on SigarDiskIops")
45
+
46
+ fslist = @sigar.file_system_list
47
+ fslist.each do |fs|
48
+ dir_name = fs.dir_name
49
+ begin
50
+ usage = @sigar.file_system_usage(dir_name)
51
+ dir = dir_name.gsub(/[^0-9A-Za-z]/, '')
52
+ report(disk_reads, menuDiskReadsWrites, usage.disk_reads, true, agentInstanceId, "diskReadsPerSecondAreaChart-" + dir,
53
+ "Number of disk writes " + dir_name, "Number of disk writes of a disk or a specific mount-point" , "area", "Time", "Number", "c", "s")
54
+
55
+ report(disk_writes, menuDiskReadsWrites, usage.disk_writes, true, agentInstanceId, "diskWritesPerSecondAreaChart-" + dir,
56
+ "Number of disk reads " + dir_name, "Number of disk reads of a disk or a specific mount-point" , "area", "Time", "Number", "c", "s")
57
+
58
+ report(disk_read_bytes, menuDiskByteReadsWrites, usage.disk_read_bytes, true, agentInstanceId, "diskReadBytesPerSecondAreaChart-" + dir,
59
+ "Number of bytes read " + dir_name, "Number of bytes read of a disk a specific mount-point" , "area", "Time", "Size in MB", "MB", "s")
60
+
61
+ report(disk_write_bytes, menuDiskByteReadsWrites, usage.disk_write_bytes, true, agentInstanceId, "diskWriteBytesPerSecondAreaChart-" + dir,
62
+ "Number of bytes written " + dir_name, "Number of bytes written of a disk a specific mount-point" , "area", "Time", "Size in MB", "MB", "s")
63
+ rescue Exception => e
64
+ puts e
65
+ end
66
+ end
67
+ end
68
+
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,67 @@
1
+ require "#{File.dirname(__FILE__)}/../../monitor/model/measurement/chart"
2
+ require "#{File.dirname(__FILE__)}/../../monitor/model/measurement/measurement"
3
+ require "#{File.dirname(__FILE__)}/../../monitor/model/measurement/value"
4
+ require "#{File.dirname(__FILE__)}/../../monitor/model/measurement/statistic"
5
+ require "#{File.dirname(__FILE__)}/../../monitor/model/measurement/unit"
6
+ require "#{File.dirname(__FILE__)}/../preops/plugin_preop"
7
+ require "#{File.dirname(__FILE__)}/../plugin"
8
+
9
+ ##
10
+ #
11
+ # @author Johannes Hiemer, cloudscale.
12
+ #
13
+ ##
14
+ module Cloudscale
15
+ module Plugins
16
+ class SigarDiskSpace < Plugins::Plugin
17
+
18
+ attr_reader :menu, :diskUsed, :diskFree, :diskTotal
19
+ def log
20
+ @log = Logger.new(STDOUT)
21
+ end
22
+
23
+ def is_enabled
24
+ true
25
+ end
26
+
27
+ def initialize
28
+ super
29
+ if is_enabled
30
+ menus = Plugins::PluginMenus.load_hash()
31
+ @menu = load_menu(menus["disk"], "diskUsage")
32
+
33
+ hash = Plugins::PluginComponents.load_hash()
34
+ @diskUsed = load_metric(hash["disk"], "diskUsed")
35
+ @diskFree = load_metric(hash["disk"], "diskAvailable")
36
+ @diskTotal = load_metric(hash["disk"], "diskTotal")
37
+ @sigar = Plugins::PluginPreop.instance.sigar
38
+ end
39
+ end
40
+
41
+ def collect(agentInstanceId)
42
+ log.info("Calling Collect on SigarDiskSpace")
43
+
44
+ fslist = @sigar.file_system_list
45
+ fslist.each do |fs|
46
+ dir_name = fs.dir_name
47
+ begin
48
+ usage = @sigar.file_system_usage(dir_name)
49
+ dir = dir_name.gsub(/[^0-9A-Za-z]/, '')
50
+ report(diskTotal, menu, usage.total, false, agentInstanceId, "diskTotalAreaChart-" + dir, "Total size of a disk " + dir_name,
51
+ "Total size of a disk or a specific mount-point" , "area", "Time", "Size in GB", "GB", nil)
52
+ report(diskFree, menu, usage.free, false, agentInstanceId, "diskFreeAreaChart-" + dir, "Free size of a disk " + dir_name,
53
+ "Used size of a disk or a specific mount-point" , "area", "Time", "Size in GB", "MB", nil)
54
+ report(diskUsed, menu, usage.total - usage.free, false, agentInstanceId, "diskUsedAreaChart-" + dir, "Used size of a disk " + dir_name,
55
+ "Free size of a disk a specific mount-point" , "area", "Time", "Size in GB", "GB", nil)
56
+ rescue Exception => e
57
+ puts e
58
+ end
59
+
60
+ end
61
+ end
62
+
63
+ end
64
+
65
+ end
66
+
67
+ end
@@ -0,0 +1,55 @@
1
+ require "#{File.dirname(__FILE__)}/../../monitor/model/table/table"
2
+ require "#{File.dirname(__FILE__)}/../preops/plugin_preop"
3
+ require "#{File.dirname(__FILE__)}/../plugin"
4
+
5
+ ##
6
+ #
7
+ # @author Johannes Hiemer, cloudscale.
8
+ #
9
+ ##
10
+ module Cloudscale
11
+ module Plugins
12
+ class SigarNetInformation < Plugins::Plugin
13
+
14
+ attr_reader :menu
15
+
16
+ def log
17
+ @log = Logger.new(STDOUT)
18
+ end
19
+
20
+ def is_enabled
21
+ true
22
+ end
23
+
24
+ def initialize
25
+ super
26
+ if is_enabled
27
+ hash = Plugins::PluginMenus.load_hash()
28
+ @menu = load_menu(hash["general"], "networkInformation")
29
+ @sigar = Plugins::PluginPreop.instance.sigar
30
+ end
31
+ end
32
+
33
+ def collectHourly(agentInstanceId)
34
+ log.info("Calling Collect on SigarNetInformation")
35
+ ninfo = @sigar.net_info
36
+
37
+ body = Array.new
38
+ body.push(["Hostname", ninfo.host_name])
39
+ body.push(["Domain Name", ninfo.domain_name])
40
+ body.push(["FQDN", @sigar.fqdn])
41
+ body.push(["Default gateway", ninfo.default_gateway])
42
+ body.push(["Default gateway interface", ninfo.default_gateway_interface])
43
+ body.push(["Primary DNS", ninfo.primary_dns])
44
+ body.push(["Secondary DNS", ninfo.secondary_dns])
45
+
46
+ head = ["Settings", "Value"]
47
+ network_information_table = Monitor::Table.new("networkInformationNetworkInformation", "Network Information", head, body, "compact")
48
+ network_information_table.caption = "Network Information for the Server"
49
+
50
+ persist_table(network_information_table, agentInstanceId, menu)
51
+ end
52
+
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,45 @@
1
+ require "#{File.dirname(__FILE__)}/../../monitor/model/coredata/coredata"
2
+ require "#{File.dirname(__FILE__)}/../preops/plugin_preop"
3
+ require "#{File.dirname(__FILE__)}/../plugin"
4
+
5
+ ##
6
+ #
7
+ # @author Johannes Hiemer, cloudscale.
8
+ #
9
+ ##
10
+ module Cloudscale
11
+ module Plugins
12
+ class SigarOsInformation < Plugins::Plugin
13
+ attr_reader :menu
14
+
15
+ def log
16
+ @log = Logger.new(STDOUT)
17
+ end
18
+
19
+ def is_enabled
20
+ true
21
+ end
22
+
23
+ def initialize
24
+ super
25
+ if is_enabled
26
+ hash = Plugins::PluginMenus.load_hash()
27
+ @menu = load_menu(hash["general"], "osInformation")
28
+ @sigar = Plugins::PluginPreop.instance.sigar
29
+ end
30
+ end
31
+
32
+ def collectDaily(agentInstanceId)
33
+ log.info("Calling Collect on SigarOsInformation")
34
+ sys = @sigar.sys_info
35
+
36
+ head = sys.name << " " << sys.version << " (" << sys.vendor_version << ")"
37
+ subHead = "Vendor: " << sys.vendor << " Architecture: " << sys.arch
38
+ coredata = Monitor::CoreData.new("osInforationOs", head, subHead, nil)
39
+
40
+ persist_coredata(coredata, agentInstanceId, menu)
41
+ end
42
+
43
+ end
44
+ end
45
+ end