collectd: update to 5.9.0
Update collectd to version 5.9.0 * remove backported upstream patches (sensors, modbus) * remove lua patch that has been been implemented upstream (See collectd PR 3144) * refresh patches and accommodate into upstream path changes * place the 'stations' datatype for iwinfo in alpbetically correct place in types.db * add libmnl dependency to 'processes' plugin required for the new Linux process Delay Accounting capability. (Alternatively the capability & requirement might be patched away in Makefile.am, HAVE_LIBTASKSTATS from collectd_4ea7a572) * new plugins (disabled): ampq1, gpu_nvidia, pcie_errors, write_stackdriver, write_syslog compile-tested: ar71xx/WNDR3700 (all plugins) run-tested: ar71xx/WNDR3700 (selected plugins) Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
This commit is contained in:
parent
45d40b4a88
commit
08d759f14a
14 changed files with 45 additions and 660 deletions
|
@ -8,13 +8,13 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=collectd
|
PKG_NAME:=collectd
|
||||||
PKG_VERSION:=5.8.1
|
PKG_VERSION:=5.9.0
|
||||||
PKG_RELEASE:=6
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||||
PKG_SOURCE_URL:=https://collectd.org/files/ \
|
PKG_SOURCE_URL:=https://collectd.org/files/ \
|
||||||
https://github.com/collectd/collectd/releases/download/collectd-$(PKG_VERSION)
|
https://github.com/collectd/collectd/releases/download/collectd-$(PKG_VERSION)
|
||||||
PKG_HASH:=e796fda27ce06377f491ad91aa286962a68c2b54076aa77a29673d53204453da
|
PKG_HASH:=7b220f8898a061f6e7f29a8c16697d1a198277f813da69474a67911097c0626b
|
||||||
|
|
||||||
PKG_FIXUP:=autoreconf
|
PKG_FIXUP:=autoreconf
|
||||||
PKG_REMOVE_FILES:=aclocal.m4 libltdl/aclocal.m4
|
PKG_REMOVE_FILES:=aclocal.m4 libltdl/aclocal.m4
|
||||||
|
@ -26,6 +26,7 @@ PKG_USE_MIPS16:=0
|
||||||
|
|
||||||
COLLECTD_PLUGINS_DISABLED:= \
|
COLLECTD_PLUGINS_DISABLED:= \
|
||||||
amqp \
|
amqp \
|
||||||
|
ampq1 \
|
||||||
apple_sensors \
|
apple_sensors \
|
||||||
aquaero \
|
aquaero \
|
||||||
barometer \
|
barometer \
|
||||||
|
@ -43,6 +44,7 @@ COLLECTD_PLUGINS_DISABLED:= \
|
||||||
genericjmx \
|
genericjmx \
|
||||||
gmond \
|
gmond \
|
||||||
gps \
|
gps \
|
||||||
|
gpu_nvidia \
|
||||||
grpc \
|
grpc \
|
||||||
hddtemp \
|
hddtemp \
|
||||||
hugepages \
|
hugepages \
|
||||||
|
@ -75,6 +77,7 @@ COLLECTD_PLUGINS_DISABLED:= \
|
||||||
oracle \
|
oracle \
|
||||||
ovs_events \
|
ovs_events \
|
||||||
ovs_stats \
|
ovs_stats \
|
||||||
|
pcie_errors \
|
||||||
perl \
|
perl \
|
||||||
pf \
|
pf \
|
||||||
pinba \
|
pinba \
|
||||||
|
@ -103,6 +106,8 @@ COLLECTD_PLUGINS_DISABLED:= \
|
||||||
write_redis \
|
write_redis \
|
||||||
write_riemann \
|
write_riemann \
|
||||||
write_sensu \
|
write_sensu \
|
||||||
|
write_stackdriver \
|
||||||
|
write_syslog \
|
||||||
write_tsdb \
|
write_tsdb \
|
||||||
xencpu \
|
xencpu \
|
||||||
xmms \
|
xmms \
|
||||||
|
@ -399,7 +404,7 @@ $(eval $(call BuildPlugin,openvpn,OpenVPN traffic/compression input,openvpn,))
|
||||||
$(eval $(call BuildPlugin,ping,ping status input,ping,+PACKAGE_collectd-mod-ping:liboping))
|
$(eval $(call BuildPlugin,ping,ping status input,ping,+PACKAGE_collectd-mod-ping:liboping))
|
||||||
$(eval $(call BuildPlugin,postgresql,PostgreSQL status input,postgresql,+PACKAGE_collectd-mod-postgresql:libpq))
|
$(eval $(call BuildPlugin,postgresql,PostgreSQL status input,postgresql,+PACKAGE_collectd-mod-postgresql:libpq))
|
||||||
$(eval $(call BuildPlugin,powerdns,PowerDNS server status input,powerdns,))
|
$(eval $(call BuildPlugin,powerdns,PowerDNS server status input,powerdns,))
|
||||||
$(eval $(call BuildPlugin,processes,process status input,processes,))
|
$(eval $(call BuildPlugin,processes,process status input,processes,+PACKAGE_collectd-mod-processes:libmnl))
|
||||||
$(eval $(call BuildPlugin,protocols,network protocols input,protocols,))
|
$(eval $(call BuildPlugin,protocols,network protocols input,protocols,))
|
||||||
$(eval $(call BuildPlugin,rrdtool,RRDtool output,rrdtool,+PACKAGE_collectd-mod-rrdtool:librrd1))
|
$(eval $(call BuildPlugin,rrdtool,RRDtool output,rrdtool,+PACKAGE_collectd-mod-rrdtool:librrd1))
|
||||||
$(eval $(call BuildPlugin,sensors,lm_sensors input,sensors,+PACKAGE_collectd-mod-sensors:libsensors))
|
$(eval $(call BuildPlugin,sensors,lm_sensors input,sensors,+PACKAGE_collectd-mod-sensors:libsensors))
|
||||||
|
|
|
@ -1,84 +0,0 @@
|
||||||
From d5a3c020d33cc33ee8049f54c7b4dffcd123bf83 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Pavel Rochnyack <pavel2000@ngs.ru>
|
|
||||||
Date: Mon, 3 Dec 2018 18:34:14 +0700
|
|
||||||
Subject: [PATCH] sensors: Removed checks for upper limit of
|
|
||||||
SENSORS_API_VERSION
|
|
||||||
|
|
||||||
That makes no more sense after lm-sensors got new maintainers.
|
|
||||||
|
|
||||||
Closes: #3006
|
|
||||||
---
|
|
||||||
src/sensors.c | 17 ++++++-----------
|
|
||||||
1 file changed, 6 insertions(+), 11 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/sensors.c b/src/sensors.c
|
|
||||||
index f4ecda5e49..33982e061a 100644
|
|
||||||
--- a/src/sensors.c
|
|
||||||
+++ b/src/sensors.c
|
|
||||||
@@ -149,7 +149,7 @@ typedef struct featurelist {
|
|
||||||
static char *conffile = SENSORS_CONF_PATH;
|
|
||||||
/* #endif SENSORS_API_VERSION < 0x400 */
|
|
||||||
|
|
||||||
-#elif (SENSORS_API_VERSION >= 0x400) && (SENSORS_API_VERSION < 0x500)
|
|
||||||
+#elif (SENSORS_API_VERSION >= 0x400)
|
|
||||||
typedef struct featurelist {
|
|
||||||
const sensors_chip_name *chip;
|
|
||||||
const sensors_feature *feature;
|
|
||||||
@@ -159,11 +159,6 @@ typedef struct featurelist {
|
|
||||||
|
|
||||||
static char *conffile = NULL;
|
|
||||||
static _Bool use_labels = 0;
|
|
||||||
-/* #endif (SENSORS_API_VERSION >= 0x400) && (SENSORS_API_VERSION < 0x500) */
|
|
||||||
-
|
|
||||||
-#else /* if SENSORS_API_VERSION >= 0x500 */
|
|
||||||
-#error "This version of libsensors is not supported yet. Please report this " \
|
|
||||||
- "as bug."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static featurelist_t *first_feature = NULL;
|
|
||||||
@@ -223,7 +218,7 @@ static int sensors_config(const char *key, const char *value) {
|
|
||||||
if (IS_TRUE(value))
|
|
||||||
ignorelist_set_invert(sensor_list, 0);
|
|
||||||
}
|
|
||||||
-#if (SENSORS_API_VERSION >= 0x400) && (SENSORS_API_VERSION < 0x500)
|
|
||||||
+#if (SENSORS_API_VERSION >= 0x400)
|
|
||||||
else if (strcasecmp(key, "UseLabels") == 0) {
|
|
||||||
use_labels = IS_TRUE(value) ? 1 : 0;
|
|
||||||
}
|
|
||||||
@@ -353,7 +348,7 @@ static int sensors_load_conf(void) {
|
|
||||||
} /* while sensors_get_detected_chips */
|
|
||||||
/* #endif SENSORS_API_VERSION < 0x400 */
|
|
||||||
|
|
||||||
-#elif (SENSORS_API_VERSION >= 0x400) && (SENSORS_API_VERSION < 0x500)
|
|
||||||
+#elif (SENSORS_API_VERSION >= 0x400)
|
|
||||||
chip_num = 0;
|
|
||||||
while ((chip = sensors_get_detected_chips(NULL, &chip_num)) != NULL) {
|
|
||||||
const sensors_feature *feature;
|
|
||||||
@@ -410,7 +405,7 @@ static int sensors_load_conf(void) {
|
|
||||||
} /* while (subfeature) */
|
|
||||||
} /* while (feature) */
|
|
||||||
} /* while (chip) */
|
|
||||||
-#endif /* (SENSORS_API_VERSION >= 0x400) && (SENSORS_API_VERSION < 0x500) */
|
|
||||||
+#endif /* (SENSORS_API_VERSION >= 0x400) */
|
|
||||||
|
|
||||||
if (first_feature == NULL) {
|
|
||||||
sensors_cleanup();
|
|
||||||
@@ -485,7 +480,7 @@ static int sensors_read(void) {
|
|
||||||
} /* for fl = first_feature .. NULL */
|
|
||||||
/* #endif SENSORS_API_VERSION < 0x400 */
|
|
||||||
|
|
||||||
-#elif (SENSORS_API_VERSION >= 0x400) && (SENSORS_API_VERSION < 0x500)
|
|
||||||
+#elif (SENSORS_API_VERSION >= 0x400)
|
|
||||||
for (featurelist_t *fl = first_feature; fl != NULL; fl = fl->next) {
|
|
||||||
double value;
|
|
||||||
int status;
|
|
||||||
@@ -528,7 +523,7 @@ static int sensors_read(void) {
|
|
||||||
|
|
||||||
sensors_submit(plugin_instance, type, type_instance, value);
|
|
||||||
} /* for fl = first_feature .. NULL */
|
|
||||||
-#endif /* (SENSORS_API_VERSION >= 0x400) && (SENSORS_API_VERSION < 0x500) */
|
|
||||||
+#endif /* (SENSORS_API_VERSION >= 0x400) */
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
} /* int sensors_read */
|
|
||||||
|
|
|
@ -1,179 +0,0 @@
|
||||||
From 6028f89df95b12219d735b277863f83e9f5ee9e9 Mon Sep 17 00:00:00 2001
|
|
||||||
From: PJ Bostley <pbostley@gmail.com>
|
|
||||||
Date: Sat, 20 Jan 2018 16:39:36 -0700
|
|
||||||
Subject: [PATCH 1/2] Adding support for CDAB endian 32-bit modbus polls
|
|
||||||
|
|
||||||
---
|
|
||||||
src/modbus.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
|
|
||||||
1 file changed, 56 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/modbus.c b/src/modbus.c
|
|
||||||
index 31f0c2da81..daa3c028f5 100644
|
|
||||||
--- a/src/modbus.c
|
|
||||||
+++ b/src/modbus.c
|
|
||||||
@@ -76,9 +76,13 @@
|
|
||||||
enum mb_register_type_e /* {{{ */
|
|
||||||
{ REG_TYPE_INT16,
|
|
||||||
REG_TYPE_INT32,
|
|
||||||
+ REG_TYPE_INT32_CDAB,
|
|
||||||
REG_TYPE_UINT16,
|
|
||||||
REG_TYPE_UINT32,
|
|
||||||
- REG_TYPE_FLOAT }; /* }}} */
|
|
||||||
+ REG_TYPE_UINT32_CDAB,
|
|
||||||
+ REG_TYPE_FLOAT,
|
|
||||||
+ REG_TYPE_FLOAT_CDAB }; /* }}} */
|
|
||||||
+
|
|
||||||
enum mb_mreg_type_e /* {{{ */
|
|
||||||
{ MREG_HOLDING,
|
|
||||||
MREG_INPUT }; /* }}} */
|
|
||||||
@@ -425,7 +429,9 @@ static int mb_read_data(mb_host_t *host, mb_slave_t *slave, /* {{{ */
|
|
||||||
|
|
||||||
if ((ds->ds[0].type != DS_TYPE_GAUGE) &&
|
|
||||||
(data->register_type != REG_TYPE_INT32) &&
|
|
||||||
- (data->register_type != REG_TYPE_UINT32)) {
|
|
||||||
+ (data->register_type != REG_TYPE_INT32_CDAB) &&
|
|
||||||
+ (data->register_type != REG_TYPE_UINT32) &&
|
|
||||||
+ (data->register_type != REG_TYPE_UINT32_CDAB)) {
|
|
||||||
NOTICE(
|
|
||||||
"Modbus plugin: The data source of type \"%s\" is %s, not gauge. "
|
|
||||||
"This will most likely result in problems, because the register type "
|
|
||||||
@@ -434,8 +440,11 @@ static int mb_read_data(mb_host_t *host, mb_slave_t *slave, /* {{{ */
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((data->register_type == REG_TYPE_INT32) ||
|
|
||||||
+ (data->register_type == REG_TYPE_INT32_CDAB) ||
|
|
||||||
(data->register_type == REG_TYPE_UINT32) ||
|
|
||||||
- (data->register_type == REG_TYPE_FLOAT))
|
|
||||||
+ (data->register_type == REG_TYPE_UINT32_CDAB) ||
|
|
||||||
+ (data->register_type == REG_TYPE_FLOAT) ||
|
|
||||||
+ (data->register_type == REG_TYPE_FLOAT_CDAB))
|
|
||||||
values_num = 2;
|
|
||||||
else
|
|
||||||
values_num = 1;
|
|
||||||
@@ -496,8 +505,8 @@ static int mb_read_data(mb_host_t *host, mb_slave_t *slave, /* {{{ */
|
|
||||||
}
|
|
||||||
if (status != values_num) {
|
|
||||||
ERROR("Modbus plugin: modbus read function (%s/%s) failed. "
|
|
||||||
- " status = %i, values_num = %i. Giving up.",
|
|
||||||
- host->host, host->node, status, values_num);
|
|
||||||
+ " status = %i, start_addr = %i, values_num = %i. Giving up.",
|
|
||||||
+ host->host, host->node, status, data->register_base, values_num);
|
|
||||||
#if LEGACY_LIBMODBUS
|
|
||||||
modbus_close(&host->connection);
|
|
||||||
#else
|
|
||||||
@@ -521,6 +530,17 @@ static int mb_read_data(mb_host_t *host, mb_slave_t *slave, /* {{{ */
|
|
||||||
"Returned float value is %g",
|
|
||||||
(double)float_value);
|
|
||||||
|
|
||||||
+ CAST_TO_VALUE_T(ds, vt, float_value);
|
|
||||||
+ mb_submit(host, slave, data, vt);
|
|
||||||
+ } else if (data->register_type == REG_TYPE_FLOAT_CDAB) {
|
|
||||||
+ float float_value;
|
|
||||||
+ value_t vt;
|
|
||||||
+
|
|
||||||
+ float_value = mb_register_to_float(values[1], values[0]);
|
|
||||||
+ DEBUG("Modbus plugin: mb_read_data: "
|
|
||||||
+ "Returned float value is %g",
|
|
||||||
+ (double)float_value);
|
|
||||||
+
|
|
||||||
CAST_TO_VALUE_T(ds, vt, float_value);
|
|
||||||
mb_submit(host, slave, data, vt);
|
|
||||||
} else if (data->register_type == REG_TYPE_INT32) {
|
|
||||||
@@ -535,6 +555,20 @@ static int mb_read_data(mb_host_t *host, mb_slave_t *slave, /* {{{ */
|
|
||||||
"Returned int32 value is %" PRIi32,
|
|
||||||
v.i32);
|
|
||||||
|
|
||||||
+ CAST_TO_VALUE_T(ds, vt, v.i32);
|
|
||||||
+ mb_submit(host, slave, data, vt);
|
|
||||||
+ } else if (data->register_type == REG_TYPE_INT32_CDAB) {
|
|
||||||
+ union {
|
|
||||||
+ uint32_t u32;
|
|
||||||
+ int32_t i32;
|
|
||||||
+ } v;
|
|
||||||
+ value_t vt;
|
|
||||||
+
|
|
||||||
+ v.u32 = (((uint32_t)values[1]) << 16) | ((uint32_t)values[0]);
|
|
||||||
+ DEBUG("Modbus plugin: mb_read_data: "
|
|
||||||
+ "Returned int32 value is %" PRIi32,
|
|
||||||
+ v.i32);
|
|
||||||
+
|
|
||||||
CAST_TO_VALUE_T(ds, vt, v.i32);
|
|
||||||
mb_submit(host, slave, data, vt);
|
|
||||||
} else if (data->register_type == REG_TYPE_INT16) {
|
|
||||||
@@ -561,6 +595,17 @@ static int mb_read_data(mb_host_t *host, mb_slave_t *slave, /* {{{ */
|
|
||||||
"Returned uint32 value is %" PRIu32,
|
|
||||||
v32);
|
|
||||||
|
|
||||||
+ CAST_TO_VALUE_T(ds, vt, v32);
|
|
||||||
+ mb_submit(host, slave, data, vt);
|
|
||||||
+ } else if (data->register_type == REG_TYPE_UINT32_CDAB) {
|
|
||||||
+ uint32_t v32;
|
|
||||||
+ value_t vt;
|
|
||||||
+
|
|
||||||
+ v32 = (((uint32_t)values[1]) << 16) | ((uint32_t)values[0]);
|
|
||||||
+ DEBUG("Modbus plugin: mb_read_data: "
|
|
||||||
+ "Returned uint32 value is %" PRIu32,
|
|
||||||
+ v32);
|
|
||||||
+
|
|
||||||
CAST_TO_VALUE_T(ds, vt, v32);
|
|
||||||
mb_submit(host, slave, data, vt);
|
|
||||||
} else /* if (data->register_type == REG_TYPE_UINT16) */
|
|
||||||
@@ -702,12 +747,18 @@ static int mb_config_add_data(oconfig_item_t *ci) /* {{{ */
|
|
||||||
data.register_type = REG_TYPE_INT16;
|
|
||||||
else if (strcasecmp("Int32", tmp) == 0)
|
|
||||||
data.register_type = REG_TYPE_INT32;
|
|
||||||
+ else if (strcasecmp("Int32LE", tmp) == 0)
|
|
||||||
+ data.register_type = REG_TYPE_INT32_CDAB;
|
|
||||||
else if (strcasecmp("Uint16", tmp) == 0)
|
|
||||||
data.register_type = REG_TYPE_UINT16;
|
|
||||||
else if (strcasecmp("Uint32", tmp) == 0)
|
|
||||||
data.register_type = REG_TYPE_UINT32;
|
|
||||||
+ else if (strcasecmp("Uint32LE", tmp) == 0)
|
|
||||||
+ data.register_type = REG_TYPE_UINT32_CDAB;
|
|
||||||
else if (strcasecmp("Float", tmp) == 0)
|
|
||||||
data.register_type = REG_TYPE_FLOAT;
|
|
||||||
+ else if (strcasecmp("FloatLE", tmp) == 0)
|
|
||||||
+ data.register_type = REG_TYPE_FLOAT_CDAB;
|
|
||||||
else {
|
|
||||||
ERROR("Modbus plugin: The register type \"%s\" is unknown.", tmp);
|
|
||||||
status = -1;
|
|
||||||
|
|
||||||
From 67afd2685892e69ababb489f48b9033ab5908f4d Mon Sep 17 00:00:00 2001
|
|
||||||
From: PJ Bostley <pbostley@gmail.com>
|
|
||||||
Date: Tue, 23 Jan 2018 15:33:23 -0700
|
|
||||||
Subject: [PATCH 2/2] Adding documentation for the Modbus little endian modes
|
|
||||||
where 32 bit values have thier registers swapped
|
|
||||||
|
|
||||||
---
|
|
||||||
src/collectd.conf.pod | 18 +++++++++++++-----
|
|
||||||
1 file changed, 13 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/collectd.conf.pod b/src/collectd.conf.pod
|
|
||||||
index dfd785a2c8..e9715126e6 100644
|
|
||||||
--- a/src/collectd.conf.pod
|
|
||||||
+++ b/src/collectd.conf.pod
|
|
||||||
@@ -4139,11 +4139,19 @@ Configures the base register to read from the device. If the option
|
|
||||||
B<RegisterType> has been set to B<Uint32> or B<Float>, this and the next
|
|
||||||
register will be read (the register number is increased by one).
|
|
||||||
|
|
||||||
-=item B<RegisterType> B<Int16>|B<Int32>|B<Uint16>|B<Uint32>|B<Float>
|
|
||||||
-
|
|
||||||
-Specifies what kind of data is returned by the device. If the type is B<Int32>,
|
|
||||||
-B<Uint32> or B<Float>, two 16E<nbsp>bit registers will be read and the data is
|
|
||||||
-combined into one value. Defaults to B<Uint16>.
|
|
||||||
+=item B<RegisterType> B<Int16>|B<Int32>|B<Uint16>|B<Uint32>|B<Float>|B<Int32LE>|B<Uint32LE>|B<FloatLE>
|
|
||||||
+
|
|
||||||
+Specifies what kind of data is returned by the device. This defaults to
|
|
||||||
+B<Uint16>. If the type is B<Int32>, B<Int32LE>, B<Uint32>, B<Uint32LE>,
|
|
||||||
+B<Float> or B<FloatLE>, two 16E<nbsp>bit registers at B<RegisterBase>
|
|
||||||
+and B<RegisterBase+1> will be read and the data is combined into one
|
|
||||||
+32E<nbsp>value. For B<Int32>, B<Uint32> and B<Float> the most significant
|
|
||||||
+16E<nbsp>bits are in the register at B<RegisterBase> and the least
|
|
||||||
+significant 16E<nbsp>bits are in the register at B<RegisterBase+1>.
|
|
||||||
+For B<Int32LE>, B<Uint32LE>, or B<Float32LE>, the high and low order
|
|
||||||
+registers are swapped with the most significant 16E<nbsp>bits in
|
|
||||||
+the B<RegisterBase+1> and the least significant 16E<nbsp>bits in
|
|
||||||
+B<RegisterBase>.
|
|
||||||
|
|
||||||
=item B<RegisterCmd> B<ReadHolding>|B<ReadInput>
|
|
||||||
|
|
|
@ -1,81 +0,0 @@
|
||||||
From eeabc41e703f39cae0ad7eb8a596045a5a2f25b4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: cekstam <christian.ekstam@gmail.com>
|
|
||||||
Date: Tue, 27 Mar 2018 13:15:28 +0200
|
|
||||||
Subject: [PATCH 1/3] Add scale and shift to modbus plugin
|
|
||||||
|
|
||||||
Adding a Scale and Shift parameter to the modbus plugin in order to correct amplifed data
|
|
||||||
---
|
|
||||||
src/collectd.conf.pod | 10 ++++++++++
|
|
||||||
src/modbus.c | 18 ++++++++++++++----
|
|
||||||
2 files changed, 24 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
--- a/src/collectd.conf.pod
|
|
||||||
+++ b/src/collectd.conf.pod
|
|
||||||
@@ -4169,6 +4169,16 @@ supported.
|
|
||||||
Sets the type instance to use when dispatching the value to I<collectd>. If
|
|
||||||
unset, an empty string (no type instance) is used.
|
|
||||||
|
|
||||||
+=item B<Scale> I<Value>
|
|
||||||
+
|
|
||||||
+The values taken from collectd are multiplied by I<Value>. The field is optional
|
|
||||||
+and the default is B<1.0>.
|
|
||||||
+
|
|
||||||
+=item B<Shift> I<Value>
|
|
||||||
+
|
|
||||||
+I<Value> is added to values from collectd after they have been multiplied by
|
|
||||||
+B<Scale> value. The field is optional and the default value is B<0.0>.
|
|
||||||
+
|
|
||||||
=back
|
|
||||||
|
|
||||||
=item E<lt>B<Host> I<Name>E<gt> blocks
|
|
||||||
--- a/src/modbus.c
|
|
||||||
+++ b/src/modbus.c
|
|
||||||
@@ -105,6 +105,8 @@ struct mb_data_s /* {{{ */
|
|
||||||
mb_mreg_type_t modbus_register_type;
|
|
||||||
char type[DATA_MAX_NAME_LEN];
|
|
||||||
char instance[DATA_MAX_NAME_LEN];
|
|
||||||
+ double scale;
|
|
||||||
+ double shift;
|
|
||||||
|
|
||||||
mb_data_t *next;
|
|
||||||
}; /* }}} */
|
|
||||||
@@ -395,13 +397,13 @@ static int mb_init_connection(mb_host_t
|
|
||||||
#define CAST_TO_VALUE_T(ds, vt, raw) \
|
|
||||||
do { \
|
|
||||||
if ((ds)->ds[0].type == DS_TYPE_COUNTER) \
|
|
||||||
- (vt).counter = (counter_t)(raw); \
|
|
||||||
+ (vt).counter = (((counter_t)(raw) * ds[0].scale) + ds[0].shift); \
|
|
||||||
else if ((ds)->ds[0].type == DS_TYPE_GAUGE) \
|
|
||||||
- (vt).gauge = (gauge_t)(raw); \
|
|
||||||
+ (vt).gauge = (((gauge_t)(raw) * ds[0].scale) + ds[0].shift); \
|
|
||||||
else if ((ds)->ds[0].type == DS_TYPE_DERIVE) \
|
|
||||||
- (vt).derive = (derive_t)(raw); \
|
|
||||||
+ (vt).derive = (((derive_t)(raw) * ds[0].scale) + ds[0].shift); \
|
|
||||||
else /* if (ds->ds[0].type == DS_TYPE_ABSOLUTE) */ \
|
|
||||||
- (vt).absolute = (absolute_t)(raw); \
|
|
||||||
+ (vt).absolute = (((absolute_t)(raw) * ds[0].scale) + ds[0].shift); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
static int mb_read_data(mb_host_t *host, mb_slave_t *slave, /* {{{ */
|
|
||||||
@@ -723,6 +725,8 @@ static int mb_config_add_data(oconfig_it
|
|
||||||
data.name = NULL;
|
|
||||||
data.register_type = REG_TYPE_UINT16;
|
|
||||||
data.next = NULL;
|
|
||||||
+ data.scale = 1;
|
|
||||||
+ data.shift = 0;
|
|
||||||
|
|
||||||
status = cf_util_get_string(ci, &data.name);
|
|
||||||
if (status != 0)
|
|
||||||
@@ -736,6 +740,12 @@ static int mb_config_add_data(oconfig_it
|
|
||||||
else if (strcasecmp("Instance", child->key) == 0)
|
|
||||||
status = cf_util_get_string_buffer(child, data.instance,
|
|
||||||
sizeof(data.instance));
|
|
||||||
+ else if (strcasecmp("Scale", child->key) == 0)
|
|
||||||
+ status = cf_util_get_string_buffer(child, data.scale,
|
|
||||||
+ sizeof(data.scale));
|
|
||||||
+ else if (strcasecmp("Shift", child->key) == 0)
|
|
||||||
+ status = cf_util_get_string_buffer(child, data.shift,
|
|
||||||
+ sizeof(data.shift));
|
|
||||||
else if (strcasecmp("RegisterBase", child->key) == 0)
|
|
||||||
status = cf_util_get_int(child, &data.register_base);
|
|
||||||
else if (strcasecmp("RegisterType", child->key) == 0) {
|
|
|
@ -1,120 +0,0 @@
|
||||||
From e596496f5c783f4bba85c4d559502c98e4050465 Mon Sep 17 00:00:00 2001
|
|
||||||
From: cekstam <christian.ekstam@gmail.com>
|
|
||||||
Date: Tue, 27 Mar 2018 14:11:52 +0200
|
|
||||||
Subject: [PATCH 2/3] correcting all the wrongs
|
|
||||||
|
|
||||||
, data->scale, data->shift
|
|
||||||
---
|
|
||||||
src/modbus.c | 32 +++++++++++++++-----------------
|
|
||||||
1 file changed, 15 insertions(+), 17 deletions(-)
|
|
||||||
|
|
||||||
--- a/src/modbus.c
|
|
||||||
+++ b/src/modbus.c
|
|
||||||
@@ -394,16 +394,16 @@ static int mb_init_connection(mb_host_t
|
|
||||||
} /* }}} int mb_init_connection */
|
|
||||||
#endif /* !LEGACY_LIBMODBUS */
|
|
||||||
|
|
||||||
-#define CAST_TO_VALUE_T(ds, vt, raw) \
|
|
||||||
+#define CAST_TO_VALUE_T(ds, vt, raw, scale, shift) \
|
|
||||||
do { \
|
|
||||||
if ((ds)->ds[0].type == DS_TYPE_COUNTER) \
|
|
||||||
- (vt).counter = (((counter_t)(raw) * ds[0].scale) + ds[0].shift); \
|
|
||||||
+ (vt).counter = (((counter_t)(raw) * scale) + shift); \
|
|
||||||
else if ((ds)->ds[0].type == DS_TYPE_GAUGE) \
|
|
||||||
- (vt).gauge = (((gauge_t)(raw) * ds[0].scale) + ds[0].shift); \
|
|
||||||
+ (vt).gauge = (((gauge_t)(raw) * scale) + shift); \
|
|
||||||
else if ((ds)->ds[0].type == DS_TYPE_DERIVE) \
|
|
||||||
- (vt).derive = (((derive_t)(raw) * ds[0].scale) + ds[0].shift); \
|
|
||||||
+ (vt).derive = (((derive_t)(raw) * scale) + shift); \
|
|
||||||
else /* if (ds->ds[0].type == DS_TYPE_ABSOLUTE) */ \
|
|
||||||
- (vt).absolute = (((absolute_t)(raw) * ds[0].scale) + ds[0].shift); \
|
|
||||||
+ (vt).absolute = (((absolute_t)(raw) * scale) + shift); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
static int mb_read_data(mb_host_t *host, mb_slave_t *slave, /* {{{ */
|
|
||||||
@@ -532,7 +532,7 @@ static int mb_read_data(mb_host_t *host,
|
|
||||||
"Returned float value is %g",
|
|
||||||
(double)float_value);
|
|
||||||
|
|
||||||
- CAST_TO_VALUE_T(ds, vt, float_value);
|
|
||||||
+ CAST_TO_VALUE_T(ds, vt, float_value, data->scale, data->shift);
|
|
||||||
mb_submit(host, slave, data, vt);
|
|
||||||
} else if (data->register_type == REG_TYPE_FLOAT_CDAB) {
|
|
||||||
float float_value;
|
|
||||||
@@ -543,7 +543,7 @@ static int mb_read_data(mb_host_t *host,
|
|
||||||
"Returned float value is %g",
|
|
||||||
(double)float_value);
|
|
||||||
|
|
||||||
- CAST_TO_VALUE_T(ds, vt, float_value);
|
|
||||||
+ CAST_TO_VALUE_T(ds, vt, float_value, data->scale, data->shift);
|
|
||||||
mb_submit(host, slave, data, vt);
|
|
||||||
} else if (data->register_type == REG_TYPE_INT32) {
|
|
||||||
union {
|
|
||||||
@@ -557,7 +557,7 @@ static int mb_read_data(mb_host_t *host,
|
|
||||||
"Returned int32 value is %" PRIi32,
|
|
||||||
v.i32);
|
|
||||||
|
|
||||||
- CAST_TO_VALUE_T(ds, vt, v.i32);
|
|
||||||
+ CAST_TO_VALUE_T(ds, vt, v.i32, data->scale, data->shift);
|
|
||||||
mb_submit(host, slave, data, vt);
|
|
||||||
} else if (data->register_type == REG_TYPE_INT32_CDAB) {
|
|
||||||
union {
|
|
||||||
@@ -571,7 +571,7 @@ static int mb_read_data(mb_host_t *host,
|
|
||||||
"Returned int32 value is %" PRIi32,
|
|
||||||
v.i32);
|
|
||||||
|
|
||||||
- CAST_TO_VALUE_T(ds, vt, v.i32);
|
|
||||||
+ CAST_TO_VALUE_T(ds, vt, v.i32, data->scale, data->shift);
|
|
||||||
mb_submit(host, slave, data, vt);
|
|
||||||
} else if (data->register_type == REG_TYPE_INT16) {
|
|
||||||
union {
|
|
||||||
@@ -586,7 +586,7 @@ static int mb_read_data(mb_host_t *host,
|
|
||||||
"Returned int16 value is %" PRIi16,
|
|
||||||
v.i16);
|
|
||||||
|
|
||||||
- CAST_TO_VALUE_T(ds, vt, v.i16);
|
|
||||||
+ CAST_TO_VALUE_T(ds, vt, v.i16, data->scale, data->shift);
|
|
||||||
mb_submit(host, slave, data, vt);
|
|
||||||
} else if (data->register_type == REG_TYPE_UINT32) {
|
|
||||||
uint32_t v32;
|
|
||||||
@@ -597,7 +597,7 @@ static int mb_read_data(mb_host_t *host,
|
|
||||||
"Returned uint32 value is %" PRIu32,
|
|
||||||
v32);
|
|
||||||
|
|
||||||
- CAST_TO_VALUE_T(ds, vt, v32);
|
|
||||||
+ CAST_TO_VALUE_T(ds, vt, v32, data->scale, data->shift);
|
|
||||||
mb_submit(host, slave, data, vt);
|
|
||||||
} else if (data->register_type == REG_TYPE_UINT32_CDAB) {
|
|
||||||
uint32_t v32;
|
|
||||||
@@ -608,7 +608,7 @@ static int mb_read_data(mb_host_t *host,
|
|
||||||
"Returned uint32 value is %" PRIu32,
|
|
||||||
v32);
|
|
||||||
|
|
||||||
- CAST_TO_VALUE_T(ds, vt, v32);
|
|
||||||
+ CAST_TO_VALUE_T(ds, vt, v32, data->scale, data->shift);
|
|
||||||
mb_submit(host, slave, data, vt);
|
|
||||||
} else /* if (data->register_type == REG_TYPE_UINT16) */
|
|
||||||
{
|
|
||||||
@@ -618,7 +618,7 @@ static int mb_read_data(mb_host_t *host,
|
|
||||||
"Returned uint16 value is %" PRIu16,
|
|
||||||
values[0]);
|
|
||||||
|
|
||||||
- CAST_TO_VALUE_T(ds, vt, values[0]);
|
|
||||||
+ CAST_TO_VALUE_T(ds, vt, values[0], data->scale, data->shift);
|
|
||||||
mb_submit(host, slave, data, vt);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -741,11 +741,9 @@ static int mb_config_add_data(oconfig_it
|
|
||||||
status = cf_util_get_string_buffer(child, data.instance,
|
|
||||||
sizeof(data.instance));
|
|
||||||
else if (strcasecmp("Scale", child->key) == 0)
|
|
||||||
- status = cf_util_get_string_buffer(child, data.scale,
|
|
||||||
- sizeof(data.scale));
|
|
||||||
+ status = cf_util_get_double(child, &data.scale);
|
|
||||||
else if (strcasecmp("Shift", child->key) == 0)
|
|
||||||
- status = cf_util_get_string_buffer(child, data.shift,
|
|
||||||
- sizeof(data.shift));
|
|
||||||
+ status = cf_util_get_double(child, &data.shift);
|
|
||||||
else if (strcasecmp("RegisterBase", child->key) == 0)
|
|
||||||
status = cf_util_get_int(child, &data.register_base);
|
|
||||||
else if (strcasecmp("RegisterType", child->key) == 0) {
|
|
|
@ -1,114 +0,0 @@
|
||||||
From a00ab52931a587cf29c53a945e9295b4d7fe41ba Mon Sep 17 00:00:00 2001
|
|
||||||
From: Daniel Golle <daniel@makrotopia.org>
|
|
||||||
Date: Thu, 28 Mar 2019 01:52:04 +0100
|
|
||||||
Subject: [PATCH] Add support for RS485 to modbus plugin
|
|
||||||
|
|
||||||
Allow setting up RS485 mode for Modbus-RTU
|
|
||||||
---
|
|
||||||
src/collectd.conf.pod | 6 +++++
|
|
||||||
src/modbus.c | 55 +++++++++++++++++++++++++++++++++++++++----
|
|
||||||
2 files changed, 57 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
--- a/src/collectd.conf.pod
|
|
||||||
+++ b/src/collectd.conf.pod
|
|
||||||
@@ -4234,6 +4234,12 @@ For Modbus/RTU, specifies the path to th
|
|
||||||
For Modbus/RTU, specifies the baud rate of the serial device.
|
|
||||||
Note, connections currently support only 8/N/1.
|
|
||||||
|
|
||||||
+=item B<UARTType> I<UARTType>
|
|
||||||
+
|
|
||||||
+For Modbus/RTU, specifies the type of the serial device.
|
|
||||||
+RS232, RS422 and RS485 are supported. Defaults to RS232.
|
|
||||||
+Available only on Linux systems with libmodbus>=2.9.4.
|
|
||||||
+
|
|
||||||
=item B<Interval> I<Interval>
|
|
||||||
|
|
||||||
Sets the interval (in seconds) in which the values will be collected from this
|
|
||||||
--- a/src/modbus.c
|
|
||||||
+++ b/src/modbus.c
|
|
||||||
@@ -95,6 +95,12 @@ enum mb_conntype_e /* {{{ */
|
|
||||||
MBCONN_RTU }; /* }}} */
|
|
||||||
typedef enum mb_conntype_e mb_conntype_t;
|
|
||||||
|
|
||||||
+enum mb_uarttype_e /* {{{ */
|
|
||||||
+{ UARTTYPE_RS232,
|
|
||||||
+ UARTTYPE_RS422,
|
|
||||||
+ UARTTYPE_RS485 }; /* }}} */
|
|
||||||
+typedef enum mb_uarttype_e mb_uarttype_t;
|
|
||||||
+
|
|
||||||
struct mb_data_s;
|
|
||||||
typedef struct mb_data_s mb_data_t;
|
|
||||||
struct mb_data_s /* {{{ */
|
|
||||||
@@ -124,8 +130,9 @@ struct mb_host_s /* {{{ */
|
|
||||||
char host[DATA_MAX_NAME_LEN];
|
|
||||||
char node[NI_MAXHOST]; /* TCP hostname or RTU serial device */
|
|
||||||
/* char service[NI_MAXSERV]; */
|
|
||||||
- int port; /* for Modbus/TCP */
|
|
||||||
- int baudrate; /* for Modbus/RTU */
|
|
||||||
+ int port; /* for Modbus/TCP */
|
|
||||||
+ int baudrate; /* for Modbus/RTU */
|
|
||||||
+ mb_uarttype_t uarttype; /* UART type for Modbus/RTU */
|
|
||||||
mb_conntype_t conntype;
|
|
||||||
cdtime_t interval;
|
|
||||||
|
|
||||||
@@ -390,6 +397,22 @@ static int mb_init_connection(mb_host_t
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
+#if defined(linux) && LIBMODBUS_VERSION_CHECK(2, 9, 4)
|
|
||||||
+ switch (host->uarttype) {
|
|
||||||
+ case UARTTYPE_RS485:
|
|
||||||
+ if (modbus_rtu_set_serial_mode(host->connection, MODBUS_RTU_RS485))
|
|
||||||
+ DEBUG("Modbus plugin: Setting RS485 mode failed.");
|
|
||||||
+ break;
|
|
||||||
+ case UARTTYPE_RS422:
|
|
||||||
+ /* libmodbus doesn't say anything about full-duplex symmetric RS422 UART */
|
|
||||||
+ break;
|
|
||||||
+ case UARTTYPE_RS232:
|
|
||||||
+ break;
|
|
||||||
+ default:
|
|
||||||
+ DEBUG("Modbus plugin: Invalid UART type!.");
|
|
||||||
+ }
|
|
||||||
+#endif /* defined(linux) && LIBMODBUS_VERSION_CHECK(2, 9, 4) */
|
|
||||||
+
|
|
||||||
return 0;
|
|
||||||
} /* }}} int mb_init_connection */
|
|
||||||
#endif /* !LEGACY_LIBMODBUS */
|
|
||||||
@@ -951,11 +974,35 @@ static int mb_config_add_host(oconfig_it
|
|
||||||
status = -1;
|
|
||||||
} else if (strcasecmp("Device", child->key) == 0) {
|
|
||||||
status = cf_util_get_string_buffer(child, host->node, sizeof(host->node));
|
|
||||||
- if (status == 0)
|
|
||||||
+ if (status == 0) {
|
|
||||||
host->conntype = MBCONN_RTU;
|
|
||||||
+ host->uarttype = UARTTYPE_RS232;
|
|
||||||
+ }
|
|
||||||
} else if (strcasecmp("Baudrate", child->key) == 0)
|
|
||||||
status = cf_util_get_int(child, &host->baudrate);
|
|
||||||
- else if (strcasecmp("Interval", child->key) == 0)
|
|
||||||
+ else if (strcasecmp("UARTType", child->key) == 0) {
|
|
||||||
+#if defined(linux) && !LEGACY_LIBMODBUS && LIBMODBUS_VERSION_CHECK(2, 9, 4)
|
|
||||||
+ char buffer[NI_MAXHOST];
|
|
||||||
+ status = cf_util_get_string_buffer(child, buffer, sizeof(buffer));
|
|
||||||
+ if (status != 0)
|
|
||||||
+ break;
|
|
||||||
+ if (strncmp(buffer, "RS485", 6) == 0)
|
|
||||||
+ host->uarttype = UARTTYPE_RS485;
|
|
||||||
+ else if (strncmp(buffer, "RS422", 6) == 0)
|
|
||||||
+ host->uarttype = UARTTYPE_RS422;
|
|
||||||
+ else if (strncmp(buffer, "RS232", 6) == 0)
|
|
||||||
+ host->uarttype = UARTTYPE_RS232;
|
|
||||||
+ else {
|
|
||||||
+ ERROR("Modbus plugin: The UARTType \"%s\" is unknown.", buffer);
|
|
||||||
+ status = -1;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+#else
|
|
||||||
+ ERROR("Modbus plugin: Option `UARTType' not supported. Please "
|
|
||||||
+ "upgrade libmodbus to at least 2.9.4");
|
|
||||||
+ return -1;
|
|
||||||
+#endif
|
|
||||||
+ } else if (strcasecmp("Interval", child->key) == 0)
|
|
||||||
status = cf_util_get_cdtime(child, &host->interval);
|
|
||||||
else if (strcasecmp("Slave", child->key) == 0)
|
|
||||||
/* Don't set status: Gracefully continue if a slave fails. */
|
|
|
@ -17,7 +17,7 @@
|
||||||
/* consolidation_functions = */ NULL,
|
/* consolidation_functions = */ NULL,
|
||||||
/* consolidation_functions_num = */ 0,
|
/* consolidation_functions_num = */ 0,
|
||||||
|
|
||||||
@@ -949,6 +952,12 @@ static int rrd_config(const char *key, c
|
@@ -944,6 +947,12 @@ static int rrd_config(const char *key, c
|
||||||
/* compar = */ rrd_compare_numeric);
|
/* compar = */ rrd_compare_numeric);
|
||||||
|
|
||||||
free(value_copy);
|
free(value_copy);
|
||||||
|
@ -30,8 +30,8 @@
|
||||||
} else if (strcasecmp("XFF", key) == 0) {
|
} else if (strcasecmp("XFF", key) == 0) {
|
||||||
double tmp = atof(value);
|
double tmp = atof(value);
|
||||||
if ((tmp < 0.0) || (tmp >= 1.0)) {
|
if ((tmp < 0.0) || (tmp >= 1.0)) {
|
||||||
--- a/src/utils_rrdcreate.c
|
--- a/src/utils/rrdcreate/rrdcreate.c
|
||||||
+++ b/src/utils_rrdcreate.c
|
+++ b/src/utils/rrdcreate/rrdcreate.c
|
||||||
@@ -180,6 +180,9 @@ static int rra_get(char ***ret, const va
|
@@ -180,6 +180,9 @@ static int rra_get(char ***ret, const va
|
||||||
rts_num = rra_timespans_num;
|
rts_num = rra_timespans_num;
|
||||||
}
|
}
|
||||||
|
@ -42,8 +42,8 @@
|
||||||
rra_max = rts_num * rra_types_num;
|
rra_max = rts_num * rra_types_num;
|
||||||
assert(rra_max > 0);
|
assert(rra_max > 0);
|
||||||
|
|
||||||
--- a/src/utils_rrdcreate.h
|
--- a/src/utils/rrdcreate/rrdcreate.h
|
||||||
+++ b/src/utils_rrdcreate.h
|
+++ b/src/utils/rrdcreate/rrdcreate.h
|
||||||
@@ -40,6 +40,8 @@ struct rrdcreate_config_s {
|
@@ -40,6 +40,8 @@ struct rrdcreate_config_s {
|
||||||
int *timespans;
|
int *timespans;
|
||||||
size_t timespans_num;
|
size_t timespans_num;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/src/daemon/plugin.c
|
--- a/src/daemon/plugin.c
|
||||||
+++ b/src/daemon/plugin.c
|
+++ b/src/daemon/plugin.c
|
||||||
@@ -1099,7 +1099,7 @@ static int plugin_insert_read(read_func_
|
@@ -1085,7 +1085,7 @@ static int plugin_insert_read(read_func_
|
||||||
int status;
|
int status;
|
||||||
llentry_t *le;
|
llentry_t *le;
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/src/olsrd.c
|
--- a/src/olsrd.c
|
||||||
+++ b/src/olsrd.c
|
+++ b/src/olsrd.c
|
||||||
@@ -585,7 +585,7 @@ static int olsrd_read(void) /* {{{ */
|
@@ -582,7 +582,7 @@ static int olsrd_read(void) /* {{{ */
|
||||||
if (fh == NULL)
|
if (fh == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ Reversed patch to be applied:
|
||||||
|
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -3327,9 +3327,9 @@ if test "x$with_libmodbus" = "xyes"; the
|
@@ -3399,9 +3399,9 @@ if test "x$with_libmodbus" = "xyes"; the
|
||||||
SAVE_CPPFLAGS="$CPPFLAGS"
|
SAVE_CPPFLAGS="$CPPFLAGS"
|
||||||
CPPFLAGS="$CPPFLAGS $with_libmodbus_cflags"
|
CPPFLAGS="$CPPFLAGS $with_libmodbus_cflags"
|
||||||
|
|
||||||
|
@ -33,8 +33,8 @@ Reversed patch to be applied:
|
||||||
--- a/src/modbus.c
|
--- a/src/modbus.c
|
||||||
+++ b/src/modbus.c
|
+++ b/src/modbus.c
|
||||||
@@ -26,7 +26,7 @@
|
@@ -26,7 +26,7 @@
|
||||||
#include "configfile.h"
|
|
||||||
#include "plugin.h"
|
#include "plugin.h"
|
||||||
|
#include "utils/common/common.h"
|
||||||
|
|
||||||
-#include <modbus.h>
|
-#include <modbus.h>
|
||||||
+#include <modbus/modbus.h>
|
+#include <modbus/modbus.h>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -526,11 +526,7 @@ if test "x$ac_system" = "xLinux"; then
|
@@ -531,11 +531,7 @@ if test "x$ac_system" = "xLinux"; then
|
||||||
[have_cpuid_h="no (cpuid.h not found)"]
|
[have_cpuid_h="no (cpuid.h not found)"]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -710,6 +710,11 @@ AC_CACHE_CHECK([whether clock_boottime a
|
@@ -721,6 +721,11 @@ AC_CACHE_CHECK([whether clock_boottime a
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
#
|
#
|
||||||
# Checks for typedefs, structures, and compiler characteristics.
|
# Checks for typedefs, structures, and compiler characteristics.
|
||||||
@@ -6127,6 +6132,7 @@ plugin_ipc="no"
|
@@ -6392,6 +6397,7 @@ plugin_ipc="no"
|
||||||
plugin_ipmi="no"
|
plugin_ipmi="no"
|
||||||
plugin_ipvs="no"
|
plugin_ipvs="no"
|
||||||
plugin_irq="no"
|
plugin_irq="no"
|
||||||
|
@ -20,15 +20,15 @@
|
||||||
plugin_load="no"
|
plugin_load="no"
|
||||||
plugin_log_logstash="no"
|
plugin_log_logstash="no"
|
||||||
plugin_mcelog="no"
|
plugin_mcelog="no"
|
||||||
@@ -6538,6 +6544,7 @@ AC_PLUGIN([ipmi], [$plugi
|
@@ -6826,6 +6832,7 @@ AC_PLUGIN([ipmi], [$plugi
|
||||||
AC_PLUGIN([iptables], [$with_libiptc], [IPTables rule counters])
|
AC_PLUGIN([iptables], [$with_libiptc], [IPTables rule counters])
|
||||||
AC_PLUGIN([ipvs], [$plugin_ipvs], [IPVS connection statistics])
|
AC_PLUGIN([ipvs], [$plugin_ipvs], [IPVS connection statistics])
|
||||||
AC_PLUGIN([irq], [$plugin_irq], [IRQ statistics])
|
AC_PLUGIN([irq], [$plugin_irq], [IRQ statistics])
|
||||||
+AC_PLUGIN([iwinfo], [$with_iwinfo], [Common iwinfo wireless statistics])
|
+AC_PLUGIN([iwinfo], [$with_iwinfo], [Common iwinfo wireless statistics])
|
||||||
AC_PLUGIN([java], [$with_java], [Embed the Java Virtual Machine])
|
AC_PLUGIN([java], [$with_java], [Embed the Java Virtual Machine])
|
||||||
AC_PLUGIN([load], [$plugin_load], [System load])
|
AC_PLUGIN([load], [$plugin_load], [System load])
|
||||||
AC_PLUGIN([log_logstash], [$plugin_log_logstash], [Logstash json_event compatible logging])
|
AC_PLUGIN([log_logstash], [$plugin_log_logstash], [Logstash json_event compatible logging])
|
||||||
@@ -6899,6 +6906,7 @@ AC_MSG_RESULT([ libyajl . . . . . . .
|
@@ -7193,6 +7200,7 @@ AC_MSG_RESULT([ libyajl . . . . . . .
|
||||||
AC_MSG_RESULT([ oracle . . . . . . . $with_oracle])
|
AC_MSG_RESULT([ oracle . . . . . . . $with_oracle])
|
||||||
AC_MSG_RESULT([ protobuf-c . . . . . $have_protoc_c])
|
AC_MSG_RESULT([ protobuf-c . . . . . $have_protoc_c])
|
||||||
AC_MSG_RESULT([ protoc 3 . . . . . . $have_protoc3])
|
AC_MSG_RESULT([ protoc 3 . . . . . . $have_protoc3])
|
||||||
|
@ -36,7 +36,7 @@
|
||||||
AC_MSG_RESULT()
|
AC_MSG_RESULT()
|
||||||
AC_MSG_RESULT([ Features:])
|
AC_MSG_RESULT([ Features:])
|
||||||
AC_MSG_RESULT([ daemon mode . . . . . $enable_daemon])
|
AC_MSG_RESULT([ daemon mode . . . . . $enable_daemon])
|
||||||
@@ -6957,6 +6965,7 @@ AC_MSG_RESULT([ ipmi . . . . . . . .
|
@@ -7253,6 +7261,7 @@ AC_MSG_RESULT([ ipmi . . . . . . . .
|
||||||
AC_MSG_RESULT([ iptables . . . . . . $enable_iptables])
|
AC_MSG_RESULT([ iptables . . . . . . $enable_iptables])
|
||||||
AC_MSG_RESULT([ ipvs . . . . . . . . $enable_ipvs])
|
AC_MSG_RESULT([ ipvs . . . . . . . . $enable_ipvs])
|
||||||
AC_MSG_RESULT([ irq . . . . . . . . . $enable_irq])
|
AC_MSG_RESULT([ irq . . . . . . . . . $enable_irq])
|
||||||
|
@ -46,7 +46,7 @@
|
||||||
AC_MSG_RESULT([ logfile . . . . . . . $enable_logfile])
|
AC_MSG_RESULT([ logfile . . . . . . . $enable_logfile])
|
||||||
--- a/src/collectd.conf.in
|
--- a/src/collectd.conf.in
|
||||||
+++ b/src/collectd.conf.in
|
+++ b/src/collectd.conf.in
|
||||||
@@ -137,6 +137,7 @@
|
@@ -138,6 +138,7 @@
|
||||||
#@BUILD_PLUGIN_IPTABLES_TRUE@LoadPlugin iptables
|
#@BUILD_PLUGIN_IPTABLES_TRUE@LoadPlugin iptables
|
||||||
#@BUILD_PLUGIN_IPVS_TRUE@LoadPlugin ipvs
|
#@BUILD_PLUGIN_IPVS_TRUE@LoadPlugin ipvs
|
||||||
#@BUILD_PLUGIN_IRQ_TRUE@LoadPlugin irq
|
#@BUILD_PLUGIN_IRQ_TRUE@LoadPlugin irq
|
||||||
|
@ -54,7 +54,7 @@
|
||||||
#@BUILD_PLUGIN_JAVA_TRUE@LoadPlugin java
|
#@BUILD_PLUGIN_JAVA_TRUE@LoadPlugin java
|
||||||
@BUILD_PLUGIN_LOAD_TRUE@@BUILD_PLUGIN_LOAD_TRUE@LoadPlugin load
|
@BUILD_PLUGIN_LOAD_TRUE@@BUILD_PLUGIN_LOAD_TRUE@LoadPlugin load
|
||||||
#@BUILD_PLUGIN_LPAR_TRUE@LoadPlugin lpar
|
#@BUILD_PLUGIN_LPAR_TRUE@LoadPlugin lpar
|
||||||
@@ -721,6 +722,12 @@
|
@@ -767,6 +768,12 @@
|
||||||
# IgnoreSelected true
|
# IgnoreSelected true
|
||||||
#</Plugin>
|
#</Plugin>
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@
|
||||||
# JVMArg "-Djava.class.path=@prefix@/share/collectd/java/collectd-api.jar"
|
# JVMArg "-Djava.class.path=@prefix@/share/collectd/java/collectd-api.jar"
|
||||||
--- a/src/collectd.conf.pod
|
--- a/src/collectd.conf.pod
|
||||||
+++ b/src/collectd.conf.pod
|
+++ b/src/collectd.conf.pod
|
||||||
@@ -3521,6 +3521,27 @@ and all other interrupts are collected.
|
@@ -3803,6 +3803,27 @@ and all other interrupts are collected.
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
|
@ -119,9 +119,9 @@
|
||||||
+ **/
|
+ **/
|
||||||
+
|
+
|
||||||
+#include "collectd.h"
|
+#include "collectd.h"
|
||||||
+#include "common.h"
|
|
||||||
+#include "plugin.h"
|
+#include "plugin.h"
|
||||||
+#include "utils_ignorelist.h"
|
+#include "utils/common/common.h"
|
||||||
|
+#include "utils/ignorelist/ignorelist.h"
|
||||||
+
|
+
|
||||||
+#include <stdint.h>
|
+#include <stdint.h>
|
||||||
+#include <iwinfo.h>
|
+#include <iwinfo.h>
|
||||||
|
@ -252,17 +252,17 @@
|
||||||
+}
|
+}
|
||||||
--- a/src/types.db
|
--- a/src/types.db
|
||||||
+++ b/src/types.db
|
+++ b/src/types.db
|
||||||
@@ -269,6 +269,7 @@ voltage_threshold value:GAUGE:U:U,
|
@@ -240,6 +240,7 @@ voltage_threshold value:GAUGE:U:U,
|
||||||
vs_memory value:GAUGE:0:9223372036854775807
|
spam_check value:GAUGE:0:U
|
||||||
vs_processes value:GAUGE:0:65535
|
spam_score value:GAUGE:U:U
|
||||||
vs_threads value:GAUGE:0:65535
|
spl value:GAUGE:U:U
|
||||||
+stations value:GAUGE:0:256
|
+stations value:GAUGE:0:256
|
||||||
|
swap value:GAUGE:0:1099511627776
|
||||||
#
|
swap_io value:DERIVE:0:U
|
||||||
# Legacy types
|
tcp_connections value:GAUGE:0:4294967295
|
||||||
--- a/Makefile.am
|
--- a/Makefile.am
|
||||||
+++ b/Makefile.am
|
+++ b/Makefile.am
|
||||||
@@ -997,6 +997,14 @@ irq_la_LDFLAGS = $(PLUGIN_LDFLAGS)
|
@@ -1149,6 +1149,14 @@ irq_la_LDFLAGS = $(PLUGIN_LDFLAGS)
|
||||||
irq_la_LIBADD = libignorelist.la
|
irq_la_LIBADD = libignorelist.la
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/src/ping.c
|
--- a/src/ping.c
|
||||||
+++ b/src/ping.c
|
+++ b/src/ping.c
|
||||||
@@ -633,7 +633,7 @@ static int ping_read(void) /* {{{ */
|
@@ -648,7 +648,7 @@ static int ping_read(void) /* {{{ */
|
||||||
((double)(pkg_recv * (pkg_recv - 1))));
|
((double)(pkg_recv * (pkg_recv - 1))));
|
||||||
|
|
||||||
/* Calculate drop rate. */
|
/* Calculate drop rate. */
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
--- a/src/lua.c
|
|
||||||
+++ b/src/lua.c
|
|
||||||
@@ -281,9 +281,6 @@ static int lua_cb_register_read(lua_Stat
|
|
||||||
|
|
||||||
luaL_checktype(L, 1, LUA_TFUNCTION);
|
|
||||||
|
|
||||||
- char function_name[DATA_MAX_NAME_LEN];
|
|
||||||
- snprintf(function_name, sizeof(function_name), "lua/%s", lua_tostring(L, 1));
|
|
||||||
-
|
|
||||||
int callback_id = clua_store_callback(L, 1);
|
|
||||||
if (callback_id < 0)
|
|
||||||
return luaL_error(L, "%s", "Storing callback function failed");
|
|
||||||
@@ -298,6 +295,9 @@ static int lua_cb_register_read(lua_Stat
|
|
||||||
if (cb == NULL)
|
|
||||||
return luaL_error(L, "%s", "calloc failed");
|
|
||||||
|
|
||||||
+ char function_name[DATA_MAX_NAME_LEN];
|
|
||||||
+ snprintf(function_name, sizeof(function_name), "lua/%p", thread);
|
|
||||||
+
|
|
||||||
cb->lua_state = thread;
|
|
||||||
cb->callback_id = callback_id;
|
|
||||||
cb->lua_function_name = strdup(function_name);
|
|
||||||
@@ -325,9 +325,6 @@ static int lua_cb_register_write(lua_Sta
|
|
||||||
|
|
||||||
luaL_checktype(L, 1, LUA_TFUNCTION);
|
|
||||||
|
|
||||||
- char function_name[DATA_MAX_NAME_LEN] = "";
|
|
||||||
- snprintf(function_name, sizeof(function_name), "lua/%s", lua_tostring(L, 1));
|
|
||||||
-
|
|
||||||
int callback_id = clua_store_callback(L, 1);
|
|
||||||
if (callback_id < 0)
|
|
||||||
return luaL_error(L, "%s", "Storing callback function failed");
|
|
||||||
@@ -342,6 +339,9 @@ static int lua_cb_register_write(lua_Sta
|
|
||||||
if (cb == NULL)
|
|
||||||
return luaL_error(L, "%s", "calloc failed");
|
|
||||||
|
|
||||||
+ char function_name[DATA_MAX_NAME_LEN] = "";
|
|
||||||
+ snprintf(function_name, sizeof(function_name), "lua/%p", thread);
|
|
||||||
+
|
|
||||||
cb->lua_state = thread;
|
|
||||||
cb->callback_id = callback_id;
|
|
||||||
cb->lua_function_name = strdup(function_name);
|
|
Loading…
Reference in a new issue