The recent collectd release in late January contained only 5.2.1 and 5.1.2 ( http://collectd.org/news.shtml#news92 ), and no 4.10.x release was made. Although 4.10.x is still marked as supported, it will probably be phased out in future, as 5.0, 5.1 and 5.2 branches have already been released in 2011-2012. That prompted me to experiment again updating collectd to the current version.

I tried updating to 5.1 in July and there were some quirks ( http://patchwork.openwrt.org/patch/2457/ ), which I have now been straightened out.

I have compile-tested (with ar71xx) all collectd modules, and I have verified the real-life functionality for the core plugins: Conntrack, DNS, Interfaces, Memory, Netlink, Ping, Processor, System Load, Wireless.

The patch requires changes both to the collectd in packages feed and also to Luci sources, as some of the data items have changed name or data file structure. Both need to be patched at the same time.

So, I am including two separate patches, one for collectd in packages and one for luci-statistics in Luci trunk.

Explanation of patches for collectd:

- FQDNLookup option has been turned on by default since 5.1 (See
http://git.verplant.org/?p=collectd.git;a=commit;h=e58f85bb68b4c45130bb6fdf40b51db95d2b71e5 ). Having that option on causes collectd to refuse to start in a basic Openwrt box as typically a fully qualified domain name does not exist for the router. (That error related can only be properly seen when console is used to start collectd. Otherwise Luci statistics collectd simply dies immediately after starting it.) That option should be false by default. I included a new patch 140-fix-fqdnlookup.patch to revert the change and to turn the option off by default.

- quilt choked on some -Werror related patches, so I removed them from
003-remove-werror.patch.

- 120-fix_kernel_2.6.37.patch seems to be unnecessary as the file to be patched has been removed. I removed it.

- 130-timeleft-max.patch is included upstream. I removed it. (http://git.verplant.org/?p=collectd.git;a=commitdiff;h=d5b09f2bb673ac9396da52b85bcbd16c98b3d633)

Regarding data presentation in Luci-statistics, there are three changes requiring patches to Luci:

-conntrack result data has changed name from "entropy" to "value".
-ping result data has changed name from "ping" to "value".
( see http://git.verplant.org/?p=collectd.git;a=commitdiff;h=77a6905147798210ec17173bd5e4410adcc3a112 )

-interface plugin has changed rrd data file structure so that the plugin instances (=interfaces) have separate data files. Luci needs to draw the graph for each plugin instance, not for each data instance. ( http://git.verplant.org/?p=collectd.git;a=commitdiff;h=cc3640ba512862cd5745446f1f1a997dd4344454 )


The upgrade from 4.10.8 to 5.2.1 does not cause any significant increase in size. Below is comparison:

perus@vbub:/Openwrt/trunk$ ls -l bin/ar71xx/packages/luci-app-s* bin/ar71xx/packages/collectd*
 58007 collectd_4.10.8-2_ar71xx.ipk
  2289 collectd-mod-conntrack_4.10.8-2_ar71xx.ipk
  2820 collectd-mod-cpu_4.10.8-2_ar71xx.ipk
  2658 collectd-mod-interface_4.10.8-2_ar71xx.ipk
  3209 collectd-mod-iwinfo_4.10.8-2_ar71xx.ipk
  2370 collectd-mod-load_4.10.8-2_ar71xx.ipk
  2870 collectd-mod-memory_4.10.8-2_ar71xx.ipk
 13579 collectd-mod-network_4.10.8-2_ar71xx.ipk
  5863 collectd-mod-ping_4.10.8-2_ar71xx.ipk
  9521 collectd-mod-rrdtool_4.10.8-2_ar71xx.ipk

perus@ubvb:/Openwrt/trunk$ ls -l bin/ar71xx/packages/luci-app-s* bin/ar71xx/packages/collectd*
 57889 collectd_5.2.1-1_ar71xx.ipk
  2313 collectd-mod-conntrack_5.2.1-1_ar71xx.ipk
  2850 collectd-mod-cpu_5.2.1-1_ar71xx.ipk
  2681 collectd-mod-interface_5.2.1-1_ar71xx.ipk
  3239 collectd-mod-iwinfo_5.2.1-1_ar71xx.ipk
  2382 collectd-mod-load_5.2.1-1_ar71xx.ipk
  2879 collectd-mod-memory_5.2.1-1_ar71xx.ipk
 13683 collectd-mod-network_5.2.1-1_ar71xx.ipk
  5907 collectd-mod-ping_5.2.1-1_ar71xx.ipk
 10043 collectd-mod-rrdtool_5.2.1-1_ar71xx.ipk

--- 
luci/trunk/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/conntrack.lua
 (revision 9668)
+++ 
luci/trunk/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/conntrack.lua
 (working copy)
@@ -22,7 +22,7 @@
                number_format = "%5.0lf",
                data = {
                        sources = {
-                               conntrack = { "entropy" }
+                               conntrack = { "value" }
                        },
                        options = {
                                conntrack = { 
--- 
luci/trunk/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/interface.lua
 (revision 9668)
+++ 
luci/trunk/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/interface.lua
 (working copy)
@@ -22,9 +22,9 @@
        --
        local traffic = {
 
-               -- draw this diagram for each data instance
+               -- draw this diagram for each plugin instance
                per_instance = true,
-               title = "%H: Transfer on %di",
+               title = "%H: Transfer on %pi",
                vlabel = "Bytes/s",
 
                -- diagram data description
@@ -58,9 +58,9 @@
        --
        local packets = {
 
-               -- draw this diagram for each data instance
+               -- draw this diagram for each plugin instance
                per_instance = true,
-               title = "%H: Packets on %di",
+               title = "%H: Packets on %pi",
                vlabel = "Packets/s",
 
                -- diagram data description
--- 
luci/trunk/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/ping.lua
      (revision 9668)
+++ 
luci/trunk/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/ping.lua
      (working copy)
@@ -20,7 +20,7 @@
                -- Ping roundtrip time
                { title = "%H: ICMP Round Trip Time", vlabel = "ms",
                  number_format = "%5.1lf ms", data = {
-                       sources = { ping = { "ping" } },
+                       sources = { ping = { "value" } },
                        options = { ping__ping = { noarea = true, title = "%di" 
} }
                } },
 
--- trunk/feeds/packages/utils/collectd/Makefile        (revision 35608)
+++ trunk/feeds/packages/utils/collectd/Makefile        (working copy)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=collectd
-PKG_VERSION:=4.10.8
-PKG_RELEASE:=2
+PKG_VERSION:=5.2.1
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=http://collectd.org/files/
-PKG_MD5SUM:=7a60495208b9383225493c6dd6abb2f0
+PKG_MD5SUM:=350934cfea62d37e10191816744f0eb7
 
 PKG_FIXUP:=autoreconf
 PKG_REMOVE_FILES:=aclocal.m4 libltdl/aclocal.m4
@@ -22,11 +22,14 @@
 PKG_BUILD_PARALLEL:=1
 
 COLLECTD_PLUGINS_DISABLED:= \
+       amqp \
        apple_sensors \
        battery \
        cpufreq \
        curl_json \
+       curl_xml \
        entropy \
+       ethstat \
        genericjmx \
        gmond \
        hddtemp \
@@ -34,7 +37,9 @@
        ipvs \
        java \
        libvirt \
+       lpar \
        mbmon \
+       md \
        memcachec \
        memcached \
        monitorus \
@@ -43,11 +48,13 @@
        nfs \
        notify_desktop \
        notify_email \
+       numa \
        openvz \
        oracle \
        perl \
        pinba \
        python \
+       redis \
        routeros \
        rrdcached \
        serial \
@@ -56,6 +63,8 @@
        tokyotyrant \
        uuid \
        vserver \
+       write_graphite \
+       write_mongodb \
        xmms \
        zfs_arc \
 
@@ -104,11 +113,11 @@
        sensors \
        snmp \
        syslog \
+       table \
        tail \
-       table \
-       ted \
        tcpconns \
        teamspeak2 \
+       ted \
        thermal \
        unixsock \
        uptime \
--- trunk/feeds/packages/utils/collectd/patches/003-remove-werror.patch 
(revision 35608)
+++ trunk/feeds/packages/utils/collectd/patches/003-remove-werror.patch 
(working copy)
@@ -1,6 +1,6 @@
 --- a/src/Makefile.am
 +++ b/src/Makefile.am
-@@ -7,7 +7,7 @@ SUBDIRS += liboconfig
+@@ -4,7 +4,7 @@ SUBDIRS += liboconfig
  endif
  
  if COMPILER_IS_GCC
@@ -9,17 +9,6 @@
  endif
  
  AM_CPPFLAGS = -DPREFIX='"${prefix}"'
---- a/src/Makefile.in
-+++ b/src/Makefile.in
-@@ -1833,7 +1833,7 @@ top_build_prefix = @top_build_prefix@
- top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
- SUBDIRS = libcollectdclient $(am__append_1) $(am__append_2)
--@COMPILER_IS_GCC_TRUE@AM_CFLAGS = -Wall -Werror
-+@COMPILER_IS_GCC_TRUE@AM_CFLAGS = -Wall
- AM_CPPFLAGS = -DPREFIX='"${prefix}"' \
-       -DCONFIGFILE='"${sysconfdir}/${PACKAGE_NAME}.conf"' \
-       -DLOCALSTATEDIR='"${localstatedir}"' \
 --- a/src/libcollectdclient/Makefile.am
 +++ b/src/libcollectdclient/Makefile.am
 @@ -1,7 +1,7 @@
@@ -30,37 +19,4 @@
 +AM_CFLAGS = -Wall
  endif
  
- pkginclude_HEADERS = client.h lcc_features.h
---- a/src/libcollectdclient/Makefile.in
-+++ b/src/libcollectdclient/Makefile.in
-@@ -327,7 +327,7 @@ top_build_prefix = @top_build_prefix@
- top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
- AUTOMAKE_OPTIONS = foreign no-dependencies
--@COMPILER_IS_GCC_TRUE@AM_CFLAGS = -Wall -Werror
-+@COMPILER_IS_GCC_TRUE@AM_CFLAGS = -Wall
- pkginclude_HEADERS = client.h lcc_features.h
- lib_LTLIBRARIES = libcollectdclient.la
- nodist_pkgconfig_DATA = libcollectdclient.pc
---- a/src/owniptc/Makefile.am
-+++ b/src/owniptc/Makefile.am
-@@ -3,7 +3,7 @@ AUTOMAKE_OPTIONS = foreign no-dependenci
- EXTRA_DIST = libiptc.c README.collectd
- 
- if COMPILER_IS_GCC
--AM_CFLAGS = -Wall -Werror
-+AM_CFLAGS = -Wall
- endif
- 
- noinst_LTLIBRARIES = libiptc.la
---- a/src/owniptc/Makefile.in
-+++ b/src/owniptc/Makefile.in
-@@ -296,7 +296,7 @@ top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
- AUTOMAKE_OPTIONS = foreign no-dependencies
- EXTRA_DIST = libiptc.c README.collectd
--@COMPILER_IS_GCC_TRUE@AM_CFLAGS = -Wall -Werror
-+@COMPILER_IS_GCC_TRUE@AM_CFLAGS = -Wall
- noinst_LTLIBRARIES = libiptc.la
- libiptc_la_SOURCES = libip4tc.c libip6tc.c \
-               ipt_kernel_headers.h libip6tc.h libiptc.h linux_list.h \
+ pkginclude_HEADERS = collectd/client.h collectd/network.h 
collectd/network_buffer.h collectd/lcc_features.h
--- 
trunk/feeds/packages/utils/collectd/patches/100-rrdtool-add-rrasingle-option.patch
  (revision 35608)
+++ 
trunk/feeds/packages/utils/collectd/patches/100-rrdtool-add-rrasingle-option.patch
  (working copy)
@@ -17,7 +17,7 @@
        /* consolidation_functions = */ NULL,
        /* consolidation_functions_num = */ 0
  };
-@@ -1027,6 +1030,14 @@ static int rrd_config (const char *key,
+@@ -1060,6 +1063,14 @@ static int rrd_config (const char *key,
  
                free (value_copy);
        }
@@ -34,7 +34,7 @@
                double tmp = atof (value);
 --- a/src/utils_rrdcreate.c
 +++ b/src/utils_rrdcreate.c
-@@ -122,6 +122,9 @@ static int rra_get (char ***ret, const v
+@@ -125,6 +125,9 @@ static int rra_get (char ***ret, const v
      rts_num = rra_timespans_num;
    }
  
--- trunk/feeds/packages/utils/collectd/patches/120-fix_kernel_2.6.37.patch     
(revision 35608)
+++ trunk/feeds/packages/utils/collectd/patches/120-fix_kernel_2.6.37.patch     
(working copy)
@@ -1,78 +0,0 @@
---- a/src/owniptc/libiptc.c
-+++ b/src/owniptc/libiptc.c
-@@ -81,11 +81,11 @@ static const char *hooknames[] = {
- };
- 
- /* Convenience structures */
--struct ipt_error_target
-+ struct ipt_error_target2
- {
-       STRUCT_ENTRY_TARGET t;
-       char error[TABLE_MAXNAMELEN];
--};
-+}; 
- 
- struct chain_head;
- struct rule_head;
-@@ -1007,10 +1007,10 @@ static int parse_table(TC_HANDLE_T h)
- /* Convenience structures */
- struct iptcb_chain_start{
-       STRUCT_ENTRY e;
--      struct ipt_error_target name;
-+      struct ipt_error_target2 name;
- };
- #define IPTCB_CHAIN_START_SIZE        (sizeof(STRUCT_ENTRY) +                 
\
--                               ALIGN(sizeof(struct ipt_error_target)))
-+                               ALIGN(sizeof(struct ipt_error_target2)))
- 
- struct iptcb_chain_foot {
-       STRUCT_ENTRY e;
-@@ -1021,10 +1021,10 @@ struct iptcb_chain_foot {
- 
- struct iptcb_chain_error {
-       STRUCT_ENTRY entry;
--      struct ipt_error_target target;
-+      struct ipt_error_target2 target;
- };
- #define IPTCB_CHAIN_ERROR_SIZE        (sizeof(STRUCT_ENTRY) +                 
\
--                               ALIGN(sizeof(struct ipt_error_target)))
-+                               ALIGN(sizeof(struct ipt_error_target2)))
- 
- 
- 
-@@ -1069,7 +1069,7 @@ static int iptcc_compile_chain(TC_HANDLE
-               head->e.next_offset = IPTCB_CHAIN_START_SIZE;
-               strcpy(head->name.t.u.user.name, ERROR_TARGET);
-               head->name.t.u.target_size = 
--                              ALIGN(sizeof(struct ipt_error_target));
-+                              ALIGN(sizeof(struct ipt_error_target2));
-               strcpy(head->name.error, c->name);
-       } else {
-               repl->hook_entry[c->hooknum-1] = c->head_offset;        
-@@ -1113,7 +1113,7 @@ static int iptcc_compile_chain_offsets(T
-       if (!iptcc_is_builtin(c))  {
-               /* Chain has header */
-               *offset += sizeof(STRUCT_ENTRY) 
--                           + ALIGN(sizeof(struct ipt_error_target));
-+                           + ALIGN(sizeof(struct ipt_error_target2));
-               (*num)++;
-       }
- 
-@@ -1153,7 +1153,7 @@ static int iptcc_compile_table_prep(TC_H
-       /* Append one error rule at end of chain */
-       num++;
-       offset += sizeof(STRUCT_ENTRY)
--                + ALIGN(sizeof(struct ipt_error_target));
-+                + ALIGN(sizeof(struct ipt_error_target2));
- 
-       /* ruleset size is now in offset */
-       *size = offset;
-@@ -1177,7 +1177,7 @@ static int iptcc_compile_table(TC_HANDLE
-       error->entry.target_offset = sizeof(STRUCT_ENTRY);
-       error->entry.next_offset = IPTCB_CHAIN_ERROR_SIZE;
-       error->target.t.u.user.target_size = 
--              ALIGN(sizeof(struct ipt_error_target));
-+              ALIGN(sizeof(struct ipt_error_target2));
-       strcpy((char *)&error->target.t.u.user.name, ERROR_TARGET);
-       strcpy((char *)&error->target.error, "ERROR");
- 
--- trunk/feeds/packages/utils/collectd/patches/130-timeleft-max.patch  
(revision 35608)
+++ trunk/feeds/packages/utils/collectd/patches/130-timeleft-max.patch  
(working copy)
@@ -1,14 +0,0 @@
-Derived from uptream commit d5b09f2b: http://octo.cx/d5b09f2
-
---- a/src/types.db
-+++ b/src/types.db
-@@ -152,7 +152,7 @@ tcp_connections            value:GAUGE:0:429496729
- temperature           value:GAUGE:-273.15:U
- threads                       value:GAUGE:0:U
- time_dispersion               seconds:GAUGE:-1000000:1000000
--timeleft              timeleft:GAUGE:0:3600
-+timeleft              timeleft:GAUGE:0:U
- time_offset           seconds:GAUGE:-1000000:1000000
- total_bytes           value:DERIVE:0:U
- total_requests                value:DERIVE:0:U
-
--- trunk/feeds/packages/utils/collectd/patches/140-fix-fqdnlookup.patch        
(revision 0)
+++ trunk/feeds/packages/utils/collectd/patches/140-fix-fqdnlookup.patch        
(revision 0)
@@ -0,0 +1,11 @@
+--- a/src/configfile.c
++++ b/src/configfile.c
+@@ -97,7 +97,7 @@ static cf_global_option_t cf_global_opti
+       {"BaseDir",     NULL, PKGLOCALSTATEDIR},
+       {"PIDFile",     NULL, PIDFILE},
+       {"Hostname",    NULL, NULL},
+-      {"FQDNLookup",  NULL, "true"},
++      {"FQDNLookup",  NULL, "false"},
+       {"Interval",    NULL, NULL},
+       {"ReadThreads", NULL, "5"},
+       {"Timeout",     NULL, "2"},
--- 
trunk/feeds/packages/utils/collectd/patches/200-fix-git-describe-error.patch    
    (revision 35608)
+++ 
trunk/feeds/packages/utils/collectd/patches/200-fix-git-describe-error.patch    
    (working copy)
@@ -2,7 +2,7 @@
 +++ b/version-gen.sh
 @@ -2,7 +2,7 @@
  
- DEFAULT_VERSION="4.10.8.git"
+ DEFAULT_VERSION="5.2.1.git"
  
 -VERSION="`git describe 2> /dev/null | sed -e 's/^collectd-//'`"
 +#VERSION="`git describe 2> /dev/null | sed -e 's/^collectd-//'`"
--- trunk/feeds/packages/utils/collectd/patches/900-add-iwinfo-plugin.patch     
(revision 35608)
+++ trunk/feeds/packages/utils/collectd/patches/900-add-iwinfo-plugin.patch     
(working copy)
@@ -1,6 +1,6 @@
 --- a/configure.in
 +++ b/configure.in
-@@ -490,6 +490,9 @@ AC_CHECK_HEADERS(netinet/if_ether.h, [],
+@@ -542,6 +542,9 @@ AC_CHECK_HEADERS(net/pfvar.h, [have_net_
  have_termios_h="no"
  AC_CHECK_HEADERS(termios.h, [have_termios_h="yes"])
  
@@ -10,7 +10,7 @@
  #
  # Checks for typedefs, structures, and compiler characteristics.
  #
-@@ -4081,6 +4084,7 @@ plugin_interface="no"
+@@ -4561,6 +4564,7 @@ plugin_interface="no"
  plugin_ipmi="no"
  plugin_ipvs="no"
  plugin_irq="no"
@@ -18,7 +18,7 @@
  plugin_libvirt="no"
  plugin_load="no"
  plugin_memory="no"
-@@ -4388,6 +4392,7 @@ AC_PLUGIN([ipmi],        [$plugin_ipmi],
+@@ -4888,6 +4892,7 @@ AC_PLUGIN([ipmi],        [$plugin_ipmi],
  AC_PLUGIN([iptables],    [$with_libiptc],      [IPTables rule counters])
  AC_PLUGIN([ipvs],        [$plugin_ipvs],       [IPVS connection statistics])
  AC_PLUGIN([irq],         [$plugin_irq],        [IRQ statistics])
@@ -26,7 +26,7 @@
  AC_PLUGIN([java],        [$with_java],         [Embed the Java Virtual 
Machine])
  AC_PLUGIN([libvirt],     [$plugin_libvirt],    [Virtual machine statistics])
  AC_PLUGIN([load],        [$plugin_load],       [System load])
-@@ -4666,6 +4671,7 @@ Configuration:
+@@ -5180,6 +5185,7 @@ Configuration:
      protobuf-c  . . . . . $have_protoc_c
      oracle  . . . . . . . $with_oracle
      python  . . . . . . . $with_python
@@ -34,7 +34,7 @@
  
    Features:
      daemon mode . . . . . $enable_daemon
-@@ -4705,6 +4711,7 @@ Configuration:
+@@ -5222,6 +5228,7 @@ Configuration:
      iptables  . . . . . . $enable_iptables
      ipvs  . . . . . . . . $enable_ipvs
      irq . . . . . . . . . $enable_irq
@@ -44,7 +44,7 @@
      load  . . . . . . . . $enable_load
 --- a/src/collectd.conf.in
 +++ b/src/collectd.conf.in
-@@ -82,6 +82,7 @@ FQDNLookup   true
+@@ -94,6 +94,7 @@
  #@BUILD_PLUGIN_IPMI_TRUE@LoadPlugin ipmi
  #@BUILD_PLUGIN_IPVS_TRUE@LoadPlugin ipvs
  #@BUILD_PLUGIN_IRQ_TRUE@LoadPlugin irq
@@ -52,7 +52,7 @@
  #@BUILD_PLUGIN_JAVA_TRUE@LoadPlugin java
  #@BUILD_PLUGIN_LIBVIRT_TRUE@LoadPlugin libvirt
  @BUILD_PLUGIN_LOAD_TRUE@@BUILD_PLUGIN_LOAD_TRUE@LoadPlugin load
-@@ -376,6 +377,12 @@ FQDNLookup   true
+@@ -433,6 +434,12 @@
  #     IgnoreSelected true
  #</Plugin>
  
@@ -67,7 +67,7 @@
  #     JVMArg "-Djava.class.path=@prefix@/share/collectd/java/collectd-api.jar"
 --- a/src/collectd.conf.pod
 +++ b/src/collectd.conf.pod
-@@ -1478,6 +1478,27 @@ and all other interrupts are collected.
+@@ -1784,6 +1784,27 @@ and all other interrupts are collected.
  
  =back
  
@@ -250,7 +250,7 @@
 +}
 --- a/src/Makefile.am
 +++ b/src/Makefile.am
-@@ -453,6 +453,15 @@ collectd_LDADD += "-dlopen" irq.la
+@@ -508,6 +508,15 @@ collectd_LDADD += "-dlopen" irq.la
  collectd_DEPENDENCIES += irq.la
  endif
  
@@ -268,8 +268,11 @@
  java_la_SOURCES = java.c
 --- a/src/types.db
 +++ b/src/types.db
-@@ -171,3 +171,4 @@ voltage                    value:GAUGE:U:U
+@@ -183,6 +183,7 @@ voltage                    value:GAUGE:U:U
  vs_memory             value:GAUGE:0:9223372036854775807
  vs_processes          value:GAUGE:0:65535
  vs_threads            value:GAUGE:0:65535
 +stations              value:GAUGE:0:256
+ #
+ # Legacy types
+ # (required for the v5 upgrade target)
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to