109 votes

Comment puis-je voir les ports sur lesquels mongo écoute à partir du shell mongo ?

Si j'ai une instance de Mongo en cours d'exécution, comment puis-je vérifier les numéros de port sur lesquels elle écoute à partir du shell ? Je pensais que db.serverStatus() le ferait, mais je ne le vois pas. Je vois ceci

"connections" : {
    "current" : 3,
    "available" : 816

Ce qui est proche... mais non. Des suggestions ? J'ai lu la documentation et je n'ai pas trouvé de commande permettant de faire cela.

0 votes

Avez-vous besoin de mongo shell ? Ou bien un shell unix normal fera l'affaire ? :)

0 votes

@SergioTulentsev Je me demande spécifiquement si cela est possible à l'intérieur du shell mongo -- puisque j'ai déjà trouvé des informations qui sont proches.

230voto

Derick Points 14797

Vous pouvez le faire à partir du shell du système d'exploitation en exécutant :

sudo lsof -iTCP -sTCP:LISTEN | grep mongo

4 votes

@SmartyTwiti J'ai explicitement demandé une commande utilisant le shell mongo ; lsof ne fonctionne pas.

81voto

Adam Comerford Points 9084

Depuis le shell du système, vous pouvez utiliser lsof (voir la réponse de Derick ci-dessous) ou netstat -an pour voir ce qu'un processus est en train de faire. Cependant, en supposant que vous n'ayez accès qu'au mongo (ce que l'intitulé de votre question implique), vous pouvez alors exécuter la commande serverCmdLineOpts() commandement. Cette sortie vous donnera tous les arguments passés sur la ligne de commande (argv) et ceux du fichier de configuration (parsed) et vous pouvez déduire les ports mongod est à l'écoute en fonction de ces informations. Voici un exemple :

db.serverCmdLineOpts()
{
    "argv" : [
        "./mongod",
        "-replSet",
        "test",
        "--rest",
        "--dbpath",
        "/data/test/r1",
        "--port",
        "30001"
    ],
    "parsed" : {
        "dbpath" : "/data/test/r1",
        "port" : 30001,
        "replSet" : "test",
        "rest" : true
    },
    "ok" : 1
}

Si vous n'avez pas passé d'options de port spécifiques comme celles ci-dessus, alors la fonction mongod sera à l'écoute le 27017 et 28017 ( console http ) par défaut. Note : il y a quelques autres arguments qui peuvent modifier les ports sans être explicites, voir ici :

https://docs.mongodb.org/manual/reference/configuration-options/#sharding.clusterRole

39voto

Ganu Points 449

Essayez ça :

db.runCommand({whatsmyuri : 1})

Il affichera à la fois l'adresse IP et le numéro de port.

0 votes

C'est nouveau ? Dans quelle version de Mongo est-il apparu ?

1 votes

@jcollum La version 3.0 a cette nouvelle fonctionnalité.

7 votes

Cela semble montrer le port du shell ou quelque chose... Sortie de lsof : >mongod 14942 dmitrii 5u IPv4 0xc36ad5231f84011d 0t0 TCP *:27017 (LISTEN) Et à partir de whatsmyurl commandement : { "you" : "127.0.0.1:50294", "ok" : 1 } Et ils ne correspondent pas.

12voto

Gates VP Points 26481

MongoDB n'écoute que sur un seul port par défaut (27017). Si le --rest est active, le port 28017 (27017+1000) sera également ouvert pour traiter les demandes de détails sur le Web.

MongoDB prend en charge un getParameter mais cela ne fonctionne que si vous êtes déjà connecté à la base de données (auquel cas vous connaissez déjà le port).

2 votes

Hmm, donc on peut dire que si je suis connecté et que je ne connais pas le port, il doit être 27017. Si le port n'est pas 27017, je dois connaître le port pour pouvoir me connecter. Cela semble correct ?

3voto

Haniel Baez Points 1194

Vous pouvez essayer, depuis le shell mongo :

  • db.getMongo()

Utilisez cette commande pour vérifier que le shell mongo dispose d'une connexion à la base de données instance de base de données appropriée.

connection to <IP>:<PORT>
  • db.collection.explain()

Pour les collections non triées, explain renvoie le serverInfo suivant pour l'instance MongoDB :

"serverInfo" : {
   "host" : <string>,
   "port" : <int>,
   "version" : <string>,
   "gitVersion" : <string>
}

Port MongoDB par défaut

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X