前言
主要记录
- mongo如何接入prometheus
- 一些前置条件(开启权限、创建用户的知识)
- 使用命令行快速创建用户
启用权限验证
# 临时
mongo --auth
或者修改mongo.conf,最后一行添加
#启用权限访问
auth=true
重新启动mongodb, 启动方式不一定是这个,看你自己的了
net stop mongodb;
net start mongodb;
mongo 命令行交互与免交互
无密码登陆,如果设置了有密码登陆,那这种方式就登陆不进去,登陆进去也无法执行命令,如果链接的是数据库127.0.0.1:27017
那么端口和ip
可以省略
mongo [ip:port]
mongo [--host ip] [--p port] #一个杠,两个杠都可以
有密码登陆,如果不设置数据库名,默认test数据库,必须具备test数据库访问权限,没有什么实际意义
mongo [-host ip] -port 27017 [dbname] -u "username" -p "password"
有密码登陆且指定有权访问的数据库,注意此用户必须具备该数据库访问权限,下面的例子指定只能访问xxx
数据库
mongo -port 27017 -u "username" -p "password" --authenticationDatabase "xxx"
mongos> show dbs
xxx 0.015GB
使用命令行交互
# 创建一个只读用户,可以读取所有数据库,并具备admin数据库的集群管理权限
mongo -port xxx -u "username" -p "password" --authenticationDatabase "admin" --eval 'db.getSiblingDB("admin").createUser({user: "mongodb_exporter",pwd: "password",roles: [{
role: "clusterMonitor", db: "admin" },{ role: "read", db: "local" }]})'
# 查询一行记录,不指定数据库就是在test数据库里执行命令
# eval参数只能执行数据库操作命令,不能执行use db之类的
mongo [必须指定数据库] -port xxx -u "username" -p "password" --authenticationDatabase "admin" --eval "db.集合名称.findOne()"
使用命令行执行js
脚本,大部分的mongo shell
命令都可以在js
文件中使用,load
命令也不例外。
mongo xxx.js
prometheus监控
创建集群监控的只读用户,具备读取所有数据库的权限
db.getSiblingDB("admin").createUser({
user: "mongodb_exporter",
pwd: "password",
roles: [
{ role: "clusterMonitor", db: "admin" },
{ role: "read", db: "local" }
]
})
监控集群,启动exporter
nohup ./mongodb_exporter-linux-amd64 --mongodb.uri "mongodb://mongodb_exporter:password@xxx.xxx.xxx.xxx:8888,xxx.xxx.xxx.xxx:8888,xxx.xxx.xxx.xxx:8888" &
prometheus 配置
- job_name: mongo_exporter
static_configs:
- targets:
- 'xxx.xxx.xxx.xxx:9001'
labels:
service: mongo
导入模板
https://grafana.com/dashboards/2583能创建哪些权限用户
创建不受限制的超级管理员
db.createUser({"user":"root","pwd":"root","roles":["root"]})
创建admin
超级管理员
db.createUser({user: "admin", pwd: "admin",roles: [ { role: "userAdminAnyDatabase", db: "admin"}]})
创建一个业务数据库管理员用户
(只负责某一个或几个数据库的増查改删)
db.createUser({
user:"user001",
pwd:"123456",
customData:{
name:'jim',
email:'jim@qq.com',
age:18,
},
roles:[
{role:"readWrite",db:"db001"},
{role:"readWrite",db:"db002"},
'read'// 对其他数据库有只读权限,对db001、db002是读写权限
]
})
Mongodb 数据库角色
1.数据库用户角色:read、readWrite;
2.数据库管理角色:dbAdmin、dbOwner、userAdmin;
3.集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4.备份恢复角色:backup、restore;
5.所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、 dbAdminAnyDatabase
6.超级用户角色:root
评论