From 8e20673ab78eff3969ca492462a3b5d2ca4e015c Mon Sep 17 00:00:00 2001 From: jiangjiang248 <237556902+jiangjiang248@users.noreply.github.com> Date: Fri, 25 Sep 2026 11:27:13 +0800 Subject: [PATCH] fix(agent): report MongoDB wire message lengths --- .../flow_generator/mongo/mongo-msg.result | 4 +- .../test/flow_generator/mongo/mongo.result | 60 +++++++++---------- .../flow_generator/protocol_logs/sql/mongo.rs | 40 ++++++++++++- 3 files changed, 70 insertions(+), 34 deletions(-) diff --git a/agent/resources/test/flow_generator/mongo/mongo-msg.result b/agent/resources/test/flow_generator/mongo/mongo-msg.result index a6f557b3a75..707b4f1f72c 100644 --- a/agent/resources/test/flow_generator/mongo/mongo-msg.result +++ b/agent/resources/test/flow_generator/mongo/mongo-msg.result @@ -1,2 +1,2 @@ -MongoDBInfo { msg_type: Request, is_tls: false, req_len: 0, resp_len: 0, request_id: 40, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"find\": \"query\", \"filter\": { \"name\": \"drpanda5\" }, \"lsid\": { \"id\": Binary(0x4, Zncyz0bOQci8PUoMDrjp1A==) }, \"$clusterTime\": { \"clusterTime\": Timestamp(1730962788, 1), \"signature\": { \"hash\": Binary(0x0, do6KlzmB4JeHxZoScsTBiaUPK+c=), \"keyId\": 7376110768963452930 } }, \"$db\": \"sky-test\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 230, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true -MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 0, request_id: 40, response_id: 114033465, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"cursor\": { \"firstBatch\": [{ \"_id\": ObjectId(\"672c2bc7f4ef2be05f1ddcc4\"), \"name\": \"drpanda5\", \"age\": \"111\" }], \"id\": 0, \"ns\": \"sky-test.query\" }, \"ok\": 1, \"$clusterTime\": { \"clusterTime\": Timestamp(1730962793, 1), \"signature\": { \"hash\": Binary(0x0, TnrsiYcYS4G/qXIz5V1ihb70jic=), \"keyId\": 7376110768963452930 } }, \"operationTime\": Timestamp(1730962793, 1) }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 285, rrt: 1458, is_on_blacklist: false, reply_false: false } is_mongo: false +MongoDBInfo { msg_type: Request, is_tls: false, req_len: 230, resp_len: 0, request_id: 40, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"find\": \"query\", \"filter\": { \"name\": \"drpanda5\" }, \"lsid\": { \"id\": Binary(0x4, Zncyz0bOQci8PUoMDrjp1A==) }, \"$clusterTime\": { \"clusterTime\": Timestamp(1730962788, 1), \"signature\": { \"hash\": Binary(0x0, do6KlzmB4JeHxZoScsTBiaUPK+c=), \"keyId\": 7376110768963452930 } }, \"$db\": \"sky-test\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 230, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true +MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 285, request_id: 40, response_id: 114033465, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"cursor\": { \"firstBatch\": [{ \"_id\": ObjectId(\"672c2bc7f4ef2be05f1ddcc4\"), \"name\": \"drpanda5\", \"age\": \"111\" }], \"id\": 0, \"ns\": \"sky-test.query\" }, \"ok\": 1, \"$clusterTime\": { \"clusterTime\": Timestamp(1730962793, 1), \"signature\": { \"hash\": Binary(0x0, TnrsiYcYS4G/qXIz5V1ihb70jic=), \"keyId\": 7376110768963452930 } }, \"operationTime\": Timestamp(1730962793, 1) }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 285, rrt: 1458, is_on_blacklist: false, reply_false: false } is_mongo: false diff --git a/agent/resources/test/flow_generator/mongo/mongo.result b/agent/resources/test/flow_generator/mongo/mongo.result index 90639203a42..c079bebda8f 100644 --- a/agent/resources/test/flow_generator/mongo/mongo.result +++ b/agent/resources/test/flow_generator/mongo/mongo.result @@ -1,30 +1,30 @@ -MongoDBInfo { msg_type: Request, is_tls: false, req_len: 0, resp_len: 0, request_id: 0, response_id: 0, op_code: 2004, op_code_name: "OP_QUERY", request: "{ \"isMaster\": 1, \"speculativeAuthenticate\": { \"saslStart\": 1, \"mechanism\": \"SCRAM-SHA-256\", \"payload\": Binary(0x0, biwsbj1hZG1pbixyPW5mdGVQaVovV1NuMUZrNjF5QWpFV29xbThaL0Y2MGc5), \"db\": \"admin\" }, \"saslSupportedMechs\": \"admin.admin\", \"client\": { \"application\": { \"name\": \"MongoDB Shell\" }, \"driver\": { \"name\": \"MongoDB Internal Client\", \"version\": \"4.4.25\" }, \"os\": { \"type\": \"Linux\", \"name\": \"CentOS Linux release 7.9.2009 (Core)\", \"architecture\": \"x86_64\", \"version\": \"Kernel 3.10.0-1160.80.1.el7.x86_64\" } } }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 508, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true -MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 0, request_id: 0, response_id: 60, op_code: 1, op_code_name: "OP_REPLY", request: "", response: "{ \"ismaster\": true, \"topologyVersion\": { \"processId\": ObjectId(\"652213ba46c335fa2820b0dc\"), \"counter\": 0 }, \"maxBsonObjectSize\": 16777216, \"maxMessageSizeBytes\": 48000000, \"maxWriteBatchSize\": 100000, \"localTime\": DateTime(\"2023-10-08 2:46:22.212 +00:00:00\"), \"logicalSessionTimeoutMinutes\": 30, \"connectionId\": 3, \"minWireVersion\": 0, \"maxWireVersion\": 9, \"readOnly\": false, \"saslSupportedMechs\": [\"SCRAM-SHA-1\", \"SCRAM-SHA-256\"], \"speculativeAuthenticate\": { \"conversationId\": 1, \"done\": false, \"payload\": Binary(0x0, cj1uZnRlUGlaL1dTbjFGazYxeUFqRVdvcW04Wi9GNjBnOWJMZUpWOExOL3JQUUVtWERkYjZMTjJVb1puZlRidnZnLHM9dEpLa0drajNQcUNpc1dsdkN0L0gyWDZDVm5NOG5GVlV4UG1vQkE9PSxpPTE1MDAw) }, \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 572, rrt: 1053, is_on_blacklist: false, reply_false: false } is_mongo: false -MongoDBInfo { msg_type: Request, is_tls: false, req_len: 0, resp_len: 0, request_id: 1, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"saslContinue\": 1, \"payload\": Binary(0x0, Yz1iaXdzLHI9bmZ0ZVBpWi9XU24xRms2MXlBakVXb3FtOFovRjYwZzliTGVKVjhMTi9yUFFFbVhEZGI2TE4yVW9abmZUYnZ2ZyxwPWhBVFRhMkhFWEw1VkRMRWFVdVM4OG84cGNIZmpRK1ZRRklkcnFwQjR1cXM9), \"conversationId\": 1, \"$db\": \"admin\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 217, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true -MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 0, request_id: 1, response_id: 61, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"conversationId\": 1, \"done\": false, \"payload\": Binary(0x0, dj1nT0psRVhyMTdXblV0UThqcDMvUlQ5bDhvRDZRN01GWDlGS3FUelRhdHpjPQ==), \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 129, rrt: 325, is_on_blacklist: false, reply_false: false } is_mongo: false -MongoDBInfo { msg_type: Request, is_tls: false, req_len: 0, resp_len: 0, request_id: 2, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"saslContinue\": 1, \"payload\": Binary(0x0, ), \"conversationId\": 1, \"$db\": \"admin\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 97, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true -MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 0, request_id: 2, response_id: 62, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"conversationId\": 1, \"done\": true, \"payload\": Binary(0x0, ), \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 83, rrt: 338, is_on_blacklist: false, reply_false: false } is_mongo: false -MongoDBInfo { msg_type: Request, is_tls: false, req_len: 0, resp_len: 0, request_id: 3, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"whatsmyuri\": 1, \"$db\": \"admin\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 61, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true -MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 0, request_id: 3, response_id: 63, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"you\": \"10.50.1.138:43250\", \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 69, rrt: 128, is_on_blacklist: false, reply_false: false } is_mongo: false -MongoDBInfo { msg_type: Request, is_tls: false, req_len: 0, resp_len: 0, request_id: 4, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"buildinfo\": 1, \"$db\": \"admin\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 64, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true -MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 0, request_id: 4, response_id: 64, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"version\": \"4.4.25\", \"gitVersion\": \"3e18c4c56048ddf22a6872edc111b542521ad1d5\", \"modules\": [], \"allocator\": \"tcmalloc\", \"javascriptEngine\": \"mozjs\", \"sysInfo\": \"deprecated\", \"versionArray\": [4, 4, 25, 0], \"openssl\": { \"running\": \"OpenSSL 1.0.1e-fips 11 Feb 2013\", \"compiled\": \"OpenSSL 1.0.1e-fips 11 Feb 2013\" }, \"buildEnvironment\": { \"distmod\": \"rhel70\", \"distarch\": \"x86_64\", \"cc\": \"/opt/mongodbtoolchain/v3/bin/gcc: gcc (GCC) 8.5.0\", \"ccflags\": \"-ffp-contract=off -fno-omit-frame-pointer -fno-strict-aliasing -fasynchronous-unwind-tables -ggdb -pthread -Wall -Wsign-compare -Wno-unknown-pragmas -Winvalid-pch -Werror -O2 -Wno-unused-local-typedefs -Wno-unused-function -Wno-deprecated-declarations -Wno-unused-const-variable -Wno-unused-but-set-variable -Wno-missing-braces -fstack-protector-strong -fno-builtin-memcmp\", \"cxx\": \"/opt/mongodbtoolchain/v3/bin/g++: g++ (GCC) 8.5.0\", \"cxxflags\": \"-Woverloaded-virtual -Wno-maybe-uninitialized -fsized-deallocation -std=c++17\", \"linkflags\": \"-pthread -Wl,-z,now -rdynamic -Wl,--fatal-warnings -fstack-protector-strong -fuse-ld=gold -Wl,--no-threads -Wl,--build-id -Wl,--hash-style=gnu -Wl,-z,noexecstack -Wl,--warn-execstack -Wl,-z,relro -Wl,-z,origin -Wl,--enable-new-dtags\", \"target_arch\": \"x86_64\", \"target_os\": \"linux\", \"cppdefines\": \"SAFEINT_USE_INTRINSICS 0 PCRE_STATIC NDEBUG _XOPEN_SOURCE 700 _GNU_SOURCE _FORTIFY_SOURCE 2 BOOST_THREAD_VERSION 5 BOOST_THREAD_USES_DATETIME BOOST_SYSTEM_NO_DEPRECATED BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS BOOST_ENABLE_ASSERT_DEBUG_HANDLER BOOST_LOG_NO_SHORTHAND_NAMES BOOST_LOG_USE_NATIVE_SYSLOG BOOST_LOG_WITHOUT_THREAD_ATTR ABSL_FORCE_ALIGNED_ACCESS\" }, \"bits\": 64, \"debug\": false, \"maxBsonObjectSize\": 16777216, \"storageEngines\": [\"biggie\", \"devnull\", \"ephemeralForTest\", \"wiredTiger\"], \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 1819, rrt: 196, is_on_blacklist: false, reply_false: false } is_mongo: false -MongoDBInfo { msg_type: Request, is_tls: false, req_len: 0, resp_len: 0, request_id: 5, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"getLog\": \"startupWarnings\", \"lsid\": { \"id\": Binary(0x4, uU9EjcLlRI+tnzaqrJqWqQ==) }, \"$db\": \"admin\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 109, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true -MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 0, request_id: 5, response_id: 65, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"totalLinesWritten\": 3, \"log\": [\"{\"t\":{\"$date\":\"2023-10-08T10:28:11.902+08:00\"},\"s\":\"W\", \"c\":\"CONTROL\", \"id\":22120, \"ctx\":\"initandlisten\",\"msg\":\"Access control is not enabled for the database. Read and write access to data and configuration is unrestricted\",\"tags\":[\"startupWarnings\"]}\", \"{\"t\":{\"$date\":\"2023-10-08T10:28:11.902+08:00\"},\"s\":\"W\", \"c\":\"CONTROL\", \"id\":22178, \"ctx\":\"initandlisten\",\"msg\":\"/sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'\",\"tags\":[\"startupWarnings\"]}\", \"{\"t\":{\"$date\":\"2023-10-08T10:28:11.902+08:00\"},\"s\":\"W\", \"c\":\"CONTROL\", \"id\":22181, \"ctx\":\"initandlisten\",\"msg\":\"/sys/kernel/mm/transparent_hugepage/defrag is 'always'. We suggest setting it to 'never'\",\"tags\":[\"startupWarnings\"]}\"], \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 822, rrt: 182, is_on_blacklist: false, reply_false: false } is_mongo: false -MongoDBInfo { msg_type: Request, is_tls: false, req_len: 0, resp_len: 0, request_id: 6, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"isMaster\": 1, \"forShell\": 1, \"lsid\": { \"id\": Binary(0x4, uU9EjcLlRI+tnzaqrJqWqQ==) }, \"$db\": \"test\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 116, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true -MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 0, request_id: 6, response_id: 66, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"ismaster\": true, \"topologyVersion\": { \"processId\": ObjectId(\"652213ba46c335fa2820b0dc\"), \"counter\": 0 }, \"maxBsonObjectSize\": 16777216, \"maxMessageSizeBytes\": 48000000, \"maxWriteBatchSize\": 100000, \"localTime\": DateTime(\"2023-10-08 2:46:22.3 +00:00:00\"), \"logicalSessionTimeoutMinutes\": 30, \"connectionId\": 3, \"minWireVersion\": 0, \"maxWireVersion\": 9, \"readOnly\": false, \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 308, rrt: 174, is_on_blacklist: false, reply_false: false } is_mongo: false -MongoDBInfo { msg_type: Request, is_tls: false, req_len: 0, resp_len: 0, request_id: 7, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"buildInfo\": 1, \"lsid\": { \"id\": Binary(0x4, uU9EjcLlRI+tnzaqrJqWqQ==) }, \"$db\": \"test\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 99, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true -MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 0, request_id: 7, response_id: 67, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"version\": \"4.4.25\", \"gitVersion\": \"3e18c4c56048ddf22a6872edc111b542521ad1d5\", \"modules\": [], \"allocator\": \"tcmalloc\", \"javascriptEngine\": \"mozjs\", \"sysInfo\": \"deprecated\", \"versionArray\": [4, 4, 25, 0], \"openssl\": { \"running\": \"OpenSSL 1.0.1e-fips 11 Feb 2013\", \"compiled\": \"OpenSSL 1.0.1e-fips 11 Feb 2013\" }, \"buildEnvironment\": { \"distmod\": \"rhel70\", \"distarch\": \"x86_64\", \"cc\": \"/opt/mongodbtoolchain/v3/bin/gcc: gcc (GCC) 8.5.0\", \"ccflags\": \"-ffp-contract=off -fno-omit-frame-pointer -fno-strict-aliasing -fasynchronous-unwind-tables -ggdb -pthread -Wall -Wsign-compare -Wno-unknown-pragmas -Winvalid-pch -Werror -O2 -Wno-unused-local-typedefs -Wno-unused-function -Wno-deprecated-declarations -Wno-unused-const-variable -Wno-unused-but-set-variable -Wno-missing-braces -fstack-protector-strong -fno-builtin-memcmp\", \"cxx\": \"/opt/mongodbtoolchain/v3/bin/g++: g++ (GCC) 8.5.0\", \"cxxflags\": \"-Woverloaded-virtual -Wno-maybe-uninitialized -fsized-deallocation -std=c++17\", \"linkflags\": \"-pthread -Wl,-z,now -rdynamic -Wl,--fatal-warnings -fstack-protector-strong -fuse-ld=gold -Wl,--no-threads -Wl,--build-id -Wl,--hash-style=gnu -Wl,-z,noexecstack -Wl,--warn-execstack -Wl,-z,relro -Wl,-z,origin -Wl,--enable-new-dtags\", \"target_arch\": \"x86_64\", \"target_os\": \"linux\", \"cppdefines\": \"SAFEINT_USE_INTRINSICS 0 PCRE_STATIC NDEBUG _XOPEN_SOURCE 700 _GNU_SOURCE _FORTIFY_SOURCE 2 BOOST_THREAD_VERSION 5 BOOST_THREAD_USES_DATETIME BOOST_SYSTEM_NO_DEPRECATED BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS BOOST_ENABLE_ASSERT_DEBUG_HANDLER BOOST_LOG_NO_SHORTHAND_NAMES BOOST_LOG_USE_NATIVE_SYSLOG BOOST_LOG_WITHOUT_THREAD_ATTR ABSL_FORCE_ALIGNED_ACCESS\" }, \"bits\": 64, \"debug\": false, \"maxBsonObjectSize\": 16777216, \"storageEngines\": [\"biggie\", \"devnull\", \"ephemeralForTest\", \"wiredTiger\"], \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 1819, rrt: 139, is_on_blacklist: false, reply_false: false } is_mongo: false -MongoDBInfo { msg_type: Request, is_tls: false, req_len: 0, resp_len: 0, request_id: 8, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"getCmdLineOpts\": 1, \"lsid\": { \"id\": Binary(0x4, uU9EjcLlRI+tnzaqrJqWqQ==) }, \"$db\": \"admin\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 105, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true -MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 0, request_id: 8, response_id: 68, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"argv\": [\"/usr/bin/mongod\", \"-f\", \"/etc/mongod.conf\"], \"parsed\": { \"config\": \"/etc/mongod.conf\", \"net\": { \"bindIp\": \"0.0.0.0\", \"port\": 27017 }, \"processManagement\": { \"timeZoneInfo\": \"/usr/share/zoneinfo\" }, \"storage\": { \"dbPath\": \"/var/lib/mongo\", \"journal\": { \"enabled\": true } }, \"systemLog\": { \"destination\": \"file\", \"logAppend\": true, \"path\": \"/var/log/mongodb/mongod.log\" } }, \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 407, rrt: 135, is_on_blacklist: false, reply_false: false } is_mongo: false -MongoDBInfo { msg_type: Request, is_tls: false, req_len: 0, resp_len: 0, request_id: 9, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"buildInfo\": 1, \"$db\": \"test\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 63, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true -MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 0, request_id: 9, response_id: 69, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"version\": \"4.4.25\", \"gitVersion\": \"3e18c4c56048ddf22a6872edc111b542521ad1d5\", \"modules\": [], \"allocator\": \"tcmalloc\", \"javascriptEngine\": \"mozjs\", \"sysInfo\": \"deprecated\", \"versionArray\": [4, 4, 25, 0], \"openssl\": { \"running\": \"OpenSSL 1.0.1e-fips 11 Feb 2013\", \"compiled\": \"OpenSSL 1.0.1e-fips 11 Feb 2013\" }, \"buildEnvironment\": { \"distmod\": \"rhel70\", \"distarch\": \"x86_64\", \"cc\": \"/opt/mongodbtoolchain/v3/bin/gcc: gcc (GCC) 8.5.0\", \"ccflags\": \"-ffp-contract=off -fno-omit-frame-pointer -fno-strict-aliasing -fasynchronous-unwind-tables -ggdb -pthread -Wall -Wsign-compare -Wno-unknown-pragmas -Winvalid-pch -Werror -O2 -Wno-unused-local-typedefs -Wno-unused-function -Wno-deprecated-declarations -Wno-unused-const-variable -Wno-unused-but-set-variable -Wno-missing-braces -fstack-protector-strong -fno-builtin-memcmp\", \"cxx\": \"/opt/mongodbtoolchain/v3/bin/g++: g++ (GCC) 8.5.0\", \"cxxflags\": \"-Woverloaded-virtual -Wno-maybe-uninitialized -fsized-deallocation -std=c++17\", \"linkflags\": \"-pthread -Wl,-z,now -rdynamic -Wl,--fatal-warnings -fstack-protector-strong -fuse-ld=gold -Wl,--no-threads -Wl,--build-id -Wl,--hash-style=gnu -Wl,-z,noexecstack -Wl,--warn-execstack -Wl,-z,relro -Wl,-z,origin -Wl,--enable-new-dtags\", \"target_arch\": \"x86_64\", \"target_os\": \"linux\", \"cppdefines\": \"SAFEINT_USE_INTRINSICS 0 PCRE_STATIC NDEBUG _XOPEN_SOURCE 700 _GNU_SOURCE _FORTIFY_SOURCE 2 BOOST_THREAD_VERSION 5 BOOST_THREAD_USES_DATETIME BOOST_SYSTEM_NO_DEPRECATED BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS BOOST_ENABLE_ASSERT_DEBUG_HANDLER BOOST_LOG_NO_SHORTHAND_NAMES BOOST_LOG_USE_NATIVE_SYSLOG BOOST_LOG_WITHOUT_THREAD_ATTR ABSL_FORCE_ALIGNED_ACCESS\" }, \"bits\": 64, \"debug\": false, \"maxBsonObjectSize\": 16777216, \"storageEngines\": [\"biggie\", \"devnull\", \"ephemeralForTest\", \"wiredTiger\"], \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 1819, rrt: 207, is_on_blacklist: false, reply_false: false } is_mongo: false -MongoDBInfo { msg_type: Request, is_tls: false, req_len: 0, resp_len: 0, request_id: 10, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"isMaster\": 1, \"forShell\": 1, \"$db\": \"test\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 80, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true -MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 0, request_id: 10, response_id: 70, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"ismaster\": true, \"topologyVersion\": { \"processId\": ObjectId(\"652213ba46c335fa2820b0dc\"), \"counter\": 0 }, \"maxBsonObjectSize\": 16777216, \"maxMessageSizeBytes\": 48000000, \"maxWriteBatchSize\": 100000, \"localTime\": DateTime(\"2023-10-08 2:46:22.306 +00:00:00\"), \"logicalSessionTimeoutMinutes\": 30, \"connectionId\": 3, \"minWireVersion\": 0, \"maxWireVersion\": 9, \"readOnly\": false, \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 308, rrt: 143, is_on_blacklist: false, reply_false: false } is_mongo: false -MongoDBInfo { msg_type: Request, is_tls: false, req_len: 0, resp_len: 0, request_id: 11, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"replSetGetStatus\": 1, \"forShell\": 1, \"$db\": \"admin\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 89, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true -MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 0, request_id: 11, response_id: 71, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "", response_code: 76, exception: "not running with --replSet", status: ClientError, captured_request_byte: 0, captured_response_byte: 126, rrt: 571, is_on_blacklist: false, reply_false: false } is_mongo: false -MongoDBInfo { msg_type: Request, is_tls: false, req_len: 0, resp_len: 0, request_id: 12, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"getLog\": \"startupWarnings\", \"lsid\": { \"id\": Binary(0x4, uU9EjcLlRI+tnzaqrJqWqQ==) }, \"$db\": \"admin\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 109, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true -MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 0, request_id: 12, response_id: 72, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"totalLinesWritten\": 3, \"log\": [\"{\"t\":{\"$date\":\"2023-10-08T10:28:11.902+08:00\"},\"s\":\"W\", \"c\":\"CONTROL\", \"id\":22120, \"ctx\":\"initandlisten\",\"msg\":\"Access control is not enabled for the database. Read and write access to data and configuration is unrestricted\",\"tags\":[\"startupWarnings\"]}\", \"{\"t\":{\"$date\":\"2023-10-08T10:28:11.902+08:00\"},\"s\":\"W\", \"c\":\"CONTROL\", \"id\":22178, \"ctx\":\"initandlisten\",\"msg\":\"/sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'\",\"tags\":[\"startupWarnings\"]}\", \"{\"t\":{\"$date\":\"2023-10-08T10:28:11.902+08:00\"},\"s\":\"W\", \"c\":\"CONTROL\", \"id\":22181, \"ctx\":\"initandlisten\",\"msg\":\"/sys/kernel/mm/transparent_hugepage/defrag is 'always'. We suggest setting it to 'never'\",\"tags\":[\"startupWarnings\"]}\"], \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 822, rrt: 334, is_on_blacklist: false, reply_false: false } is_mongo: false -MongoDBInfo { msg_type: Request, is_tls: false, req_len: 0, resp_len: 0, request_id: 13, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"isMaster\": 1, \"forShell\": 1, \"$db\": \"test\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 80, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true -MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 0, request_id: 13, response_id: 73, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"ismaster\": true, \"topologyVersion\": { \"processId\": ObjectId(\"652213ba46c335fa2820b0dc\"), \"counter\": 0 }, \"maxBsonObjectSize\": 16777216, \"maxMessageSizeBytes\": 48000000, \"maxWriteBatchSize\": 100000, \"localTime\": DateTime(\"2023-10-08 2:46:26.793 +00:00:00\"), \"logicalSessionTimeoutMinutes\": 30, \"connectionId\": 3, \"minWireVersion\": 0, \"maxWireVersion\": 9, \"readOnly\": false, \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 308, rrt: 189, is_on_blacklist: false, reply_false: false } is_mongo: false -MongoDBInfo { msg_type: Request, is_tls: false, req_len: 0, resp_len: 0, request_id: 14, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"endSessions\": [{ \"id\": Binary(0x4, uU9EjcLlRI+tnzaqrJqWqQ==) }], \"$db\": \"admin\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 96, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true -MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 0, request_id: 14, response_id: 74, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 42, rrt: 786, is_on_blacklist: false, reply_false: false } is_mongo: false +MongoDBInfo { msg_type: Request, is_tls: false, req_len: 508, resp_len: 0, request_id: 0, response_id: 0, op_code: 2004, op_code_name: "OP_QUERY", request: "{ \"isMaster\": 1, \"speculativeAuthenticate\": { \"saslStart\": 1, \"mechanism\": \"SCRAM-SHA-256\", \"payload\": Binary(0x0, biwsbj1hZG1pbixyPW5mdGVQaVovV1NuMUZrNjF5QWpFV29xbThaL0Y2MGc5), \"db\": \"admin\" }, \"saslSupportedMechs\": \"admin.admin\", \"client\": { \"application\": { \"name\": \"MongoDB Shell\" }, \"driver\": { \"name\": \"MongoDB Internal Client\", \"version\": \"4.4.25\" }, \"os\": { \"type\": \"Linux\", \"name\": \"CentOS Linux release 7.9.2009 (Core)\", \"architecture\": \"x86_64\", \"version\": \"Kernel 3.10.0-1160.80.1.el7.x86_64\" } } }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 508, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true +MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 572, request_id: 0, response_id: 60, op_code: 1, op_code_name: "OP_REPLY", request: "", response: "{ \"ismaster\": true, \"topologyVersion\": { \"processId\": ObjectId(\"652213ba46c335fa2820b0dc\"), \"counter\": 0 }, \"maxBsonObjectSize\": 16777216, \"maxMessageSizeBytes\": 48000000, \"maxWriteBatchSize\": 100000, \"localTime\": DateTime(\"2023-10-08 2:46:22.212 +00:00:00\"), \"logicalSessionTimeoutMinutes\": 30, \"connectionId\": 3, \"minWireVersion\": 0, \"maxWireVersion\": 9, \"readOnly\": false, \"saslSupportedMechs\": [\"SCRAM-SHA-1\", \"SCRAM-SHA-256\"], \"speculativeAuthenticate\": { \"conversationId\": 1, \"done\": false, \"payload\": Binary(0x0, cj1uZnRlUGlaL1dTbjFGazYxeUFqRVdvcW04Wi9GNjBnOWJMZUpWOExOL3JQUUVtWERkYjZMTjJVb1puZlRidnZnLHM9dEpLa0drajNQcUNpc1dsdkN0L0gyWDZDVm5NOG5GVlV4UG1vQkE9PSxpPTE1MDAw) }, \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 572, rrt: 1053, is_on_blacklist: false, reply_false: false } is_mongo: false +MongoDBInfo { msg_type: Request, is_tls: false, req_len: 217, resp_len: 0, request_id: 1, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"saslContinue\": 1, \"payload\": Binary(0x0, Yz1iaXdzLHI9bmZ0ZVBpWi9XU24xRms2MXlBakVXb3FtOFovRjYwZzliTGVKVjhMTi9yUFFFbVhEZGI2TE4yVW9abmZUYnZ2ZyxwPWhBVFRhMkhFWEw1VkRMRWFVdVM4OG84cGNIZmpRK1ZRRklkcnFwQjR1cXM9), \"conversationId\": 1, \"$db\": \"admin\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 217, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true +MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 129, request_id: 1, response_id: 61, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"conversationId\": 1, \"done\": false, \"payload\": Binary(0x0, dj1nT0psRVhyMTdXblV0UThqcDMvUlQ5bDhvRDZRN01GWDlGS3FUelRhdHpjPQ==), \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 129, rrt: 325, is_on_blacklist: false, reply_false: false } is_mongo: false +MongoDBInfo { msg_type: Request, is_tls: false, req_len: 97, resp_len: 0, request_id: 2, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"saslContinue\": 1, \"payload\": Binary(0x0, ), \"conversationId\": 1, \"$db\": \"admin\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 97, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true +MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 83, request_id: 2, response_id: 62, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"conversationId\": 1, \"done\": true, \"payload\": Binary(0x0, ), \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 83, rrt: 338, is_on_blacklist: false, reply_false: false } is_mongo: false +MongoDBInfo { msg_type: Request, is_tls: false, req_len: 61, resp_len: 0, request_id: 3, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"whatsmyuri\": 1, \"$db\": \"admin\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 61, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true +MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 69, request_id: 3, response_id: 63, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"you\": \"10.50.1.138:43250\", \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 69, rrt: 128, is_on_blacklist: false, reply_false: false } is_mongo: false +MongoDBInfo { msg_type: Request, is_tls: false, req_len: 64, resp_len: 0, request_id: 4, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"buildinfo\": 1, \"$db\": \"admin\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 64, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true +MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 1819, request_id: 4, response_id: 64, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"version\": \"4.4.25\", \"gitVersion\": \"3e18c4c56048ddf22a6872edc111b542521ad1d5\", \"modules\": [], \"allocator\": \"tcmalloc\", \"javascriptEngine\": \"mozjs\", \"sysInfo\": \"deprecated\", \"versionArray\": [4, 4, 25, 0], \"openssl\": { \"running\": \"OpenSSL 1.0.1e-fips 11 Feb 2013\", \"compiled\": \"OpenSSL 1.0.1e-fips 11 Feb 2013\" }, \"buildEnvironment\": { \"distmod\": \"rhel70\", \"distarch\": \"x86_64\", \"cc\": \"/opt/mongodbtoolchain/v3/bin/gcc: gcc (GCC) 8.5.0\", \"ccflags\": \"-ffp-contract=off -fno-omit-frame-pointer -fno-strict-aliasing -fasynchronous-unwind-tables -ggdb -pthread -Wall -Wsign-compare -Wno-unknown-pragmas -Winvalid-pch -Werror -O2 -Wno-unused-local-typedefs -Wno-unused-function -Wno-deprecated-declarations -Wno-unused-const-variable -Wno-unused-but-set-variable -Wno-missing-braces -fstack-protector-strong -fno-builtin-memcmp\", \"cxx\": \"/opt/mongodbtoolchain/v3/bin/g++: g++ (GCC) 8.5.0\", \"cxxflags\": \"-Woverloaded-virtual -Wno-maybe-uninitialized -fsized-deallocation -std=c++17\", \"linkflags\": \"-pthread -Wl,-z,now -rdynamic -Wl,--fatal-warnings -fstack-protector-strong -fuse-ld=gold -Wl,--no-threads -Wl,--build-id -Wl,--hash-style=gnu -Wl,-z,noexecstack -Wl,--warn-execstack -Wl,-z,relro -Wl,-z,origin -Wl,--enable-new-dtags\", \"target_arch\": \"x86_64\", \"target_os\": \"linux\", \"cppdefines\": \"SAFEINT_USE_INTRINSICS 0 PCRE_STATIC NDEBUG _XOPEN_SOURCE 700 _GNU_SOURCE _FORTIFY_SOURCE 2 BOOST_THREAD_VERSION 5 BOOST_THREAD_USES_DATETIME BOOST_SYSTEM_NO_DEPRECATED BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS BOOST_ENABLE_ASSERT_DEBUG_HANDLER BOOST_LOG_NO_SHORTHAND_NAMES BOOST_LOG_USE_NATIVE_SYSLOG BOOST_LOG_WITHOUT_THREAD_ATTR ABSL_FORCE_ALIGNED_ACCESS\" }, \"bits\": 64, \"debug\": false, \"maxBsonObjectSize\": 16777216, \"storageEngines\": [\"biggie\", \"devnull\", \"ephemeralForTest\", \"wiredTiger\"], \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 1819, rrt: 196, is_on_blacklist: false, reply_false: false } is_mongo: false +MongoDBInfo { msg_type: Request, is_tls: false, req_len: 109, resp_len: 0, request_id: 5, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"getLog\": \"startupWarnings\", \"lsid\": { \"id\": Binary(0x4, uU9EjcLlRI+tnzaqrJqWqQ==) }, \"$db\": \"admin\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 109, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true +MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 822, request_id: 5, response_id: 65, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"totalLinesWritten\": 3, \"log\": [\"{\"t\":{\"$date\":\"2023-10-08T10:28:11.902+08:00\"},\"s\":\"W\", \"c\":\"CONTROL\", \"id\":22120, \"ctx\":\"initandlisten\",\"msg\":\"Access control is not enabled for the database. Read and write access to data and configuration is unrestricted\",\"tags\":[\"startupWarnings\"]}\", \"{\"t\":{\"$date\":\"2023-10-08T10:28:11.902+08:00\"},\"s\":\"W\", \"c\":\"CONTROL\", \"id\":22178, \"ctx\":\"initandlisten\",\"msg\":\"/sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'\",\"tags\":[\"startupWarnings\"]}\", \"{\"t\":{\"$date\":\"2023-10-08T10:28:11.902+08:00\"},\"s\":\"W\", \"c\":\"CONTROL\", \"id\":22181, \"ctx\":\"initandlisten\",\"msg\":\"/sys/kernel/mm/transparent_hugepage/defrag is 'always'. We suggest setting it to 'never'\",\"tags\":[\"startupWarnings\"]}\"], \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 822, rrt: 182, is_on_blacklist: false, reply_false: false } is_mongo: false +MongoDBInfo { msg_type: Request, is_tls: false, req_len: 116, resp_len: 0, request_id: 6, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"isMaster\": 1, \"forShell\": 1, \"lsid\": { \"id\": Binary(0x4, uU9EjcLlRI+tnzaqrJqWqQ==) }, \"$db\": \"test\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 116, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true +MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 308, request_id: 6, response_id: 66, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"ismaster\": true, \"topologyVersion\": { \"processId\": ObjectId(\"652213ba46c335fa2820b0dc\"), \"counter\": 0 }, \"maxBsonObjectSize\": 16777216, \"maxMessageSizeBytes\": 48000000, \"maxWriteBatchSize\": 100000, \"localTime\": DateTime(\"2023-10-08 2:46:22.3 +00:00:00\"), \"logicalSessionTimeoutMinutes\": 30, \"connectionId\": 3, \"minWireVersion\": 0, \"maxWireVersion\": 9, \"readOnly\": false, \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 308, rrt: 174, is_on_blacklist: false, reply_false: false } is_mongo: false +MongoDBInfo { msg_type: Request, is_tls: false, req_len: 99, resp_len: 0, request_id: 7, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"buildInfo\": 1, \"lsid\": { \"id\": Binary(0x4, uU9EjcLlRI+tnzaqrJqWqQ==) }, \"$db\": \"test\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 99, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true +MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 1819, request_id: 7, response_id: 67, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"version\": \"4.4.25\", \"gitVersion\": \"3e18c4c56048ddf22a6872edc111b542521ad1d5\", \"modules\": [], \"allocator\": \"tcmalloc\", \"javascriptEngine\": \"mozjs\", \"sysInfo\": \"deprecated\", \"versionArray\": [4, 4, 25, 0], \"openssl\": { \"running\": \"OpenSSL 1.0.1e-fips 11 Feb 2013\", \"compiled\": \"OpenSSL 1.0.1e-fips 11 Feb 2013\" }, \"buildEnvironment\": { \"distmod\": \"rhel70\", \"distarch\": \"x86_64\", \"cc\": \"/opt/mongodbtoolchain/v3/bin/gcc: gcc (GCC) 8.5.0\", \"ccflags\": \"-ffp-contract=off -fno-omit-frame-pointer -fno-strict-aliasing -fasynchronous-unwind-tables -ggdb -pthread -Wall -Wsign-compare -Wno-unknown-pragmas -Winvalid-pch -Werror -O2 -Wno-unused-local-typedefs -Wno-unused-function -Wno-deprecated-declarations -Wno-unused-const-variable -Wno-unused-but-set-variable -Wno-missing-braces -fstack-protector-strong -fno-builtin-memcmp\", \"cxx\": \"/opt/mongodbtoolchain/v3/bin/g++: g++ (GCC) 8.5.0\", \"cxxflags\": \"-Woverloaded-virtual -Wno-maybe-uninitialized -fsized-deallocation -std=c++17\", \"linkflags\": \"-pthread -Wl,-z,now -rdynamic -Wl,--fatal-warnings -fstack-protector-strong -fuse-ld=gold -Wl,--no-threads -Wl,--build-id -Wl,--hash-style=gnu -Wl,-z,noexecstack -Wl,--warn-execstack -Wl,-z,relro -Wl,-z,origin -Wl,--enable-new-dtags\", \"target_arch\": \"x86_64\", \"target_os\": \"linux\", \"cppdefines\": \"SAFEINT_USE_INTRINSICS 0 PCRE_STATIC NDEBUG _XOPEN_SOURCE 700 _GNU_SOURCE _FORTIFY_SOURCE 2 BOOST_THREAD_VERSION 5 BOOST_THREAD_USES_DATETIME BOOST_SYSTEM_NO_DEPRECATED BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS BOOST_ENABLE_ASSERT_DEBUG_HANDLER BOOST_LOG_NO_SHORTHAND_NAMES BOOST_LOG_USE_NATIVE_SYSLOG BOOST_LOG_WITHOUT_THREAD_ATTR ABSL_FORCE_ALIGNED_ACCESS\" }, \"bits\": 64, \"debug\": false, \"maxBsonObjectSize\": 16777216, \"storageEngines\": [\"biggie\", \"devnull\", \"ephemeralForTest\", \"wiredTiger\"], \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 1819, rrt: 139, is_on_blacklist: false, reply_false: false } is_mongo: false +MongoDBInfo { msg_type: Request, is_tls: false, req_len: 105, resp_len: 0, request_id: 8, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"getCmdLineOpts\": 1, \"lsid\": { \"id\": Binary(0x4, uU9EjcLlRI+tnzaqrJqWqQ==) }, \"$db\": \"admin\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 105, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true +MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 407, request_id: 8, response_id: 68, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"argv\": [\"/usr/bin/mongod\", \"-f\", \"/etc/mongod.conf\"], \"parsed\": { \"config\": \"/etc/mongod.conf\", \"net\": { \"bindIp\": \"0.0.0.0\", \"port\": 27017 }, \"processManagement\": { \"timeZoneInfo\": \"/usr/share/zoneinfo\" }, \"storage\": { \"dbPath\": \"/var/lib/mongo\", \"journal\": { \"enabled\": true } }, \"systemLog\": { \"destination\": \"file\", \"logAppend\": true, \"path\": \"/var/log/mongodb/mongod.log\" } }, \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 407, rrt: 135, is_on_blacklist: false, reply_false: false } is_mongo: false +MongoDBInfo { msg_type: Request, is_tls: false, req_len: 63, resp_len: 0, request_id: 9, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"buildInfo\": 1, \"$db\": \"test\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 63, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true +MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 1819, request_id: 9, response_id: 69, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"version\": \"4.4.25\", \"gitVersion\": \"3e18c4c56048ddf22a6872edc111b542521ad1d5\", \"modules\": [], \"allocator\": \"tcmalloc\", \"javascriptEngine\": \"mozjs\", \"sysInfo\": \"deprecated\", \"versionArray\": [4, 4, 25, 0], \"openssl\": { \"running\": \"OpenSSL 1.0.1e-fips 11 Feb 2013\", \"compiled\": \"OpenSSL 1.0.1e-fips 11 Feb 2013\" }, \"buildEnvironment\": { \"distmod\": \"rhel70\", \"distarch\": \"x86_64\", \"cc\": \"/opt/mongodbtoolchain/v3/bin/gcc: gcc (GCC) 8.5.0\", \"ccflags\": \"-ffp-contract=off -fno-omit-frame-pointer -fno-strict-aliasing -fasynchronous-unwind-tables -ggdb -pthread -Wall -Wsign-compare -Wno-unknown-pragmas -Winvalid-pch -Werror -O2 -Wno-unused-local-typedefs -Wno-unused-function -Wno-deprecated-declarations -Wno-unused-const-variable -Wno-unused-but-set-variable -Wno-missing-braces -fstack-protector-strong -fno-builtin-memcmp\", \"cxx\": \"/opt/mongodbtoolchain/v3/bin/g++: g++ (GCC) 8.5.0\", \"cxxflags\": \"-Woverloaded-virtual -Wno-maybe-uninitialized -fsized-deallocation -std=c++17\", \"linkflags\": \"-pthread -Wl,-z,now -rdynamic -Wl,--fatal-warnings -fstack-protector-strong -fuse-ld=gold -Wl,--no-threads -Wl,--build-id -Wl,--hash-style=gnu -Wl,-z,noexecstack -Wl,--warn-execstack -Wl,-z,relro -Wl,-z,origin -Wl,--enable-new-dtags\", \"target_arch\": \"x86_64\", \"target_os\": \"linux\", \"cppdefines\": \"SAFEINT_USE_INTRINSICS 0 PCRE_STATIC NDEBUG _XOPEN_SOURCE 700 _GNU_SOURCE _FORTIFY_SOURCE 2 BOOST_THREAD_VERSION 5 BOOST_THREAD_USES_DATETIME BOOST_SYSTEM_NO_DEPRECATED BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS BOOST_ENABLE_ASSERT_DEBUG_HANDLER BOOST_LOG_NO_SHORTHAND_NAMES BOOST_LOG_USE_NATIVE_SYSLOG BOOST_LOG_WITHOUT_THREAD_ATTR ABSL_FORCE_ALIGNED_ACCESS\" }, \"bits\": 64, \"debug\": false, \"maxBsonObjectSize\": 16777216, \"storageEngines\": [\"biggie\", \"devnull\", \"ephemeralForTest\", \"wiredTiger\"], \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 1819, rrt: 207, is_on_blacklist: false, reply_false: false } is_mongo: false +MongoDBInfo { msg_type: Request, is_tls: false, req_len: 80, resp_len: 0, request_id: 10, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"isMaster\": 1, \"forShell\": 1, \"$db\": \"test\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 80, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true +MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 308, request_id: 10, response_id: 70, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"ismaster\": true, \"topologyVersion\": { \"processId\": ObjectId(\"652213ba46c335fa2820b0dc\"), \"counter\": 0 }, \"maxBsonObjectSize\": 16777216, \"maxMessageSizeBytes\": 48000000, \"maxWriteBatchSize\": 100000, \"localTime\": DateTime(\"2023-10-08 2:46:22.306 +00:00:00\"), \"logicalSessionTimeoutMinutes\": 30, \"connectionId\": 3, \"minWireVersion\": 0, \"maxWireVersion\": 9, \"readOnly\": false, \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 308, rrt: 143, is_on_blacklist: false, reply_false: false } is_mongo: false +MongoDBInfo { msg_type: Request, is_tls: false, req_len: 89, resp_len: 0, request_id: 11, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"replSetGetStatus\": 1, \"forShell\": 1, \"$db\": \"admin\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 89, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true +MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 126, request_id: 11, response_id: 71, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "", response_code: 76, exception: "not running with --replSet", status: ClientError, captured_request_byte: 0, captured_response_byte: 126, rrt: 571, is_on_blacklist: false, reply_false: false } is_mongo: false +MongoDBInfo { msg_type: Request, is_tls: false, req_len: 109, resp_len: 0, request_id: 12, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"getLog\": \"startupWarnings\", \"lsid\": { \"id\": Binary(0x4, uU9EjcLlRI+tnzaqrJqWqQ==) }, \"$db\": \"admin\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 109, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true +MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 822, request_id: 12, response_id: 72, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"totalLinesWritten\": 3, \"log\": [\"{\"t\":{\"$date\":\"2023-10-08T10:28:11.902+08:00\"},\"s\":\"W\", \"c\":\"CONTROL\", \"id\":22120, \"ctx\":\"initandlisten\",\"msg\":\"Access control is not enabled for the database. Read and write access to data and configuration is unrestricted\",\"tags\":[\"startupWarnings\"]}\", \"{\"t\":{\"$date\":\"2023-10-08T10:28:11.902+08:00\"},\"s\":\"W\", \"c\":\"CONTROL\", \"id\":22178, \"ctx\":\"initandlisten\",\"msg\":\"/sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'\",\"tags\":[\"startupWarnings\"]}\", \"{\"t\":{\"$date\":\"2023-10-08T10:28:11.902+08:00\"},\"s\":\"W\", \"c\":\"CONTROL\", \"id\":22181, \"ctx\":\"initandlisten\",\"msg\":\"/sys/kernel/mm/transparent_hugepage/defrag is 'always'. We suggest setting it to 'never'\",\"tags\":[\"startupWarnings\"]}\"], \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 822, rrt: 334, is_on_blacklist: false, reply_false: false } is_mongo: false +MongoDBInfo { msg_type: Request, is_tls: false, req_len: 80, resp_len: 0, request_id: 13, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"isMaster\": 1, \"forShell\": 1, \"$db\": \"test\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 80, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true +MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 308, request_id: 13, response_id: 73, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"ismaster\": true, \"topologyVersion\": { \"processId\": ObjectId(\"652213ba46c335fa2820b0dc\"), \"counter\": 0 }, \"maxBsonObjectSize\": 16777216, \"maxMessageSizeBytes\": 48000000, \"maxWriteBatchSize\": 100000, \"localTime\": DateTime(\"2023-10-08 2:46:26.793 +00:00:00\"), \"logicalSessionTimeoutMinutes\": 30, \"connectionId\": 3, \"minWireVersion\": 0, \"maxWireVersion\": 9, \"readOnly\": false, \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 308, rrt: 189, is_on_blacklist: false, reply_false: false } is_mongo: false +MongoDBInfo { msg_type: Request, is_tls: false, req_len: 96, resp_len: 0, request_id: 14, response_id: 0, op_code: 2013, op_code_name: "OP_MSG", request: "{ \"endSessions\": [{ \"id\": Binary(0x4, uU9EjcLlRI+tnzaqrJqWqQ==) }], \"$db\": \"admin\" }", response: "", response_code: 0, exception: "", status: Ok, captured_request_byte: 96, captured_response_byte: 0, rrt: 0, is_on_blacklist: false, reply_false: false } is_mongo: true +MongoDBInfo { msg_type: Response, is_tls: false, req_len: 0, resp_len: 42, request_id: 14, response_id: 74, op_code: 2013, op_code_name: "OP_MSG", request: "", response: "{ \"ok\": 1 }", response_code: 0, exception: "", status: Ok, captured_request_byte: 0, captured_response_byte: 42, rrt: 786, is_on_blacklist: false, reply_false: false } is_mongo: false diff --git a/agent/src/flow_generator/protocol_logs/sql/mongo.rs b/agent/src/flow_generator/protocol_logs/sql/mongo.rs index f4d4f0bf8a0..abfdbf32402 100644 --- a/agent/src/flow_generator/protocol_logs/sql/mongo.rs +++ b/agent/src/flow_generator/protocol_logs/sql/mongo.rs @@ -341,11 +341,11 @@ impl MongoDBLog { if header.is_request() { info.msg_type = LogMessageType::Request; - self.info.req_len = header.length; + info.req_len = header.length; info.request_id = header.request_id; } else { info.msg_type = LogMessageType::Response; - self.info.resp_len = header.length; + info.resp_len = header.length; info.request_id = header.response_to; info.response_id = header.request_id; } @@ -692,6 +692,42 @@ mod tests { const FILE_DIR: &str = "resources/test/flow_generator/mongo"; + #[test] + fn reports_wire_length_for_truncated_messages() { + let mut parser = MongoDBLog::default(); + let mut payload = [0u8; 16]; + payload[..4].copy_from_slice(&32u32.to_le_bytes()); + payload[12..].copy_from_slice(&_OP_QUERY.to_le_bytes()); + + let mut request = MongoDBInfo::default(); + parser + .parse( + &payload, + IpProtocol::TCP, + PacketDirection::ClientToServer, + &mut request, + ) + .unwrap(); + assert_eq!(request.req_len, 32); + assert_eq!(request.resp_len, 0); + + payload[..4].copy_from_slice(&40u32.to_le_bytes()); + payload[8..12].copy_from_slice(&1u32.to_le_bytes()); + payload[12..].copy_from_slice(&_OP_REPLY.to_le_bytes()); + + let mut response = MongoDBInfo::default(); + parser + .parse( + &payload, + IpProtocol::TCP, + PacketDirection::ServerToClient, + &mut response, + ) + .unwrap(); + assert_eq!(response.req_len, 0); + assert_eq!(response.resp_len, 40); + } + fn run(name: &str) -> String { let capture = Capture::load_pcap(Path::new(FILE_DIR).join(name)); let log_cache = Rc::new(RefCell::new(L7PerfCache::new(L7_RRT_CACHE_CAPACITY)));