Compare commits

...
Sign in to create a new pull request.

8 commits

Author SHA1 Message Date
Fedora Release Engineering
243e29ac46 dist-git conversion 2010-07-29 14:58:06 +00:00
Dennis Gilmore
41455267cc Initialize branch EL-6 for vhostmd 2010-05-08 02:27:25 +00:00
Bill Nottingham
1f063dac31 Fix typo that causes a failure to update the common directory. (releng
#2781)
2009-11-26 01:13:35 +00:00
Richard W.M. Jones
c27b3611d1 - Add a timestamp to the metrics.
- Fix a typo in MemoryAllocatedToVirtualServers metric
    (https://bugzilla.redhat.com/show_bug.cgi?id=532070#c7)
- %{_sysconfdir}/sysconfig/vhostmd: Use libvirt default URI
    (https://bugzilla.redhat.com/show_bug.cgi?id=537828)
- %{_sysconfdir}/init.d/vhostmd: If using libvirt's default URI, then pass
    the root URI to vhostmd (the default URI changes in some circumstances
    when vhostmd switches to the non-root user).
- Use fixed UID:GID 112:112 (RHBZ#534109).
- vm-dump-metrics-devel package should require version and release of base
    package.
2009-11-17 11:21:12 +00:00
Richard W.M. Jones
18a678da76 Some changes to the default configuration file suggested by SAP to make it
more CIM standards compliant.
2009-11-02 11:03:47 +00:00
Richard W.M. Jones
ab41d1cbf5 - New upstream based on git e9db007b.
- Fix segfault in vm-dump-metrics (RHBZ#529348).
- On error, vm-dump-metrics now exits with status code 1.
2009-10-16 16:10:56 +00:00
Richard W.M. Jones
28418f7ebc - New upstream based on git ea2f772d.
- Update the configuration file based on upstream changes to how virsh has
    to be run.
- vhostmd should run non-root as user 'vhostmd'.
- Allow libvirt URI to be configured.
2009-10-15 17:53:54 +00:00
Richard W.M. Jones
2377d5739b Initial import. 2009-10-13 17:56:10 +00:00
8 changed files with 522 additions and 21 deletions

View file

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
vhostmd-0.4.tar.bz2

View file

@ -1,21 +0,0 @@
# Makefile for source rpm: vhostmd
# $Id$
NAME := vhostmd
SPECFILE = $(firstword $(wildcard *.spec))
define find-makefile-common
for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
endef
MAKEFILE_COMMON := $(shell $(find-makefile-common))
ifeq ($(MAKEFILE_COMMON),)
# attept a checkout
define checkout-makefile-common
test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2
endef
MAKEFILE_COMMON := $(shell $(checkout-makefile-common))
endif
include $(MAKEFILE_COMMON)

View file

@ -0,0 +1 @@
139650528c154da52a65adedfb8e83cf vhostmd-0.4.tar.bz2

154
vhostmd.conf Normal file
View file

@ -0,0 +1,154 @@
<?xml version="1.0" ?>
<!DOCTYPE vhostmd SYSTEM "vhostmd.dtd">
<!--
Configuration file for virtual host metrics daemon (vhostmd).
A better, less noisy, more minimal configuration file
which doesn't depend on Xen.
Supported metric types are: int32, uint32, int64, uint64, real32,
real64, and string.
A metric's value is set to the output produced by executing its action.
'action' can include the special token NAME, in which case the name of
the vm currently under inspection is substituted for NAME. Only useful
within the vm element.
-->
<vhostmd>
<globals>
<disk>
<name>host-metrics-disk</name>
<path>/dev/shm/vhostmd0</path>
<!-- must be between [128 KB, 256 MB] in size -->
<size unit="k">256</size>
</disk>
<update_period>60</update_period>
<path>/bin:/sbin:/usr/bin:/usr/sbin:/usr/share/vhostmd/scripts</path>
<transport>vbd</transport>
<!-- <transport>xenstore</transport> -->
</globals>
<metrics>
<metric type="string" context="host">
<name>HostName</name>
<action>hostname</action>
</metric>
<metric type="uint64" context="host">
<name>Time</name>
<action>date +%s</action>
</metric>
<metric type="string" context="host">
<name>VirtualizationVendor</name>
<action>rpm -qi libvirt| grep Vendor: |awk '{print substr($0, index($0,$5)) }'</action>
</metric>
<!-- SAP "CIM" -->
<metric type="string" context="host">
<name>VirtProductInfo</name>
<action>virsh -r CONNECT version | grep API | gawk -F': ' '{print $2}'</action>
</metric>
<!-- SAP "CIM" -->
<metric type="string" context="host">
<name>HostSystemInfo</name>
<action>hostname -s</action>
</metric>
<!-- SAP "CIM" -->
<metric type="uint32" context="host">
<name>NumberOfPhysicalCPUsUtilized</name>
<action>virsh -r CONNECT nodeinfo | grep 'CPU(s):' | gawk -F': +' '{print $2}'</action>
</metric>
<!-- SAP "CIM" -->
<metric type="uint64" context="host">
<name>MemoryAllocatedToVirtualServers</name>
<action>virsh -r CONNECT nodeinfo | grep 'Memory size:' | gawk -F' +' '{ printf "%d\n", $3/1024 }'</action>
</metric>
<!-- SAP "CIM" -->
<metric type="uint64" context="host">
<name>FreePhysicalMemory</name>
<action>
free|egrep -i '^[[:space:]]*(Mem:)' \
|awk 'BEGIN { sum = 0; }
{ sum += $4; }
END { printf "%10d\n", sum/1024; }'
</action>
</metric>
<metric type="uint64" context="host">
<name>UsedPhysicalMemory</name>
<action>
free|egrep -i '^[[:space:]]*(Mem:)' \
|awk 'BEGIN { sum = 0; }
{ sum += $3; }
END { printf "%10d\n", sum/1024; }'
</action>
</metric>
<!-- SAP "CIM" -->
<metric type="uint64" context="host">
<name>FreeVirtualMemory</name>
<action>
free|egrep -i '^[[:space:]]*(Mem:|Swap:)' \
|awk 'BEGIN { sum = 0; }
{ sum += $4; }
END { printf "%10d\n", sum/1024; }'
</action>
</metric>
<!-- SAP "CIM" -->
<metric type="uint64" context="host">
<name>UsedVirtualMemory</name>
<action>
free|egrep -i '^[[:space:]]*(Mem:|Swap:)' \
|awk 'BEGIN { sum = 0; }
{ sum += $3; }
END { printf "%10d\n", sum/1024; }'
</action>
</metric>
<metric type="uint64" context="host">
<name>PagedInMemory</name>
<action>echo "$((`vmstat -s | gawk '/pages paged in/ {print $1}'` / 1024))"</action>
</metric>
<!-- SAP "CIM" -->
<metric type="uint64" context="host">
<!-- TODO: CHECK -->
<name>PagedOutMemory</name>
<action>echo "$((`vmstat -s | gawk '/pages paged out/ {print $1}'` / 1024))"</action>
</metric>
<metric type="group" context="host">
<name>PageRates</name>
<action>pagerate.pl</action>
<!-- SAP "CIM" -->
<variable name="PageInRate" type="uint64"/>
<variable name="PageFaultRate" type="uint64"/>
</metric>
<!--<metric type="real64" context="host">
<name>TotalCPUTime</name>
<action>virsh -r CONNECT dominfo 0 | sed 's/: */:/' | \
gawk -F: '/CPU time/ {print $2;}'</action>
</metric>-->
<!-- SAP "CIM" -->
<metric type="real64" context="vm">
<name>TotalCPUTime</name>
<action>virsh -r CONNECT dominfo NAME | sed 's/: */:/' | \
gawk -F: '/CPU time/ {print $2;}'</action>
</metric>
<metric type="uint32" context="vm">
<name>NumberOfAssignedPhysicalCPUs</name>
<action>virsh -r CONNECT dominfo NAME | grep 'CPU(s):' | gawk -F': +' '{print $2}'</action>
</metric>
<!-- SAP "CIM" -->
<metric type="uint64" context="vm">
<name>PhysicalMemoryAllocatedToVirtualSystem</name>
<action>virsh -r CONNECT dominfo NAME | grep 'Max memory:' | gawk -F' +' '{printf "%d\n", $3/1024}'</action>
</metric>
<!-- will only be supported by Fedora -->
<!-- <metric type="uint64" context="vm">
<name>UsedMem</name>
<action>virsh -r CONNECT dominfo NAME | grep 'Used memory:' | gawk -F' +' '{printf "%d\n", $3/1024}'</action>
</metric> -->
</metrics>
</vhostmd>
<!--
vi:ts=2:sw=2:expandtab:ignorecase:
-->
<!-- EOF -->

118
vhostmd.init Normal file
View file

@ -0,0 +1,118 @@
#!/bin/sh
#
# vhostmd: Virtualization host metrics daemon
#
# chkconfig: - 98 02
# description: This daemon allows access to host information from guests.
### BEGIN INIT INFO
# Provides: vhostmd
# Required-Start: libvirtd
# Required-Stop: libvirtd
# Default-Stop:
# Short-Description: Virtualization host metrics daemon
# Description: This daemon allows access to host information from guests.
### END INIT INFO
# Source function library.
. /etc/rc.d/init.d/functions
exec=/usr/sbin/vhostmd
prog=vhostmd
config=/etc/vhostmd/vhostmd.conf
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
ARGS=
if [ -n "$VHOSTMD_VERBOSE" ]; then
ARGS="$ARGS --verbose"
fi
if [ -n "$VHOSTMD_CONFIG" ]; then
ARGS="$ARGS --config $VHOSTMD_CONFIG"
fi
if [ -n "$VHOSTMD_USER" ]; then
ARGS="$ARGS --user $VHOSTMD_USER"
fi
if [ -n "$VHOSTMD_URI" ]; then
ARGS="$ARGS --connect $VHOSTMD_URI"
elif virsh uri >/dev/null 2>&1; then
default_uri=$(virsh uri)
ARGS="$ARGS --connect '$default_uri'"
fi
lockfile=/var/lock/subsys/$prog
start() {
[ -x $exec ] || exit 5
[ -f $config ] || exit 6
echo -n $"Starting $prog: "
daemon $exec $ARGS
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog
rm -f /var/run/$prog.pid
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
stop
start
}
reload() {
restart
}
force_reload() {
restart
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
exit 2
esac
exit $?

234
vhostmd.spec Normal file
View file

@ -0,0 +1,234 @@
# Xen is only available on a limited number of architectures
%ifarch %{ix86} x86_64 ia64
%global have_xen 1
%else
%global have_xen 0
%endif
Summary: Virtualization host metrics daemon
Name: vhostmd
Version: 0.4
Release: 0.6.gite9db007b%{?dist}.1
License: GPLv2+
Group: System Environment/Daemons
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
URL: http://gitorious.org/vhostmd
# Upstream tarball hosting is screwed at the moment. This release is
# a pre-release of 0.4, based on the git commit names in the Release
# tag above, with 'make dist' done by the packager.
Source0: vhostmd-%{version}.tar.bz2
Source1: vhostmd.init
Source2: vhostmd.sysconfig
Source3: vhostmd.conf
BuildRequires: chrpath
BuildRequires: pkgconfig
BuildRequires: libxml2-devel
BuildRequires: libvirt-devel
%if %{have_xen}
BuildRequires: xen-devel
%endif
Requires(post): chkconfig
Requires(preun): chkconfig
Requires(preun): initscripts
Requires(postun): initscripts
Requires(pre): shadow-utils
%description
vhostmd provides a "metrics communication channel" between a host and
its hosted virtual machines, allowing limited introspection of host
resource usage from within virtual machines.
%package -n vm-dump-metrics
Summary: Virtualization host metrics dump
Group: Applications/System
%description -n vm-dump-metrics
Executable to dump all available virtualization host metrics to stdout
or a file.
%package -n vm-dump-metrics-devel
Summary: Virtualization host metrics dump development
Group: Development/Libraries
Requires: vm-dump-metrics = %{version}-%{release}
Requires: pkgconfig
%description -n vm-dump-metrics-devel
Header and libraries necessary for metrics gathering development
%prep
%setup -q
%build
%configure \
%if %{have_xen} == 0
--without-xenstore \
%endif
--enable-shared --disable-static
make %{_smp_mflags}
%install
rm -rf $RPM_BUILD_ROOT
make DESTDIR=$RPM_BUILD_ROOT install
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/init.d
install -m 0755 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/init.d/%{name}
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig
install -m 0644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/%{name}
#rm $RPM_BUILD_ROOT%{_libdir}/libmetrics.a
rm $RPM_BUILD_ROOT%{_libdir}/libmetrics.la
chrpath --delete $RPM_BUILD_ROOT%{_sbindir}/vm-dump-metrics
# Remove docdir - we'll make a proper one ourselves.
rm -r $RPM_BUILD_ROOT%{_docdir}/vhostmd
# Remove metric.dtd from /etc.
rm $RPM_BUILD_ROOT%{_sysconfdir}/vhostmd/metric.dtd
# The default configuration file is great for Xen, not so great
# for anyone else. Replace it with one which is better for libvirt
# users.
mv $RPM_BUILD_ROOT%{_sysconfdir}/vhostmd/vhostmd.conf \
$RPM_BUILD_ROOT%{_sysconfdir}/vhostmd/vhostmd.conf.for.xen
cp %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/vhostmd/vhostmd.conf
%clean
rm -rf $RPM_BUILD_ROOT
%post
/sbin/chkconfig --add vhostmd
%preun
if [ $1 = 0 ] ; then
/sbin/service vhostmd stop >/dev/null 2>&1
/sbin/chkconfig --del vhostmd
fi
%postun
if [ "$1" -ge "1" ] ; then
/sbin/service vhostmd condrestart >/dev/null 2>&1 || :
fi
%post -n vm-dump-metrics -p /sbin/ldconfig
%postun -n vm-dump-metrics -p /sbin/ldconfig
%pre
# UID:GID 112:112 reserved, see RHBZ#534109.
getent group vhostmd >/dev/null || groupadd -g 112 -r vhostmd
getent passwd vhostmd >/dev/null || \
useradd -u 112 -r -g vhostmd -d %{_datadir}/vhostmd -s /sbin/nologin \
-c "Virtual Host Metrics Daemon" vhostmd
exit 0
%files
%defattr(-,root,root,-)
%doc AUTHORS ChangeLog COPYING README
%doc mdisk.xml metric.dtd vhostmd.dtd vhostmd.xml
%{_sbindir}/vhostmd
%dir %{_sysconfdir}/vhostmd
%config(noreplace) %{_sysconfdir}/vhostmd/vhostmd.conf
%config(noreplace) %{_sysconfdir}/vhostmd/vhostmd.conf.for.xen
%config %{_sysconfdir}/vhostmd/vhostmd.dtd
%{_sysconfdir}/init.d/%{name}
%config(noreplace) %{_sysconfdir}/sysconfig/%{name}
%dir %{_datadir}/vhostmd
%dir %{_datadir}/vhostmd/scripts
%{_datadir}/vhostmd/scripts/pagerate.pl
%{_mandir}/man8/vhostmd.8.gz
%files -n vm-dump-metrics
%defattr(-,root,root,-)
%doc COPYING
%{_sbindir}/vm-dump-metrics
%{_libdir}/libmetrics.so.0
%{_libdir}/libmetrics.so.0.0.0
%{_mandir}/man1/vm-dump-metrics.1.gz
%files -n vm-dump-metrics-devel
%defattr(-,root,root,-)
%doc README
%{_libdir}/libmetrics.so
%dir %{_includedir}/vhostmd
%{_includedir}/vhostmd/libmetrics.h
%changelog
* Tue Nov 17 2009 Richard W.M. Jones <rjones@redhat.com> - 0.4-0.9.gite9db007b.fc12.1
- Add a timestamp to the metrics.
- Fix a typo in MemoryAllocatedToVirtualServers metric
(https://bugzilla.redhat.com/show_bug.cgi?id=532070#c7)
- %{_sysconfdir}/sysconfig/vhostmd: Use libvirt default URI
(https://bugzilla.redhat.com/show_bug.cgi?id=537828)
- %{_sysconfdir}/init.d/vhostmd: If using libvirt's default URI, then pass
the root URI to vhostmd (the default URI changes in some circumstances
when vhostmd switches to the non-root user).
- Use fixed UID:GID 112:112 (RHBZ#534109).
- vm-dump-metrics-devel package should require version and release of
base package.
* Mon Nov 2 2009 Richard W.M. Jones <rjones@redhat.com> - 0.4-0.6.gite9db007b
- Some changes to the default configuration file suggested by SAP to
make it more CIM standards compliant.
* Fri Oct 16 2009 Richard W.M. Jones <rjones@redhat.com> - 0.4-0.5.gite9db007b
- New upstream based on git e9db007b.
- Fix segfault in vm-dump-metrics (RHBZ#529348).
- On error, vm-dump-metrics now exits with status code 1.
* Thu Oct 15 2009 Richard W.M. Jones <rjones@redhat.com> - 0.4-0.2.gitea2f772d
- New upstream based on git ea2f772d.
- Update the configuration file based on upstream changes to how virsh
has to be run.
- vhostmd should run non-root as user 'vhostmd'.
- Allow libvirt URI to be configured.
* Tue Oct 13 2009 Richard W.M. Jones <rjones@redhat.com> - 0.4-0.1.git326f0012172
- Move to pre-release of 0.4, self-built tarball.
- Disable xenstore on non-x86 platforms.
- Add patch to fix --without-xenstore option.
- Use have_xen RPM macro.
* Mon Oct 12 2009 Richard W.M. Jones <rjones@redhat.com> - 0.3-3
- Remove metric.dtd file from /etc (fixes rpmlint warning), but
vhostmd.dtd has to remain because it is needed to validate the
XML configuration file.
- Remove ExclusiveArch, instead conditionally depend on xen-devel.
- Use a better, less noisy, more minimal configuration file which
doesn't depend on Xen.
* Thu Oct 8 2009 Richard W.M. Jones <rjones@redhat.com> - 0.3-1
- New upstream version 0.3.
* Fri Aug 14 2009 Richard W.M. Jones <rjones@redhat.com> - 0.2-1
- Initial packaging for Fedora, based on SuSE package.

14
vhostmd.sysconfig Normal file
View file

@ -0,0 +1,14 @@
# Uncomment the following line to print verbose messages.
#VHOSTMD_VERBOSE=1
# Override the default configuration file path.
#VHOSTMD_CONFIG=/path/to/vhostmd.conf
# Set the user that the daemon runs as after dropping root privs.
VHOSTMD_USER=vhostmd
# Set the libvirt URI.
# Uncomment one of these to force KVM or Xen, otherwise libvirt
# will try to choose a suitable default.
#VHOSTMD_URI=qemu:///system
#VHOSTMD_URI=xen:///