summaryrefslogtreecommitdiffstats
path: root/tests/lib/monitors/collectd/collectd
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
}