Ubuntu系统下Informix数据库监控与告警设置指南
onstat -c(查看CPU使用率及进程信息)、onstat -m(内存使用详情)、onstat -d(磁盘I/O统计)、onstat -s(SQL语句执行统计)、onstat -g act(当前活动连接与事务)、onstat -g srv(服务器整体状态)、onstat -g lock(锁等待情况)。这些命令可快速定位CPU瓶颈、内存泄漏、锁争用等问题。top/htop:实时查看系统进程资源占用(CPU、内存),通过Shift+P(按CPU排序)、Shift+M(按内存排序)快速识别高负载进程;vmstat 1:每秒输出系统虚拟内存、进程、CPU使用情况,关注si/so(磁盘交换)、us/sy(用户/系统CPU)等指标;iostat -x 1:详细监控磁盘I/O(读写速度、IOPS、响应时间),重点关注await(平均响应时间)、%util(磁盘利用率);df -h:检查磁盘空间使用率,避免因空间不足导致数据库崩溃。informix_exporter(需单独安装)采集Informix指标(如CPU使用率、连接数、缓存命中率),并存储为时间序列数据;Zabbix Agent for Informix),可监控数据库状态、性能指标、日志信息,提供告警阈值设置、自动响应(如重启服务)等功能。编写Shell脚本整合onstat、系统命令,定期检查关键指标(如磁盘空间、内存使用、连接数),并将结果写入日志或发送通知。示例如下:
#!/bin/bash
# 监控Informix内存使用与磁盘空间
LOG_FILE="/var/log/informix_monitor.log"
THRESHOLD_MEM=80 # 内存使用率阈值(%)
THRESHOLD_DISK=90 # 磁盘空间阈值(%)
# 获取内存使用率
MEM_USAGE=$(onstat -m | grep "Memory Usage" | awk '{print $3}' | sed 's/%//')
# 获取磁盘空间使用率(根分区)
DISK_USAGE=$(df -h / | grep "/" | awk '{print $5}' | sed 's/%//')
# 记录日志
echo "$(date '+%Y-%m-%d %H:%M:%S') - Memory Usage: ${MEM_USAGE}%, Disk Usage: ${DISK_USAGE}%" >> $LOG_FILE
# 触发告警(阈值超过时)
if [ $MEM_USAGE -gt $THRESHOLD_MEM ]; then
echo "Warning: Informix memory usage exceeds ${THRESHOLD_MEM}%!" | mail -s "Informix Memory Alert" admin@example.com
fi
if [ $DISK_USAGE -gt $THRESHOLD_DISK ]; then
echo "Warning: Disk space usage exceeds ${THRESHOLD_DISK}%!" | mail -s "Informix Disk Alert" admin@example.com
fi
通过crontab -e设置定时任务(如每5分钟运行一次):
*/5 * * * * /path/to/informix_monitor.sh。
informix_instance_cpu_usage > 80),设置触发条件(如“连续5次超过阈值”),并配置通知渠道(如Email、Slack、PagerDuty)。示例如下:
avg(informix_instance_cpu_usage{instance="localhost:8088"}) by (job) > 80;{Informix:db.cpu.usage.avg(5m)}>80),关联“Action”(动作),如发送邮件、短信或执行脚本(如重启Informix服务)。journalctl查看Informix相关系统日志(如journalctl -u informix -p 3,过滤出警告等级日志),或查阅/var/log/messages、/var/log/syslog中的数据库错误信息。mailx工具(sudo apt install mailutils),在监控脚本中使用mail命令发送告警(如上述示例脚本),确保管理员及时收到异常通知。