root / plugins / mongodb / mongodb_conn @ c6f88968
Historique | Voir | Annoter | Télécharger (1,84 ko)
| 1 | 0a4891fc | Alban | #!/usr/bin/env python3 |
|---|---|---|---|
| 2 | """ |
||
| 3 | =head1 NAME |
||
| 4 | c6f88968 | Lars Kruse | |
| 5 | mongodb_conn - MongoDB Connection Count Plugin |
||
| 6 | 0a4891fc | Alban | |
| 7 | =head1 APPLICABLE SYSTEMS |
||
| 8 | |||
| 9 | c6f88968 | Lars Kruse | MongoDB 3.X and 4.X with pymongo installed. |
| 10 | 0a4891fc | Alban | |
| 11 | =head1 CONFIGURATION |
||
| 12 | |||
| 13 | c6f88968 | Lars Kruse | Default for host is 127.0.0.1 and port 27017 and will work without being defined: |
| 14 | 0a4891fc | Alban | |
| 15 | [mongodb_conn] |
||
| 16 | env.host 127.0.0.1 |
||
| 17 | env.port 27017 |
||
| 18 | env.username user |
||
| 19 | env.password P@55w0rd |
||
| 20 | |||
| 21 | =head1 AUTHOR |
||
| 22 | |||
| 23 | c6f88968 | Lars Kruse | Alban Espie-Guillon <alban.espie@alterway.fr> |
| 24 | |||
| 25 | based on Stefan Andersen <stefan@stefanandersen.dk> work. |
||
| 26 | 0a4891fc | Alban | |
| 27 | =head1 LICENSE |
||
| 28 | c6f88968 | Lars Kruse | The Beer Ware License (Revision 42) |
| 29 | <alban.espie@alterway.fr> wrote this file. As long |
||
| 30 | as you retain this notice you can do whatever you want |
||
| 31 | with this stuff. If we meet some day, and you think |
||
| 32 | this stuff is worth it, you can buy me a beer in return. |
||
| 33 | |||
| 34 | SPDX-License-Identifier: Beerware |
||
| 35 | |||
| 36 | =cut |
||
| 37 | 0a4891fc | Alban | """ |
| 38 | c6f88968 | Lars Kruse | |
| 39 | 0a4891fc | Alban | import os |
| 40 | import sys |
||
| 41 | import pymongo |
||
| 42 | |||
| 43 | |||
| 44 | def _get_connections(): |
||
| 45 | host = os.environ.get('host', '127.0.0.1')
|
||
| 46 | port = os.environ.get('port', 27017)
|
||
| 47 | username = os.environ.get('username', '')
|
||
| 48 | password = os.environ.get('password', '')
|
||
| 49 | conn = pymongo.MongoClient(host, int(port)) |
||
| 50 | if username: |
||
| 51 | connAuth = conn['admin'] |
||
| 52 | connAuth.authenticate(username, password) |
||
| 53 | |||
| 54 | """ cli : db.serverStatus().connections """ |
||
| 55 | conn_status = conn.admin.command("serverStatus")['connections']
|
||
| 56 | return conn_status |
||
| 57 | |||
| 58 | |||
| 59 | def run(): |
||
| 60 | connections = _get_connections() |
||
| 61 | 276169a6 | Alban | for c, v in connections.items(): |
| 62 | print(str(c) + ".value " + str(v)) |
||
| 63 | 0a4891fc | Alban | |
| 64 | |||
| 65 | def config(): |
||
| 66 | print("""
|
||
| 67 | graph_title MongoDB Connections Count |
||
| 68 | graph_vlabel Connections count |
||
| 69 | graph_category db |
||
| 70 | graph_args --base 1000 -l 0 |
||
| 71 | current.label current |
||
| 72 | current.draw AREASTACK |
||
| 73 | available.label available |
||
| 74 | available.draw AREASTACK |
||
| 75 | active.label active |
||
| 76 | active.draw AREASTACK |
||
| 77 | """) |
||
| 78 | |||
| 79 | |||
| 80 | if __name__ == "__main__": |
||
| 81 | if len(sys.argv) > 1 and sys.argv[1] == "config": |
||
| 82 | config() |
||
| 83 | else: |
||
| 84 | run() |
