自定义 Shell 脚本,获取主机的 Cpu、内存、磁盘等信息

该脚本定义的主机指标有:

  • cpu 总量、cpu 空闲、cpu 已使用、cpu 使用率
  • 内存总量、内存空闲、内存已使用、内存使用率
  • 磁盘总量、磁盘空闲、磁盘已使用、磁盘使用率
  • java 线程数
  • 系统进程数
# 定义 MySQL 信息
db_host=10.62.31.3
db_db=opsportal
db_user=mon
db_password=Mon@123
host_ip=10.62.243.1
# Cpu total
cpu_total=$(grep "cpu " /proc/stat | awk -F ' ' '{total = $2 + $3 + $4 + $5} END {print total}')
# Cpu idle
cpu_idle=$(grep "cpu " /proc/stat | awk -F ' ' '{total = $2 + $3 + $4 + $5} END {print $5}')
# Cpu used
cpu_used=$(grep "cpu " /proc/stat | awk -F ' ' '{total = $2 + $3 + $4 + $5} END {print $5}')
# Cpu  userd_rate
cpu_used_rate=$(echo "$cpu_used $cpu_total" |awk '{printf("%.4f",$1/$2)}')
# Mem total
mem_total=$(free|sed -n '2p'|awk -F ' ' '{print $2}')
# Mem free
mem_free=$(free|sed -n '2p'|awk -F ' ' '{print $4}')
# Mem used
mem_used=$(free|sed -n '2p'|awk -F ' ' '{print $3}')
# Mem used_rate
mem_used_rate=$(echo "$mem_used $mem_total" |awk '{printf("%.4f",$1/$2)}')
# Disk total
disk_total=$(fdisk -l | grep "Disk /dev/sd" | awk -F '[ :,]+' '{printf "%.0f\n",$5/1072741824}' | awk -v total=0 '{total+=$1}END{printf "%.0f\t",total}')
# Disk used
disk_used=$(df -k | grep -v "tmpfs" | egrep -A 1 "mapper|sd" | awk 'NF>1{print $(NF-3)}' | awk -v used=0 '{used+=$1}END{printf "%.2f\n",used/1048576}')
# Disk free
disk_free=$(echo "$disk_used $disk_total" |awk '{printf("%.2f",$2-$1)}')
# Disk used_rate
disk_used_rate=$(echo "$disk_used $disk_total" |awk '{printf("%.4f",$1/$2)}')
# Java 线程数
thread_num=$(ps -eLf | grep java | wc -l)
# 进程数
process_num=$(ps axu|wc -l)
# 打开文件数
#open_file_num=$(lsof |wc -l)
# 数据更新时间
update_time=$(date +%s)
# 拼接插入 MySQL 的 sql 语句
sql="insert into host_simple (host_ip, cpu_total, cpu_idle, cpu_used,
cpu_used_rate, mem_total, mem_free, mem_used, mem_used_rate,disk_total,
 disk_free, disk_used, disk_used_rate, thread_num, process_num)
 values ('$host_ip', '$cpu_total', '$cpu_idle', '$cpu_used', '$cpu_used_rate',
 '$mem_total', '$mem_free', '$mem_used', '$mem_used_rate', '$disk_total', '$disk_free',
  '$disk_used', '$disk_used_rate', '$thread_num', '$process_num');"
#mysql -h10.62.31.3 -Dopsportal -umon -pMon@123 -e 'show databases;'
# 执行 sql 语句
mysql -h$db_host -D$db_db -u$db_user -p$db_password -e "$sql"
#echo $sql

 

你可能感兴趣的:(Linux)