温馨提示×

如何监控Debian Informix运行状态

小樊
41
2025-11-16 07:57:08
栏目: 智能运维

监控 Debian 上 Informix 运行状态的实用方案

一 快速健康检查清单

  • 确认实例进程与监听
    • 查看引擎进程:ps -ef | grep oninit;如未运行,使用 oninit 启动。
    • 检查服务端口:ss -lntp | grep <your_port> 或 netstat -an | grep <your_port>。
  • 使用 Informix 自带工具
    • 引擎概况:onstat -(应返回引擎状态行,如“IBM Informix Dynamic Server Version …”与状态)
    • 共享内存与会话:onstat -g ses;长事务/锁等待:onstat -x;I/O 与空间:onstat -d;配置与模式:onstat -c;必要时用 onmode -c 查看/切换运行模式。
  • 日志与告警
    • 查看在线日志:onstat -m;检查告警与错误:grep -iE “error|fail|panic” $INFORMIXDIR/online.log。
  • 备份状态
    • 若为归档/逻辑备份,使用 ontape -s 或 onbar -l 查看/验证最近备份结果。
  • 系统资源
    • CPU/内存/负载:top、vmstat 1;磁盘 I/O:iostat -x 1;网络:netstat -an。

二 持续监控与可视化

  • 企业图形化管理

    • IBM OpenAdmin Tool(OAT):基于 Web 的性能与健康管理,包含 Health Advisor、SQL 下钻、复制/时间序列/空间管理等插件,适合集中监控多实例与历史趋势分析。
  • 开源监控栈

    • Zabbix:通过 UserParameter 或外部脚本采集 onstat 指标,配置触发器与告警通道,适合已有 Zabbix 体系的团队。
    • Prometheus + Grafana:以 Exporter 或脚本暴露指标,Grafana 做可视化与阈值告警,适合云原生与容器化环境。
    • 系统层补充:部署 dstat、iftop、NetHogs 观察综合资源与按进程/连接带宽,辅助定位瓶颈。

三 自动化巡检脚本示例

  • 目标:判断实例存活、会话/锁、磁盘空间、备份状态,异常时输出非零并附带关键信息。
  • 使用方式:将脚本加入 root 或 informix 用户的 crontab,例如每 5 分钟执行一次。
#!/usr/bin/env bash
# 适配 Debian + Informix:按需修改 INFORMIXDIR / INFORMIXSERVER / ONLINE_LOG
export INFORMIXDIR=/opt/informix
export INFORMIXSERVER=myserver
export ONLINE_LOG=$INFORMIXDIR/online.log
export PATH=$INFORMIXDIR/bin:$PATH

ALERT=0
TS=$(date '+%F %T')
HOST=$(hostname -s)

# 1) 实例存活
if ! onstat - >/dev/null 2>&1; then
  echo "[$TS] [$HOST] CRIT: Informix instance not responding (onstat - failed)"
  exit 2
fi

# 2) 会话与长事务/锁
SESS=$(onstat -g ses | awk '/^[ ]*[0-9]/ {n++} END {print n+0}')
LOCKS=$(onstat -x | awk '/^locks:/ {print $2; exit}')
if [ "$LOCKS" -gt 100 ]; then
  echo "[$TS] [$HOST] WARN: Long transaction/lock count=$LOCKS"
  ALERT=1
fi

# 3) 表空间与 chunk 使用率(超过 85% 告警)
onstat -d | awk '
/^[ ]+[0-9]/ {
  used=$4; total=$6;
  if (total>0) { pct=used/total*100; if (pct>85) printf "[%s] [%s] WARN: Dbspace %s usage %.1f%%\n", "'"$TS"'", "'"$HOST"'", $1, pct }
}' 

# 4) 错误日志近 1 小时关键字
ERR=$(tail -n 10000 "$ONLINE_LOG" 2>/dev/null | \
      awk -v ts="$(date -d '1 hour ago' '+%b %d %H')" \
      '$0 >= ts && /error|fail|panic|corruption|abort/ {print; count++; exit} END {print count+0}')
if [ "$ERR" -gt 0 ]; then
  echo "[$TS] [$HOST] WARN: Found $ERR error/fail/panic in online.log (last hour)"
  ALERT=1
fi

# 5) 备份状态(按需启用)
# 示例:ontape -s 返回 0 表示正常;如失败或超时则告警
# if ! timeout 30 ontape -s >/dev/null 2>&1; then
#   echo "[$TS] [$HOST] CRIT: ontape -s backup check failed"
#   ALERT=2
# fi

exit $ALERT
  • 接入 Zabbix 思路
    • 将脚本输出作为 UserParameter 返回值,或在 Zabbix Agent 中配置脚本采集项与触发器(如会话数、锁数、错误关键字计数、磁盘使用率阈值)。

四 关键指标与阈值建议

指标 采集方式 建议阈值 处置要点
实例存活 onstat - !=0 即异常 立即检查 oninit 进程与 $INFORMIXDIR/online.log
会话数 onstat -g ses > 会话上限的 80% 排查连接泄漏、应用未释放连接
长事务/锁 onstat -x 锁数 > 100 或持续增长 分析阻塞会话,必要时 kill 或优化事务
表空间使用率 onstat -d > 85% 增加 chunk、迁移/压缩表、清理历史数据
备份状态 ontape -s / onbar -l 最近一次失败或超时 立即重跑备份,检查磁带/存储与空间
CPU 负载 vmstat 1 / sar -u 15 分钟负载 > CPU 核数 优化慢 SQL、调整实例参数、扩容
磁盘 I/O iostat -x 1 await/svctm 持续偏高 更换更快磁盘、条带化、优化检查点/日志
错误日志关键字 grep online.log 出现 error/fail/panic 按时间点定位 SQL/任务并回滚/修复

以上阈值需结合业务峰值与 SLA 调优,建议以历史基线为准逐步收敛。

五 常见问题排查路径

  • 实例无法连接
    • 检查进程:ps -ef | grep oninit;端口:ss -lntp | grep ;共享内存:ipcs -m;必要时以 oninit 启动并观察 online.log。
  • 性能骤降
    • 会话/锁:onstat -g ses / onstat -x;I/O:iostat -x 1;慢查询:开启 SQL 跟踪或使用 OAT 的 SQL 下钻定位计划与热点对象。
  • 磁盘空间告警
    • onstat -d 查 chunk 使用;清理逻辑日志/归档、扩容 chunk、归档历史表。
  • 备份失败
    • 检查磁带/目录权限与空间、网络连通性、实例一致性;重跑备份并复核 ontape/onbar 日志。

0