🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
监控redis和mongodb 一、环境介绍 &nbsp;&nbsp;&nbsp;主机清单 职责 | ip地址 | 备注 Prometheus服务器 | 192.168.100.85 | docker机式的prometheus 待监控Linux | 192.168.100.141 | 待准备组件:redis最新版本、mongodb4.2.5版本 &nbsp;&nbsp;&nbsp;redis概述 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的Key-Value数据库,并提供多种语言的API &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多包括string、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些作都是原子性的。在此基础上,redis支持各种不同方式的排序,在部分场合可以对关系数据库起到很好的补充作用 &nbsp;&nbsp;&nbsp;mongodb概述 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MongoDB是一个基于分布式文件存储[1]的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引 <hr> 二、prometheus监控Redis &nbsp;&nbsp;&nbsp;docker安装(略) &nbsp;&nbsp;&nbsp;docker-compose安装(略) &nbsp;&nbsp;&nbsp;2.1待监控Linux安装Redis和Redis_exporter &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;创建docker-compose目录 mkdir /data/docker.compose-p cd /data/docker.compose &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;创建docker-compose.yaml vim docker-compose.yaml &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;配置如下: 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> &nbsp;&nbsp;&nbsp;2.2 prometheus服务器添加redis_exporter的地址 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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 &nbsp;&nbsp;&nbsp;2.1待监控Linux安装mongodb &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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> &nbsp;&nbsp;&nbsp;2.2 创建监控用户 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;centos2机器上,登录MongODB创建监控用户,权限为"readAnyDatabase”,如果是cluster环境,涨要有"clusterMonitor &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;登录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> &nbsp;&nbsp;&nbsp;2.3 安装monogodb_exporter &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;centos2机器上,编辑docker-compose.yaml文件 vi docker-compose.yaml &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如图所示:加入一个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 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;运行docker-compose up-d的命令,观察mongodb的程序是否成功运行 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;宿主机上访问mongodb_exporter的metrics http://192.168.100.141:9216/metrics <hr> &nbsp;&nbsp;&nbsp;3.3 prometheus服务器添加monogodb_exporter的地址 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;192.168.100.85的centos上,修改prometheus的配置文件 #进入docker-prometheus目录 cd /data/docker-prometheus #修改prometheus.yml vi prometheus/prometheus.yml &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;添加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监听" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;保存后输入命令更新: curl -XPOST http://localhost:9090/-/reload &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;成功监听 ![](https://img.kancloud.cn/64/c2/64c247689334bb12aa4edf2f8ae4079b_1725x727.png) <hr/> &nbsp;&nbsp;&nbsp;3.4 mongodb服务器指标查询 mongodb_connections{state="available"} #可用的连授数 mongodb_connections{state="current"} #当前的连授数 #关于server status mongodb_up #服务器是否在线 mongodb_instance_uptime_seconds #服务器的运行时长,单位为秒 <hr> &nbsp;&nbsp;&nbsp;3.5 grafana中对mongodb进行监控 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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)