percona/mongodb_exporterMongoDB Exporter是一个Prometheus导出器,用于收集MongoDB数据库的监控指标,包括分片、复制和存储引擎等方面的性能数据。该实现能够处理MongoDB监控命令公开的所有指标,通过循环遍历诊断命令中公开的所有字段并尝试从中获取数据。
目前实现了以下指标来源:
| 旧版Percona MongoDB Exporter |
|---|
旧版0.1x.y版本(原master分支)已迁移至release-0.1x分支。 |
如果考虑从旧版导出器迁移,可以使用--compatible-mode标志以旧指标名称公开指标。 |
| 这将简化向新版本的迁移过程。 |
构建过程使用dockerized版本的goreleaser,无需安装Go环境:
bashmake release
生成的二进制文件将位于build目录下:
├── build │ ├── config.yaml │ ├── mongodb_exporter_7c73946_checksums.txt │ ├── mongodb_exporter-7c73946.darwin-amd64.tar.gz │ ├── mongodb_exporter-7c73946.linux-amd64.tar.gz │ ├── mongodb_exporter_darwin_amd64 │ │ └── mongodb_exporter <--- MacOS二进制文件 │ └── mongodb_exporter_linux_amd64 │ └── mongodb_exporter <--- Linux二进制文件
Docker镜像可从Docker Hub获取:percona/mongodb_exporter
bashdocker run -d -p 9216:9216 percona/mongodb_exporter \ --mongodb.uri=mongodb://user:pass@mongodb-host:27017/admin?ssl=true \ --compatible-mode
yamlversion: '3' services: mongodb_exporter: image: percona/mongodb_exporter ports: - "9216:9216" command: - --mongodb.uri=mongodb://user:pass@mongodb:27017/admin?ssl=true - --compatible-mode - --mongodb.collstats-colls=testdb.testcol depends_on: - mongodb mongodb: image: mongo ports: - "27017:27017" environment: - MONGO_INITDB_ROOT_USERNAME=user - MONGO_INITDB_ROOT_PASSWORD=pass
连接用户需要有足够的权限来查询所需的统计信息:
javascript{ "role": "clusterMonitor", "db": "admin" }, { "role": "read", "db": "local" }
有关MongoDB角色的更多信息,请参阅官方文档。
| 环境变量 | 描述 | 示例 |
|---|---|---|
| MONGODB_URI | MongoDB连接URI | mongodb://user:pass@127.0.0.1:27017/admin?ssl=true |
| 参数 | 描述 | 示例 |
|---|---|---|
| -h, --help | 显示上下文相关帮助 | |
| --compatible-mode | 同时以新旧格式公开新指标 | |
| --discovering-mode | 启用从collstats-colls和indexstats-colls中设置的数据库自动发现集合 | |
| --mongodb.collstats-colls | 逗号分隔的要获取统计信息的数据库.集合列表 | --mongodb.collstats-colls=testdb.testcol1,testdb.testcol2 |
| --mongodb.direct-connect | 是否建立直接连接。如果指定了多个主机或使用SRV URI,则直接连接无效 | --mongodb.direct-connect=false |
| --mongodb.indexstats-colls | 逗号分隔的要获取索引统计信息的数据库.集合列表 | --mongodb.indexstats-colls=db1.col1,db1.col2 |
| --mongodb.uri | MongoDB连接URI (可通过MONGODB_URI环境变量设置) | --mongodb.uri=mongodb://user:pass@127.0.0.1:27017/admin?ssl=true |
| --mongodb.global-conn-pool | 使用全局连接池而不是为每个HTTP请求创建新连接 | |
| --web.listen-address | Web界面和遥测的监听地址 | --web.listen-address=":9216" |
| --web.telemetry-path | 指标公开路径 | --web.telemetry-path="/metrics" |
| --log.level | 仅记录给定严重性或更高级别的消息。有效值: [debug, info, warn, error] | --log.level="error" |
| --disable.diagnosticdata | 禁用从getDiagnosticData收集指标 | |
| --disable.replicasetstatus | 禁用从replSetGetStatus收集指标 | |
| --disable.dbstats | 禁用从dbStats收集指标 | |
| --version | 显示版本并退出 |
bashmongodb_exporter --mongodb.uri=mongodb://127.0.0.1:***
bashmongodb_exporter --mongodb.uri=mongodb://127.0.0.1:*** --mongodb.collstats-colls=db1.c1,db2.c2
启用兼容性模式后,导出器将同时以新的命名和标签模式以及版本1兼容的方式公开所有新指标:
bashmongodb_exporter --mongodb.uri=mongodb://127.0.0.1:*** --compatible-mode
例如,新格式指标:
# HELP mongodb_ss_wt_log_log_bytes_written serverStatus.wiredTiger.log. # TYPE mongodb_ss_wt_log_log_bytes_written untyped mongodb_ss_wt_log_log_bytes_written 2.6208e+06
将同时以旧格式公开:
HELP mongodb_mongod_wiredtiger_log_bytes_total mongodb_mongod_wiredtiger_log_bytes_total # TYPE mongodb_mongod_wiredtiger_log_bytes_total untyped mongodb_mongod_wiredtiger_log_bytes_total{type="unwritten"} 2.6208e+06
导出器在所有指标中设置了一些拓扑标签:
| 服务器类型 | 标签 |
|---|---|
| mongos | mongos |
| 常规实例(主节点或从节点) | shardsvr |
| 仲裁节点 | shardsvr |
| 独立节点 | (空字符串) |
getDiagnosticData() -> replSetGetStatus.myState返回的整数。有关副本集状态值的详细信息,请查看官方文档。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务