1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-21 14:50:08 +03:00

Remove OneMonitor tool from source tree, sunstone-server script and install script.

This tool is replaced by acctd.
This commit is contained in:
Hector Sanjuan 2011-07-11 16:08:26 +02:00 committed by Ruben S. Montero
parent f010ce29d7
commit 954ff1a4fc
9 changed files with 0 additions and 492 deletions

View File

@ -222,8 +222,6 @@ SUNSTONE_DIRS="$SUNSTONE_LOCATION/models \
$SUNSTONE_LOCATION/public/vendor/jQuery \
$SUNSTONE_LOCATION/public/vendor/jGrowl \
$SUNSTONE_LOCATION/public/vendor/flot \
$SUNSTONE_LOCATION/share \
$SUNSTONE_LOCATION/share/OneMonitor \
$SUNSTONE_LOCATION/public/images \
$SUNSTONE_LOCATION/templates \
$SUNSTONE_LOCATION/views"
@ -341,7 +339,6 @@ INSTALL_SUNSTONE_FILES=(
SUNSTONE_PUBLIC_VENDOR_JQUERYUI:$SUNSTONE_LOCATION/public/vendor/jQueryUI
SUNSTONE_PUBLIC_VENDOR_JQUERYLAYOUT:$SUNSTONE_LOCATION/public/vendor/jQueryLayout
SUNSTONE_PUBLIC_VENDOR_FLOT:$SUNSTONE_LOCATION/public/vendor/flot
SUNSTONE_SHARE_ONEMONITOR:$SUNSTONE_LOCATION/share/OneMonitor
SUNSTONE_PUBLIC_IMAGES_FILES:$SUNSTONE_LOCATION/public/images
)
@ -896,15 +893,6 @@ src/sunstone/public/vendor/flot/LICENSE.txt \
src/sunstone/public/vendor/flot/NOTICE \
src/sunstone/public/vendor/flot/README.txt"
SUNSTONE_SHARE_ONEMONITOR="\
src/sunstone/share/OneMonitor/HostMonitor.rb \
src/sunstone/share/OneMonitor/OneMonitorClient.rb \
src/sunstone/share/OneMonitor/OneMonitorClientUtils.rb \
src/sunstone/share/OneMonitor/OneMonitor.rb \
src/sunstone/share/OneMonitor/OneMonitorUtils.rb \
src/sunstone/share/OneMonitor/runOneMonitor.rb \
src/sunstone/share/OneMonitor/VMMonitor.rb"
SUNSTONE_PUBLIC_IMAGES_FILES="src/sunstone/public/images/ajax-loader.gif \
src/sunstone/public/images/login_over.png \
src/sunstone/public/images/login.png \

View File

