Linux 资源信息统计写入SQLServer(顺便学习Linux命令awk,sed)
  TEZNKK3IfmPf 2023年11月13日 17 0

一、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
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
TEZNKK3IfmPf