XCP/XenServer資源監控指令碼程式碼

來源:互聯網
上載者:User

一直以來我都以每個月至少一篇原創技術文章來要求自己,不過有的時候真的太懶了,在這裡鄙視一下自己。
今天已經是這個月的最後一天了,其實近期的工作,有很多東西都是可以總結成文章分享給大家的。

有一些用Python和Shell寫的指令碼,我都放到了GitHub上,其中一個就是XCP/XenServer資源監控的指令碼。
XCP/XenServer的XenCenter只有Windows下的用戶端,命令列要擷取可用的CPU,記憶體以及磁碟,並沒有那麼方便,需要通過各個命令列去擷取。有的命令還必須在host主機本身運行才可以,比如 xl,因此我在各個XCP/XenServer的宿主OS之間都配置了ssh-key的信任。

我們的環境是由10多台物理伺服器裝上XCP構成的一個Pool,Pool的Manager是第一個XCP,然後儲存是用的每台伺服器本身的硬碟。
指令碼的輸出結果如下:

 代碼如下 複製代碼

[root@xen1 ~]# vm_monitor
Host xen1: vm-pdb1a vm-rdb1b
Available: Mem=13/95G  Disk=6/1108G  CPU=18/24Cores

Host xen2: vm-pdb1b vm-rdb1a
Available: Mem=13/95G  Disk=6/1108G  CPU=18/24Cores

Host xen3: vm-ads10 vm-ads3 vm-api3 vm-cp3 vm-m1 vm-relay1
Available: Mem=13/63G  Disk=151/549G  CPU=8/24Cores

Host xen4: vm-ads4 vm-c1 vm-log2 vm-mc2
Available: Mem=22/63G  Disk=11/549G  CPU=12/24Cores

...
具體的指令碼內容如下:

 代碼如下 複製代碼

#!/bin/bash

host_list=$(xe vm-list params | grep "Control domain on host: " | awk -F ": " '{print $3}'| cut -d . -f 1 | sort -n)

for host in $host_list
do
  guest_vm=$(ssh $host "xl list-vm |awk '{print $3}'| grep -vw name | sort -n")
  
  t_mem_m=$(ssh $host 'xl info | grep total_memory | cut -d : -f 2')
  f_mem_m=$(ssh $host 'xl info | grep free_memory | cut -d : -f 2')
  t_mem_g=$(($t_mem_m/1024))
  f_mem_g=$(($f_mem_m/1024))
 
  disk_uuid=$(xe sr-list | grep -A 2 -B 1 "Local storage" | grep -B 3 -w "$host" | grep uuid | awk -F ": " '{print $2}')
  t_disk_b=$(xe sr-param-list uuid=$disk_uuid | grep physical-size | cut -d : -f 2)
  u_disk_b=$(xe sr-param-list uuid=$disk_uuid | grep physical-utilisation | cut -d : -f 2)
  f_disk_b=$(($t_disk_b-$u_disk_b))
  t_disk_g=$(($t_disk_b/1024/1024/1024))
  f_disk_g=$(($f_disk_b/1024/1024/1024))

  t_cpu_num=$(ssh $host 'xe host-cpu-info | grep -w cpu_count | awk -F ": " "{print $2}"')
  v_cpu_sum=0
  for vm in $guest_vm
  do
    vm_uuid=$(xe vm-list | grep -B 1 -w $vm | head -n 1 | awk -F ": " '{print $2}')
    v_cpu_num=$(xe vm-list params=VCPUs-number uuid=${vm_uuid} | grep -w VCPUs | awk -F ": " '{print $2}')
    v_cpu_sum=$(($v_cpu_sum+$v_cpu_num))
  done
  f_cpu_num=$(($t_cpu_num-$v_cpu_sum))
  
  echo ""
  echo Host $host: $guest_vm
  echo "Available: Mem=${f_mem_g}/${t_mem_g}G  Disk=${f_disk_g}/${t_disk_g}G  CPU=${f_cpu_num}/${t_cpu_num}Cores"
done

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.