blob: f5096658957ef62af5f08e32ab1c2ffedb6cc28b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
#!/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
<LoadPlugin python>
Globals true
</LoadPlugin>
LoadPlugin ovs_events
LoadPlugin logfile
<Plugin logfile>
File \"/var/log/collectd.log\"
Timestamp true
LogLevel \"info\"
</Plugin>
<Plugin python>
ModulePath \"/home/$COMPUTE_USER\"
LogTraces true
Interactive false
Import \"collectd_plugin\"
<Module \"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\"
</Module>
</Plugin>
<Plugin ovs_events>
Port 6640
Socket \"/var/run/openvswitch/db.sock\"
Interfaces \"@INTERFACE_NAME@\"
SendNotification true
DispatchValues false
</Plugin>
" > $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
}
|