监控redis和mongodb
一、环境介绍
主机清单
职责 | ip地址 | 备注
Prometheus服务器 | 192.168.100.85 | docker机式的prometheus
待监控Linux | 192.168.100.141 | 待准备组件:redis最新版本、mongodb4.2.5版本
redis概述
Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的Key-Value数据库,并提供多种语言的API
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多包括string、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些作都是原子性的。在此基础上,redis支持各种不同方式的排序,在部分场合可以对关系数据库起到很好的补充作用
mongodb概述
MongoDB是一个基于分布式文件存储[1]的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引
<hr>
二、prometheus监控Redis
docker安装(略)
docker-compose安装(略)
2.1待监控Linux安装Redis和Redis_exporter
创建docker-compose目录
mkdir /data/docker.compose-p
cd /data/docker.compose
创建docker-compose.yaml
vim docker-compose.yaml
配置如下:
services:
redis:
image: registry.cn-hangzhou.aliyuncs.com/ldw520/redis:latest
container_name: redis
restart: always
volumes:
- /data/redis/data:/data
command: redis-server --maxmemory 512mb
ports:
- 6379:6379
redis_exporter:
image: registry.cn-hangzhou.aliyuncs.com/ldw520/redis_exporter:latest
container_name: redis_exporter
restart: always
environment:
REDIS_ADDR: "redis:6379" # 修正为使用服务名称作为主机名
REDIS_PASSWORD: "" # 如果 Redis 没有密码,可以留空或省略此行
ports:
- 9121:9121
启动 docker-compose.yaml
docker-compose up -d
访网redis_exporter
http://192.168.100.141:9121/metrics
<hr>
2.2 prometheus服务器添加redis_exporter的地址
192.168.100.85的centos上,修改prometheus的配置文件
#进入docker-prometheus日系
cd /data/docker-prometheus
#修改prometheus.yml
vi promatheus/prometheus.yml
配置如下:
![](https://img.kancloud.cn/6a/56/6a565b7f6d2296bd667d6db4d10567a9_633x536.png)
保存配置后,让配置生效
#centos1中执行
curl ·X PosT http://localhost:9090/-/reload
监控成功
![](https://img.kancloud.cn/c5/0b/c50bea51e46b56a988aaa4596533466d_1720x952.png)
<hr>
2.3 redis服务器指标查询
redis_up #服务器是否在线
redis_uptime_in_seconds #运行时长,单位s
rate(redis_cpu_sys_seconds_total[1m])+rate(redis_cpu_user _seconds_total[1m]) #过去1分钟内系统CPU和用户CPU使用时间的增长率之和
redis_memory_used_bytes #占用内存量
redis_memory_max_bytes #限制的最大内存,如身
delta(redis_net_input_bytes_total[1m]) #网络发送的bytes
delta(redis_net_output_bytes_total[1m]) #网络接受的bytes
redis_connected_clients #客户端连接数
redis_connected_clients /redis_config_maxclients #连接数使用率
redis_rejected_connections_total #拒绝的客户端连接数
redis_connected_slaves #slave连接数
2.4 grafana中对redis进行监控
copy id to clipboard->grafana的dashboards中import dashboard
//grafana官网面板地址
https://grafana.com/grafana/dashboards
![](https://img.kancloud.cn/dc/ff/dcffd937c198e60e9c0c9bc3ffc3cdcc_1524x564.png)
<hr>
二、prometheus监控mongodb
2.1待监控Linux安装mongodb
centos2,创建docker-compose目录
mkdir /data/mongodb -p
cd /data/mongodb
修改docker-compose.yaml,增加mongodb配置节
vi docker-compose.yaml
配置如下:
services:
mongo:
image: registry.cn-hangzhou.aliyuncs.com/ldw520/mongo:4.2.5
container_name: mongo
restart: always
volumes:
- /data/mongodb/db:/data/db
command: [--auth]
ports:
- 27017:27017
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: 123456
运行docker-compose up-d的命令,观察mongodb的程序是否成功运行
<hr>
2.2 创建监控用户
centos2机器上,登录MongODB创建监控用户,权限为"readAnyDatabase”,如果是cluster环境,涨要有"clusterMonitor
登录MongoDB
docker exec -it mongo mongo admin
db.auth('root','123456')
db.createUser({'user':'exporter','pwd':'123456','roles':[{'role':'readAnyDatabase','db':'admin'},{'role':'clusterMonitor','db':'admin'}]})
#提示创建成功
#测试 使用上面创建的用户信息进行连接
db.auth('exporter','123456')
exit
<hr>
2.3 安装monogodb_exporter
centos2机器上,编辑docker-compose.yaml文件
vi docker-compose.yaml
如图所示:加入一个monogodb_exporter配置
![](https://img.kancloud.cn/d8/e6/d8e653683e3115b811fac283ab7e88b5_685x385.png)
mongodb:
image: ccr.ccs.tencentyun.com/rig-agent/mongodb-exporter:0.10.0
container_name: mongodb_exporter
restart: always
environment:
MONGODB_URI: "mongodb://exporter:123456@192.168.100.141:27017/admin?ssl=false"
ports:
- 9216:9216
运行docker-compose up-d的命令,观察mongodb的程序是否成功运行
宿主机上访问mongodb_exporter的metrics
http://192.168.100.141:9216/metrics
<hr>
3.3 prometheus服务器添加monogodb_exporter的地址
192.168.100.85的centos上,修改prometheus的配置文件
#进入docker-prometheus目录
cd /data/docker-prometheus
#修改prometheus.yml
vi prometheus/prometheus.yml
添加monogodb_exporter配置如下图:
![](https://img.kancloud.cn/07/f9/07f9fe734085d6ab895ce5930313b4bf_678x366.png)
- job_name: "mongodb-exporter"
static_configs:
- targets: ["192.168.100.141:9216"]
labels:
istance: "centos2服务器mangodb监听"
保存后输入命令更新:
curl -XPOST http://localhost:9090/-/reload
成功监听
![](https://img.kancloud.cn/64/c2/64c247689334bb12aa4edf2f8ae4079b_1725x727.png)
<hr/>
3.4 mongodb服务器指标查询
mongodb_connections{state="available"} #可用的连授数
mongodb_connections{state="current"} #当前的连授数
#关于server status
mongodb_up #服务器是否在线
mongodb_instance_uptime_seconds #服务器的运行时长,单位为秒
<hr>
3.5 grafana中对mongodb进行监控
copy id to clipboard->grafana的dashboards中lmport dashboardhtps:/grafana.com/grafana/dashboards/12079-mongodb/
![](https://img.kancloud.cn/ac/b9/acb9cf4c4f6f9cf74fac0a79e9f6bf91_1013x480.png)
![](https://img.kancloud.cn/20/29/20294146fa196357ef96928190497a24_1796x945.png)
![](https://img.kancloud.cn/c1/87/c1876edec100ed8e027cea5520cbd4b3_1089x691.png)
![](https://img.kancloud.cn/7e/f9/7ef980f68349a2cf02e1b9265f11252f_967x828.png)
导入后,成功
![](https://img.kancloud.cn/03/4d/034d471451418f903e5aa3f3ffa08f48_1849x898.png)
- Prometheus教程
- 一. dokcer 安装
- 二. 安装docker-compose
- 三. docker-compose安装Prometheus
- 四. 配置grafana的数据源
- 五. Prometheus的Exporter
- 六. Prometheus的基本术语
- 七. 监控Linux
- 八. 监控redis和mongodb
- 九. 监控mysql数据库
- 十. 监控go程序
- 十一. 监控nginx
- 十二. 监控消息队列
- 十三. 监控docker
- 十四. 监控进程
- 十五. 域名监控
- 十六. SNMP监控
- 十七. 黑盒监控
- 十八. 自定义监控
- 十九. go实现自定义监控
- 二十. 服务发现概述
- 二十一. 基于文件的服务发现
- 二十二. 基于Consul的服务发现
- 二十三. relabeling机制