As estatísticas de informações de recursos do Linux são gravadas no SQLServer (a propósito, aprenda os comandos do Linux awk, sed)

índice

1. Uso de comandos de estatísticas de recursos do Linux

1.1. Taxa de utilização do disco do sistema

1.2. Taxa de utilização do disco de dados

 1.3. Uso da CPU

1.4. Uso de memória

1.5. A carga do sistema nos últimos 15 minutos

1.6. Tempo de operação contínua do sistema

2. Shell implementa aquisição de informações de recursos e gravação no banco de dados

2.1. Gravar o arquivo de configuração do banco de dados table.ini

2.2. Shell realiza sincronização de informações de recursos do sistema


1. Uso de comandos de estatísticas de recursos do Linux

1.1. Taxa de utilização do disco do sistema

​[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. Taxa de utilização do disco de dados

[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. Uso da 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: memória swap usada (memória)
  • livre: memória física livre (memória)
  • buff: a quantidade de memória usada como buffer (memória)
  • cache: livro de memória usado como cache (memória)
  • cs: o tempo usado pelo processo do usuário. Expresso como uma porcentagem (sistema);
  • us: o tempo do processo do usuário usando a CPU (CPU);
  • sy: O tempo usado pelo processo do sistema. Expresso como uma porcentagem (CPU);
  • id: O tempo ocioso da unidade central de processamento. Expresso como uma porcentagem (CPU);

1.4. Uso de memória

[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. A carga do sistema nos últimos 15 minutos

[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. Tempo de operação contínua do sistema

# 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. Shell implementa aquisição de informações de recursos e gravação no banco de dados

2.1. Gravar o arquivo de configuração do banco de dados 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. O Shell realiza a sincronização de informações de recursos do sistema

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

 

 

 

 

 

Acho que você gosta

Origin blog.csdn.net/qq_35995514/article/details/111596573
Recomendado
Clasificación