when installing / first running the plugin, it can take longer than
one munin-update call to create the $TIMEFILE. so until it is created
we assume the $LOCKFILE is not too old yet and let the first run finish
before we spawn additional processes.
* support systems without time executable
(if we can use bash time keyword)
* use curl as smtp client if available
* enable specifying different ports from 25
* enable specifying other test commands than "HELO localhost"
(e.g. HELP, QUIT can also be used to test connections)
* Fix awk search-term for ROS7*
Value could be named "temperature" or "cpu-temperature". Tested with
RB5009, hex, CRS309, CRS305.
Search value without :.
Check different values in different ROS-Versions.
Tested with RB5009, hex, CRS309, CRS305.
The code was python3-compatible before, thus it was just a matter of
changing "python" to "python3".
The micropython approach previously relied on micropython-lib being
installed. Now the basic micropython package (on OpenWrt) is
sufficient.
This adds a plugin that supports the Arris SB8200 cable modem
- Uptime
- Downstream error counts
- Downstream Signal-to-Noise ratio (dB)
- Downstream & Upstream Power (dBmV)
Signed-off-by: Nathaniel Clark <Nathaniel.Clark@misrule.us>
Address several issues regarding the psi-plugin (pressure stall information).
Fixes:
- Use local for variables in functions.
- Add fetch as a valid parameter and remove auto.
- Remove double slash in path for get_pressure_value() and quote it.
- Remove line break in return value of get_printable_name().
- Quote variables to avoid splitting/globbing.
- Rename pressure plugin to linux_psi.
References:
- https://github.com/munin-monitoring/contrib/pull/1302
Adds a plugin to monitor the pressure stall information (psi) as reported by the Linux kernel.
- groups averages per resource
- rate/derive totals for ease of reading
- resources, intervals and scopes configurable
See: https://www.kernel.org/doc/html/latest/accounting/psi.html
If we don't want to show any host names in graphs/legend, it makes sense to not resolve them.
I occasionally notice the issue with name resolution of IPv6 addresses on certain networks, which makes `chronyc tracking` take 20+ seconds. Adding -n makes it almost instantaneous.
this helps use the same configs on multiple nodes where not all the
patterns expand to existing files on all of them or when files are not
yet existing
Some SNMP implementations actively report the interface speed as 0 (e.g., when disconnected). This led the plugin to report both min and max to be 0, which later confuses RRDTool, with errors such as
[ERROR] Unable to create '/var/lib/munin/example.net/192.2.0.1-snmp_if_combined_vlan-37-send-d.rrd': failed to parse data source 600:0:0: min must be less than max in DS definition
when trying to creates the RRDs. Ultimately, this would prevent the graph creation from suceeding with errors such as
[ERROR] In RRD: Error updating /var/lib/munin/example.net/192.2.0.1-snmp_if_combined_vlan-37-send-d.rrd: opening '/var/lib/munin/example.net/192.2.0.1-snmp_if_combined_vlan-37-send-d.rrd': No such file or directory
Signed-off-by: Olivier Mehani <shtrom@ssji.net>
The data was incorrectly loaned from a `temp` subgraph, which should
have been `temperature`.
This led to errors during munin-graph, as follow
[ERROR] Failed to find windChill source at temp.windChill, skipping field
[ERROR] Failed to find heatIndex source at temp.heatIndex, skipping field
[PERL WARNING] Use of uninitialized value in concatenation (.) or string at /usr/share/perl5/Munin/Master/Utils.pm line 1149, <GEN1> line 1728.
[ERROR] filename is empty for $VAR1 = {
'#%#name' => 'windChill',
'graph_data_size' => 'normal',
'label' => 'Wind chill [°C]',
'update_rate' => '300'
};
, temp.windChill
[PERL WARNING] Use of uninitialized value in concatenation (.) or string at /usr/share/perl5/Munin/Master/Utils.pm line 1149, <GEN1> line 1728.
[ERROR] filename is empty for $VAR1 = {
'#%#name' => 'heatIndex',
'graph_data_size' => 'normal',
'label' => 'Heat index [°C]',
'update_rate' => '300'
};
, temp.heatIndex
Signed-off-by: Olivier Mehani <shtrom@ssji.net>
This fix allows to skip validity checks on any intermediate certificate
which subject hash appears in the list.
Let's Encrypt certificates are cross-signed by both DST Root CA X3 and
ISRG Root X1. DST Root CA X3 has expired on 2021-09-30 [0], which causes
the plugin to incorrectly report some full-chain LE certificates as
expired.
[0] https://letsencrypt.org/docs/dst-root-ca-x3-expiration-september-2021/
Signed-off-by: Olivier Mehani <shtrom@ssji.net>
When error counts wrap they are displayed as int32 and negative.
Recast them to uint32 to fix math.
Signed-off-by: Nathaniel Clark <Nathaniel.Clark@misrule.us>
Fixes:
- Make playercount work on non english systems
- Avoid getting an invalid PID if not run with sufficient permissions
- Fix getting CPU usage
Enhance:
- Clearify that CPU usage is in percent
During certain situations, a device in the btrfs pool can show a total
capacity of 0 bytes. This is aspecially true when replacing or removing a
failed disk.
This fix stops the plugin from crashing in that situation but just report
the devices percentage as unknown (U). That way other devices in the pool
stil can be monitored.
logarithmic was removed in d885a314ad
but still has it's benefits for openvpn CA and CRL certs. when enabling
logarithmic we keep the SI units now instead of rrdtools default
scientific notation.
Allows for configuring either general or specific warning or critical
levels, or any combination of that.
This should be backwards compatible, since it doesn't change a thing to
the output, unless specific variables are specified.
* works on debian bullseye with this modification.
* removed all codestyle issues, checked with "pycodestyle" on debian bullseye, besides two "line too long"
* "config" param must not have newlines to avoid a warning in munin-update.log
Was not expecting #1255 to be merged so quickly 🤪. Now the new
serverstats graph has been fully tested and actually works 😉.
This change also doesn't needlessly convert all values to floating
point numbers, instead provides the values to munin in the same format
as they are originally output by chrony.
Also this adds some server stats found in chrony 4.0 (but still works
with 3.4 and probably earlier).
zfs list might list a bunch of transient snapshots if `zpool
listsnapshots=on` and something like zfs-auto-snapshot is used. It's
also not useful to graph them since they're unchanging in time, and
the parent volume is graphed anyway. Limit zfs list to
"filesystem,volume" instead of "all" including snapshots
"round" is part of jq's math support. Some distros (rhel8) don't enable it.
Fortunately round can be emulated with "floor" which is always present in
modern jq.
This commit:
- Changes to Python 3 template string rather than the formatted string
syntax.
- Calls the Deluge API once per plugin run for the "states" mode, rather
than once per torrent. Lines of code are reduced. The readability is
improved too, since the API call is similar to how the "peers" mode
works.
- Updates the label for the "state" entry "paused" to match it's name in the
libtorrent API: "stopped". "Queued" is split into "Queued seeding" and
"Queued downloads" to match the libtorrent API too.
Version 1.0.0 of this plugin requires version 1 of Deluge. Deluge 2 was
released in June 2019.
This commits bumps the plugin to version 2.0.0.
This plugin has three modes. The modes "bandwidth" and "states" are
working equally to the previous version. The third mode, "connections",
is changed.
The connections mode previously printed one value: the total number of
connections. That RPC call is removed in Deluge 2, and I'm instead
using `get_session_status`, which delegates the call to libtorrent [1].
libtorrent is much better documented, so it's easier to work with
compared to Deluge.
"Number of peers" replaces the previous "number of connections", and
I've added half open peers, and peers interested in download and upload
slots to the same graph.
[1]. https://libtorrent.org/manual-ref.html#session-statistics
From a summary comment in the code:
If a stacked graph is requested, plot the total. Rather than
aggregating them with CDEFs of SUMs, we sum them in the script, which
allows us to create real series than can be easily borrowed by other
loaning graphs.
Those series are recv_bits and send_bits.
There are longstanding bugs with them (dating back to snmp__if). This
has been documented, as well as some potential ad hoc fixes for the
data.
Some outdated bug were also removed from the doc.
Signed-off-by: Olivier Mehani <shtrom@ssji.net>
Also, don't use mathlib with `bc`, as it's not needed, and only adds
spurious fractional bytes to the computed ideal usage.
Signed-off-by: Olivier Mehani <shtrom@ssji.net>
All temperatures are displayed in a single graph.
This should provide more convenience than the "w1_" plugin (being a
"suggest"-based wildcard plugin).
Additionally the label of each sensor can be overridden.
This does not seam logical, because it explicitly want's spaces arround equal signs when setting a variable, but you musn't use them in parameters. But well, whatever makes the linter happy.
Previously it returned "yes" and empty graph with all labels having
value "0". Also remove bogus "multigraph redis" line.
TODO: die() in get_conn() makes this plugin to fail if any Redis
instance can't be connected.
docker_ plugin sanitized container names when printing config but
not values which led to a disparity resulting in no data on graphs
for all containers whose names are subject to sanitization. (#1212)
The cgroup data was (yet again) moved to a new location in recent LXC
releases, starting with v3.1.0 from what I could gather.
https://github.com/lxc/lxc/issues/2782 states:
> [The cgroup lxc.payload] exists to adhere to cgroup2 delegation requirements.
Sometimes after reboot munin-async + munin-node runs before knot is
ready. This will result missing knot stats, as there is no static
config in plugin. Cache results and use them instead if knot's output
is empty.