ganglia運維監控解決方案及與nagios監控整合

Ganglia UC Berkeley發起的一個開源監視項目,設計用於測量數以千計的節點。每臺計算機都運行一個收集和發送度量數據(如處理器速度、內存使用量等)的名爲gmond的守護進程。它將從操作系統和指定主機中收集。接收所有度量數據的主機可以顯示這些數據並且可以將這些數據的精簡表單傳遞到層次結構中。正因爲有這種層次結構模式,才使得Ganglia 可以實現良好的擴展。gmond帶來的系統負載非常少,這使得它成爲在集羣中各臺計算機上運行的一段代碼,而不會影響用戶性能。

所有這些數據收集會多次影響節點性能。網絡中的 “抖動(Jitter)” 發生在大量小消息同時出現時。我們發現通過將節點時鐘保持一致,就可以避免這個問題。


RRDTool 表示:輪循數據庫工具(Round Robin Database Tool)。它是由Tobias Oetiker創建的,並且爲許多高性能監視工具提供了引擎。Ganglia是其中之一,但是Cacti Zenoss 是另外兩個。

要安裝 Ganglia,首先需要讓RRDTool 運行在監視服務器上。RRDTool將提供其他程序使用的兩個非常優秀的功能:

  • 它將在輪循數據庫中存儲數據。隨着捕捉的數據變得越來越舊,解析的精確性將變得越來越低。這將佔用很少的內存並且在大多數情況下仍然有用。


  • 它可以通過使用命令行實參根據捕捉的數據生成圖形。


wKiom1OLKx3ysOUWAADv98Xu_Fk909.jpg

工作原理圖


Ganglia的核心包含gmetadgmond以及一個Web前端。主要是用來監控系統性能,如:cpumem、硬盤利用率,I/O負載、網絡流量情況等,通過曲線很容易見到每個節點的工作狀態,對合理調整、分配系統資源,提高系統整體性能起到重要作用。


gmetad可以部署在集羣內任一臺節點或者通過網絡連接到集羣的獨立主機,它通過單播路由的方式與gmond通信,收集區域內節點的狀態信息,並以XML數據的形式,保存在數據庫中。

每臺計算機都運行一個收集和發送度量數據的名爲gmond(帶來的系統負載非常少)的守護進程。

RRDTool工具處理數據,並生成相應的的圖形顯示,以Web方式直觀的提供給客戶端。



安裝軟件包依賴性

yum install -y libart_lgpl_devel gcc gcc-c++ python-devel pcre-devel expat-devel rrdtool-devel apr-devel rpm-build


rpm -ivh libconfuse-2.6-3.el6.x86_64.rpm libconfuse-devel-2.6-3.el6.x86_64.rpm

rpmbuild -tb ganglia-3.3.7.tar.gz
cd /root/rpmbuild/RPMS/x86_64           //放有ganglia源碼包rpmbuild的包5個
ganglia-devel-3.6.0-1.x86_64.rpm
ganglia-gmetad-3.6.0-1.x86_64.rpm
ganglia-gmond-3.6.0-1.x86_64.rpm
ganglia-gmond-modules-python-3.6.0-1.x86_64.rpm
libganglia-3.6.0-1.x86_64.rpm


rpm -ivh *

vi /etc/ganglia/gmond.conf

cluster {
	name = "my cluster"
	owner = "unspecified"
	latlong = "unspecified"
	url = "unspecified"
	}


service gmetad start

service gmond start


rpmbuild -tb ganglia-web-3.4.2.tar.gz

cd /root/rpmbuild/RPMS/noarch

ganglia-web-3.5.10-1.noarch.rpm

yum localinstall ganglia-web-3.5.10-1.noarch.rpm (默認安裝路徑是/var/www/html/ganglia)


/etc/init.d/httpd restart     //現在就可以用打開ganglia-web(http://ip/ganglia)查看本機檢測信息

