当前位置: 首页 > news >正文

服务器CPU、内存、磁盘、网络使用率,东方通CPU使用率东方通内存使用率监控脚本

#!/bin/bash

# 创建日志目录
LOG_DIR="/log"
LOG_FILE="$LOG_DIR/jk.txt"

# 阈值设置
CPU_THRESHOLD=80 # CPU使用率阈值(%)
MEM_THRESHOLD=80 # 内存使用率阈值(%)
DISK_THRESHOLD=80 # 磁盘使用率阈值(%)
NET_THRESHOLD=1000 # 网络流量阈值(KB/s)
TONG_CPU_THRESHOLD=50 # 东方通中间件CPU使用率阈值(%)
TONG_MEM_THRESHOLD=70 # 东方通中间件内存使用率阈值(%)

# 创建日志目录(如果不存在)
if [ ! -d "$LOG_DIR" ]; then
mkdir -p "$LOG_DIR"
echo "创建日志目录: $LOG_DIR"
fi

# 覆盖已存在的日志文件
if [ -f "$LOG_FILE" ]; then
> "$LOG_FILE"
echo "清空现有日志文件: $LOG_FILE"
fi

# 获取当前时间戳
timestamp=$(date "+%Y-%m-%d %H:%M:%S")

# 函数:记录日志
log_message() {
echo "[$timestamp] $1" >> "$LOG_FILE"
}

# 函数:检查东方通中间件进程
check_tongweb_process() {
# 查找所有与东方通相关的进程
local tongweb_pids=$(ps -ef | grep -i "tongweb" | grep -v grep | awk '{print $2}')

if [ -n "$tongweb_pids" ]; then
echo "运行中 (PIDs: $tongweb_pids)"
return 0
else
echo "未运行"
return 1
fi
}

# 函数:获取东方通中间件的CPU使用率
get_tongweb_cpu() {
local tongweb_pids=$(ps -ef | grep -i "tongweb" | grep -v grep | awk '{print $2}')
if [ -z "$tongweb_pids" ]; then
echo "0"
return
fi

# 获取所有东方通进程的CPU使用率总和
local total_cpu=0
for pid in $tongweb_pids; do
local cpu_usage=$(ps -p $pid -o %cpu --no-headers 2>/dev/null)
if [ -n "$cpu_usage" ]; then
total_cpu=$(echo "$total_cpu + $cpu_usage" | bc)
fi
done

echo "$total_cpu"
}

# 函数:获取东方通中间件的内存使用率
get_tongweb_mem() {
local tongweb_pids=$(ps -ef | grep -i "tongweb" | grep -v grep | awk '{print $2}')
if [ -z "$tongweb_pids" ]; then
echo "0"
return
fi

# 获取所有东方通进程的内存使用率总和
local total_mem=0
for pid in $tongweb_pids; do
local mem_usage=$(ps -p $pid -o %mem --no-headers 2>/dev/null)
if [ -n "$mem_usage" ]; then
total_mem=$(echo "$total_mem + $mem_usage" | bc)
fi
done

echo "$total_mem"
}

# 函数:检查系统CPU使用率
check_cpu() {
cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)
echo "$cpu_usage"
}

# 函数:检查系统内存使用率
check_memory() {
mem_usage=$(free | grep Mem | awk '{printf "%.0f", $3/$2 * 100}')
echo "$mem_usage"
}

# 函数:检查磁盘使用率
check_disk() {
disk_usage=$(df / | grep / | awk '{print $5}' | sed 's/%//g')
echo "$disk_usage"
}

# 函数:检查网络流量
check_network() {
# 获取当前网络流量(KB/s)
interface=$(ip route | grep default | awk '{print $5}' | head -n1)

if [ -z "$interface" ]; then
echo "无法确定网络接口"
return
fi

rx_bytes_prev=$(cat /sys/class/net/$interface/statistics/rx_bytes 2>/dev/null)
tx_bytes_prev=$(cat /sys/class/net/$interface/statistics/tx_bytes 2>/dev/null)

# 等待1秒再次测量
sleep 1

rx_bytes_next=$(cat /sys/class/net/$interface/statistics/rx_bytes 2>/dev/null)
tx_bytes_next=$(cat /sys/class/net/$interface/statistics/tx_bytes 2>/dev/null)

# 计算流量(KB/s)
if [ -n "$rx_bytes_prev" ] && [ -n "$rx_bytes_next" ]; then
rx_rate=$(( (rx_bytes_next - rx_bytes_prev) / 1024 ))
tx_rate=$(( (tx_bytes_next - tx_bytes_prev) / 1024 ))
echo "接收: ${rx_rate}KB/s, 发送: ${tx_rate}KB/s"
else
echo "无法获取网络流量数据"
fi
}

