Ubuntu 上监控 Informix 资源的实用方案
一 监控体系总览
二 关键监控项与常用命令
| 维度 | 关键指标 | 常用命令或来源 | 典型告警阈值示例 |
|---|---|---|---|
| 数据库会话与锁 | 活跃会话数、长事务、锁等待 | onstat -u/-g ses/-k | 活跃会话突增;长事务持续不提交;锁等待显著上升 |
| 内存与缓冲 | 共享内存段、缓冲池命中 | onstat -g seg;onstat -p | 缓冲池命中率长期低于 95% |
| 磁盘与 I/O | 读写速率、IOPS、响应时间、日志切换 | onstat -d/-D;iostat -x 1;onstat -l | 日志频繁切换;磁盘 await 高、IOPS 饱和 |
| CPU 与负载 | 用户/系统 CPU、运行队列 | top/vmstat 1 | 运行队列长期大于 CPU 核数;CPU sys 占用高 |
| 网络 | 连接数、带宽占用 | netstat -anp | 连接数异常增长;带宽占满 |
| 备份 | 备份成功率与耗时 | onbar -l/-w;日志 | 备份失败/耗时异常 |
| 错误与告警 | 错误日志新条目 | 查看 online.log/message.log | 出现 assertion failure、I/O error、checkpoint 失败 等关键字 |
三 快速上手的监控实现
四 自动化巡检脚本示例
#!/usr/bin/env bash
# inf_mon.sh - 简易 Informix 巡检
export LANG=C
LOGFILE="/var/log/informix/inf_mon_$(date +%F).log"
exec >>"$LOGFILE" 2>&1
echo "=== $(date) ==="
echo "-- onstat -p (缓冲池命中率)"
onstat -p | egrep '^Buffer|Buffer Hit Ratio'
echo "-- onstat -l (逻辑/物理日志与切换)"
onstat -l | egrep 'next|last ckpt|log switches'
echo "-- onstat -d/-D (表空间与 chunk 使用)"
onstat -d
onstat -D
echo "-- onstat -u/-g ses/-k (会话与锁)"
onstat -u | head -20
onstat -g ses | head -20
onstat -k | head -20
echo "-- onstat -g seg (共享内存段)"
onstat -g seg
echo "-- iostat -x 1 3 (磁盘 I/O)"
iostat -x 1 3
echo "-- top -b -d 1 -n 5 | head (CPU/负载)"
top -b -d 1 -n 5 | head -15
echo "-- netstat -anp | grep :${INFORMIXPORT:-9088} | wc -l (连接数)"
netstat -anp | grep ":${INFORMIXPORT:-9088}" | wc -l
echo "-- onbar -l (备份状态,若使用 onbar)"
onbar -l 2>/dev/null || echo "onbar not available or no backup history."
五 告警阈值与优化建议