blob: 30efc765548248f903d82ca3acd0597f738f8742 (
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
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
|
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-cluster/ganglia/ganglia-3.1.2.ebuild,v 1.3 2009/03/28 15:33:40 nixnut Exp $
WEBAPP_OPTIONAL="yes"
inherit multilib webapp depend.php python
DESCRIPTION="A scalable distributed monitoring system for clusters and grids"
HOMEPAGE="http://ganglia.sourceforge.net/"
SRC_URI="mirror://sourceforge/ganglia/${P}.tar.gz"
LICENSE="BSD"
WEBAPP_MANUAL_SLOT="yes"
SLOT="0"
KEYWORDS="~amd64 ppc ~x86"
IUSE="minimal vhosts python"
DEPEND="
dev-libs/confuse
dev-libs/expat
>=dev-libs/apr-1.0
python? ( >=dev-lang/python-2.3 )
!dev-db/firebird"
RDEPEND="
${DEPEND}
!minimal? ( net-analyzer/rrdtool
${WEBAPP_DEPEND}
=virtual/httpd-php-5* )"
pkg_setup() {
if ! use minimal ; then
require_gd
require_php_with_use xml ctype
webapp_pkg_setup
fi
}
src_unpack() {
unpack ${A}
cd "${S}"
# TODO: Submitted upstream, may not be necessary in the future.
epatch "${FILESDIR}"/${PN}-3.1.1-ctype-c99.patch
# This patch just gives a group to the disk statistics.
# I.E. it's just cosmetics
epatch "${FILESDIR}"/${PN}-3.1.1-multidisk-group.patch
}
src_compile() {
econf \
--enable-gexec \
$(use_enable python) \
$(use_with !minimal gmetad) || die "econf failed"
emake || die "emake failed"
}
src_install() {
emake DESTDIR="${D}" install || die "emake install failed"
newinitd "${FILESDIR}"/gmond.rc gmond
doman mans/{gmetric.1,gmond.1,gstat.1}
doman gmond/gmond.conf.5
dodoc AUTHORS ChangeLog INSTALL NEWS README
dodir /etc/ganglia/conf.d
gmond/gmond -t > "${D}"/etc/ganglia/gmond.conf
# Sadly, there is no install target for any of this.
if use python; then
# We install the multidisk module, but not the configuration
# as this needs to be generated later. See pkg_config
local gmond_py="disk/multidisk network/tcpconn"
local gmond_py_conf="tcpconn"
newdoc gmond/modules/python/README README.python_modules
insinto /etc/ganglia/conf.d
doins gmond/modules/conf.d/modpython.conf
for i in ${gmond_py_conf}; do
doins gmond/python_modules/conf.d/${i}.pyconf
done
dodir /usr/$(get_libdir)/ganglia/python_modules
insinto /usr/$(get_libdir)/ganglia/python_modules
for i in ${gmond_py}; do
doins gmond/python_modules/${i}.py
done
fi
insinto /etc/ganglia
if ! use minimal; then
doins gmetad/gmetad.conf
doman mans/gmetad.1
keepdir /var/lib/ganglia/rrds
fowners nobody:nobody /var/lib/ganglia/rrds
newinitd "${FILESDIR}"/gmetad.rc gmetad
webapp_src_preinst
insinto "${MY_HTDOCSDIR}"
doins -r web/*
webapp_configfile "${MY_HTDOCSDIR}"/conf.php
webapp_src_install
fi
}
pkg_preinst() {
if has_version '<sys-cluster/ganglia-3.1.0'; then
elog "Previous ganglia installation detected."
elog "Copying gmetad configuration to /etc/ganglia"
elog "You may have to remove /etc/gmond.conf yourself."
mkdir -p "${D}"/etc/ganglia
[ -f "${ROOT}"etc/gmetad.conf ] \
&& cp "${ROOT}"etc/gmetad.conf "${D}"/etc/ganglia
fi
}
pkg_postinst() {
elog "A default configuration file for gmond has been generated"
elog "for you as a template by running:"
elog " /usr/sbin/gmond -t > /etc/ganglia/gmond.conf"
elog "customize it from there or provide your own but be aware"
elog "the format has changed since 3.0 and so you won't be able"
elog "to use your current configuration (if you generated any)"
elog "in /etc/gmond.conf directly"
elog
elog "If you require disk {usage,total} statistics, please run"
elog " emerge --config ${PN}"
elog "then check ${ROOT}etc/ganglia/conf.d/diskusage.pyconf"
elog "for correctness."
use minimal || webapp_pkg_postinst
use python && \
python_mod_optimize /usr/$(get_libdir)/ganglia/python_modules/
}
pkg_prerm() {
use minimal || webapp_pkg_prerm
}
pkg_postrm() {
use python && \
python_mod_cleanup /usr/$(get_libdir)/ganglia/python_modules/
[ -d "${ROOT}"/usr/$(get_libdir)/ganglia ] && \
rmdir "${ROOT}"/usr/$(get_libdir)/ganglia 2>/dev/null
}
pkg_config() {
local disk_used_metrics disk_total_metrics i
local disk_pyconf="${ROOT}"etc/ganglia/conf.d/diskusage.pyconf
if ! use python; then
einfo "No configuration necessary :)"
exit 0
fi
if [ ! -w ${disk_pyconf} ]; then
eerror "Cannot write to ${disk_pyconf}"
exit 1
fi
ebegin "Generating disk used/total metric configuration to ${disk_pyconf}"
disk_used_metrics=$(${ROOT}/usr/sbin/gmond -m | awk '/-disk_used/{print $1}')
disk_total_metrics=$(${ROOT}/usr/sbin/gmond -m | awk '/-disk_total/{print $1}')
cat > ${disk_pyconf} <<-EOF
#/* Disk usage collection groups for
# multidisk python module */
#
# Autogenerated by pkg_config in the Gentoo ganglia ebuild.
modules {
module {
name = "multidisk"
language = "python"
}
}
collection_group {
collect_every = 10
time_threshold = 50
EOF
for i in ${disk_used_metrics}; do
printf \
"\n metric {\n name = \"%s\"\n value_threshold = 1.0\n }" \
${i} >> ${disk_pyconf}
done
printf "\n}\n\n" >> ${disk_pyconf}
# Get the disk total metrics.
cat >> ${disk_pyconf} <<-EOF
collection_group {
collect_once = yes
time_threshold = 20
EOF
for i in ${disk_total_metrics}; do
printf \
"\n metric {\n name = \"%s\"\n }" \
${i} >> ${disk_pyconf}
done
printf "\n}\n" >> ${disk_pyconf}
}
|