#!/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 }