監控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
配置如下:

保存配置后,讓配置生效
#centos1中執行
curl ·X PosT http://localhost:9090/-/reload
監控成功

<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

<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配置

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配置如下圖:

- job_name: "mongodb-exporter"
static_configs:
- targets: ["192.168.100.141:9216"]
labels:
istance: "centos2服務器mangodb監聽"
保存后輸入命令更新:
curl -XPOST http://localhost:9090/-/reload
成功監聽

<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/




導入后,成功

- Prometheus教程
- 一. dokcer 安裝
- 二. 安裝docker-compose
- 三. docker-compose安裝Prometheus
- 四. 配置grafana的數據源
- 五. Prometheus的Exporter
- 六. Prometheus的基本術語
- 七. 監控Linux
- 八. 監控redis和mongodb
- 九. 監控mysql數據庫
- 十. 監控go程序
- 十一. 監控nginx
- 十二. 監控消息隊列
- 十三. 監控docker
- 十四. 監控進程
- 十五. 域名監控
- 十六. SNMP監控
- 十七. 黑盒監控
- 十八. 自定義監控
- 十九. go實現自定義監控
- 二十. 服務發現概述
- 二十一. 基于文件的服務發現
- 二十二. 基于Consul的服務發現
- 二十三. relabeling機制