This repository contains some basic Munin Plugins for gathering information from the NextCloud external API. To further simplify the monitory process I choose to also include a multigraph plugin
nextcloud_multi.py which does everything the other plugins do in a single plugin.
There are requirements for using a multigraph plugin which can be read up here : Munin-Monitoring.org/multigraphing
The Python environment need to have access to the requests module. It is possible to run the plugins in a virtual environment, with the virtual environment tool of your choice.
requirements.txt file contains all necessary libraries pip will install.
virtualenv -p python3 /path/to/your/venv pip install -r requirements.txt
Unfortunately you need to invoke the plugin with the virtual environment runtime. Thus you have to change the shebang from '#!/usr/bin/env python3' to the python3 path, or you could simply add a wrapper script. That way you only modify untracked files which helps with git updates.
#!/bin/bash # path to my virtual env python runtime # the unchanged nextcloud_multi.py file /usr/share/munin/custom-plugins/nextcloud-munin-py/venv/bin/python /usr/share/munin/custom-plugins/nextcloud-munin-py/nextcloud_multi.py $@
To use these plugins properly some configuration parameters need to be added to the plugin-config
[nextcloud_*] env.username username env.password password or logintoken env.url https://URL.TO.YOUR.NEXTCLOUD.tld/ocs/v2.php/apps/serverinfo/api/v1/info
activating the plugin
Finally you need to symlink the plugins you would like to activate into the munin plugin directory eg.
Or if you want to use the multigraph plugin only symlink that one the the munin plugin directory.
After this has been done the munin-node needs to be restarted to facilitate the new plugins.
systemctl restart munin-node
To check if everything is working as expected check if the plugins are listed and actually gather data.
telnet localhost 4949 # localhost or IP the munin-node list fetch nextcloud_shares.py num_fed_shares_received.value 1 num_shares_link_no_password.value 5 num_shares_user.value 13 num_shares.value 21 num_shares_link.value 5 num_shares_groups.value 0 num_fed_shares_sent.value 0
If everything works as it should, list will return the symlinked plugins within the list of active plugins.
To check if the multigraph plugin is working correctly, it is necessary to first instruct the multigraph capability, before the
list instruction will list the plugin.
telnet localhost 4949 # localhost or IP the munin-node cap multigraph list fetch nextcloud_multi.py multigraph nextcloud_shares num_fed_shares_received.value 1 num_shares_link_no_password.value 5 num_shares_user.value 13 num_shares.value 21 num_shares_link.value 5 num_shares_groups.value 0 num_fed_shares_sent.value 0 ...
fetch commands will run the script and return the gathered values. As long as none of them are NaN everything works as expected.
To remove the plugins from munin remove all symlinked plugins from the directory and restart the node.