@ -23,22 +23,12 @@ if [ -z "$ONE_LOCATION" ]; then
SUNSTONE_LOCK_FILE=/var/lock/one/.sunstone.lock
SUNSTONE_LOG=/var/log/one/sunstone.log
SUNSTONE_CONF=/etc/one/sunstone-server.conf
ONEMONITOR_CMD=/usr/lib/one/sunstone/share/OneMonitor/runOneMonitor.rb
ONEMONITOR_PID=/var/run/one/onemonitor.pid
ONEMONITOR_LOG=/var/log/one/onemonitor.log
HOST_LOG_FOLDER=/var/log/one/OneMonitor/host
VM_LOG_FOLDER=/var/log/one/OneMonitor/vm
else
SUNSTONE_PID=$ONE_LOCATION/var/sunstone.pid
SUNSTONE_SERVER=$ONE_LOCATION/lib/sunstone/config.ru
SUNSTONE_LOCK_FILE=$ONE_LOCATION/var/.sunstone.lock
SUNSTONE_LOG=$ONE_LOCATION/var/sunstone.log
SUNSTONE_CONF=$ONE_LOCATION/etc/sunstone-server.conf
ONEMONITOR_CMD=$ONE_LOCATION/lib/sunstone/share/OneMonitor/runOneMonitor.rb
ONEMONITOR_PID=$ONE_LOCATION/var/onemonitor.pid
ONEMONITOR_LOG=$ONE_LOCATION/var/onemonitor.log
HOST_LOG_FOLDER=$ONE_LOCATION/var/OneMonitor/host
VM_LOG_FOLDER=$ONE_LOCATION/var/OneMonitor/vm
fi
setup()
@ -94,35 +84,6 @@ start()
fi
echo "sunstone-server listening on $HOST:$PORT"
# Start the monitoring app
if [ ! -d $HOST_LOG_FOLDER ]
then
mkdir -p $HOST_LOG_FOLDER
[[ $? -ne 0 ]] && ( echo "Error creating host log directory"; exit 1 )
fi
if [ ! -d $VM_LOG_FOLDER ]
then
mkdir -p $VM_LOG_FOLDER
[[ $? -ne 0 ]] && ( echo "Error creating vm log directory"; exit 1 )
fi
if [ -z $MONITORING_INTERVAL ]
then
MONITORING_INTERVAL=600
fi
ruby $ONEMONITOR_CMD $MONITORING_INTERVAL $HOST_LOG_FOLDER $VM_LOG_FOLDER &> $ONEMONITOR_LOG &
LASTPID=$!
sleep 1
ps $LASTPID &> /dev/null
[[ $? -ne 0 ]] && ( echo "Error launching monitoring daemon"; exit 1 )
echo -n $LASTPID > $ONEMONITOR_PID
echo "OneMonitor monitoring tool launched"
}
#
@ -142,10 +103,6 @@ stop()
rm -f $SUNSTONE_LOCK_FILE &> /dev/null
echo "sunstone-server stopped"
kill -KILL `cat $ONEMONITOR_PID` &> /dev/null
echo "OneMonitor tool stopped"
}
case "$1" in

View File

@ -1,62 +0,0 @@
# -------------------------------------------------------------------------- #
# Copyright 2002-2011, OpenNebula Project Leads (OpenNebula.org) #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
require 'OneMonitor'
class HostMonitor < OneMonitor
#:time, :id labels
HOST_MONITORING_ELEMS = {
:time => "LAST_MON_TIME",
:id => "ID",
:name => "NAME",
:state => "STATE",
:cluster => "CLUSTER",
:disk_usage => "HOST_SHARE/DISK_USAGE",
:cpu_usage => "HOST_SHARE/CPU_USAGE",
:mem_usage => "HOST_SHARE/MEM_USAGE",
:max_mem => "HOST_SHARE/MAX_MEM",
:max_disk => "HOST_SHARE/MAX_DISK",
:max_cpu => "HOST_SHARE/MAX_CPU",
:free_mem => "HOST_SHARE/FREE_MEM",
:free_disk => "HOST_SHARE/FREE_DISK",
:free_cpu => "HOST_SHARE/FREE_CPU",
:used_disk => "HOST_SHARE/USED_DISK",
:used_mem => "HOST_SHARE/USED_MEM",
:used_cpu => "HOST_SHARE/USED_CPU"
}
def initialize (log_file_folder,monitoring_elems=HOST_MONITORING_ELEMS)
super log_file_folder,monitoring_elems
end
def factory(client)
HostPool.new(client)
end
def active (host_hash)
host_hash[:state].to_i < 3
end
def error (host_hash)
host_hash[:state].to_i == 3
end
def log_snapshot
time = Time.new
puts "#{time.strftime("%Y-%m-%d %H:%M:%S")} - Hosts have been monitored\n"
STDOUT.flush
end
end

View File

