我正在尝试使用docker
,prometheus
和mongodb_exporter来监视MongoDB。我还曾在stackoverflow上看到this question,但在当前情况下并没有帮助我。
我已使用以下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_exporter:
wget https://github.com/dcu/mongodb_exporter/releases/download/v1.0.0/mongodb_exporter-linux-amd64
,然后运行下面编写的命令:
./mongodb_exporter-linux-amd64 -logtostderr -mongodb.uri 'mongodb://root:example@localhost:27017' -groups.enabled 'assert, durability, background_flushing, connections, extra_info, global_lock, index_counters, network, op_counters, op_counters_repl, memory, locks, metrics'
但是我遇到这个错误:
在:9001上侦听(方案= HTTP,安全=否,clientValidation =否) E0810 13:49:59.679747 8412 connection.go:48]无法使用URL mongodb:// root:example @ localhost:27017连接到服务器:SASL身份验证步骤服务器返回错误:身份验证失败。
由于该错误,我看不到localhost:9001
上的所有指标。我该怎么办才能解决这个问题?
答案 0 :(得分:0)
通过将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