# 主监控函数
monitor_system() {
log_message "=== 系统监控报告 ==="

# 检查东方通中间件状态
tongweb_status=$(check_tongweb_process)
log_message "东方通中间件状态: $tongweb_status"

if echo "$tongweb_status" | grep -q "运行中"; then
# 检查东方通中间件CPU使用率
tongweb_cpu=$(get_tongweb_cpu)
log_message "东方通中间件CPU使用率: ${tongweb_cpu}%"
if (( $(echo "$tongweb_cpu > $TONG_CPU_THRESHOLD" | bc -l) )); then
log_message "警告: 东方通中间件CPU使用率超过阈值 ${TONG_CPU_THRESHOLD}%!"
fi

# 检查东方通中间件内存使用率
tongweb_mem=$(get_tongweb_mem)
log_message "东方通中间件内存使用率: ${tongweb_mem}%"
if (( $(echo "$tongweb_mem > $TONG_MEM_THRESHOLD" | bc -l) )); then
log_message "警告: 东方通中间件内存使用率超过阈值 ${TONG_MEM_THRESHOLD}%!"
fi
fi

# 检查系统CPU
cpu_usage=$(check_cpu)
log_message "系统CPU使用率: ${cpu_usage}%"
if (( $(echo "$cpu_usage > $CPU_THRESHOLD" | bc -l) )); then
log_message "警告: 系统CPU使用率超过阈值 ${CPU_THRESHOLD}%!"
fi

# 检查系统内存
mem_usage=$(check_memory)
log_message "系统内存使用率: ${mem_usage}%"
if [ "$mem_usage" -gt "$MEM_THRESHOLD" ]; then
log_message "警告: 系统内存使用率超过阈值 ${MEM_THRESHOLD}%!"
fi

# 检查磁盘
disk_usage=$(check_disk)
log_message "根分区磁盘使用率: ${disk_usage}%"
if [ "$disk_usage" -gt "$DISK_THRESHOLD" ]; then
log_message "警告: 磁盘使用率超过阈值 ${DISK_THRESHOLD}%!"
fi

# 检查网络
net_status=$(check_network)
log_message "网络流量: $net_status"

log_message "=== 监控结束 ==="
log_message "" # 空行作为分隔符
}

# 执行监控
monitor_system

echo "监控完成,结果已保存到: $LOG_FILE"

http://www.hskmm.com/?act=detail&tid=13560

相关文章:

  • 3 网络基础知识+web基础知识+部署Server
  • wxpython图形界面_01_最小基本结构
  • 服务器总资源监控脚本
  • 一个身体,两个身体
  • 006_字典操作
  • 简单理解java虚拟机
  • 东方通中间件嵌入式监控脚本
  • 004_元组操作
  • 个人作业-第二次软件工程作业
  • 代码流水线
  • 洛谷题单指南-进阶数论-P1516 青蛙的约会
  • electron中的几个概念
  • 实用指南:告别IP被封!分布式爬虫的“隐身”与“分身”术
  • 从 “盲调” 到 “精准优化”:SQL Server 表统计信息实战指南
  • 别的摄像机都能国标GB28181注册上,就这台海康摄像机注册不上来,国标配置都反复检查没问题
  • 保护眼睛小程序
  • CSP-2025游寄
  • [::-1]的用法
  • 003_for循环操作列表和元组
  • linux 文件传输命令
  • 新手也能轻松上手!midas Gen 2019 安装详细图解
  • Redis AOF原理
  • 001_string操作
  • hbase 面试题
  • ANSYS Electronics 2025 R1 安装与使用全流程图文教程
  • mall项目学习笔记
  • 实用指南:通义DeepResearch论文六连发全面解读
  • glTF/glb:现在和未来
  • 存储多边形网格的文件格式:OBJ、FBX、RenderMan、glTF、USD 等。
  • 安防监控中常见的报警类型有哪些?国标GB28181平台EasyGBS的报警能力解析