diff --git a/plugins/mongodb/mongodb_conn b/plugins/mongodb/mongodb_conn new file mode 100755 index 00000000..5772ea5c --- /dev/null +++ b/plugins/mongodb/mongodb_conn @@ -0,0 +1,79 @@ +#!/usr/bin/env python3 +""" +=head1 NAME + MongoDB Connection Count Plugin + +=head1 APPLICABLE SYSTEMS + + MongoDB 3.X and 4.X with pymongo installed. + +=head1 CONFIGURATION + + munin-node.conf + defauts for host is 127.0.0.1 and port 27017 + and will work without being defined : + + [mongodb_conn] + env.host 127.0.0.1 + env.port 27017 + env.username user + env.password P@55w0rd + +=head1 AUTHOR + + Alban Espie-Guillon + based on Stefan Andersen work. + +=head1 LICENSE + The Beer Ware License (Revision 42) + wrote this file. As long + as you retain this notice you can do whatever you want + with this stuff. If we meet some day, and you think + this stuff is worth it, you can buy me a beer in return. +""" +import os +import sys +import pymongo + + +def _get_connections(): + host = os.environ.get('host', '127.0.0.1') + port = os.environ.get('port', 27017) + username = os.environ.get('username', '') + password = os.environ.get('password', '') + conn = pymongo.MongoClient(host, int(port)) + if username: + connAuth = conn['admin'] + connAuth.authenticate(username, password) + + """ cli : db.serverStatus().connections """ + conn_status = conn.admin.command("serverStatus")['connections'] + return conn_status + + +def run(): + connections = _get_connections() + for connection, value in connections.items(): + print(connection + ".value", value) + + +def config(): + print(""" +graph_title MongoDB Connections Count +graph_vlabel Connections count +graph_category db +graph_args --base 1000 -l 0 +current.label current +current.draw AREASTACK +available.label available +available.draw AREASTACK +active.label active +active.draw AREASTACK +""") + + +if __name__ == "__main__": + if len(sys.argv) > 1 and sys.argv[1] == "config": + config() + else: + run() diff --git a/plugins/mongodb/mongodb_cpu b/plugins/mongodb/mongodb_cpu new file mode 100755 index 00000000..a2fa08de --- /dev/null +++ b/plugins/mongodb/mongodb_cpu @@ -0,0 +1,77 @@ +#!/usr/bin/perl -w + +# Author : Alban Espie-Guillon +# Based on http://github.com/perusio/nginx-munin Author: António P. P. Almeida + +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# Except as contained in this notice, the name(s) of the above copyright +# holders shall not be used in advertising or otherwise to promote the sale, +# use or other dealings in this Software without prior written authorization. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +=head1 NAME + +mongodb_cpu - Munin plugin to show CPU used by mongodb. + +=encoding utf8 + +=head1 APPLICABLE SYSTEMS + +Any mongodb host + +=head1 MAGIC MARKERS + + #%# family=auto + #%# capabilities=autoconf + +=head1 VERSION + +1.0 + +=head1 BUGS + +None known + +=head1 AUTHOR + +Based on a script by António P. P. Almeida . Modified by Alban Espie-Guillon + +=head1 LICENSE + +MIT + +=cut + +## Munin config method. +if (exists $ARGV[0] and $ARGV[0] eq "config") { + print "graph_title Mongodb CPU usage\n"; + print "graph_vlabel CPU\n"; + print "graph_category db\n"; + print "graph_args --base 1000 -r --lower-limit 0\n"; + print "graph_scale no\n"; + print "graph_period second\n"; + print "cpu.label CPU\n"; + print "cpu.type GAUGE\n"; + print "cpu.draw AREASTACK\n"; + print "cpu.min 0\n"; + exit 0; +} else { + my $c = `ps u -p \$(pidof mongod) | awk 'NR > 1 {print \$3}'`; + print "cpu.value $c"; +} diff --git a/plugins/mongodb/mongodb_ram b/plugins/mongodb/mongodb_ram new file mode 100755 index 00000000..ff00861e --- /dev/null +++ b/plugins/mongodb/mongodb_ram @@ -0,0 +1,75 @@ +#!/usr/bin/perl -w + +# Author : Alban Espie-Guillon +# Based on http://github.com/perusio/nginx-munin Author: António P. P. Almeida + +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# Except as contained in this notice, the name(s) of the above copyright +# holders shall not be used in advertising or otherwise to promote the sale, +# use or other dealings in this Software without prior written authorization. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +=head1 NAME + +mongodb_ram - Munin plugin to show RAM used by mongodb. + +=encoding utf8 + +=head1 APPLICABLE SYSTEMS + +Any mongodb host + +=head1 MAGIC MARKERS + + #%# family=auto + #%# capabilities=autoconf + +=head1 VERSION + +1.0 + +=head1 BUGS + +None known + +=head1 AUTHOR + +Based on a script by António P. P. Almeida . Modified by Alban Espie-Guillon + +=head1 LICENSE + +MIT + +=cut + +## Munin config method. +if (exists $ARGV[0] and $ARGV[0] eq "config") { + print "graph_title Mongodb RAM usage\n"; + print "graph_vlabel RAM\n"; + print "graph_category db\n"; + print "graph_args --base 1024 -l 0 --upper-limit 4138442752\n"; + print "ram.label RAM\n"; + print "ram.type GAUGE\n"; + print "ram.draw AREASTACK\n"; + print "ram.min 0\n"; + exit 0; +} else { + my $m = `ps u -p \$(pidof mongod) | awk 'NR > 1 {nm += \$5} END {print nm*1024}'`; + print "ram.value $m"; +}