Linuxリソース情報の統計はSQLServerに書き込まれます(ちなみに、Linuxコマンドawk、sedを学ぶ)

目次

1.Linuxリソース統計コマンドの使用

1.1。システムディスクの使用率

1.2。データディスクの使用率

 1.3.CPU使用率

1.4。メモリ使用量

1.5。過去15分間のシステムの負荷

1.6。システムの連続動作時間

2.シェルは、リソース情報の取得とデータベースへの書き込みを実装します

2.1.table.iniデータベース構成ファイルを作成します

2.2。シェルはシステムリソース情報の同期を実現します


1.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:使用済みスワップメモリ​​(メモリ)
  • free:空き物理メモリ(メモリ)
  • バフ:バッファとして使用されるメモリの量(メモリ)
  • キャッシュ:キャッシュとして使用されるメモリブック(メモリ)
  • cs:ユーザープロセスによって使用される時間。パーセンテージ(システム)として表されます。
  • 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 ~]# 

2.シェルは、リソース情報の取得とデータベースへの書き込みを実装します

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。シェルはシステムリソース情報の同期を実現します

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

 

 

 

 

 

おすすめ

転載: blog.csdn.net/qq_35995514/article/details/111596573