@ -1,112 +0,0 @@
# -------------------------------------------------------------------------- #
# Copyright 2002-2011, OpenNebula Project Leads (OpenNebula.org) #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
ONE_LOCATION = ENV["ONE_LOCATION"]
if !ONE_LOCATION
RUBY_LIB_LOCATION = "/usr/lib/one/ruby"
else
RUBY_LIB_LOCATION = ONE_LOCATION+"/lib/ruby"
end
$: << RUBY_LIB_LOCATION
require 'OpenNebula'
require 'OneMonitorUtils'
include OpenNebula
class OneMonitor
OUTPUT_METHOD="CSV"
case OUTPUT_METHOD
when "CSV" then include OneMonitorCSV
end
def initialize(log_file_folder,monitoring_elems)
# Authenticate in OpenNebula
@client = Client.new
@log_file_folder = log_file_folder
@monitoring_elems = monitoring_elems
@results = []
reinit_global_results
end
def snapshot
#init global results
rc = monitor #calling the extending class method
rc = save if rc
if rc
@results = []
reinit_global_results
log_snapshot
else
puts "Error saving new snapshot."
end
return rc
end
def monitor
pool = factory(@client)
rc = pool.info
if OpenNebula.is_error?(rc)
puts "Error monitoring: #{rc.message}"
return nil
end
pool.each do | elem |
time = elem[@monitoring_elems[:time]].to_i
hash = {}
@monitoring_elems.each do | key,value |
hash[key] = elem[value]
end
#do not log time = 0, it causes
#graphs being drawn from 1970
if time > 0
@results << hash
add_to_global(hash)
end
@n_active += 1 if active(hash)
@n_error += 1 if error(hash)
@n_total += 1
end
end
def reinit_global_results
@global_results = {}
@monitoring_elems.each do | key,value |
@global_results[key] = 0
end
@global_results[:time] = Time.new.to_i
@n_active = @n_error = @n_total = 0
end
def add_to_global(hash)
hash.each do | key,value |
@global_results[key] += value.to_i
end
# time = hash[:time].to_i
puts Time.new.to_i
@global_results[:time] = Time.new.to_i
end
end

View File

@ -1,35 +0,0 @@
require 'OneMonitorClientUtils'
class OneMonitorClient
INPUT_METHOD="CSV"
case INPUT_METHOD
when "CSV" then include OneMonitorCSVClient
end
def initialize(ids, log_file_folder)
#create filenames to read
ids = [ids] unless ids.class == Array
@file_names = {}
ids.each do | id |
@file_names[id] = OneMonitorClient.full_path(log_file_folder,id)
end
return @file_names
end
def get_multiple_data(columns,length)
result = []
@file_names.each do | id,file_name |
result << get_data_for_id(id,columns,length)
end
return result
end
def get_data_for_id(id, columns, length)
readOneMonitorFile(@file_names[id],columns,length)
end
def self.full_path(folder,id)
"#{folder}/#{id}"
end
end

View File

@ -1,40 +0,0 @@
module OneMonitorCSVClient
def readOneMonitorFile(file_name,columns,length)
first_line = `head -1 #{file_name}`.chomp
if $?.exitstatus != 0
return [] #silently fail, cannot find this file
end
n_lines = `wc -l #{file_name} | cut -d' ' -f 1`.to_i
if n_lines <= length.to_i
length = n_lines-1
end
fields = first_line.split(',')
poll_time_pos = fields.index("time")
if !poll_time_pos
return [] #silently fail, no timestamp
end
tail = `tail -#{length} #{file_name}`
series = [] #will hold several graphs
columns.each do | column_name |
graph = []
column_pos = fields.index(column_name)
next unless column_pos
tail.each_line do | line |
line_arr = line.delete('"').split(',')
graph << [ line_arr[poll_time_pos].to_i*1000, line_arr[column_pos].to_i ]
end
series << graph
end
return series
end
end

View File

