-
Notifications
You must be signed in to change notification settings - Fork 3
/
observium-agent-install.sh
136 lines (113 loc) · 3.7 KB
/
observium-agent-install.sh
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#!/bin/bash
CONFIG="agent.conf.sh"
ENTERPRISE=true
PKG_MANAGERS=(apt-get zypper yum)
if [ ! -f $CONFIG ]; then
echo "agent.conf.sh not found or not readable"
exit 1
fi
source $CONFIG
# Which Distro are we running on...
if [ -z "$PKG_MANAGERS" ] || [ ${#PKG_MANAGERS[@]} -eq 0 ]; then
echo "Error! No package managers specified"
exit 1
else
for pkg in ${PKG_MANAGERS[@]}; do
TEST=`which $pkg`
if [ $? -eq 0 ]; then
PKG_MAN=$pkg
break
fi
done
fi
if [ -z "$PKG_MAN" ]; then
echo "No package manager found on this system!"
exit 1
fi
if [ -z "$SYSCONTACT" ]; then
echo "No system contact specified"
exit 1
fi
if [ -z "$SYSLOCATION" ]; then
echo "No system location specified"
exit 1
fi
if [ -z "$SNMP_COMMUNITY" ]; then
echo "No SNMP Community specified"
exit 1
fi
if [ -z "$OBSERVIUM_HOST" ]; then
echo "No Observium Server IP or hostname specified"
exit 1
fi
if [ -z "$SVN_USER" ] || [ -z "$SVN_PASS" ]; then
$ENTERPRISE = false
fi
if [ "$ENTERPRISE" = true ]; then
echo "Installing Enterprise Agent..."
echo
$PKG_MAN install subversion snmpd xinetd
else
echo "Installing Community Agent..."
echo
$PKG_MAN install snmpd xinetd
fi
cd /opt
if [ "$ENTERPRISE" = true ]; then
svn --username $SVN_USER --password $SVN_PASS co http://svn.observium.org/svn/observium/branches/stable observium
else
mkdir -p /opt/observium && cd /opt
wget http://www.observium.org/observium-community-latest.tar.gz
tar zxvf observium-community-latest.tar.gz
fi
if [ -f "/etc/defaults/snmpd" ]; then
sed -e "/SNMPDOPTS=/ s/^#*/SNMPDOPTS='-Lsd -Lf \/dev\/null -u snmp -p \/var\/run\/snmpd.pid'\n#/" -i /etc/default/snmpd
fi
if [ -f "/etc/sysconfig/snmpd.options" ]; then
sed -e "/SNMPDOPTS=/ s/^#*/SNMPDOPTS='-Lsd -Lf \/dev\/null -u snmp -p \/var\/run\/snmpd.pid'\n#/" -i /etc/sysconfig/snmpd.options
fi
mv /opt/observium/scripts/distro /usr/bin/distro
chmod 755 /usr/bin/distro
mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak
cat >/etc/snmp/snmpd.conf <<EOL
com2sec readonly default $SNMP_COMMUNITY
group MyROGroup v1 readonly
group MyROGroup v2c readonly
group MyROGroup usm readonly
view all included .1 80
access MyROGroup "" any noauth exact all none none
syslocation $SYSLOCATION
syscontact $SYSCONTACT
#This line allows Observium to detect the host OS if the distro script is installed
extend .1.3.6.1.4.1.2021.7890.1 distro /usr/bin/distro
EOL
cat >/etc/xinetd.d/observium_agent <<EOL
service observium_agent
{
type = UNLISTED
port = 36602
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/bin/observium_agent
# configure the IPv[4|6] address(es) of your Observium server here:
only_from = $OBSERVIUM_HOST
# Don't be too verbose. Don't log every check. This might be
# commented out for debugging. If this option is commented out
# the default options will be used for this service.
log_on_success =
disable = no
}
EOL
cp observium/scripts/observium_agent /usr/bin/observium_agent
mkdir -p /usr/lib/observium_agent/local
if [ -z "$MODULES" ] || [ ${#MODULES[@]} -eq 0 ]; then
echo "No modules specified skipping..."
else
for mod in ${MODULES[@]}; do
cp observium/scripts/agent-local/$mod /usr/lib/observium_agent/local/
done
fi
/etc/init.d/xinetd restart
/etc/init.d/snmpd restart