首页主机资讯CentOS Extract如何监控状态

CentOS Extract如何监控状态

时间2026-01-21 00:17:04发布访客分类主机资讯浏览928
导读:监控 CentOS 中 extract 的实用方案 一、先明确监控对象 若“extract”指解压命令(如 tar、unzip、gzip 等),重点监控:解压进度、吞吐速率、CPU/内存、磁盘 I/O、是否异常退出。 若“extract”...

监控 CentOS 中 extract 的实用方案

一、先明确监控对象

  • 若“extract”指解压命令(如 tar、unzip、gzip 等),重点监控:解压进度、吞吐速率、CPU/内存、磁盘 I/O、是否异常退出。
  • 若“extract”是某个自定义程序/脚本/服务,重点监控:进程存活、资源占用、日志输出、返回码与告警。

二、解压过程的实时监控

  • 进度与速率
    • 使用 pv 观察管道流量(安装:sudo yum install pv):
      • 示例:tar -xzvf file.tar.gz | pv > /dev/null
    • 使用 tar 内置进度:–checkpoint 与 --checkpoint-action
      • 示例:tar --checkpoint=1000 --checkpoint-action=dot file.tar.gz
  • 资源与 I/O
    • 实时资源:top/htop(安装:sudo yum install htop)
    • 内存:free -h
    • 系统概览:vmstat 1
    • 磁盘 I/O:iostat -x 1(安装:sudo yum install sysstat)
    • 进程级 I/O:iotop(安装:sudo yum install iotop)
    • 进程级 CPU/内存:pidstat -p [PID] 1(需 sysstat)
  • 故障排查与系统线索
    • 进程与日志:ps aux | grep extract;journalctl -xe;必要时用 strace -e trace=file 跟踪文件操作(sudo yum install strace)
    • 空间与连接:df -h;ss -tuln;ping/traceroute 做连通性验证

三、将 extract 纳入持续监控与告警

  • 作为 systemd 服务托管
    • 示例单元 extract.service:
      • [Unit] Description=Extract Job
      • [Service] Type=simple ExecStart=/usr/local/bin/do_extract.sh
      • [Install] WantedBy=multi-user.target
    • 常用命令:
      • 启动/查看:systemctl start|status extract.service
      • 实时日志:journalctl -u extract.service -f
  • 企业级监控
    • Zabbix:通过 UserParameter 采集自定义指标(如解压耗时、返回码、速率),可做阈值与告警
    • Prometheus:以脚本 Exporter 或 Pushgateway 上报指标,Grafana 可视化与告警
    • Nagios:编写 check 脚本(检查进程存活、返回码、日志关键字),接入告警通道

四、可直接使用的监控脚本模板

  • 功能:执行解压、记录开始/结束时间、返回码、最大内存、平均 CPU、退出状态;适配 tar.gz/zip。
  • 保存为:/usr/local/bin/do_extract.sh(chmod +x)
  • 使用:/usr/local/bin/do_extract.sh /data/file.tar.gz /data/out
#!/usr/bin/env bash
set -Eeuo pipefail

IN="$1"
OUT="${
2:-./}
    "
LOG="/var/log/extract_$(date +%F_%H-%M-%S).log"
T0=$(date +%s)

# 0=tar.gz, 1=zip
TYPE=0
[[ "$IN" =~ \.zip$ ]] &
    &
 TYPE=1

cleanup() {

  local rv=$?
  local dur=$(( $(date +%s) - T0 ))
  local maxrss_kb=0
  local avgcpu_pct=0

  # 解析最大内存(kB)与平均CPU(%)
  if [[ -n "${
PID:-}
    " ]];
 then
    maxrss_kb=$(ps -o rss= -p "$PID" | awk '{
    m=$1>
m?$1:m}
 END{
print m}
')
    avgcpu_pct=$(ps -o %cpu= -p "$PID" | awk '{
s+=$1}
 END{
printf "%.1f", s/NR}
')
  fi

  {

    echo "start_time=$T0"
    echo "end_time=$(date +%s)"
    echo "duration_sec=$dur"
    echo "exit_code=$rv"
    echo "max_rss_kb=${
maxrss_kb:-0}
"
    echo "avg_cpu_pct=${
avgcpu_pct:-0}
"
    echo "input=$IN"
    echo "output=$OUT"
  }
     >
    >
 "$LOG"

  exit "$rv"
}
    
trap cleanup EXIT

mkdir -p "$OUT"

case "$TYPE" in
  0)
    # 若已安装 pv,可改为:tar -xzvf "$IN" | pv >
    /dev/null
    tar -xzvf "$IN" -C "$OUT"
    ;
    ;
    
  1)
    unzip -q "$IN" -d "$OUT"
    ;
    ;
    
  *)
    echo "Unsupported file: $IN" >
    &
    2
    exit 2
    ;
    ;
    
esac
  • 接入 systemd(/etc/systemd/system/extract.service):
    • ExecStart=/usr/local/bin/do_extract.sh /data/file.tar.gz /data/out
    • StandardOutput=journal
    • StandardError=journal
  • 接入 Zabbix(示例 UserParameter,需先在 agent 配置并重启):
    • UserParameter=extract.status[], grep -oP ‘exit_code=\K\d+’ "/var/log/extract_.log" | tail -1
    • UserParameter=extract.duration[], grep -oP ‘duration_sec=\K\d+’ "/var/log/extract_.log" | tail -1
    • 在 Zabbix 创建监控项与触发器(如 exit_code != 0 或 duration 超过阈值)

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: CentOS Extract如何监控状态
本文地址: https://pptw.com/jishu/787847.html
CentOS Extract如何集成其他服务 centos cobbler日志如何查看

游客 回复需填写必要信息