此時本機是server+client,若想再監測其他主機,須在其上安裝以下包:

ganglia-gmond-3.6.0-1.x86_64.rpm

ganglia-gmond-modules-python-3.6.0-1.x86_64.rpm

libganglia-3.6.0-1.x86_64.rpm

libconfuse-2.6-3.el6.x86_64.rpm

vi /etc/ganglia/gmond.conf         //和上邊修改一樣

/etc/init.d/gmond start


現在可以重新啓動 gmetad,刷新Web 瀏覽器,然後應當會看到節點現在出現在列表中

進入/var/lib/ganglia/rrds目錄,可以看到每個主機的度量指標,生成了易於查看的圖形.


-------------------------------------------------------------


ganglia+nagios整合:

Ganglia Nagios,這是兩個用於監視數據中心的工具。這兩個工具被大量用於高性能計算(HPC)環境中,但是它們對於其他環境也具有很大的吸引力(例如雲、呈 現集羣和託管中心)。此外,兩者對監視的定義也採取了不同的側重點。Ganglia更多地與收集度量數據並隨時跟蹤這些數據有關,而Nagios 一直致力於成爲一種報警機制。


tar zxf ganglia-3.6.0.tar.gz

cd ganglia-3.6.0/contrib

./check_ganglia.py -h ip -m disk_free -w 20 -c 10 //-h後根檢測主機的iphostname-m後跟要監測的對象,-w-c指定警告和緊急的閥值


cp /ganglia-3.1.7/contrib/check_ganglia.py /usr/local/nagios/libexec :ganglianagios可以部署在不同的主機

vi /usr/local/nagios/libexec/check_ganglia.py   //注意此處格式要求嚴格
if critical > warning:
  if value >= critical:
    print "CHECKGANGLIA CRITICAL: %s is %.2f" % (metric,value)
    sys.exit(2)
  elif value >= warning:
    print "CHECKGANGLIA WARNING: %s is %.2f" % (metric,value)
    sys.exit(1)
  else:
    print "CHECKGANGLIA OK: %s is %.2f" % (metric,value)
    sys.exit(0)
else:
  if critical >= value:
    print "CHECKGANGLIA CRITICAL: %s is %.2f" % (metric,value)
    sys.exit(2)
  elif warning >= value:
    print "CHECKGANGLIA WARNING: %s is %.2f" % (metric,value)
    sys.exit(1)
  else:
    print "CHECKGANGLIA OK: %s is %.2f" % (metric,value)
    sys.exit(0)


chown nagios.nagios check_ganglia.py


配置nagios:

vi /usr/local/nagios/etc/objects/commands.cfg

define command {

command_name check_ganglia

command_line $USER1$/check_ganglia.py -h $HOSTNAME$ -m $ARG1$ -w $ARG2$ -c $ARG3$

}


vi /usr/local/nagios/etc/objects/templates.cfg

define service {

use generic-service

name ganglia-service

hostgroup_name ganglia-servers

service_groups ganglia-metrics

}


vi /usr/local/nagios/etc/objects/hosts.cfg

define host {

use linux-server

host_name ty2.org

address   192.168.0.21

}

define hostgroup {

hostgroup_name ganglia-servers

alias ganglia-servers

members ty2.org                 //hostgroup中的members必須要有host定義匹配

}


vi services.cfg

define service{

use                      ganglia-service

service_description      根分區

check_command           check_ganglia!disk_free_percent_rootfs!20!10

}


define service{

use                      ganglia-service

service_description      系統負載

check_command            check_ganglia!load_one!4!5

}


define service{

use                      ganglia-service

service_description      內存空閒

check_command            check_ganglia!mem_free!50000!30000

}


define servicegroup {

servicegroup_name ganglia-metrics

alias Ganglia Metrics

}


/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

/etc/init.d/nagios reload

監控成功,nagios下就可以看見ganglia監測主機的信息




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章