XCP/XenServer资源监控脚本程序代码

一直以来我都以每个月至少一篇原创技术文章来要求自己,不过有的时候真的太懒了,在这里鄙视一下自己。
今天已经是这个月的最后一天了,其实近期的工作,有很多东西都是可以总结成文章分享给大家的。

有一些用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

时间: 2024-11-13 06:42:22

XCP/XenServer资源监控脚本程序代码的相关文章

apache定时自动启动脚本程序代码

linux系统操作方法 在linux下安装了apache 服务(通过下载二进制文件经济编译安装.而非rpm包).apache 服务启动命令:            /server/apache/bin/apachectl start    .让apache服务运行在运行级别3下面.  命令如下:       1)  代码如下 复制代码 touch /etc/rc.d/init.d/apache       vi /etc/rc.d/init.d/apache       chown -R roo

python重构日志监控脚本的程序代码

先看代码: nginx日志监控脚本Python #!/usr/bin/python2.6 #coding=utf-8 import os import time #日志记录 num_file = '/data/www/www.111cn.net/log/num' log_file = '/data/www/www.111cn.net/log/www.111cn.net.log' #ip屏蔽函数 def shellcmd(ip,con):     os.system('/root/shell/ng

Shell脚本实现Linux系统和进程资源监控

 这篇文章主要介绍了Shell脚本实现Linux系统和进程资源监控,本文讲解了检查进程是否存在.检测进程 CPU 利用率.检测进程内存使用量.检测进程句柄使用量.,需要的朋友可以参考下     在服务器运维过程中,经常需要对服务器的各种资源进行监控,例如:CPU的负载监控,磁盘的使用率监控,进程数目监控等等,以在系统出现异常时及时报警,通知系统管理员.本文介绍在Linux系统下几种常见的监控需求及其shell脚本的编写. 文章目录: 1.Linux使用 Shell 检查进程是否存在 2.Linu

linux下如何编写代码用于监控特定程序的CPU,内存,磁盘和网络使用情况?

问题描述 linux下如何编写代码用于监控特定程序的CPU,内存,磁盘和网络使用情况? 初学,linux(ubuntu)环境下,如何编写代码用于监控特定程序的CPU,内存,磁盘和网络使用情况?初学者,希望从这些基础程序入手,谢谢大家~ 解决方案 读取proc下面的文件. /proc/stat 里面是CPU使用情况,/proc/meminfo里面是内存使用情况,进程信息在/proc/$pid/stat,statm里面. /proc/net/dev里面是网络使用情况,磁盘IO可以使用iostat命令

分享一个VPS系统监控资源的脚本【干货】

几个月前开始使用VPS,每月限制300GB流量,流量方便基本够用了,但是有时候由于受到一些恶意访问,导致CPU.Memory等资源消耗较大,导致VPS上的博客网站响应时间太慢甚至有时根本无法打开网页.所以,我简单做了个脚本来进行监控和发邮件报警. 由于不是做很专业的运维,暂时不想上很专业的监控工具,如:Nagios.Puppet.Cacti.Zabbix等,所以自己手动了个Shell脚本来监控我关心的CPU.Load.Memory.网络传输.博客网站能否打开等内容.将该监控脚本分享如下: htt

Linux下用Python脚本监控目录变化代码分享

  这篇文章主要介绍了Linux下用Python脚本监控目录变化代码分享,本文直接给出实现代码,需要的朋友可以参考下 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #!/usr/bin/env python #coding=utf-8   import os from pyinotify import WatchManager, Notifier, ProcessEven

几个常用的Linux操作系统监控脚本代码

本文介绍了几个常用的Linux监控脚本,可以实现主机网卡流量.系统状况.主机磁盘空间.CPU和内存的使用情况等方面的自动监控与报警.根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性. 最近时不时有互联网的朋友问我关于服务器监控方面的问题,问常用的服务器监控除了用开源软件,比如:cacti,nagios监控外是否可以自己写shell脚本呢?根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性. 下面是我常用的几个主机监控的脚本,大家可以根据自己的情况再进

几个常用的Linux操作系统监控脚本代码_linux shell

本文介绍了几个常用的Linux监控脚本,可以实现主机网卡流量.系统状况.主机磁盘空间.CPU和内存的使用情况等方面的自动监控与报警.根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性. 最近时不时有互联网的朋友问我关于服务器监控方面的问题,问常用的服务器监控除了用开源软件,比如:cacti,nagios监控外是否可以自己写shell脚本呢?根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性. 下面是我常用的几个主机监控的脚本,大家可以根据自己的情况再进

五个常用的Linux监控脚本代码

  为大家提供五个常用Linux监控脚本(查看主机网卡流量.系统状况监控.监控主机的磁盘空间,当使用空间超过90%就通过发mail来发警告.监控CPU和内存的使用情况.全方位监控主机),有需要的朋友不妨看看哦 1.查看主机网卡流量 #!/bin/bash #network #Mike.Xu while : ; do time='date +%m"-"%d" "%k":"%M' day='date +%m"-"%d' rx_be