OpenNebula 3.8 — 监控

By , January 7, 2013 9:52 pm

在前些时间发布的一篇教程中,我们介绍了如何在Ubuntu 12.04 Server上安装和配置OpenNebula 3.8。在本教程中,我们将讲述如何在OpenNebula中如何利用ganglia来对计算节点和虚拟机进行监控。在进入本教程之前,我们假定您已经学习过如下内容:

Ubuntu 12.04 Server安装配置OpenNebula 3.8
OpenNebula 3.8中文语言包
使用VirtualBox创建KVM磁盘镜像文件
VM性能的快速测试方法

OpenNebula缺省地使用自带的监控组件来对计算节点和虚拟机进行监控。这个缺省的监控组件以固定的频率通过SSH登录到所有的计算节点,获取关于计算节点以及虚拟机的相关信息并保存在数据库中。在基础架构的规模比较大的情况下,同时创建大量SSH连接的开销也是很大的,因此这个缺省的监控组件存在潜在的性能问题。在OpenNebula中提供了一个通过ganglia对计算节点和虚拟机进行监控的方法,可以与用户当前的ganglia监控体系进行集成。

对于从来没有使用过ganglia监控工具的初学者来说,通过如下简单的步骤就可以快速设置一个ganglia监控环境。这里我们假定需要监控的两台服务器都在一个C 段子网中,运行的操作系统都是Ubuntu。在其中一台服务器上安装ganglia-monitor、gmetad和ganglia-webfrontend组件:

sudo apt-get install ganglia-monitor gmetad ganglia-webfrontend

sudo ln -s /usr/share/ganglia-webfrontend /var/www/ganglia

sudo service ganglia-monitor start

sudo service gmetad start

假设第一台服务器的IP地址为192.168.10.10。我们通过浏览器访问http://192.168.10.10/ganglia/就可以看到ganglia所提供的监控报表,在最右边的Hosts up栏目应该显示有一台活跃的主机。接下来我们在第二台服务器上安装ganglia-monitor:

sudo apt-get install ganglia-monitor

sudo service ganglia-monitor start

在缺省的情况下,ganglia-monitor组件通过multicast广播的方式发送监控信息,gmetad模块会自动发现同一广播域中所有安装有ganglia-monitor模块的节点。因此,我们刷新过浏览器之后,应该可以看到最右边的Hosts up栏目显示有两台活跃的主机。

对于一个规模不大的基础架构来说,将所有的物理主机和虚拟机都用ganglia监控起来也许是个不错的选择。为了达到这个目的,我们只需要在制作虚拟机操作系统映像的时候事先安装配置ganglia-monitor模块。经过这样处理之后,所有事先安装有ganglia-monitor模块的虚拟机启动之后都会自动地以multicast的方式广播自己的监控信息,而在同一广播域内安装有gmetad模块的节点会收集到这些活跃节点的监控信息,并在ganglia所提供的监控报表中体现出来。

在ganglia所提供的监控报表中,如果你看到有一些物理主机或者虚拟机被标示为localhost的话,可能是你的DNS服务器设置有问题。你可以使用nslookup命令(例如nslookup 192.168.1.1)来查看DNS解析是不是有问题。解决的方案是修改各个节点上的/etc/resolv.conf文件,提供一个正确的DNS服务器地址(例如8.8.8.8)。进行这些修改之后,需要重启各个节点上的ganglia-monitor和gmetad服务。

在服务器配置有双网卡的情况下,使用multicast广播的方式可能会遇到一些意想不到的困难,比如说在ganglia所提供的监控报表上根本找不到你的节点。在这种情况下,比较容易的解决方法是使用unicast单播方式发送数据,在配置参数中直接指定数据接收节点的IP地址。修改各个被监控节点上的/etc/ganglia/gmond.conf文件,修改udp_send_channel和udp_recv_channel两个参数,如下:

udp_send_channel {
#mcast_join = 239.2.11.71 #注释掉
host = 192.168.1.1 #这一行是新添加的,host是运行ganglia-webfrontend的节点名称,需要根据你的网络情况和ganglia部署情况来修改
port = 8649
ttl = 1
}

udp_recv_channel {
# mcast_join = 239.2.11.71 #注释掉
port = 8649
# bind = 239.2.11.71 #注释掉
}

进行如上修改之后,需要重新启动ganglia-monitor服务。这时候从ganglia的监控报表中应该可以看到你的节点了。

为了将ganglia监控体系与SunStone集成在一起,我们还需要做一些额外的配置。首先。编辑管理节点上的~/etc/oned.conf文件,删除如下配置前面的注释:

IM_MAD = [
name = "im_ganglia",
executable = "one_im_sh",
arguments = "ganglia" ]

并将vmm_kvm部分的配置修改为:

VM_MAD = [
name = "vmm_kvm",
executable = "one_vmm_ssh",
arguments = "-t 15 -r 0 kvm -l poll=poll_ganglia",
default = "vmm_ssh/vmm_ssh_kvm.conf",
type = "kvm" ]

重新启动OpenNebula使如上配置生效:

one stop
one start

将管理节点上oneadmin用户~目录下的文件~/var/remotes/vmm/kvm/poll拷贝到计算节点上oneadmin用户的~目录下。

在计算节点上,以oneadmin用户的身份设置设置一个定时运行的任务:

crontab -e

在crontab配置文件中加入这样一行:

* * * * * gmetric -n OPENNEBULA_VMS_INFORMATION -t string -v ‘$HOME/poll –kvm’

使用如下命令往OpenNebula中添加计算节点:

onehost create host_ip -i im_ganglia -v vmm_kvm -n dummy

经过这些简单的配置,从SunStone中看到的计算节点和虚拟机监控信息就是由ganglia采集的了。

使用ganglia进行监控的另外一个好处在于ganglia将各个节点的监控信息保存在RRD数据库中(缺省的数据目录为/var/lib/ganglia/rrds),我们还可以通过自定义的程序来对这些监控数据进行处理。

Leave a Reply

Panorama Theme by Themocracy