sensu-plugins-mongodb-mrtrotl 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +1 -0
- data/LICENSE +22 -0
- data/README.md +27 -0
- data/bin/check-mongodb-metric.rb +144 -0
- data/bin/check-mongodb-query-count.rb +267 -0
- data/bin/check-mongodb.py +1644 -0
- data/bin/check-mongodb.rb +5 -0
- data/bin/metrics-mongodb-replication.rb +254 -0
- data/bin/metrics-mongodb.rb +133 -0
- data/lib/bson/__init__.py +1347 -0
- data/lib/bson/__pycache__/__init__.cpython-310.pyc +0 -0
- data/lib/bson/__pycache__/_helpers.cpython-310.pyc +0 -0
- data/lib/bson/__pycache__/binary.cpython-310.pyc +0 -0
- data/lib/bson/__pycache__/code.cpython-310.pyc +0 -0
- data/lib/bson/__pycache__/codec_options.cpython-310.pyc +0 -0
- data/lib/bson/__pycache__/dbref.cpython-310.pyc +0 -0
- data/lib/bson/__pycache__/decimal128.cpython-310.pyc +0 -0
- data/lib/bson/__pycache__/errors.cpython-310.pyc +0 -0
- data/lib/bson/__pycache__/int64.cpython-310.pyc +0 -0
- data/lib/bson/__pycache__/json_util.cpython-310.pyc +0 -0
- data/lib/bson/__pycache__/max_key.cpython-310.pyc +0 -0
- data/lib/bson/__pycache__/min_key.cpython-310.pyc +0 -0
- data/lib/bson/__pycache__/objectid.cpython-310.pyc +0 -0
- data/lib/bson/__pycache__/raw_bson.cpython-310.pyc +0 -0
- data/lib/bson/__pycache__/regex.cpython-310.pyc +0 -0
- data/lib/bson/__pycache__/son.cpython-310.pyc +0 -0
- data/lib/bson/__pycache__/timestamp.cpython-310.pyc +0 -0
- data/lib/bson/__pycache__/tz_util.cpython-310.pyc +0 -0
- data/lib/bson/_cbson.cpython-310-x86_64-linux-gnu.so +0 -0
- data/lib/bson/_helpers.py +41 -0
- data/lib/bson/binary.py +364 -0
- data/lib/bson/code.py +101 -0
- data/lib/bson/codec_options.py +414 -0
- data/lib/bson/codec_options.pyi +100 -0
- data/lib/bson/dbref.py +133 -0
- data/lib/bson/decimal128.py +314 -0
- data/lib/bson/errors.py +35 -0
- data/lib/bson/int64.py +39 -0
- data/lib/bson/json_util.py +874 -0
- data/lib/bson/max_key.py +55 -0
- data/lib/bson/min_key.py +55 -0
- data/lib/bson/objectid.py +286 -0
- data/lib/bson/py.typed +2 -0
- data/lib/bson/raw_bson.py +175 -0
- data/lib/bson/regex.py +135 -0
- data/lib/bson/son.py +208 -0
- data/lib/bson/timestamp.py +124 -0
- data/lib/bson/tz_util.py +52 -0
- data/lib/gridfs/__init__.py +1015 -0
- data/lib/gridfs/__pycache__/__init__.cpython-310.pyc +0 -0
- data/lib/gridfs/__pycache__/errors.cpython-310.pyc +0 -0
- data/lib/gridfs/__pycache__/grid_file.cpython-310.pyc +0 -0
- data/lib/gridfs/errors.py +33 -0
- data/lib/gridfs/grid_file.py +907 -0
- data/lib/gridfs/py.typed +2 -0
- data/lib/pymongo/__init__.py +185 -0
- data/lib/pymongo/__pycache__/__init__.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/_csot.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/aggregation.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/auth.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/auth_aws.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/bulk.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/change_stream.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/client_options.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/client_session.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/collation.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/collection.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/command_cursor.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/common.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/compression_support.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/cursor.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/daemon.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/database.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/driver_info.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/encryption.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/encryption_options.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/errors.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/event_loggers.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/hello.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/helpers.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/max_staleness_selectors.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/message.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/mongo_client.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/monitor.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/monitoring.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/network.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/ocsp_cache.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/ocsp_support.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/operations.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/periodic_executor.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/pool.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/pyopenssl_context.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/read_concern.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/read_preferences.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/response.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/results.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/saslprep.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/server.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/server_api.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/server_description.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/server_selectors.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/server_type.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/settings.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/socket_checker.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/srv_resolver.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/ssl_context.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/ssl_support.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/topology.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/topology_description.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/typings.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/uri_parser.cpython-310.pyc +0 -0
- data/lib/pymongo/__pycache__/write_concern.cpython-310.pyc +0 -0
- data/lib/pymongo/_cmessage.cpython-310-x86_64-linux-gnu.so +0 -0
- data/lib/pymongo/_csot.py +118 -0
- data/lib/pymongo/aggregation.py +229 -0
- data/lib/pymongo/auth.py +549 -0
- data/lib/pymongo/auth_aws.py +94 -0
- data/lib/pymongo/bulk.py +513 -0
- data/lib/pymongo/change_stream.py +457 -0
- data/lib/pymongo/client_options.py +302 -0
- data/lib/pymongo/client_session.py +1112 -0
- data/lib/pymongo/collation.py +224 -0
- data/lib/pymongo/collection.py +3204 -0
- data/lib/pymongo/command_cursor.py +353 -0
- data/lib/pymongo/common.py +984 -0
- data/lib/pymongo/compression_support.py +149 -0
- data/lib/pymongo/cursor.py +1345 -0
- data/lib/pymongo/daemon.py +141 -0
- data/lib/pymongo/database.py +1202 -0
- data/lib/pymongo/driver_info.py +42 -0
- data/lib/pymongo/encryption.py +884 -0
- data/lib/pymongo/encryption_options.py +221 -0
- data/lib/pymongo/errors.py +365 -0
- data/lib/pymongo/event_loggers.py +221 -0
- data/lib/pymongo/hello.py +219 -0
- data/lib/pymongo/helpers.py +259 -0
- data/lib/pymongo/max_staleness_selectors.py +114 -0
- data/lib/pymongo/message.py +1440 -0
- data/lib/pymongo/mongo_client.py +2144 -0
- data/lib/pymongo/monitor.py +440 -0
- data/lib/pymongo/monitoring.py +1801 -0
- data/lib/pymongo/network.py +311 -0
- data/lib/pymongo/ocsp_cache.py +87 -0
- data/lib/pymongo/ocsp_support.py +372 -0
- data/lib/pymongo/operations.py +507 -0
- data/lib/pymongo/periodic_executor.py +183 -0
- data/lib/pymongo/pool.py +1660 -0
- data/lib/pymongo/py.typed +2 -0
- data/lib/pymongo/pyopenssl_context.py +383 -0
- data/lib/pymongo/read_concern.py +75 -0
- data/lib/pymongo/read_preferences.py +609 -0
- data/lib/pymongo/response.py +109 -0
- data/lib/pymongo/results.py +217 -0
- data/lib/pymongo/saslprep.py +113 -0
- data/lib/pymongo/server.py +247 -0
- data/lib/pymongo/server_api.py +170 -0
- data/lib/pymongo/server_description.py +285 -0
- data/lib/pymongo/server_selectors.py +153 -0
- data/lib/pymongo/server_type.py +32 -0
- data/lib/pymongo/settings.py +159 -0
- data/lib/pymongo/socket_checker.py +104 -0
- data/lib/pymongo/srv_resolver.py +126 -0
- data/lib/pymongo/ssl_context.py +39 -0
- data/lib/pymongo/ssl_support.py +99 -0
- data/lib/pymongo/topology.py +890 -0
- data/lib/pymongo/topology_description.py +639 -0
- data/lib/pymongo/typings.py +39 -0
- data/lib/pymongo/uri_parser.py +624 -0
- data/lib/pymongo/write_concern.py +129 -0
- data/lib/pymongo-4.2.0.dist-info/INSTALLER +1 -0
- data/lib/pymongo-4.2.0.dist-info/LICENSE +201 -0
- data/lib/pymongo-4.2.0.dist-info/METADATA +250 -0
- data/lib/pymongo-4.2.0.dist-info/RECORD +167 -0
- data/lib/pymongo-4.2.0.dist-info/REQUESTED +0 -0
- data/lib/pymongo-4.2.0.dist-info/WHEEL +6 -0
- data/lib/pymongo-4.2.0.dist-info/top_level.txt +3 -0
- data/lib/sensu-plugins-mongodb/metrics.rb +391 -0
- data/lib/sensu-plugins-mongodb/version.rb +9 -0
- data/lib/sensu-plugins-mongodb.rb +1 -0
- metadata +407 -0
@@ -0,0 +1,167 @@
|
|
1
|
+
bson/__init__.py,sha256=JTRtbhWvz7K2xlCHTMaA3DSuYtPqoNZnM6FVHubHnHU,46733
|
2
|
+
bson/__pycache__/__init__.cpython-310.pyc,,
|
3
|
+
bson/__pycache__/_helpers.cpython-310.pyc,,
|
4
|
+
bson/__pycache__/binary.cpython-310.pyc,,
|
5
|
+
bson/__pycache__/code.cpython-310.pyc,,
|
6
|
+
bson/__pycache__/codec_options.cpython-310.pyc,,
|
7
|
+
bson/__pycache__/dbref.cpython-310.pyc,,
|
8
|
+
bson/__pycache__/decimal128.cpython-310.pyc,,
|
9
|
+
bson/__pycache__/errors.cpython-310.pyc,,
|
10
|
+
bson/__pycache__/int64.cpython-310.pyc,,
|
11
|
+
bson/__pycache__/json_util.cpython-310.pyc,,
|
12
|
+
bson/__pycache__/max_key.cpython-310.pyc,,
|
13
|
+
bson/__pycache__/min_key.cpython-310.pyc,,
|
14
|
+
bson/__pycache__/objectid.cpython-310.pyc,,
|
15
|
+
bson/__pycache__/raw_bson.cpython-310.pyc,,
|
16
|
+
bson/__pycache__/regex.cpython-310.pyc,,
|
17
|
+
bson/__pycache__/son.cpython-310.pyc,,
|
18
|
+
bson/__pycache__/timestamp.cpython-310.pyc,,
|
19
|
+
bson/__pycache__/tz_util.cpython-310.pyc,,
|
20
|
+
bson/_cbson.cpython-310-x86_64-linux-gnu.so,sha256=XSQ8z1uCVlFjsjgTEqpOtyMEDnkWr4WIHhbY-UT6GoE,301864
|
21
|
+
bson/_helpers.py,sha256=Oh1SO99jpUeYCxMmTr4fleVsWWMBUNn7KFNq19RIVZo,1338
|
22
|
+
bson/binary.py,sha256=1X7tKUNODZVGXnqHoQCZCZwoFr8lqD93CaLL2-znaOQ,12370
|
23
|
+
bson/code.py,sha256=T8YD83vOokTzEDs3iTdi0UXh3y6xBxw8mF9LaHwwS0U,3473
|
24
|
+
bson/codec_options.py,sha256=G-JWTOhyQJo82dFoGv1mhFfMp4uxkx7JjhIoZKVn7EI,15479
|
25
|
+
bson/codec_options.pyi,sha256=tzwo66QsN-_UIU1_vN0DEFKzYS1WPzE_pz_PHWXQ_zs,3331
|
26
|
+
bson/dbref.py,sha256=lsFYy2U6zElXrOD3Q5vkJnlAOts8PaGGDFpB2-xHioA,4772
|
27
|
+
bson/decimal128.py,sha256=l6ST39MipGkGrvWRe-9wvodS601stIvDWgLX1GfgyFI,10220
|
28
|
+
bson/errors.py,sha256=l2SBkC8gw4fWHtN3zoLtraBdT7xVkIlYEnYQ7llmnxc,1134
|
29
|
+
bson/int64.py,sha256=Vjj7fVTzrGjcZlCaG10Jf4JzP-ZW884B4RDUp3YcIj0,1159
|
30
|
+
bson/json_util.py,sha256=QyY9rFfbYn-jMUTHNITRvLBaboMs629zu0tVFTaGL04,34642
|
31
|
+
bson/max_key.py,sha256=R8FPJaf_sTQg4Qj94UX_T0rt1u25zcu2-de5d47MirY,1470
|
32
|
+
bson/min_key.py,sha256=OgZm4qXPSdLYFImWOawnLleLjcDHRmKPfx4ciCz4SeA,1470
|
33
|
+
bson/objectid.py,sha256=ZxRK91ZJIbfWcX8i7KTgjHAx1OhO4UCDmIq5w2DqRXI,9290
|
34
|
+
bson/py.typed,sha256=zwRNjZOV3leFzGdwfkbvGOfGbBoplIeeZu4g7d6P928,170
|
35
|
+
bson/raw_bson.py,sha256=gmNkL0dK3xbldCAk1zMRgFgMsBuk0_bT-xBi0kjjVqE,6684
|
36
|
+
bson/regex.py,sha256=UUp55tS7Tj1UzFEjs5KNUsnOuuB1uE517fsnM5HUkQA,4602
|
37
|
+
bson/son.py,sha256=CEmt4Wev9U9oB0g8q6hXsg8OJZxe6j8_zDq5JQiMvRQ,6449
|
38
|
+
bson/timestamp.py,sha256=OtfhvsEwgHmSpOVkUDKC9LKpJhh0O44sd3PmvaJ3aWU,4225
|
39
|
+
bson/tz_util.py,sha256=UQsE7-79lhm6nwrKVXNk8QKutWPfNdKGp_N7A0uTd4w,1726
|
40
|
+
gridfs/__init__.py,sha256=DkJYk4ipS2NeOpH8Iyyc5c6auiprsKjq4IV3WZ0_udk,38462
|
41
|
+
gridfs/__pycache__/__init__.cpython-310.pyc,,
|
42
|
+
gridfs/__pycache__/errors.cpython-310.pyc,,
|
43
|
+
gridfs/__pycache__/grid_file.cpython-310.pyc,,
|
44
|
+
gridfs/errors.py,sha256=Z7E-XkxtrWNfob3cTBSgeRlTvHcG02DCPv4X_EmvBkQ,1056
|
45
|
+
gridfs/grid_file.py,sha256=zLPocAtcNjCT043jyh96fo4gR04MmUStbSwxmbjHOgE,32724
|
46
|
+
gridfs/py.typed,sha256=zwRNjZOV3leFzGdwfkbvGOfGbBoplIeeZu4g7d6P928,170
|
47
|
+
pymongo-4.2.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
48
|
+
pymongo-4.2.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
49
|
+
pymongo-4.2.0.dist-info/METADATA,sha256=4rAoreCnUi8xjcXhmaCS1CcFhsnBDDFguu2HV1pdDdI,8413
|
50
|
+
pymongo-4.2.0.dist-info/RECORD,,
|
51
|
+
pymongo-4.2.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
52
|
+
pymongo-4.2.0.dist-info/WHEEL,sha256=AENPUwuTc6qB95Mrn5JB5boXegWw6oDhuwuuX0q_ONg,152
|
53
|
+
pymongo-4.2.0.dist-info/top_level.txt,sha256=OinVojDdOfo1Dsp-NRfrZdp6gcJJ4bPRq61vSg5vyAs,20
|
54
|
+
pymongo/__init__.py,sha256=6OmtvgajTmYhn4vQkYRa2Ffp2hpj4kj_H7_Tn4DxYVM,5410
|
55
|
+
pymongo/__pycache__/__init__.cpython-310.pyc,,
|
56
|
+
pymongo/__pycache__/_csot.cpython-310.pyc,,
|
57
|
+
pymongo/__pycache__/aggregation.cpython-310.pyc,,
|
58
|
+
pymongo/__pycache__/auth.cpython-310.pyc,,
|
59
|
+
pymongo/__pycache__/auth_aws.cpython-310.pyc,,
|
60
|
+
pymongo/__pycache__/bulk.cpython-310.pyc,,
|
61
|
+
pymongo/__pycache__/change_stream.cpython-310.pyc,,
|
62
|
+
pymongo/__pycache__/client_options.cpython-310.pyc,,
|
63
|
+
pymongo/__pycache__/client_session.cpython-310.pyc,,
|
64
|
+
pymongo/__pycache__/collation.cpython-310.pyc,,
|
65
|
+
pymongo/__pycache__/collection.cpython-310.pyc,,
|
66
|
+
pymongo/__pycache__/command_cursor.cpython-310.pyc,,
|
67
|
+
pymongo/__pycache__/common.cpython-310.pyc,,
|
68
|
+
pymongo/__pycache__/compression_support.cpython-310.pyc,,
|
69
|
+
pymongo/__pycache__/cursor.cpython-310.pyc,,
|
70
|
+
pymongo/__pycache__/daemon.cpython-310.pyc,,
|
71
|
+
pymongo/__pycache__/database.cpython-310.pyc,,
|
72
|
+
pymongo/__pycache__/driver_info.cpython-310.pyc,,
|
73
|
+
pymongo/__pycache__/encryption.cpython-310.pyc,,
|
74
|
+
pymongo/__pycache__/encryption_options.cpython-310.pyc,,
|
75
|
+
pymongo/__pycache__/errors.cpython-310.pyc,,
|
76
|
+
pymongo/__pycache__/event_loggers.cpython-310.pyc,,
|
77
|
+
pymongo/__pycache__/hello.cpython-310.pyc,,
|
78
|
+
pymongo/__pycache__/helpers.cpython-310.pyc,,
|
79
|
+
pymongo/__pycache__/max_staleness_selectors.cpython-310.pyc,,
|
80
|
+
pymongo/__pycache__/message.cpython-310.pyc,,
|
81
|
+
pymongo/__pycache__/mongo_client.cpython-310.pyc,,
|
82
|
+
pymongo/__pycache__/monitor.cpython-310.pyc,,
|
83
|
+
pymongo/__pycache__/monitoring.cpython-310.pyc,,
|
84
|
+
pymongo/__pycache__/network.cpython-310.pyc,,
|
85
|
+
pymongo/__pycache__/ocsp_cache.cpython-310.pyc,,
|
86
|
+
pymongo/__pycache__/ocsp_support.cpython-310.pyc,,
|
87
|
+
pymongo/__pycache__/operations.cpython-310.pyc,,
|
88
|
+
pymongo/__pycache__/periodic_executor.cpython-310.pyc,,
|
89
|
+
pymongo/__pycache__/pool.cpython-310.pyc,,
|
90
|
+
pymongo/__pycache__/pyopenssl_context.cpython-310.pyc,,
|
91
|
+
pymongo/__pycache__/read_concern.cpython-310.pyc,,
|
92
|
+
pymongo/__pycache__/read_preferences.cpython-310.pyc,,
|
93
|
+
pymongo/__pycache__/response.cpython-310.pyc,,
|
94
|
+
pymongo/__pycache__/results.cpython-310.pyc,,
|
95
|
+
pymongo/__pycache__/saslprep.cpython-310.pyc,,
|
96
|
+
pymongo/__pycache__/server.cpython-310.pyc,,
|
97
|
+
pymongo/__pycache__/server_api.cpython-310.pyc,,
|
98
|
+
pymongo/__pycache__/server_description.cpython-310.pyc,,
|
99
|
+
pymongo/__pycache__/server_selectors.cpython-310.pyc,,
|
100
|
+
pymongo/__pycache__/server_type.cpython-310.pyc,,
|
101
|
+
pymongo/__pycache__/settings.cpython-310.pyc,,
|
102
|
+
pymongo/__pycache__/socket_checker.cpython-310.pyc,,
|
103
|
+
pymongo/__pycache__/srv_resolver.cpython-310.pyc,,
|
104
|
+
pymongo/__pycache__/ssl_context.cpython-310.pyc,,
|
105
|
+
pymongo/__pycache__/ssl_support.cpython-310.pyc,,
|
106
|
+
pymongo/__pycache__/topology.cpython-310.pyc,,
|
107
|
+
pymongo/__pycache__/topology_description.cpython-310.pyc,,
|
108
|
+
pymongo/__pycache__/typings.cpython-310.pyc,,
|
109
|
+
pymongo/__pycache__/uri_parser.cpython-310.pyc,,
|
110
|
+
pymongo/__pycache__/write_concern.cpython-310.pyc,,
|
111
|
+
pymongo/_cmessage.cpython-310-x86_64-linux-gnu.so,sha256=pKNxs7PJLiHueagnmznLorp55IjGeK4uPZt-6sATh8M,99120
|
112
|
+
pymongo/_csot.py,sha256=5vqMq_YT3P5xkcOSAE0Gu4I-vmQbTiTgA_MZzPctovY,3596
|
113
|
+
pymongo/aggregation.py,sha256=oeydGOGSLgKXv0KwBto8eGyjvnvRTuntvLk-Lm2XmSw,8134
|
114
|
+
pymongo/auth.py,sha256=hPXb0ogf8fbsG_irz_mJu2RqeIWt-DIsyD03DIKhUKc,19908
|
115
|
+
pymongo/auth_aws.py,sha256=6kB1iVbss7WBk_5pecyEbQOLWzTDOUZPuw1TRbdH7Ls,3176
|
116
|
+
pymongo/bulk.py,sha256=NXcw6Ymyds7RnIia8cH8F10KoXt-qzkhnWkdK8rhVlE,18956
|
117
|
+
pymongo/change_stream.py,sha256=HkUvB31rKlc5YFJomjFnYOHfrR3RqhgDr8VdSGCka6I,17427
|
118
|
+
pymongo/client_options.py,sha256=MlEWAHko_dQmfa1uyk_aGFTQ7gjdv0TxjSUQOUIMyKY,11023
|
119
|
+
pymongo/client_session.py,sha256=dOjSOIIGuO_tDl69yOA8H1QQbjvfeVdVTE6LiQt2c78,42301
|
120
|
+
pymongo/collation.py,sha256=PEXG_JP5bx7f5qT7Ppedeo3Zw1DyDW-BIZGSI2ZupHQ,7994
|
121
|
+
pymongo/collection.py,sha256=idGP0VotcDPPLzY4kQmpH0rDwMTSU1RDZenh5mIGloI,129754
|
122
|
+
pymongo/command_cursor.py,sha256=Rpmez20ArNmJe58d78PrO3tKsgY-aBXty-EEmB1FRtY,12665
|
123
|
+
pymongo/common.py,sha256=eqhII-sbe_8jUGRU2K-X6OIbf2PWmbPcuZhMfronWVo,34390
|
124
|
+
pymongo/compression_support.py,sha256=SMpkXcNoUIXWa6Vxb92gm3YZD1RJGJhKJF48NVZv5QE,4694
|
125
|
+
pymongo/cursor.py,sha256=oK7ESwxEjbZXl5U_eNCvASgeNDPPXM_ko8xP6olkiYA,49425
|
126
|
+
pymongo/daemon.py,sha256=1TOHS2h2ZEJJ_OJnqVlI4EzwDxTdjaBFGGi6Orh3hdE,5453
|
127
|
+
pymongo/database.py,sha256=I4yoZN5VtfjQquXJ69yOubaQvOABzrKjqdafIPmwd90,48404
|
128
|
+
pymongo/driver_info.py,sha256=XWubQknxkoP_REpUaQoIypKeAtoVTJVxxlIp-lgFJ1s,1715
|
129
|
+
pymongo/encryption.py,sha256=B4rMpAZnftLhz2vmlmyrUqJ7LAM35Tf9Rk_XFSOR6y8,34267
|
130
|
+
pymongo/encryption_options.py,sha256=hTmWX5FBUb-OuQAhlzq7zOosan37W11ajDWjQNskM4E,11424
|
131
|
+
pymongo/errors.py,sha256=jYcXVdq2Xgv5tzuIBcTN1uTE47soppuzBrs3Afe_x4g,10893
|
132
|
+
pymongo/event_loggers.py,sha256=42vSmA4KNQX5Baq-sYkGD3nekAK3pTblGEt_NbJk-vo,9062
|
133
|
+
pymongo/hello.py,sha256=9wTswW8XYVp-rnoXMUyA90JdcTP_-hnVacGEK47RsJQ,6556
|
134
|
+
pymongo/helpers.py,sha256=moCM_GKi8w8UhH33JOhw8WDuJI1gzDoelG-S1xtrffo,8655
|
135
|
+
pymongo/max_staleness_selectors.py,sha256=H-p0cPFZ2S2MrT5m6O1Z1H2CyxAetoHY8eOf3s85hVc,4254
|
136
|
+
pymongo/message.py,sha256=hXv1D_60AKF3IAcjgUxwk9SuiFv_nTZCz4CA4JWnIUA,47240
|
137
|
+
pymongo/mongo_client.py,sha256=3EruA9Z0_TzyA6G5TmofqJxHd-CnL3q7OOeYlKftQUg,94464
|
138
|
+
pymongo/monitor.py,sha256=wxM2OcP4TWr2lxZ-f0Fp24Iw32MkCmySy0Svv69sJUA,15231
|
139
|
+
pymongo/monitoring.py,sha256=j9btPcrUSUebsr0rJMmHYguqutAGcGrxnsuWxtb9qM8,60061
|
140
|
+
pymongo/network.py,sha256=yoefW9H8JOacbwCC3Bi1_B0rKU4nCwATCGbf70nvTTs,11876
|
141
|
+
pymongo/ocsp_cache.py,sha256=x2k9RFun7vYeVZEnOBbmQhoDm3ZK5KySE1WRhbSLzqg,3131
|
142
|
+
pymongo/ocsp_support.py,sha256=8EFVA2xaUy6_6gp8e29gH97VlO7kFhTBInjsq5tGvb0,15304
|
143
|
+
pymongo/operations.py,sha256=l4Zko673kupq7B6QrcJlImIrxV_1j56VxiylkyxLR6k,18318
|
144
|
+
pymongo/periodic_executor.py,sha256=91DEAH92meICMT8kK9k4tMHUISYp4TmhxO6h9j9ucbI,6074
|
145
|
+
pymongo/pool.py,sha256=q9yaW3wmnTWGDOkFSwmM8xFZBdiKugWl1fC5O4SDOD0,62768
|
146
|
+
pymongo/py.typed,sha256=zwRNjZOV3leFzGdwfkbvGOfGbBoplIeeZu4g7d6P928,170
|
147
|
+
pymongo/pyopenssl_context.py,sha256=irnxyUM3NMy5MCOsjoaso5r1ICz9pVJR8hT_1wbHCkM,15204
|
148
|
+
pymongo/read_concern.py,sha256=qfmZCFgRr-agj3UFspas2LRHW07SMDbMslllvDf-MAU,2393
|
149
|
+
pymongo/read_preferences.py,sha256=ae_rIlaO9BWe7D3D0ByAvbTo2Yp1nK7-Y3NOZmYxsM4,20655
|
150
|
+
pymongo/response.py,sha256=QZ6HXkFfBBLFtfIUkJrXcBMz4L5V-jdhrmQyYAxfS8A,3705
|
151
|
+
pymongo/results.py,sha256=CE4QbcvECC25mcw764tF3S837BR0uz_lpJoiy4tv8ps,7647
|
152
|
+
pymongo/saslprep.py,sha256=X6Nsog6--NRv3h-WOGB-Ukqck6LtQJGwjvHcswXtIbA,4339
|
153
|
+
pymongo/server.py,sha256=fPw8hFY-whcYGYvMOhpk5hyj4F1TlGCbreOctk8rr6Y,8797
|
154
|
+
pymongo/server_api.py,sha256=ifiON80cL_ql8yqBKL7ZsMJv6x2saMls70MUOTDYL_w,5926
|
155
|
+
pymongo/server_description.py,sha256=1Ql5vAD0NIqAR7lnDQZFBPF7tWnm5URI8XTEtQv0TQ0,9072
|
156
|
+
pymongo/server_selectors.py,sha256=zbGq26FZCjfdZYp_QoBmM4ZagwDlmSAZq-sC67DKg-4,5100
|
157
|
+
pymongo/server_type.py,sha256=Qq4_UHR8D7Tm7PV5NsEdeJAJf_6M0vhfkdfcXebi5hY,888
|
158
|
+
pymongo/settings.py,sha256=GeD-OXkH1ofbRW2Qa6BrQXkyZ1U_l4HN3tEeIHzSEOA,4993
|
159
|
+
pymongo/socket_checker.py,sha256=W1VxGOirXH_C5KVzXMKjngaln7bWvsSUgwCI_vbdpgg,4137
|
160
|
+
pymongo/srv_resolver.py,sha256=4ruSCNiazaKIxmJ3oklzl4l5RQhT8WmE5iRJ2HHxlKc,4348
|
161
|
+
pymongo/ssl_context.py,sha256=ZOnO-YOoLqbbp2g5mJjPMI1z8kJgydutKENUJiOKMAk,1390
|
162
|
+
pymongo/ssl_support.py,sha256=WzqSrh2fFZdsDx4WshrkNXbiCoIYp5Lxea9j1_ACrms,3686
|
163
|
+
pymongo/topology.py,sha256=f_kA5HotrjXP8uMKQoAzna9xpcvaPWNCgdT-89Hp2QY,35893
|
164
|
+
pymongo/topology_description.py,sha256=jsTNnO1XZNo9qyADcmzV9AHHGu3zpzTd9tSgLkchMjA,24862
|
165
|
+
pymongo/typings.py,sha256=WFPkoyEPdu4lB7bHVxkVszh3WjnkwBzkgHNWGPHTwZE,1186
|
166
|
+
pymongo/uri_parser.py,sha256=bhQR2Ot3K5vupT2m4bBdONwWlsQbb-j0JxZHTBtc_hc,23305
|
167
|
+
pymongo/write_concern.py,sha256=l2Lew3kXEdBiaYtVa8ZdY9SqyeO9XyVrpHhCgpK64ZA,4982
|
File without changes
|
@@ -0,0 +1,391 @@
|
|
1
|
+
require 'mongo'
|
2
|
+
include Mongo
|
3
|
+
|
4
|
+
module SensuPluginsMongoDB
|
5
|
+
class Metrics
|
6
|
+
# Initializes a Metrics collector.
|
7
|
+
#
|
8
|
+
# @param config [Mesh]
|
9
|
+
# the config object parsed from the command line.
|
10
|
+
# Must include: :host, :port, :user, :password, :debug
|
11
|
+
def initialize(config)
|
12
|
+
@config = config
|
13
|
+
@connected = false
|
14
|
+
@db = nil
|
15
|
+
@mongo_client = nil
|
16
|
+
end
|
17
|
+
|
18
|
+
# Connects to a mongo database.
|
19
|
+
#
|
20
|
+
# @param db_name [String] the name of the db to connect to.
|
21
|
+
def connect_mongo_db(db_name)
|
22
|
+
if @connected
|
23
|
+
raise 'Already connected to a database'
|
24
|
+
end
|
25
|
+
|
26
|
+
@mongo_client = get_mongo_client(db_name)
|
27
|
+
|
28
|
+
@db = @mongo_client.database
|
29
|
+
end
|
30
|
+
|
31
|
+
# Fetches a document from the mongo db.
|
32
|
+
#
|
33
|
+
# @param command [Mesh] the command to search documents with.
|
34
|
+
# @return [Mesh, nil] the first document or nil.
|
35
|
+
def get_mongo_doc(command)
|
36
|
+
unless @connected
|
37
|
+
raise 'Cannot fetch documents before connecting.'
|
38
|
+
end
|
39
|
+
unless @db
|
40
|
+
raise 'Cannot fetch documents without a db.'
|
41
|
+
end
|
42
|
+
|
43
|
+
rs = @db.command(command)
|
44
|
+
unless rs.successful?
|
45
|
+
return nil
|
46
|
+
end
|
47
|
+
|
48
|
+
rs.documents[0]
|
49
|
+
end
|
50
|
+
|
51
|
+
# Checks if the connected node is the master node.
|
52
|
+
#
|
53
|
+
# @return [true, false] true when the node is a master node.
|
54
|
+
def master?
|
55
|
+
result = false
|
56
|
+
begin
|
57
|
+
@is_master = get_mongo_doc('isMaster' => 1)
|
58
|
+
unless @is_master.nil?
|
59
|
+
result = @is_master['ok'] == 1 && @is_master['ismaster']
|
60
|
+
end
|
61
|
+
rescue StandardError => e
|
62
|
+
if @config[:debug]
|
63
|
+
puts 'Error checking isMaster: ' + e.message
|
64
|
+
puts e.backtrace.inspect
|
65
|
+
end
|
66
|
+
end
|
67
|
+
result
|
68
|
+
end
|
69
|
+
|
70
|
+
# Fetches the status of the server (which includes the metrics).
|
71
|
+
#
|
72
|
+
# @return [Mash, nil] the document showing the server status or nil.
|
73
|
+
def server_status
|
74
|
+
status = get_mongo_doc('serverStatus' => 1)
|
75
|
+
return nil if status.nil? || status['ok'] != 1
|
76
|
+
|
77
|
+
status
|
78
|
+
rescue StandardError => e
|
79
|
+
if @debug
|
80
|
+
puts 'Error checking serverStatus: ' + e.message
|
81
|
+
puts e.backtrace.inspect
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
# Fetches the replicaset status of the server (which includes the metrics).
|
86
|
+
#
|
87
|
+
# @return [Mash, nil] the document showing the replicaset status or nil.
|
88
|
+
def replicaset_status
|
89
|
+
status = get_mongo_doc('replSetGetStatus' => 1)
|
90
|
+
return nil if status.nil?
|
91
|
+
|
92
|
+
status
|
93
|
+
rescue StandardError => e
|
94
|
+
if @debug
|
95
|
+
puts 'Error checking replSetGetStatus: ' + e.message
|
96
|
+
puts e.backtrace.inspect
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
# Fetches metrics for the server we are connected to.
|
101
|
+
#
|
102
|
+
# @return [Mash] the metrics for the server.
|
103
|
+
# rubocop:disable Metrics/AbcSize
|
104
|
+
def server_metrics
|
105
|
+
server_status = self.server_status
|
106
|
+
replicaset_status = self.replicaset_status
|
107
|
+
server_metrics = {}
|
108
|
+
# Handle versions like "2.6.11-pre" etc
|
109
|
+
mongo_version = server_status['version'].gsub(/[^0-9\.]/i, '')
|
110
|
+
|
111
|
+
server_metrics['lock.ratio'] = sprintf('%.5f', server_status['globalLock']['ratio']).to_s unless server_status['globalLock']['ratio'].nil?
|
112
|
+
|
113
|
+
# Asserts
|
114
|
+
asserts = server_status['asserts']
|
115
|
+
server_metrics['asserts.warnings'] = asserts['warning']
|
116
|
+
server_metrics['asserts.errors'] = asserts['msg']
|
117
|
+
server_metrics['asserts.regular'] = asserts['regular']
|
118
|
+
server_metrics['asserts.user'] = asserts['user']
|
119
|
+
server_metrics['asserts.rollovers'] = asserts['rollovers']
|
120
|
+
|
121
|
+
# Background flushing
|
122
|
+
if server_status.key?('backgroundFlushing')
|
123
|
+
bg_flushing = server_status['backgroundFlushing']
|
124
|
+
server_metrics['backgroundFlushing.flushes'] = bg_flushing['flushes']
|
125
|
+
server_metrics['backgroundFlushing.total_ms'] = bg_flushing['total_ms']
|
126
|
+
server_metrics['backgroundFlushing.average_ms'] = bg_flushing['average_ms']
|
127
|
+
server_metrics['backgroundFlushing.last_ms'] = bg_flushing['last_ms']
|
128
|
+
end
|
129
|
+
|
130
|
+
# Connections
|
131
|
+
connections = server_status['connections']
|
132
|
+
server_metrics['connections.current'] = connections['current']
|
133
|
+
server_metrics['connections.available'] = connections['available']
|
134
|
+
server_metrics['connections.totalCreated'] = connections['totalCreated']
|
135
|
+
|
136
|
+
# Cursors (use new metrics.cursor from mongo 2.6+)
|
137
|
+
if Gem::Version.new(mongo_version) < Gem::Version.new('2.6.0')
|
138
|
+
cursors = server_status['cursors']
|
139
|
+
server_metrics['clientCursors.size'] = cursors['clientCursors_size']
|
140
|
+
server_metrics['cursors.timedOut'] = cursors['timedOut']
|
141
|
+
|
142
|
+
# Metric names match the version 2.6+ format for standardization!
|
143
|
+
server_metrics['cursors.open.NoTimeout'] = cursors['totalNoTimeout']
|
144
|
+
server_metrics['cursors.open.pinned'] = cursors['pinned']
|
145
|
+
server_metrics['cursors.open.total'] = cursors['totalOpen']
|
146
|
+
else
|
147
|
+
cursors = server_status['metrics']['cursor']
|
148
|
+
server_metrics['cursors.timedOut'] = cursors['timedOut']
|
149
|
+
# clientCursors.size has been replaced by cursors.open.total
|
150
|
+
|
151
|
+
open = cursors['open']
|
152
|
+
server_metrics['cursors.open.noTimeout'] = open['noTimeout']
|
153
|
+
server_metrics['cursors.open.pinned'] = open['pinned']
|
154
|
+
server_metrics['cursors.open.total'] = open['total']
|
155
|
+
|
156
|
+
unless Gem::Version.new(mongo_version) < Gem::Version.new('3.0.0')
|
157
|
+
server_metrics['cursors.open.multiTarget'] = open['multiTarget']
|
158
|
+
server_metrics['cursors.open.singleTarget'] = open['singleTarget']
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
# Database Sizes
|
163
|
+
@mongo_client.database_names.each do |name|
|
164
|
+
@mongo_client = @mongo_client.use(name)
|
165
|
+
db = @mongo_client.database
|
166
|
+
result = db.command(dbstats: 1).documents.first
|
167
|
+
server_metrics["databaseSizes.#{name}.collections"] = result['collections']
|
168
|
+
server_metrics["databaseSizes.#{name}.objects"] = result['objects']
|
169
|
+
server_metrics["databaseSizes.#{name}.avgObjSize"] = result['avgObjSize']
|
170
|
+
server_metrics["databaseSizes.#{name}.dataSize"] = result['dataSize']
|
171
|
+
server_metrics["databaseSizes.#{name}.storageSize"] = result['storageSize']
|
172
|
+
server_metrics["databaseSizes.#{name}.numExtents"] = result['numExtents']
|
173
|
+
server_metrics["databaseSizes.#{name}.indexes"] = result['indexes']
|
174
|
+
server_metrics["databaseSizes.#{name}.indexSize"] = result['indexSize']
|
175
|
+
server_metrics["databaseSizes.#{name}.fileSize"] = result['fileSize']
|
176
|
+
server_metrics["databaseSizes.#{name}.nsSizeMB"] = result['nsSizeMB']
|
177
|
+
end
|
178
|
+
# Reset back to previous database
|
179
|
+
@mongo_client = @mongo_client.use(@db.name)
|
180
|
+
|
181
|
+
# Journaling (durability)
|
182
|
+
if server_status.key?('dur')
|
183
|
+
dur = server_status['dur']
|
184
|
+
server_metrics['journal.commits'] = dur['commits']
|
185
|
+
server_metrics['journaled_MB'] = dur['journaledMB']
|
186
|
+
server_metrics['journal.timeMs.writeToDataFiles'] = dur['timeMs']['writeToDataFiles']
|
187
|
+
server_metrics['journal.writeToDataFilesMB'] = dur['writeToDataFilesMB']
|
188
|
+
server_metrics['journal.compression'] = dur['compression']
|
189
|
+
server_metrics['journal.commitsInWriteLock'] = dur['commitsInWriteLock']
|
190
|
+
server_metrics['journal.timeMs.dt'] = dur['timeMs']['dt']
|
191
|
+
server_metrics['journal.timeMs.prepLogBuffer'] = dur['timeMs']['prepLogBuffer']
|
192
|
+
server_metrics['journal.timeMs.writeToJournal'] = dur['timeMs']['writeToJournal']
|
193
|
+
server_metrics['journal.timeMs.remapPrivateView'] = dur['timeMs']['remapPrivateView']
|
194
|
+
end
|
195
|
+
|
196
|
+
# Extra info
|
197
|
+
extra_info = server_status['extra_info']
|
198
|
+
server_metrics['mem.heap_usage_bytes'] = extra_info['heap_usage_bytes']
|
199
|
+
server_metrics['mem.pageFaults'] = extra_info['page_faults']
|
200
|
+
|
201
|
+
# Global Lock
|
202
|
+
global_lock = server_status['globalLock']
|
203
|
+
server_metrics['lock.totalTime'] = global_lock['totalTime']
|
204
|
+
server_metrics['lock.queue_total'] = global_lock['currentQueue']['total']
|
205
|
+
server_metrics['lock.queue_readers'] = global_lock['currentQueue']['readers']
|
206
|
+
server_metrics['lock.queue_writers'] = global_lock['currentQueue']['writers']
|
207
|
+
server_metrics['lock.clients_total'] = global_lock['activeClients']['total']
|
208
|
+
server_metrics['lock.clients_readers'] = global_lock['activeClients']['readers']
|
209
|
+
server_metrics['lock.clients_writers'] = global_lock['activeClients']['writers']
|
210
|
+
|
211
|
+
# Index counters
|
212
|
+
if Gem::Version.new(mongo_version) < Gem::Version.new('3.0.0')
|
213
|
+
index_counters = server_status['indexCounters']
|
214
|
+
index_counters = server_status['indexCounters']['btree'] unless server_status['indexCounters']['btree'].nil?
|
215
|
+
|
216
|
+
server_metrics['indexes.missRatio'] = sprintf('%.5f', index_counters['missRatio']).to_s
|
217
|
+
server_metrics['indexes.hits'] = index_counters['hits']
|
218
|
+
server_metrics['indexes.misses'] = index_counters['misses']
|
219
|
+
server_metrics['indexes.accesses'] = index_counters['accesses']
|
220
|
+
server_metrics['indexes.resets'] = index_counters['resets']
|
221
|
+
end
|
222
|
+
|
223
|
+
# Locks (from mongo 3.0+ only)
|
224
|
+
unless Gem::Version.new(mongo_version) < Gem::Version.new('3.0.0')
|
225
|
+
locks = server_status['locks']
|
226
|
+
lock_namespaces = %w[
|
227
|
+
Collection Global Database Metadata
|
228
|
+
MMAPV1Journal oplog
|
229
|
+
]
|
230
|
+
lock_dimentions = %w[
|
231
|
+
acquireCount acquireWaitCount
|
232
|
+
timeAcquiringMicros deadlockCount
|
233
|
+
]
|
234
|
+
|
235
|
+
lock_namespaces.each do |ns|
|
236
|
+
lock_dimentions.each do |dm|
|
237
|
+
next unless locks.key?(ns) && locks[ns].key?(dm)
|
238
|
+
|
239
|
+
lock = locks[ns][dm]
|
240
|
+
server_metrics["locks.#{ns}.#{dm}_r"] = lock['r'] if lock.key?('r')
|
241
|
+
server_metrics["locks.#{ns}.#{dm}_w"] = lock['r'] if lock.key?('w')
|
242
|
+
server_metrics["locks.#{ns}.#{dm}_R"] = lock['r'] if lock.key?('R')
|
243
|
+
server_metrics["locks.#{ns}.#{dm}_W"] = lock['r'] if lock.key?('W')
|
244
|
+
end
|
245
|
+
end
|
246
|
+
end
|
247
|
+
|
248
|
+
# Network
|
249
|
+
network = server_status['network']
|
250
|
+
server_metrics['network.bytesIn'] = network['bytesIn']
|
251
|
+
server_metrics['network.bytesOut'] = network['bytesOut']
|
252
|
+
server_metrics['network.numRequests'] = network['numRequests']
|
253
|
+
|
254
|
+
# Opcounters
|
255
|
+
opcounters = server_status['opcounters']
|
256
|
+
server_metrics['opcounters.insert'] = opcounters['insert']
|
257
|
+
server_metrics['opcounters.query'] = opcounters['query']
|
258
|
+
server_metrics['opcounters.update'] = opcounters['update']
|
259
|
+
server_metrics['opcounters.delete'] = opcounters['delete']
|
260
|
+
server_metrics['opcounters.getmore'] = opcounters['getmore']
|
261
|
+
server_metrics['opcounters.command'] = opcounters['command']
|
262
|
+
|
263
|
+
# Opcounters Replication
|
264
|
+
opcounters_repl = server_status['opcountersRepl']
|
265
|
+
server_metrics['opcountersRepl.insert'] = opcounters_repl['insert']
|
266
|
+
server_metrics['opcountersRepl.query'] = opcounters_repl['query']
|
267
|
+
server_metrics['opcountersRepl.update'] = opcounters_repl['update']
|
268
|
+
server_metrics['opcountersRepl.delete'] = opcounters_repl['delete']
|
269
|
+
server_metrics['opcountersRepl.getmore'] = opcounters_repl['getmore']
|
270
|
+
server_metrics['opcountersRepl.command'] = opcounters_repl['command']
|
271
|
+
|
272
|
+
# Memory
|
273
|
+
mem = server_status['mem']
|
274
|
+
server_metrics['mem.residentMb'] = mem['resident']
|
275
|
+
server_metrics['mem.virtualMb'] = mem['virtual']
|
276
|
+
server_metrics['mem.mapped'] = mem['mapped']
|
277
|
+
server_metrics['mem.mappedWithJournal'] = mem['mappedWithJournal']
|
278
|
+
|
279
|
+
# Metrics (documents)
|
280
|
+
document = server_status['metrics']['document']
|
281
|
+
server_metrics['metrics.document.deleted'] = document['deleted']
|
282
|
+
server_metrics['metrics.document.inserted'] = document['inserted']
|
283
|
+
server_metrics['metrics.document.returned'] = document['returned']
|
284
|
+
server_metrics['metrics.document.updated'] = document['updated']
|
285
|
+
|
286
|
+
# Metrics (getLastError)
|
287
|
+
get_last_error = server_status['metrics']['getLastError']
|
288
|
+
server_metrics['metrics.getLastError.wtime_num'] = get_last_error['wtime']['num']
|
289
|
+
server_metrics['metrics.getLastError.wtime_totalMillis'] = get_last_error['wtime']['totalMillis']
|
290
|
+
server_metrics['metrics.getLastError.wtimeouts'] = get_last_error['wtimeouts']
|
291
|
+
|
292
|
+
# Metrics (operation)
|
293
|
+
operation = server_status['metrics']['operation']
|
294
|
+
server_metrics['metrics.operation.fastmod'] = operation['fastmod']
|
295
|
+
server_metrics['metrics.operation.idhack'] = operation['idhack']
|
296
|
+
server_metrics['metrics.operation.scanAndOrder'] = operation['scanAndOrder']
|
297
|
+
|
298
|
+
# Metrics (operation)
|
299
|
+
query_executor = server_status['metrics']['queryExecutor']
|
300
|
+
server_metrics['metrics.queryExecutor.scanned'] = query_executor['scanned']
|
301
|
+
server_metrics['metrics.queryExecutor.scannedObjects'] = query_executor['scannedObjects']
|
302
|
+
server_metrics['metrics.record.moves'] = server_status['metrics']['record']['moves']
|
303
|
+
|
304
|
+
# Metrics (repl)
|
305
|
+
repl = server_status['metrics']['repl']
|
306
|
+
server_metrics['metrics.repl.apply.batches_num'] = repl['apply']['batches']['num']
|
307
|
+
server_metrics['metrics.repl.apply.batches_totalMillis'] = repl['apply']['batches']['totalMillis']
|
308
|
+
server_metrics['metrics.repl.apply.ops'] = repl['apply']['ops']
|
309
|
+
server_metrics['metrics.repl.buffer.count'] = repl['buffer']['count']
|
310
|
+
server_metrics['metrics.repl.buffer.maxSizeBytes'] = repl['buffer']['maxSizeBytes']
|
311
|
+
server_metrics['metrics.repl.buffer.sizeBytes'] = repl['buffer']['sizeBytes']
|
312
|
+
server_metrics['metrics.repl.network.bytes'] = repl['network']['bytes']
|
313
|
+
server_metrics['metrics.repl.network.getmores_num'] = repl['network']['getmores']['num']
|
314
|
+
server_metrics['metrics.repl.network.getmores_totalMillis'] = repl['network']['getmores']['totalMillis']
|
315
|
+
server_metrics['metrics.repl.network.ops'] = repl['network']['ops']
|
316
|
+
server_metrics['metrics.repl.network.readersCreated'] = repl['network']['readersCreated']
|
317
|
+
|
318
|
+
if Gem::Version.new(mongo_version) <= Gem::Version.new('4.0.0')
|
319
|
+
server_metrics['metrics.repl.preload.docs_num'] = repl['preload']['docs']['num']
|
320
|
+
server_metrics['metrics.repl.preload.docs_totalMillis'] = repl['preload']['docs']['totalMillis']
|
321
|
+
server_metrics['metrics.repl.preload.indexes_num'] = repl['preload']['indexes']['num']
|
322
|
+
server_metrics['metrics.repl.preload.indexes_totalMillis'] = repl['preload']['indexes']['totalMillis']
|
323
|
+
end
|
324
|
+
|
325
|
+
# Metrics (replicaset status)
|
326
|
+
# MongoDB will fail if not running with --replSet, hence the check for nil
|
327
|
+
unless replicaset_status.nil?
|
328
|
+
server_metrics['metrics.replicaset.state'] = replicaset_status['myState']
|
329
|
+
end
|
330
|
+
|
331
|
+
# Metrics (storage)
|
332
|
+
if Gem::Version.new(mongo_version) <= Gem::Version.new('4.0.0')
|
333
|
+
freelist = server_status['metrics']['storage']['freelist']
|
334
|
+
server_metrics['metrics.storage.freelist.search_bucketExhauseted'] = freelist['search']['bucketExhausted']
|
335
|
+
server_metrics['metrics.storage.freelist.search_requests'] = freelist['search']['requests']
|
336
|
+
server_metrics['metrics.storage.freelist.search_scanned'] = freelist['search']['scanned']
|
337
|
+
end
|
338
|
+
|
339
|
+
# Metrics (ttl)
|
340
|
+
ttl = server_status['metrics']['ttl']
|
341
|
+
server_metrics['metrics.ttl.deletedDocuments'] = ttl['deletedDocuments']
|
342
|
+
server_metrics['metrics.ttl.passes'] = ttl['passes']
|
343
|
+
|
344
|
+
# Return metrics map.
|
345
|
+
# MongoDB returns occasional nils and floats as {"floatApprox": x}.
|
346
|
+
# Clean up the results once here to avoid per-metric logic.
|
347
|
+
clean_metrics = {}
|
348
|
+
server_metrics.each do |k, v|
|
349
|
+
next if v.nil?
|
350
|
+
|
351
|
+
if v.is_a?(Hash) && v.key?('floatApprox')
|
352
|
+
v = v['floatApprox']
|
353
|
+
end
|
354
|
+
clean_metrics[k] = v
|
355
|
+
end
|
356
|
+
clean_metrics
|
357
|
+
end
|
358
|
+
# rubocop:enable Metrics/AbcSize
|
359
|
+
|
360
|
+
private
|
361
|
+
|
362
|
+
def get_mongo_client(db_name)
|
363
|
+
@connected = true
|
364
|
+
host = @config[:host]
|
365
|
+
port = @config[:port]
|
366
|
+
db_user = @config[:user]
|
367
|
+
db_password = @config[:password]
|
368
|
+
ssl = @config[:ssl]
|
369
|
+
ssl_cert = @config[:ssl_cert]
|
370
|
+
ssl_key = @config[:ssl_key]
|
371
|
+
ssl_ca_cert = @config[:ssl_ca_cert]
|
372
|
+
ssl_verify = @config[:ssl_verify]
|
373
|
+
|
374
|
+
address_str = "#{host}:#{port}"
|
375
|
+
client_opts = {}
|
376
|
+
client_opts[:database] = db_name
|
377
|
+
unless db_user.nil?
|
378
|
+
client_opts[:user] = db_user
|
379
|
+
client_opts[:password] = db_password
|
380
|
+
end
|
381
|
+
if ssl
|
382
|
+
client_opts[:ssl] = true
|
383
|
+
client_opts[:ssl_cert] = ssl_cert
|
384
|
+
client_opts[:ssl_key] = ssl_key
|
385
|
+
client_opts[:ssl_ca_cert] = ssl_ca_cert
|
386
|
+
client_opts[:ssl_verify] = ssl_verify
|
387
|
+
end
|
388
|
+
Mongo::Client.new([address_str], client_opts)
|
389
|
+
end
|
390
|
+
end
|
391
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'sensu-plugins-mongodb/version'
|