I launched a new mongod process with an empty database directory:
$ mongod --dbpath /tmp/db --replSet rs
Upon accessing the mongod with the shell, I saw a blurb inviting me to run db.enableFreeMonitoring(). I happened to run this before rs.initiate() and was greeted with the following, unpleasant error:
$ mongo
MongoDB shell version v4.0.0-rc5
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 4.0.0-rc5
---
Enable MongoDB's free cloud-based monitoring service to collect and display
metrics about your deployment (disk utilization, CPU, operation statistics,
etc).
The monitoring data will be available on a MongoDB website with a unique
URL created for you. Anyone you share the URL with will also be able to
view this page. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.
To enable free monitoring, run the following command:
db.enableFreeMonitoring()
---
> db.enableFreeMonitoring()
2018-06-15T13:00:32.014-0400 E QUERY [js] Error: command failed: {
"operationTime" : Timestamp(0, 0),
"ok" : 0,
"errmsg" : "not master",
"code" : 10107,
"codeName" : "NotMaster",
"$clusterTime" : {
"clusterTime" : Timestamp(0, 0),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
doassert@src/mongo/shell/assert.js:18:14
_assertCommandWorked@src/mongo/shell/assert.js:534:17
assert.commandWorked@src/mongo/shell/assert.js:618:16
DB.prototype.enableFreeMonitoring@src/mongo/shell/db.js:1955:1
@(shell):1:1
>
It may be trivial to improve the user experience here by having db.enableFreeMonitoring check that the active connection is a primary before attempting to run the setFreeMonitoring command.