# # spec file for package collectd # # Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # Copyright (c) 2005-2013 Pascal Bleser # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # %define plugins apache apcups battery bind cgroups chrony curl curl_json curl_xml conntrack contextswitch cpu cpufreq cpusleep csv df disk dns email entropy exec filecount fscache hddtemp hugepages interface ipvs irq load logfile match_empty_counter match_hashed match_regex match_timediff match_value mbmon memcached memory multimeter netlink network nfs nginx notify_nagios ntpd olsrd openvpn perl ping protocols powerdns processes rrdtool %{expand:%{sensors_plugin}} serial statsd swap syslog table tail target_notification target_replace target_scale target_set target_v5upgrade tcpconns teamspeak2 ted thermal threshold unixsock uptime users uuid vmem vserver wireless write_http ascent iptables madwifi rrdcached aggregation ethstat md numa tail_csv write_graphite ceph drbd fhcount ipc log_logstash write_log write_sensu write_tsdb write_prometheus zfs_arc zookeeper %ifnarch s390 s390x %define sensors 1 %define sensors_plugin sensors %else %define sensors 0 %define sensors_plugin %{nil} %endif Name: collectd Version: 5.7.2 Release: 0 Summary: Statistics Collection Daemon for filling RRD Files License: GPL-2.0 Group: System/Monitoring Url: http://collectd.org/ Source: http://collectd.org/files/collectd-%{version}.tar.bz2 Source1: collectd.suse.init Source2: collectd.apache2.conf Source3: collectd-js.apache2.conf Source99: collectd-rpmlintrc Patch7: collectd-fix-config.patch Patch9: collectd-version.patch Patch10: collectd-perl-vendor.patch # see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=467072 Patch11: collectd-fix_broken_perl-5.10.patch Patch18: collectd-fix_collection_cgi.patch Patch19: collectd-fix_spamassassin_doc.patch Patch20: collectd-split_README.patch Patch21: collectd-fix_collectd_config_path_in_snmp_probe.patch Patch23: collectd-javac_target.patch # for /etc/apache2/... ownership (rpmlint): BuildRequires: apache2 BuildRequires: autoconf BuildRequires: automake BuildRequires: bind-devel BuildRequires: bison BuildRequires: flex BuildRequires: gcc BuildRequires: gdbm-devel BuildRequires: gettext-devel BuildRequires: intltool BuildRequires: java-devel BuildRequires: libesmtp-devel BuildRequires: libgcrypt-devel BuildRequires: libnetlink-devel BuildRequires: libpcap-devel BuildRequires: libpng-devel BuildRequires: libtool BuildRequires: libyajl-devel BuildRequires: linux-kernel-headers BuildRequires: make BuildRequires: mysql-devel >= 4.1.0 BuildRequires: net-snmp-devel BuildRequires: openldap2-devel BuildRequires: perl BuildRequires: pkgconfig BuildRequires: postgresql-devel BuildRequires: protobuf-c BuildRequires: rrdtool BuildRequires: systemd-rpm-macros BuildRequires: xfsprogs-devel BuildRequires: pkgconfig(OpenIPMI) BuildRequires: pkgconfig(OpenIPMIpthread) BuildRequires: pkgconfig(Qgpsmm) BuildRequires: pkgconfig(dbi) BuildRequires: pkgconfig(devmapper) BuildRequires: pkgconfig(freetype2) BuildRequires: pkgconfig(gail) BuildRequires: pkgconfig(gdk-2.0) BuildRequires: pkgconfig(gtk+-2.0) BuildRequires: pkgconfig(libart-2.0) BuildRequires: pkgconfig(libatasmart) BuildRequires: pkgconfig(libcurl) BuildRequires: pkgconfig(libevent) BuildRequires: pkgconfig(libgpsd) BuildRequires: pkgconfig(libiptc) BuildRequires: pkgconfig(libmemcached) BuildRequires: pkgconfig(libmicrohttpd) BuildRequires: pkgconfig(libmnl) BuildRequires: pkgconfig(libnotify) BuildRequires: pkgconfig(liboping) BuildRequires: pkgconfig(librrd) BuildRequires: pkgconfig(libstatgrab) BuildRequires: pkgconfig(libudev) BuildRequires: pkgconfig(libupsclient) BuildRequires: pkgconfig(libvirt) BuildRequires: pkgconfig(libxml-2.0) BuildRequires: pkgconfig(lua) BuildRequires: pkgconfig(lvm2app) BuildRequires: pkgconfig(python3) BuildRequires: pkgconfig(xtables) BuildRequires: pkgconfig(zlib) Requires: rrdtool Requires(post): %fillup_prereq # play nice with collectd-beta: Obsoletes: collectd-beta < %{version} Provides: collectd-beta = %{version}-%{release} %{?systemd_requires} %if 0%{?suse_version} >= 1330 BuildRequires: pkgconfig(libnutclient) %endif %if %{sensors} BuildRequires: sensors Requires: sensors %endif %description collectd is a daemon (written in C) that reads various system statistics and updates RRD files. Statistics are very fine grained with an update interval of 10 seconds. %package web Summary: Web Frontend for watching the %{name} Statistics Group: System/Monitoring Requires: apache2 Requires: perl Requires: rrdtool Requires: perl(CGI) Requires: perl(Data::Dumper) Requires: perl(HTML::Entities) Requires: perl(URI::Escape) %description web Web frontend CGI for watching %{name} statistics from a browser. Please look at %{_sysconfdir}/apache2/conf.d/%{name}.conf on how to enable. %package web-js Summary: Web/JavaScript Frontend for watching %{name} Statistics Group: System/Monitoring Requires: apache2 Requires: perl Requires: rrdtool Requires: perl(CGI) Requires: perl(Config::General) Requires: perl(Data::Dumper) Requires: perl(HTML::Entities) Requires: perl(JSON) Requires: perl(RRDs) %description web-js Web/JavaScript frontend CGI for watching %{name} statistics from a browser. Please look at %{_sysconfdir}/apache2/conf.d/%{name}-js.conf on how to enable. %package plugin-notify-desktop Summary: Desktop Notification Plugin for %{name} Group: System/Monitoring Requires: %{name} = %{version}-%{release} %description plugin-notify-desktop Desktop Notification Support for %{name} allow you to receive message delivery on your desktop. %package plugin-ipmi Summary: OpenIPMI Monitoring Plugin for %{name} Group: System/Monitoring Requires: %{name} = %{version}-%{release} %description plugin-ipmi Optional %{name} plugin to monitor sensors using the OpenIPMI library for IPMI enabled systems. %package plugin-snmp Summary: SNMP Monitoring Plugin for %{name} Group: System/Monitoring Requires: %{name} = %{version}-%{release} Requires: perl(Config::General) Requires: perl(SNMP) Requires: perl(Socket6) %description plugin-snmp Optional %{name} plugin to monitor devices using SNMP. %package plugin-mysql Summary: MySQL Monitoring Plugin for %{name} Group: System/Monitoring Requires: %{name} = %{version}-%{release} %description plugin-mysql Optional %{name} plugin to monitor MySQL server instances. %package plugin-openldap Summary: OpenLDAP plugin for %{name} Group: System/Monitoring Requires: %{name} = %{version}-%{release} %description plugin-openldap This plugin for collectd reads monitoring information from OpenLDAP's cn=Monitor subtree. %if 0%{?suse_version} >= 1330 %package plugin-nut Summary: Network UPS Tools plugin for collectd Group: System/Monitoring Requires: %{name} = %{version}-%{release} %description plugin-nut This plugin for collectd provides Network UPS Tools support. %endif %package plugin-lvm Summary: LVM plugin for collectd Group: System/Monitoring Requires: %{name} = %{version}-%{release} %description plugin-lvm This plugin collects information from lvm. %package plugin-postgresql Summary: PostgreSQL Monitoring Plugin for %{name} Group: System/Monitoring Requires: %{name} = %{version}-%{release} %description plugin-postgresql Optional %{name} plugin to monitor PostgreSQL server instances. %package plugin-python3 Summary: Python3 API for %{name} Group: System/Monitoring Requires: %{name} = %{version}-%{release} %description plugin-python3 Optional %{name} Python3 API in order to write %{name} plugins in Python3. %package plugin-java Summary: Java API for %{name} Group: System/Monitoring Requires: %{name} = %{version}-%{release} %description plugin-java Optional %{name} Java API in order to write %{name} plugins in Java. %package plugin-virt Summary: Virtual Machine Statistics Plugin for %{name} Group: System/Monitoring Requires: %{name} = %{version}-%{release} %description plugin-virt Optional %{name} plugin to gather statistics from virtual machines using libvirt. %package plugin-dbi Summary: DBI Storage Plugin for %{name} Group: System/Monitoring Requires: %{name} = %{version}-%{release} %description plugin-dbi Optional %{name} plugin to store sampling results into various databases as supported by libdbi. %package plugin-memcachec Summary: Memcache Daemon Monitoring Plugin for %{name} Group: System/Monitoring Requires: %{name} = %{version}-%{release} %description plugin-memcachec Optional %{name} plugin to sample memcached statistics. %package plugin-pinba Summary: Pinba Collector Plugin for %{name} Group: System/Monitoring Requires: %{name} = %{version}-%{release} %description plugin-pinba Optional %{name} plugin to receive and dispatch timing values from Pinba, a profiling extension for PHP. %package plugin-smart Summary: SMART Monitoring Plugin for %{name} Group: System/Monitoring Requires: %{name} = %{version}-%{release} %description plugin-smart Optional %{name} plugin to monitor Self-Monitoring, Analysis and Reporting Technology (SMART) information from disk drives. %package plugin-lua Summary: Lua API for %{name} Group: System/Monitoring Requires: %{name} = %{version}-%{release} Requires: lua %description plugin-lua Optional %{name} Lua API in order to write %{name} plugins in Lua. %package plugin-gps Summary: gpsd monitoring plugin for %{name} Group: System/Monitoring Requires: %{name} = %{version}-%{release} %description plugin-gps Optional %{name} plugin to monitor gpsd. %package plugins-all Summary: All Monitoring Plugins for %{name} Group: System/Monitoring Requires: %{name} = %{version}-%{release} Requires: %{name}-plugin-dbi = %{version}-%{release} Requires: %{name}-plugin-gps = %{version}-%{release} Requires: %{name}-plugin-ipmi = %{version}-%{release} Requires: %{name}-plugin-java = %{version}-%{release} Requires: %{name}-plugin-lua = %{version}-%{release} Requires: %{name}-plugin-lvm = %{version}-%{release} Requires: %{name}-plugin-memcachec = %{version}-%{release} Requires: %{name}-plugin-mysql = %{version}-%{release} Requires: %{name}-plugin-notify-desktop = %{version}-%{release} Requires: %{name}-plugin-openldap = %{version}-%{release} Requires: %{name}-plugin-pinba = %{version}-%{release} Requires: %{name}-plugin-postgresql = %{version}-%{release} Requires: %{name}-plugin-python3 = %{version}-%{release} Requires: %{name}-plugin-smart = %{version}-%{release} Requires: %{name}-plugin-snmp = %{version}-%{release} Requires: %{name}-plugin-virt = %{version}-%{release} Requires: %{name}-web = %{version}-%{release} Requires: %{name}-web-js = %{version}-%{release} %if 0%{?suse_version} >= 1330 Requires: %{name}-plugin-nut = %{version}-%{release} %endif %description plugins-all Metapackage that installs %{name} and all the available monitoring plugin subpackages. %package spamassassin Summary: Spamassassin Monitoring for %{name} Group: System/Monitoring Requires: %{name} = %{version}-%{release} Requires: perl-spamassassin %description spamassassin Plugin for filling %{name} with statistics from the SpamAsssassin anti-spam engine. %package -n libcollectdclient1 Summary: Library for %{name} clients Group: System/Monitoring Provides: libcollectdclient = %{version}-%{release} %description -n libcollectdclient1 Library which abstracts communication with the %{name} unixsock plugin for clients. %package -n libcollectdclient-devel Summary: Development Environment for %{name} clients Group: Development/Libraries/C and C++ Requires: libcollectdclient1 = %{version}-%{release} %description -n libcollectdclient-devel Library which abstracts communication with the %{name} unixsock plugin for clients. This package contains the required development environment to write %{name} unixsock clients. %prep %setup -q -n "collectd-%{version}" %patch7 %patch9 -p1 %patch10 %patch11 %patch18 %patch19 %patch20 %patch21 %patch23 -p1 sed -i 's|@@VERSION@@|%{version}|g' configure.ac perl -p -i -e 's|(-L\$withval/lib)\b|${1}64|g' configure.ac configure # unneeded files: rm -fr \ contrib/fedora \ contrib/solaris-smf \ contrib/redhat \ contrib/sles* %build autoreconf -fiv export CFLAGS="%{optflags} -fno-strict-aliasing" export CXXFLAGS="$CFLAGS" export KERNEL_DIR=%{_prefix}/src/linux %configure \ --disable-werror \ --disable-silent-rules \ --disable-static \ --with-java="$JAVA_HOME/" \ --without-included-ltdl \ --disable-turbostat make %{?_smp_mflags} %install %make_install # delete .la files rm -f "%{buildroot}%{_libdir}"/*.{a,la} rm -f "%{buildroot}%{_libdir}/collectd"/*.a sed -i '/^dependency_libs=/ s|-L'"${RPM_BUILD_DIR}/%{name}-%{version}"'/src||g' "%{buildroot}%{_libdir}/collectd/python.la" # delete if it exists (not packaged any more on openSUSE): rm -rf "%{buildroot}%{_localstatedir}/adm/perl-modules/%{name}" mkdir -p _rpmdoc_/java mv contrib/GenericJMX.conf _rpmdoc_/java/ # fix permissions: chmod 0755 "%{buildroot}%{_libdir}/collectd"/*.so chmod 0644 "%{buildroot}%{_libdir}/collectd"/*.la # create /var/lib/collectd to add it to the %files section: install -d -m 0755 "%{buildroot}%{_localstatedir}/lib/collectd" # Apache2 configuration for the CGI frontend: install -D -m 0644 "%{SOURCE2}" "%{buildroot}%{_sysconfdir}/apache2/conf.d/%{name}.conf" install -D -m 0755 contrib/collection.cgi "%{buildroot}/srv/www/collectd/collection.cgi" install -D -m 0644 contrib/collection.conf "%{buildroot}%{_sysconfdir}/collectd/collection.conf" sed -i 's|@@LIBDIR@@|%{_libdir}|g' "%{buildroot}%{_sysconfdir}/collectd/collection.conf" # remove it from contrib, to avoid having it end up in the main package as well: rm contrib/collection.cgi contrib/collection.conf %perl_process_packlist rm -rf "%{buildroot}%{_localstatedir}/adm/perl-modules"/* # web-js CGI frontend (_must_ be installed _after_ perl_process_packlist) install -d "%{buildroot}/srv/www/collectd-js" mkdir -p _rpmdoc_/web-js mv contrib/collection3/README _rpmdoc_/web-js/README find contrib/collection3/ -name .htaccess -exec rm {} \; cp -a \ contrib/collection3/bin/* \ contrib/collection3/share/* \ "%{buildroot}/srv/www/collectd-js/" mkdir -p "%{buildroot}%{_libexecdir}/collectd-js" mv contrib/collection3/lib/* "%{buildroot}%{_libexecdir}/collectd-js/" install -D -m 0644 contrib/collection3%{_sysconfdir}/collection.conf \ "%{buildroot}%{_sysconfdir}/collectd/collection-js.conf" rm -fr contrib/collection3/etc install -D -m 0644 "%{SOURCE3}" "%{buildroot}%{_sysconfdir}/apache2/conf.d/%{name}-js.conf" # spamassassin (_must_ be installed _after_ perl_process_packlist) install -D -m0644 contrib/SpamAssassin/example.cf \ "%{buildroot}%{_datadir}/spamassassin/99_%{name}.cf" install -D -m0644 contrib/SpamAssassin/Collectd.pm \ "%{buildroot}%{perl_vendorlib}/Mail/SpamAssassin/Plugin/Collectd.pm" pod2man \ contrib/SpamAssassin/Collectd.pm \ > "%{buildroot}%{perl_man3dir}/Mail::SpamAssassin::Plugin::Collectd.%{perl_man3ext}" rm -rf contrib/SpamAssassin # cussh script from contrib: install -m0755 contrib/cussh.pl "%{buildroot}%{_bindir}/cussh" install -d "%{buildroot}%{_mandir}/man1" pod2man \ -c "Collectd UNIX Socket Shell" \ -n "CUSSH" \ -s 1 \ contrib/cussh.pl > "%{buildroot}%{_mandir}/man1/cussh.1" rm contrib/cussh.pl # snmp: mkdir -p _rpmdoc_/snmp sed -n '/^snmp-data\.conf/,$ p' contrib/README > _rpmdoc_/snmp/README sed -i '/^snmp-data\.conf/,$ d' contrib/README mv contrib/snmp-data.conf _rpmdoc_/snmp/ sed -i 's|\(\./\)snmp-probe-host\.px|collectd-snmp-probe-host|g' contrib/snmp-probe-host.px pod2man \ -c "Collectd SNMP Host Probe" \ -n "COLLECTD-SNMP-PROBE-HOST" \ -s 1 \ contrib/snmp-probe-host.px \ > "%{buildroot}%{_mandir}/man1/collectd-snmp-probe-host.1" install -D -m0755 contrib/snmp-probe-host.px "%{buildroot}%{_bindir}/collectd-snmp-probe-host" rm contrib/snmp-probe-host.px install -d "%{buildroot}%{_mandir}/man1" find contrib/ -name '*.orig' -delete # plugin list: echo -n > plugins.lst for plugin in %{plugins}; do for ext in so la; do echo "%{_libdir}/collectd/${plugin}.${ext}" >> plugins.lst done done cat <README.plugins-all This package is empty but depends on all collectd plugin subpackages. EOF install -d -m 0755 "%{buildroot}%{_prefix}/sbin" install -D -m0644 contrib/systemd.collectd.service %{buildroot}%{_unitdir}/collectd.service ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name} %preun %service_del_preun %{name}.service %postun %service_del_postun %{name}.service %pre %service_add_pre %{name}.service %post %{fillup_only collectd} %service_add_post %{name}.service %post -n libcollectdclient1 -p /sbin/ldconfig %postun -n libcollectdclient1 -p /sbin/ldconfig %files -f plugins.lst %doc AUTHORS ChangeLog COPYING README %doc contrib %config(noreplace) %{_sysconfdir}/collectd.conf %dir %{_sysconfdir}/collectd %{_bindir}/collectd-tg %{_bindir}/collectd-nagios %{_bindir}/collectdctl %{_bindir}/cussh %{_sbindir}/collectd %{_sbindir}/collectdmon %{_sbindir}/rccollectd %dir %{_libdir}/collectd %{_libdir}/collectd/notify_email.so %{_libdir}/collectd/notify_email.la %dir %{_datadir}/collectd %{_datadir}/collectd/types.db %{perl_vendorlib}/Collectd.pm %dir %{perl_vendorlib}/Collectd %{perl_vendorlib}/Collectd/* %{perl_vendorarch}/auto/Collectd %{_mandir}/man1/collectd.1%{ext_man} %{_mandir}/man1/collectdctl.1%{ext_man} %{_mandir}/man1/collectdmon.1%{ext_man} %{_mandir}/man1/collectd-tg.1%{ext_man} %{_mandir}/man1/collectd-nagios.1%{ext_man} %{_mandir}/man1/cussh.1%{ext_man} %{_mandir}/man5/collectd.conf.5%{ext_man} %{_mandir}/man5/collectd-email.5%{ext_man} %{_mandir}/man5/collectd-exec.5%{ext_man} %{_mandir}/man5/collectd-perl.5%{ext_man} %{_mandir}/man5/collectd-threshold.5%{ext_man} %{_mandir}/man5/collectd-unixsock.5%{ext_man} %{_mandir}/man5/types.db.5%{ext_man} %doc %{perl_man3dir}/Collectd::Unixsock.%{perl_man3ext}%{ext_man} %dir %{_localstatedir}/lib/collectd %{_unitdir}/collectd.service %files web %config(noreplace) %{_sysconfdir}/apache2/conf.d/%{name}.conf %dir %{_sysconfdir}/collectd %config(noreplace) %{_sysconfdir}/collectd/collection.conf /srv/www/collectd %files web-js %doc _rpmdoc_/web-js/README %config(noreplace) %{_sysconfdir}/apache2/conf.d/%{name}-js.conf %dir %{_sysconfdir}/collectd %config(noreplace) %{_sysconfdir}/collectd/collection-js.conf /srv/www/collectd-js %{_libexecdir}/collectd-js %files plugin-notify-desktop %{_libdir}/collectd/notify_desktop.so %{_libdir}/collectd/notify_desktop.la %files plugin-ipmi %{_libdir}/collectd/ipmi.so %{_libdir}/collectd/ipmi.la %files plugin-snmp %doc _rpmdoc_/snmp/* %{_bindir}/collectd-snmp-probe-host %{_mandir}/man1/collectd-snmp-probe-host.1%{ext_man} %{_libdir}/collectd/snmp.so %{_libdir}/collectd/snmp.la %{_mandir}/man5/collectd-snmp.5%{ext_man} %files plugin-lvm %{_libdir}/collectd/lvm.so %{_libdir}/collectd/lvm.la %files plugin-pinba %{_libdir}/collectd/pinba.so %{_libdir}/collectd/pinba.la %files plugin-mysql %{_libdir}/collectd/mysql.so %{_libdir}/collectd/mysql.la %files plugin-postgresql %{_libdir}/collectd/postgresql.so %{_libdir}/collectd/postgresql.la %config %{_datadir}/collectd/postgresql_default.conf %files plugin-python3 %{_libdir}/collectd/python.so %{_libdir}/collectd/python.la %{_mandir}/man5/collectd-python.5%{ext_man} %files plugin-java %doc _rpmdoc_/java/GenericJMX.conf %{_libdir}/collectd/java.so %{_libdir}/collectd/java.la %{_datadir}/collectd/java %{_mandir}/man5/collectd-java.5%{ext_man} %files plugin-virt %{_libdir}/collectd/virt.so %{_libdir}/collectd/virt.la %files plugin-dbi %{_libdir}/collectd/dbi.so %{_libdir}/collectd/dbi.la %files plugin-memcachec %{_libdir}/collectd/memcachec.so %{_libdir}/collectd/memcachec.la %files plugin-smart %{_libdir}/collectd/smart.so %{_libdir}/collectd/smart.la %files plugin-lua %{_libdir}/collectd/lua.so %{_libdir}/collectd/lua.la %{_mandir}/man5/collectd-lua.5%{ext_man} %files plugin-gps %{_libdir}/collectd/gps.so %{_libdir}/collectd/gps.la %files plugin-openldap %{_libdir}/collectd/openldap.so %{_libdir}/collectd/openldap.la %if 0%{?suse_version} >= 1330 %files plugin-nut %{_libdir}/collectd/nut.so %{_libdir}/collectd/nut.la %endif %files spamassassin %dir %{_datadir}/spamassassin %config(noreplace) %{_datadir}/spamassassin/99_%{name}.cf %dir %{perl_vendorlib}/Mail %dir %{perl_vendorlib}/Mail/SpamAssassin %dir %{perl_vendorlib}/Mail/SpamAssassin/Plugin %{perl_vendorlib}/Mail/SpamAssassin/Plugin/Collectd.pm %doc %{perl_man3dir}/Mail::SpamAssassin::Plugin::Collectd.%{perl_man3ext}%{ext_man} %files plugins-all %doc README.plugins-all %files -n libcollectdclient1 %{_libdir}/libcollectdclient.so.1 %{_libdir}/libcollectdclient.so.1.*.* %files -n libcollectdclient-devel %{_includedir}/collectd %{_libdir}/libcollectdclient.so %{_libdir}/pkgconfig/libcollectdclient.pc %changelog