linux

怎样监控MongoDB Linux运行状态

小樊
41
2025-11-18 22:12:24
栏目: 云计算

MongoDB Linux 运行状态监控实操指南

一 快速巡检命令

二 图形化与可视化监控

三 系统层面监控

四 关键指标与告警阈值示例

维度 关键指标 建议告警阈值 说明
连接 connections.current / connections.available current 持续接近 available 连接池紧张,可能拒绝新连接
操作吞吐 opcounters.insert/query/update/delete per sec 突增或骤降 业务异常或阻塞征兆
延迟与队列 qr/qw、locked、globalLock.totalTime qr/qw 长期大于 0 或 locked 高 读写被阻塞,需查锁与慢查询
内存与页面错误 mem.resident、mem.virtual、faults faults 持续大于 0 频繁缺页,磁盘 I/O 压力或内存不足
存储引擎 wiredTiger.cache.、wiredTiger.concurrentTransactions.、wiredTiger.checkpoint cache 使用率长期高、checkpoint 频繁 可能需调优 WT 缓存或检查磁盘
复制与分片 replSetGetStatus、replication lag、sharding replication lag 持续增长 主从延迟或分片不均衡
磁盘 iostat await、svctm、util await 高、util 接近 100% 磁盘成为瓶颈,影响写入与查询
日志 mongod.log 错误/慢查询 出现错误日志或慢查询增多 及时优化查询与索引、修复错误

五 一键巡检脚本示例

#!/usr/bin/env bash
set -e

HOST="localhost"
PORT="27017"
USER="admin"
PASS="yourpassword"
AUTH_DB="admin"
LOG="/var/log/mongodb/mongod.log"
PID_FILE="/var/run/mongodb/mongod.pid"

echo "=== MongoDB 快速巡检 $(date) ==="

# 1) mongostat
echo -e "\n[1/5] mongostat (10秒采样):"
mongostat --host "$HOST" --port "$PORT" -u "$USER" -p "$PASS" --authenticationDatabase "$AUTH_DB" --rowcount 10

# 2) mongotop
echo -e "\n[2/5] mongotop (10秒采样):"
mongotop --host "$HOST" --port "$PORT" -u "$USER" -p "$PASS" --authenticationDatabase "$AUTH_DB" --rowcount 10

# 3) 连接数与内存
echo -e "\n[3/5] 连接与内存:"
mongo --host "$HOST" --port "$PORT" -u "$USER" -p "$PASS" --authenticationDatabase "$AUTH_DB" --quiet <<'EOF'
db.serverStatus().connections
db.serverStatus().mem
EOF

# 4) 复制状态
echo -e "\n[4/5] 复制状态:"
mongo --host "$HOST" --port "$PORT" -u "$USER" -p "$PASS" --authenticationDatabase "$AUTH_DB" --quiet <<'EOF'
rs.status().members.forEach(function(m){print(m.name,m.stateStr,m.optimeDate,JSON.stringify(m.lastHeartbeatMessage||""))})
EOF

# 5) 错误与慢查询日志尾部
echo -e "\n[5/5] 最近错误与慢查询日志尾部 (20行):"
tail -n 20 "$LOG" | egrep -i "error|fail|warning|slow query"

echo -e "\n=== 巡检完成 ==="

0
看了该问题的人还看了