%{?el6:%global _has_libmodbus 1}
%{?el6:%global _has_libudev 1}
%{?el6:%global _has_iproute 1}
+%{?el6:%global _has_atasmart 1}
+%{?el6:%global _has_hiredis 1}
%{?el7:%global _has_libyajl 1}
%{?el7:%global _has_recent_libpcap 1}
%{?el7:%global _has_varnish4 1}
%{?el7:%global _has_broken_libmemcached 1}
%{?el7:%global _has_iproute 1}
+%{?el7:%global _has_atasmart 1}
+%{?el7:%global _has_hiredis 1}
# plugins enabled by default
%define with_aggregation 0%{!?_without_aggregation:1}
%define with_numa 0%{!?_without_numa:1}
%define with_nut 0%{!?_without_nut:1}
%define with_olsrd 0%{!?_without_olsrd:1}
+%define with_openldap 0%{!?_without_openldap:1}
%define with_openvpn 0%{!?_without_openvpn:1}
%define with_perl 0%{!?_without_perl:1}
%define with_pinba 0%{!?_without_pinba:1}
%define with_processes 0%{!?_without_processes:1}
%define with_protocols 0%{!?_without_protocols:1}
%define with_python 0%{!?_without_python:1}
+%define with_redis 0%{!?_without_redis:0%{?_has_hiredis}}
%define with_rrdcached 0%{!?_without_rrdcached:0%{?_has_recent_librrd}}
%define with_rrdtool 0%{!?_without_rrdtool:1}
%define with_sensors 0%{!?_without_sensors:1}
%define with_serial 0%{!?_without_serial:1}
+%define with_smart 0%{!?_without_smart:0%{?_has_atasmart}}
%define with_snmp 0%{!?_without_snmp:1}
%define with_statsd 0%{!?_without_statsd:1}
%define with_swap 0%{!?_without_swap:1}
%define with_wireless 0%{!?_without_wireless:1}
%define with_write_graphite 0%{!?_without_write_graphite:1}
%define with_write_http 0%{!?_without_write_http:1}
+%define with_write_redis 0%{!?_without_write_redis:0%{?_has_hiredis}}
%define with_write_riemann 0%{!?_without_write_riemann:1}
%define with_write_tsdb 0%{!?_without_write_tsdb:1}
%define with_zfs_arc 0%{!?_without_zfs_arc:1}
+%define with_zookeeper 0%{!?_without_zookeeper:1}
# Plugins not built by default because of dependencies on libraries not
# available in RHEL or EPEL:
%define with_oracle 0%{!?_without_oracle:0}
# plugin oracle disabled, requires BSD
%define with_pf 0%{!?_without_pf:0}
-# plugin redis disabled, requires credis
-%define with_redis 0%{!?_without_redis:0}
# plugin routeros disabled, requires librouteros
%define with_routeros 0%{!?_without_routeros:0}
# plugin sigrok disabled, requires libsigrok
%define with_write_kafka 0%{!?_without_write_kafka:0}
# plugin write_mongodb disabled, requires libmongoc
%define with_write_mongodb 0%{!?_without_write_mongodb:0}
-# plugin write_redis disabled, requires credis
-%define with_write_redis 0%{!?_without_write_redis:0}
# plugin xmms disabled, requires xmms
%define with_xmms 0%{!?_without_xmms:0}
BuildRequires: libgcrypt-devel, kernel-headers
Vendor: collectd development team <collectd@verplant.org>
+%if 0%{?el7:1}
+Requires(pre): initscripts
+Requires(post): systemd
+Requires(preun): systemd
+Requires(postun): systemd
+%else
+%if 0%{?el6:1}
+Requires(pre): initscripts
+Requires(preun): upstart
+Requires(postun): upstart
+%else
Requires(post): chkconfig
Requires(preun): chkconfig, initscripts
Requires(postun): initscripts
+%endif
+%endif
%description
collectd is a small daemon which collects system information periodically and
This plugin for collectd provides Network UPS Tools support.
%endif
+%if %{with_openldap}
+%package openldap
+Summary: Openldap plugin for collectd
+Group: System Environment/Daemons
+Requires: %{name}%{?_isa} = %{version}-%{release}
+BuildRequires: openldap-devel
+%description openldap
+This plugin reads monitoring information from OpenLDAP's cn=Monitor subtree.
+%endif
+
%if %{with_perl}
%package perl
Summary: Perl plugin for collectd
Summary: Redis plugin for collectd
Group: System Environment/Daemons
Requires: %{name}%{?_isa} = %{version}-%{release}
-BuildRequires: credis-devel
+BuildRequires: hiredis-devel
%description redis
The Redis plugin connects to one or more instances of Redis, a key-value store,
-and collects usage information using the credis library.
+and collects usage information using the hiredis library.
%endif
%if %{with_rrdcached}
thermometers, and much more.
%endif
+%if %{with_smart}
+%package smart
+Summary: SMART plugin for collectd
+Group: System Environment/Daemons
+Requires: %{name}%{?_isa} = %{version}-%{release}
+BuildRequires: libatasmart-devel
+%description smart
+Collect SMART statistics, notably load cycle count, temperature and bad
+sectors.
+%endif
+
%if %{with_snmp}
%package snmp
Summary: SNMP plugin for collectd
Summary: Write-Redis plugin for collectd
Group: System Environment/Daemons
Requires: %{name}%{?_isa} = %{version}-%{release}
-BuildRequires: credis-devel
+BuildRequires: hiredis-devel
%description write_redis
The Write Redis plugin stores values in Redis, a “data structures server”.
%endif
%define _with_onewire --disable-onewire
%endif
+%if %{with_openldap}
+%define _with_openldap --enable-openldap
+%else
+%define _with_openldap --disable-openldap
+%endif
+
%if %{with_openvpn}
%define _with_openvpn --enable-openvpn
%else
%define _with_sigrok --disable-sigrok
%endif
+%if %{with_smart}
+%define _with_smart --enable-smart
+%else
+%define _with_smart --disable-smart
+%endif
+
%if %{with_snmp}
%define _with_snmp --enable-snmp
%else
%if %{with_write_redis}
%define _with_write_redis --enable-write_redis
%else
-%define _with_write_redis --disable-write_redis --without-libcredis
+%define _with_write_redis --disable-write_redis
%endif
%if %{with_write_riemann}
%define _with_zfs_arc --disable-zfs_arc
%endif
+%if %{with_zookeeper}
+%define _with_zookeeper --enable-zookeeper
+%else
+%define _with_zookeeper --disable-zookeeper
+%endif
+
%configure CFLAGS="%{optflags} -DLT_LAZY_OR_NOW=\"RTLD_LAZY|RTLD_GLOBAL\"" \
--disable-static \
--without-included-ltdl \
%{?_with_notify_email} \
%{?_with_nut} \
%{?_with_onewire} \
+ %{?_with_openldap} \
%{?_with_oracle} \
%{?_with_perl} \
%{?_with_pf} \
%{?_with_rrdtool} \
%{?_with_sensors} \
%{?_with_sigrok} \
+ %{?_with_smart} \
%{?_with_snmp} \
%{?_with_tape} \
%{?_with_tokyotyrant} \
%{?_with_write_redis} \
%{?_with_xmms} \
%{?_with_zfs_arc} \
+ %{?_with_zookeeper} \
%{?_with_irq} \
%{?_with_load} \
%{?_with_logfile} \
%install
rm -rf %{buildroot}
%{__make} install DESTDIR=%{buildroot}
-%{__install} -Dp -m 0755 contrib/redhat/init.d-collectd %{buildroot}%{_initrddir}/collectd
+%if 0%{?el7:1}
+%{__install} -Dp -m0644 contrib/systemd.collectd.service %{buildroot}%{_unitdir}/collectd.service
+%else
+%if 0%{?el6:1}
+%{__install} -Dp -m0644 contrib/upstart.collectd.conf %{buildroot}%{_sysconfdir}/init/collectd.conf
+%else
+%{__install} -Dp -m0755 contrib/redhat/init.d-collectd %{buildroot}%{_initrddir}/collectd
+%endif
+%endif
%{__install} -Dp -m0644 src/collectd.conf %{buildroot}%{_sysconfdir}/collectd.conf
%{__install} -d %{buildroot}%{_sharedstatedir}/collectd/
%{__install} -d %{buildroot}%{_sysconfdir}/collectd.d/
%clean
rm -rf %{buildroot}
+%pre
+%if 0%{?el7:1}%{?el6:1}
+# stop sysv-based instance before upgrading to upstart/systemd
+if [ $1 -eq 2 ] && [ -f /var/lock/subsys/collectd ]; then
+ SYSTEMCTL_SKIP_REDIRECT=1 /etc/rc.d/init.d/collectd stop >/dev/null 2>&1 || :
+fi
+%else
+/bin/true
+%endif
+
%post
-/sbin/chkconfig --add collectd
+%if 0%{?el7:1}
+if [ $1 -eq 2 ]; then
+ /usr/bin/systemctl daemon-reload >/dev/null 2>&1 || :
+fi
+%systemd_post collectd.service
+%else
+%if 0%{?el6:1}
+/bin/true
+%else
+/sbin/chkconfig --add collectd || :
+%endif
+%endif
%preun
+%if 0%{?el7:1}
+%systemd_preun collectd.service
+%else
+# stop collectd only when uninstalling
if [ $1 -eq 0 ]; then
- /sbin/service collectd stop &>/dev/null
- /sbin/chkconfig --del collectd
+%if 0%{?el6:1}
+ /sbin/initctl stop collectd >/dev/null 2>&1 || :
+%else
+ /sbin/service collectd stop >/dev/null 2>&1 || :
+ /sbin/chkconfig --del collectd || :
+%endif
fi
+%endif
%postun
-if [ $1 -ge 1 ]; then
- /sbin/service collectd condrestart &>/dev/null || :
+%if 0%{?el7:1}
+%systemd_postun_with_restart collectd.service
+%else
+# restart collectd only when upgrading
+if [ $1 -eq 1 ]; then
+%if 0%{?el6:1}
+ if /sbin/initctl status collectd 2>/dev/null | grep -q 'running'; then
+ /sbin/initctl restart collectd >/dev/null 2>&1 || :
+ else
+ /sbin/initctl start collectd >/dev/null 2>&1 || :
+ fi
+%else
+ /sbin/service collectd condrestart >/dev/null 2>&1 || :
+%endif
fi
+%endif
%post -n libcollectdclient -p /sbin/ldconfig
%postun -n libcollectdclient -p /sbin/ldconfig
%files
%doc AUTHORS COPYING ChangeLog README
%config(noreplace) %{_sysconfdir}/collectd.conf
+%if 0%{?el7:1}
+%{_unitdir}/collectd.service
+%else
+%if 0%{?el6:1}
+%{_sysconfdir}/init/collectd.conf
+%else
%{_initrddir}/collectd
+%endif
+%endif
%{_sbindir}/collectd
%{_bindir}/collectd-nagios
%{_bindir}/collectd-tg
%if %{with_zfs_arc}
%{_libdir}/%{name}/zfs_arc.so
%endif
+%if %{with_zookeeper}
+%{_libdir}/%{name}/zookeeper.so
+%endif
%files -n libcollectdclient-devel
%{_includedir}/collectd/client.h
%{_libdir}/%{name}/nut.so
%endif
+%if %{with_openldap}
+%files openldap
+%{_libdir}/%{name}/openldap.so
+%endif
+
%if %{with_perl}
%files perl
%doc perl-examples/*
%{_libdir}/%{name}/sigrok.so
%endif
+%if %{with_smart}
+%files smart
+%{_libdir}/%{name}/smart.so
+%endif
+
%if %{with_snmp}
%files snmp
%{_mandir}/man5/collectd-snmp.5*
%changelog
# * TODO 5.5.0-1
# - New upstream version
-# - New plugins enabled by default: drbd, log_logstash, write_tsdb
+# - New plugins enabled by default: drbd, log_logstash, write_tsdb, smart, openldap, redis, write_redis, zookeeper
# - New plugins disabled by default: barometer, write_kafka
# - Enable zfs_arc, now supported on Linux
# - Install disk plugin in an dedicated package, as it depends on libudev