#!/bin/bash
function start_monitor_collectd {
## CONTROL_IP is the IP of primary interface of control node i.e.
## eth0, eno1. It is used by collectd monitor to communicate with
## sample inspector.
## @TODO (umar) see if mgmt IP of control is a better option. Also
## primary interface may not be the right option
CONTROL_IP="$(ip a | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p' | sed -n 1p)"
#CONTROL_IP=192.168.98.6
echo "
Hostname \"$COMPUTE_HOST\"
FQDNLookup false
Interval 1
MaxReadInterval 2
Globals true
LoadPlugin ovs_events
LoadPlugin logfile
File \"/var/log/collectd.log\"
Timestamp true
LogLevel \"info\"
ModulePath \"/home/$COMPUTE_USER\"
LogTraces true
Interactive false
Import \"collectd_plugin\"
control_ip \"$CONTROL_IP\"
compute_ip \"$COMPUTE_IP\"
compute_host \"$COMPUTE_HOST\"
compute_user \"$COMPUTE_USER\"
inspector_type \"$INSPECTOR_TYPE\"
os_auth_url \"$OS_AUTH_URL\"
os_username \"$OS_USERNAME\"
os_password \"$OS_PASSWORD\"
os_project_name \"$OS_PROJECT_NAME\"
os_user_domain_name \"$OS_USER_DOMAIN_NAME\"
os_user_domain_id \"$OS_USER_DOMAIN_ID\"
os_project_domain_name \"$OS_PROJECT_DOMAIN_NAME\"
os_project_domain_id \"$OS_PROJECT_DOMAIN_ID\"
Port 6640
Socket \"/var/run/openvswitch/db.sock\"
Interfaces \"@INTERFACE_NAME@\"
SendNotification true
DispatchValues false
" > $TOP_DIR/lib/monitors/collectd.conf
scp $ssh_opts_cpu $TOP_DIR/lib/monitors/collectd.conf $COMPUTE_USER@$COMPUTE_IP:
## @TODO (umar) Always assuming that the interface is assigned an IP if
## interface name is not provided. See if there is a better approach
ssh $ssh_opts_cpu "$COMPUTE_USER@$COMPUTE_IP" "
if [ -n \"$INTERFACE_NAME\" ]; then
dev=$INTERFACE_NAME
else
dev=\$(sudo ip a | awk '/ $COMPUTE_IP\//{print \$NF}')
fi
sed -i -e \"s/@INTERFACE_NAME@/\$dev/\" collectd.conf
collectd_conf=/opt/collectd/etc/collectd.conf
if [ -e \$collectd_conf ]; then
sudo cp \$collectd_conf \${collectd_conf}-doctor-saved
else
sudo touch \${collectd_conf}-doctor-created
fi
sudo mv collectd.conf /opt/collectd/etc/collectd.conf"
scp $ssh_opts_cpu $TOP_DIR/lib/monitors/collectd/collectd_plugin.py $COMPUTE_USER@$COMPUTE_IP:collectd_plugin.py
ssh $ssh_opts_cpu "$COMPUTE_USER@$COMPUTE_IP" "sudo pkill collectd
sudo /opt/collectd/sbin/collectd"
}
function stop_monitor_collectd {
ssh $ssh_opts_cpu "$COMPUTE_USER@$COMPUTE_IP" 'sudo pkill collectd'
}
function cleanup_monitor_collectd {
ssh $ssh_opts_cpu "$COMPUTE_USER@$COMPUTE_IP" "
collectd_conf=/opt/collectd/etc/collectd.conf
if [ -e \"\${collectd_conf}-doctor-created\" ]; then
sudo rm \"\${collectd_conf}-doctor-created\"
sudo rm \$collectd_conf
elif [ -e \"\${collectd_conf}-doctor-saved\" ]; then
sudo cp -f \"\${collectd_conf}-doctor-saved\" \$collectd_conf
sudo rm \"\${collectd_conf}-doctor-saved\"
fi"
rm $TOP_DIR/lib/monitors/collectd.conf
}