[collectd] Two newbie questions using the Lua plugin

Bowen Jiang mem0z at outlook.com
Sun Jul 14 16:38:07 CEST 2024


Hi, all

I’m brand new to collectd, RRDtool, and mailing lists. If you don’t mind newbie questions, here I come.

1. How best to dispatch multiple values using the Lua plugin?

The documentation I could find only gave an example of dispatching 1 value at a time, so to parse the following readings on an OpenWrt device,

+QTEMP:"qfe_wtr_pa0","58"
+QTEMP:"qfe_wtr_pa1","59"
+QTEMP:"qfe_wtr_pa2","55"
+QTEMP:"qfe_wtr_pa3","54"
+QTEMP:"aoss0-usr","56"
+QTEMP:"mdm-q6-usr","58"
+QTEMP:"ipa-usr","57"
+QTEMP:"cpu0-a7-usr","56"
+QTEMP:"mdm-5g-usr","56"
+QTEMP:"mdm-vpe-usr","56"
+QTEMP:"mdm-core-usr","56"
+QTEMP:"xo-therm-usr","57"
+QTEMP:"sdx-case-therm-usr","57"

OK

I pieced together this Lua script:

function read()
    serial = io.open("/dev/ttyUSB3", "a+")
    serial:write("AT+QTEMP\r\n")
    local result = {
        plugin = 'lua',
        plugin_instance = 'rm500q-gl',
        type = 'temperature',
    }
    while true do
        local line = serial:read()
        if string.match(line, "^OK") or string.match(line, "^ERROR") or line == nil then
            break
        end
        local sensor, temp = string.match(line, "^\+QTEMP:\"(.+)\",\"(.+)\"")
        if sensor ~= nil then
            result['type_instance'] = sensor
            result['values'] = { temp }
            collectd.dispatch_values(result)
        end
    end
    serial:close()
    return 0
end

collectd.register_read(read)

Is there a way to send all of them at once since the plugin expects a "values" field?

2. The above code works, but should the numbers in the RRD database be off by a bit?

An example dumped from temperature-cpu0-a7-usr.rrd shows that integers are not integers anymore:

<!-- Round Robin Database Dump -->
<rrd>
        <version> 0001 </version>
        <step> 30 </step> <!-- Seconds -->
        <lastupdate> 1720966705 </lastupdate> <!-- 2024-07-14 22:18:25 CST -->

        <ds>
                <name> value </name>
                <type> GAUGE </type>
                <minimal_heartbeat> 60 </minimal_heartbeat>
                <min> NaN </min>
                <max> NaN </max>

                <!-- PDP Status -->
                <last_ds> UNKN </last_ds>
                <value> 1.3250000000e+03 </value>
                <unknown_sec> 0 </unknown_sec>
        </ds>

<!-- Round Robin Archives -->
        <rra>
                <cf> AVERAGE </cf>
                <pdp_per_row> 1 </pdp_per_row> <!-- 30 seconds -->
                <xff> 1.0000000000e-01 </xff>

                <cdp_prep>
                        <ds><value> NaN </value>  <unknown_datapoints> 0 </unknown_datapoints></ds>
                </cdp_prep>
                <database>
...
                        <!-- 2024-07-14 22:18:00 CST / 1720966680 --> <row><v> 5.3000000000e+01 </v></row>
                        <!-- 2024-07-14 22:18:30 CST / 1720966710 --> <row><v> 5.3333333333e+01 </v></row>
                        <!-- 2024-07-14 22:19:00 CST / 1720966740 --> <row><v> 5.5000000000e+01 </v></row>
                        <!-- 2024-07-14 22:19:30 CST / 1720966770 --> <row><v> 5.5000000000e+01 </v></row>
                        <!-- 2024-07-14 22:20:00 CST / 1720966800 --> <row><v> 5.4833333333e+01 </v></row>
                        <!-- 2024-07-14 22:20:30 CST / 1720966830 --> <row><v> 5.4000000000e+01 </v></row>
                        <!-- 2024-07-14 22:21:00 CST / 1720966860 --> <row><v> 5.3833333333e+01 </v></row>
                        <!-- 2024-07-14 22:21:30 CST / 1720966890 --> <row><v> 5.3000000000e+01 </v></row>
                        <!-- 2024-07-14 22:22:00 CST / 1720966920 --> <row><v> 5.3000000000e+01 </v></row>
                        <!-- 2024-07-14 22:22:30 CST / 1720966950 --> <row><v> 5.3166666667e+01 </v></row>
                        <!-- 2024-07-14 22:23:00 CST / 1720966980 --> <row><v> 5.4333333333e+01 </v></row>
                        <!-- 2024-07-14 22:23:30 CST / 1720967010 --> <row><v> 5.6000000000e+01 </v></row>
                        <!-- 2024-07-14 22:24:00 CST / 1720967040 --> <row><v> 5.6166666667e+01 </v></row>
...

The RRDtool documentation explained normalizing and consolidating. What can I do to skip them in this case?

Best Regards,
Bowen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.verplant.org/pipermail/collectd/attachments/20240714/bb7d4e23/attachment-0001.html>


More information about the collectd mailing list