Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB:服务器在SASL身份验证步骤上返回错误:身份验证失败_Mongodb_Docker_Prometheus - Fatal编程技术网

MongoDB:服务器在SASL身份验证步骤上返回错误:身份验证失败

MongoDB:服务器在SASL身份验证步骤上返回错误:身份验证失败,mongodb,docker,prometheus,Mongodb,Docker,Prometheus,我正在尝试使用docker、prometheus和监控MongoDB。我也看过stackoverflow,但在目前的情况下,它对我没有帮助 我使用了下面的docker compose文件来构建mongodb服务 version: '3' services: mongo: image: mongo container_name: mongo restart: always environment: MONGO_INITDB_ROOT_USERNA

我正在尝试使用
docker
prometheus
和监控MongoDB。我也看过stackoverflow,但在目前的情况下,它对我没有帮助

我使用了下面的docker compose文件来构建mongodb服务

version: '3'
services: 
  mongo:
    image: mongo
    container_name: mongo
    restart: always
    environment: 
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
  prometheus:
    image: prom/prometheus
    restart: always
    ports:
      - 9090:9090
上述配置已成功运行。我使用以下命令下载了mongodb_导出器:

wgethttps://github.com/dcu/mongodb_exporter/releases/download/v1.0.0/mongodb_exporter-linux-amd64
然后运行以下命令:

/mongodb\u exporter-linux-amd64-logtostderr-mongodb.uri'mongodb://root:example@localhost:27017'-groups.enabled'断言、持久性、后台刷新、连接、额外信息、全局锁定、索引计数器、网络、操作计数器、操作计数器、复制、内存、锁、度量'
但我面临着这个错误:

监听:9001(scheme=HTTP,secured=no,clientValidation=no) E0810 13:49:59.679747 8412连接。转到:48]无法使用url连接到服务器mongodb://root:example@localhost:27017:服务器在SASL身份验证步骤上返回错误:身份验证失败


由于该错误,我无法查看
localhost:9001
上的所有指标。我应该怎么做才能解决这个问题?

将localhost更改为mongo容器的名称,也就是
mongo
,从而解决了这个问题

现在可以成功运行以下代码:

version: '3'

services: 
  mongo:
    image: mongo
    container_name: mongo
    restart: always
    environment: 
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example

  prometheus:
    image: prom/prometheus
    container_name: prometheus
    restart: always
    ports:
      - 9090:9090
    volumes:
      - /home/mostafa/Desktop/docker_lab/mongo/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
    command: 
      - '--config.file=/etc/prometheus/prometheus.yml'

  mongodb-exporter:
    build: .
    container_name: mongodb_exporter
    command: ./mongodb_exporter-linux-amd64 -logtostderr -mongodb.uri mongodb://mongo:27017 -groups.enabled 'asserts,durability,background_flusshing,connections,extra_info,global_lock,index_counters,network,op_counters,op_counters_repl,memory,locks,metrics'
    restart: always
    ports: 
      - 9001:9001

将localhost更改为mongo容器的名称,也就是
mongo
,解决了这个问题

现在可以成功运行以下代码:

version: '3'

services: 
  mongo:
    image: mongo
    container_name: mongo
    restart: always
    environment: 
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example

  prometheus:
    image: prom/prometheus
    container_name: prometheus
    restart: always
    ports:
      - 9090:9090
    volumes:
      - /home/mostafa/Desktop/docker_lab/mongo/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
    command: 
      - '--config.file=/etc/prometheus/prometheus.yml'

  mongodb-exporter:
    build: .
    container_name: mongodb_exporter
    command: ./mongodb_exporter-linux-amd64 -logtostderr -mongodb.uri mongodb://mongo:27017 -groups.enabled 'asserts,durability,background_flusshing,connections,extra_info,global_lock,index_counters,network,op_counters,op_counters_repl,memory,locks,metrics'
    restart: always
    ports: 
      - 9001:9001