一、Linux资源统计命令使用
1.1. 系统盘的使用率
[root@datanode01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_datanode01-lv_root
44G 17G 26G 40% /
tmpfs 2.9G 12K 2.9G 1% /dev/shm
/dev/sda1 477M 28M 425M 7% /boot
/dev/sdb1 1.1T 190G 863G 19% /hadoop
[root@datanode01 ~]# df -h | sed -n '3p' ==========>> # sed取出第三行
44G 17G 26G 40% /
[root@datanode01 ~]# df -h | sed -n '3p' | awk -F ' ' '{print $4}' ==========>> # awk 取出
40%
[root@datanode01 ~]#
1.2.数据盘的使用率
[root@datanode01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_datanode01-lv_root
44G 17G 26G 40% /
tmpfs 2.9G 12K 2.9G 1% /dev/shm
/dev/sda1 477M 28M 425M 7% /boot
/dev/sdb1 1.1T 190G 863G 19% /hadoop
[root@datanode01 ~]# df -h | grep "/hadoop"
/dev/sdb1 1.1T 190G 863G 19% /hadoop
[root@datanode01 ~]# df -h | grep "/hadoop" | awk '{print $5}' # awk 空格拆分 取出百分比
19%
[root@datanode01 ~]#
1.3.cpu的使用率
[root@datanode01 ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 81100 1220896 148912 1124204 0 1 272 89 333 58 5 1 94 0 0
[root@datanode01 ~]# vmstat | sed -n '3p' =============>> #取出第三行
1 0 81100 1221888 148920 1123260 0 1 272 89 333 58 5 1 94 0 0
[root@datanode01 ~]# vmstat | sed -n '3p' | awk '{print $15}' # CPU的空闲率
94
[root@datanode01 ~]#
- swpd:已经使用的交换内存(memory)
- free:空闲的物理内存(memory)
- buff:用做缓冲区的内存数(memory)
- cache:用作高速缓存的内存书(memory)
- cs:用户进程使用的时间 。以百分比表示(system);
- us:用户进程使用CPU的时间(CPU);
- sy:系统进程使用的时间。 以百分比表示(CPU);
- id:中央处理器的空闲时间 。以百分比表示(CPU);
1.4.内存使用率
[root@datanode01 ~]# free -m
total used free shared buffers cached
Mem: 5852 4663 1188 0 146 1099
-/+ buffers/cache: 3417 2434
Swap: 5119 79 5040
[root@datanode01 ~]# free -m | grep Mem
Mem: 5852 4664 1187 0 146 1100
[root@datanode01 ~]# free -m | grep Mem | awk '{print $2}' =======>> # 取出 total
5852
[root@datanode01 ~]# free -m | grep Mem | awk '{print $3}' =======>> # 取出 used
4663
[root@datanode01 ~]#
1.5.系统最近15分钟的负载
[root@datanode01 ~]# uptime
21:15:43 up 6:11, 6 users, load average: 0.40, 0.64, 0.73 # 1,10,15 分钟负载
[root@datanode01 ~]# uptime | awk -F ',' '{print $5}' # 逗号分隔 取出15分钟
0.72
[root@datanode01 ~]#
1.6.系统连续运行时长
# cut 剪切内容,根据 -d 指定的分隔符和 -f 列出的字段来提取内容
[root@datanode01 ~]# uptime
22:06:25 up 7:02, 6 users, load average: 0.53, 0.64, 0.73
[root@datanode01 ~]# uptime | cut -d ',' -f 1
22:06:39 up 7:02
[root@datanode01 ~]# uptime | cut -d ',' -f 1 | awk -F ' ' '{print $3}'
7:04
[root@datanode01 ~]#
二、Shell实现资源信息获取写入数据库
2.1.编写table.ini 数据库配置文件
[kangll@client ~]$ cat /hadoop/datadir/script/hadoop/table.ini
[xxx_CONNECT]
url=xxx
port=1433
username=PCS.Support
password=321@win#
dbname=HDP_TEST
customer=xxx_
2.2.Shell 实现系统资源信息同步
set -x
# 系统盘的使用率
get_sys_used_ratio(){
ration=`ssh $1 "df -h |grep centos-root | awk '{print $5}'"`
ration=`echo $ration | awk -F' ' '{print $5}'`
echo $ration
}
# 数据盘的使用率
get_data_used_ratio(){
ration=`ssh $1 "df -h | grep "/app" | awk '{print $5}'"`
ration=`echo $ration |awk '{print $5}'`
echo $ration
}
# cpu的使用率
get_cpu_used_ratio(){
ration=`ssh $1 "vmstat |sed -n '3p'|awk '{print $2}' "`
ration=`echo $ration |awk '{print $13}'`
echo "${ration}%"
}
# 内存使用率
get_mem_used_ratio(){
total=`ssh $1 "free -m | grep Mem | awk '{print $2}'"`
total=`echo $total |awk '{print $2}'`
used=`ssh $1 "free -m | grep Mem | awk '{print $3}'"`
used=`echo $used |awk '{print $3}'`
ratio=`echo "scale=2;($used/$total)*100"|bc`
echo "${ratio}%"
}
# 系统最近15分钟的负载
get_load_avg_last15min(){
value=`ssh $1 "uptime | awk -F ',' '{print $6}'"`
value=`echo $value |awk -F ',' '{print $6}'`
echo $value
}
# 系统连续运行时长
get_sys_running_time(){
running_time=`ssh $1 "uptime | cut -d ',' -f 1 | awk -F' ' '{print $3}'"`
running_time=`echo ${running_time} |awk -F' ' '{print $3}'`
echo $running_time
}
function ReadConnect(){
ReadINI=`awk -F '=' '/\['$2'\]/{a=1}a==1&&$1~/^'$3'$/{print $2;exit}' $1`
}
batchCustomer=xxx_
table_ini=/hadoop/datadir/script/hadoop/ipvaSum/table.ini
ReadConnect $table_ini "${batchCustomer}CONNECT" url
server=$ReadINI
ReadConnect $table_ini "${batchCustomer}CONNECT" port
port=$ReadINI
ReadConnect $table_ini "${batchCustomer}CONNECT" dbname
database=$ReadINI
ReadConnect $table_ini "${batchCustomer}CONNECT" username
user=$ReadINI
ReadConnect $table_ini "${batchCustomer}CONNECT" password
paw=$ReadINI
for i in client namenode snamenode ;
do
datebatch=`date +'%Y-%m-%d %H:%M:%S'`
hostname=$i
running_time=`get_sys_running_time $i`
echo "服务器持续运行时间:$running_time days"
load_avg=`get_load_avg_last15min $i`
echo "近15min的平均负载为:$load_avg"
sys_reatio=`get_sys_used_ratio $i`
echo "系统盘使用率:$sys_reatio"
data_ratio=`get_data_used_ratio $i`
echo "数据盘的使用率:$data_ratio"
cpu_used=`get_cpu_used_ratio $i`
echo "服务器cpu的使用率:$cpu_used"
mem_ratio=`get_mem_used_ratio $i`
echo "内存使用率:$mem_ratio"
/opt/mssql-tools/bin/sqlcmd -S $server -U $user -P $paw -d ${database} -Q "
INSERT INTO dbo.os_monitor(hostName,sysDiskUsedReatio,dataDiskUsedReatio,memUsedReatio,cpuUsedReatio,last15minLoadAvg,sysRunningTime,createTime,modifyTime)
VALUES('${hostname}','${sys_reatio}','${data_ratio}','${mem_ratio}','${cpu_used}','${load_avg}','${running_time}','${datebatch}','${datebatch}');
"
done