@ -1,93 +0,0 @@
# -------------------------------------------------------------------------- #
# Copyright 2002-2011, OpenNebula Project Leads (OpenNebula.org) #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
module OneMonitorCSV
def save
rc = save_csv
save_global_csv if rc
end
def save_csv(separator=",")
@results.each do | mon_hash |
id = mon_hash[:id]
log_name = "#{@log_file_folder}/#{id}"
begin
log_file = File.new(log_name,'a')
if !File.size?(log_name)
header = csv_header
log_file.puts(header)
end
line = hash_to_csv(mon_hash)
log_file.puts(line)
log_file.close
rescue Exception => e
puts e.message
puts "Error writing log"
return nil
end
end
end
def save_global_csv
begin
global_log_file = "#{@log_file_folder}/global"
global_file = File.new(global_log_file,'a')
if !File.size?(global_log_file)
then
header = csv_header+",active,error,total"
global_file.puts(header)
end
csv = hash_to_csv(@global_results)+%&,"#{@n_active}","#{@n_error}","#{@n_total}"&
global_file.puts(csv)
global_file.close
return 0
rescue Exception => e
puts e.message
puts "Error writing global results"
return nil
end
end
def hash_to_csv hash,separator=","
csv_line = ""
#we need to respect the order of monitoring elems
#keys, which might not be the same in hash
@monitoring_elems.each do | key, value |
csv_line += %&"#{hash[key]}"#{separator}&
end
csv_line.chop! unless csv_line.empty?
end
def csv_header separator=","
str = ""
@monitoring_elems.each do | key,value |
str += "#{key},"
end
#remove final separator
str.chop! unless str.empty?
end
end

View File

@ -1,54 +0,0 @@
# -------------------------------------------------------------------------- #
# Copyright 2002-2011, OpenNebula Project Leads (OpenNebula.org) #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
require 'OneMonitor'
class VMMonitor < OneMonitor
VM_MONITORING_ELEMS = {
:time => "LAST_POLL",
:id => "ID",
:name => "NAME",
:lcm_state => "LCM_STATE",
:state => "STATE",
:memory => "MEMORY",
:cpu => "CPU",
:net_tx => "NET_TX",
:net_rx => "NET_RX"
}
def initialize (log_file_folder,monitoring_elems=VM_MONITORING_ELEMS)
super log_file_folder,monitoring_elems
end
def factory(client)
VirtualMachinePool.new(client)
end
def active (vm_hash)
vm_hash[:state].to_i == 3
end
def error (vm_hash)
vm_hash[:state].to_i == 7
end
def log_snapshot
time = Time.new
puts "#{time.strftime("%Y-%m-%d %H:%M:%S")} - VMs have been monitored\n"
STDOUT.flush
end
end

View File

@ -1,41 +0,0 @@
#!/usr/bin/env ruby
# -------------------------------------------------------------------------- #
# Copyright 2002-2011, OpenNebula Project Leads (OpenNebula.org) #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
$: << File.dirname(__FILE__)
require 'HostMonitor.rb'
require 'VMMonitor.rb'
DEFAULT_INTERVAL= 600 #secs
DEFAULT_HOST_LOG_FOLDER = "#{ENV['ONE_LOCATION']}/logs/host/"
DEFAULT_VM_LOG_FOLDER = "#{ENV['ONE_LOCATION']}/logs/vm/"
#ARG0=interval, ARG1=hostfolder, ARG2=vmfolder
MONITOR_INTERVAL= ARGV[0]? ARGV[0].to_i : DEFAULT_INTERVAL #secs
HOST_LOG_FOLDER= ARGV[1]? ARGV[1]: DEFAULT_HOST_LOG_FOLDER
VM_LOG_FOLDER=ARGV[2] ? ARGV[2] : DEFAULT_VM_LOG_FOLDER
hostm = HostMonitor.new(HOST_LOG_FOLDER)
vmm = VMMonitor.new(VM_LOG_FOLDER)
while true do
hostm.snapshot
vmm.snapshot
sleep MONITOR_INTERVAL
end