因爲linux下的office和win下有所區別,我只能把linux下的.dot文件打包成pdf,粘貼發送標出來,但有些圖片仍是沒辦法發表,要是有朋友感興趣的話,可加我qq 215687833具體的文檔可供參考,皆來自本人整理,扯犢子的請繞行。node
ganglia 是分佈式的監控系統,有兩個 Daemon, 分別是:客戶端 Ganglia Monitoring
Daemon (gmond)和服務端 Ganglia Meta Daemon (gmetad),還有 Ganglia PHP Web
Frontend(基於 web 的動態訪問方式)組成
是一個 Linux 下圖形化監控系統運行性能的軟件,界面美觀、豐富,功能強大
http://ganglia.sourceforge.net/ 軟件下載
環境:RHEL6 x8664 disable selinux and iptables
2 臺主機的解析分別爲
192.168.2.79 node2.example.com
192.168.2.81 node3.example.com
ganglia 多播的配置。
配置在 192.168.2.79 node2.example.com
下載軟件包:
ganglia3.6.0.tar.gz
gangliaweb3.5.10.tar.gz
libconfuse2.63.el6.x86_64.rpm
libconfusedevel2.63.el6.x86_64.rpm
rrdtooldevel1.3.86.el6.x86_64.rpm
yum install y rpmbuild 將 tar 包打壓成 rpm 包。
[root@node2 ~]# rpmbuild tb ganglia3.6.0.tar.gz 打壓的過程當中所須要的依賴包。
error: Failed build dependencies:
libart_lgpldevel is needed by ganglia3.6.01.x86_64
gccc++ is needed by ganglia3.6.01.x86_64
pythondevel is needed by ganglia3.6.01.x86_64
libconfusedevel is needed by ganglia3.6.01.x86_64
pcredevel is needed by ganglia3.6.01.x86_64
expatdevel is needed by ganglia3.6.01.x86_64
rrdtooldevel is needed by ganglia3.6.01.x86_64
aprdevel > 1 is needed by ganglia3.6.01.x86_64
安裝依賴關係。
# yum install y libart_lgpldevel gccc++ pythondevel pcredevel expatdevel rrdtooldevel aprdevel
安裝完成後再次打壓。
[root@node2 ~]# rpmbuild tb ganglia3.6.0.tar.gz
error: Failed build dependencies:
libconfusedevel is needed by ganglia3.6.01.x86_64
rrdtooldevel is needed by ganglia3.6.01.x86_64
發現還須要依賴關係,安裝如下依賴包。
[root@node2 ~]# yum localinstall libconfusedevel2.63.el6.x86_64.rpm rrdtooldevel1.3.8
6.el6.x86_64.rpm
發現安裝 上面 2 個包,又產生一個依賴包,還須要安裝依賴 包。
[root@node2 ~]# yum localinstall libconfusedevel2.63.el6.x86_64.rpm rrdtooldevel1.3.8
6.el6.x86_64.rpm libconfuse2.63.el6.x86_64.rpm
再次將 tar 包打壓成 rpm 包,ok
[root@node2 ~]# rpmbuild tb ganglia3.6.0.tar.gz
將 tarweb tar 包也打壓成 rpm 包。
[root@node2 ~]# rpmbuild tb gangliaweb3.5.10.tar.gz
切換到下面的目錄,ganglia 打壓的 包放在這下面。
/root/rpmbuild/RPMS/x86_64
[root@node2 x86_64]# ls
gangliadevel3.6.01.x86_64.rpm
gangliagmetad3.6.01.x86_64.rpm
gangliagmond3.6.01.x86_64.rpm
gangliagmondmodulespython3.6.01.x86_64.rpm
libganglia3.6.01.x86_64.rpm
[root@node2 x86_64]# rpm ivh *
Preparing... ########################################### [100%]
1:libganglia ########################################### [ 20%]
2:gangliagmond ########################################### [ 40%]
3:gangliagmondmodulesp########################################### [ 60%]
4:gangliadevel ########################################### [ 80%]
5:gangliagmetad ########################################### [100%]
/root/rpmbuild/RPMS/noarch gangliaweb 打壓的包放在這下面。
[root@node2 noarch]# yum localinstall gangliaweb3.5.101.noarch.rpm y
ganglia 的主配置文件都放在/etc/ganglia 目錄下。
[root@node2 ganglia]# vim gmetad.conf 修改服務的配置文件。
data_source "my cluster" localhost 改個組名爲 my cluster
[root@node2 ganglia]# vim gmond.conf
cluster {
name = "my cluster"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
啓動 ganglia 的服務端/客戶端:
/etc/init.d/gmond start
/etc/init.d/gmetad start
在瀏覽器中輸入: http://192.168.2.79/ganglia/
這下面放的是經過廣播監控到的 ganglia 服務的信息。
/var/lib/ganglia/rrds/my cluster
[root@node2 my cluster]# ls
192.168.2.125 192.168.2.138 192.168.2.56 node2.example.com
192.168.2.133 192.168.2.207 192.168.2.71 __SummaryInfo__
192.168.2.134 192.168.2.220 192.168.2.85
下面配置另外一臺主機的 ganglia 客戶端服務。
首先切換到當下目錄,將 ganglia 包拷貝到遠程主機。
/root/rpmbuild/RPMS/x86_64
scp gangliagmond* libganglia3.6.01.x86_64.rpm 192.168.2.81:/root/ 順便也把 libconfuse2.6
3.el6.x86_64.rpm 也拷貝過去,會用到依賴關係。
安裝客戶端的軟件包。
配置在 192.168.2.81 node3.example.com
[root@node3 ~]# yum localinstall gangliagmond* libganglia3.6.01.x86_64.rpm libconfuse2.6
3.el6.x86_64.rpm
同樣 ganglia 的主配置文件也放在/etc/ganglia 目錄下。
[root@node3 ganglia]# vim gmond.conf 編輯客戶端的配置文件。
cluster {
name = "my cluster"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
要是有多臺客戶端的主機,組同樣都使用
cluster {
name = "my cluster"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
重啓服務:
# /etc/init.d/gmond start
在主配置的/var/lib/ganglia/rrds 目錄下能夠看到 ganglia 所監控到的主機信息。
單播 ganglia 的配置:
配置在 192.168.2.79 這臺主機上。
單播的原理就是各自監控各自的,你們的組/端口都不同,每一個人起得組名字,端口都不同。
首先把上面的 ganglia 服務給停了。
[root@node2 ganglia]# vim gmetad.conf 編輯服務端的配置
組名我改成 linux007 監控的主機爲 192.168.2.79 和 192.168.2.81 端口爲 8007
data_source "linux007" 192.168.2.79:8007 192.168.2.81:8007
[root@node2 ganglia]# vim gmond.conf 客戶端主要修改如下幾行
send_metadata_interval = 30 /*secs */ 發送的更新爲 30 秒
cluster {
name = "linux007" 客戶端的組名也爲 linux007
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
mcast_join = 239.2.11.71
port = 8007
ttl = 1
udp_recv_channel {
mcast_join = 239.2.11.71
port = 8007 端口也爲 8007
bind = 239.2.11.71
retry_bind = true
tcp_accept_channel {
port = 8007 tcp 的端口爲 8007
# If you want to gzip XML output
gzip_output = no
}
重啓服務:
/etc/init.d/gmond restart
/etc/init.d/gmetad restart
另外一臺客戶端的配置;
192.168.2.81 node3 這臺主機:
[root@node3 ganglia]# vim gmond.conf 客戶端的配置文件修改如下幾行。
send_metadata_interval = 30 /*secs */
cluster {
name = "linux007"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
mcast_join = 239.2.11.71
port = 8007
ttl = 1
udp_recv_channel {
mcast_join = 239.2.11.71
port = 8007
bind = 239.2.11.71
retry_bind = true
tcp_accept_channel {
port = 8007
# If you want to gzip XML output
gzip_output = no
}
重啓服務:
# /etc/init.d/gmond restart
在服務端的/var/lib/ganglia/rrds/linux007 目錄下,會看到一下文件或目錄。
node2.example.com node3.example.com __SummaryInfo__
在瀏覽器中會看到:linux007 的信息
[root@node2 contrib]# cp check_ganglia.py /usr/local/nagios/libexec/
[root@node2 contrib]# cd /usr/local/nagios/libexec/
[root@node2 libexec]# ./check_ganglia.py
Usage: check_ganglia h|host= m|metric= w|warning= c|critical= [s|server=] [p|port=]
h 能夠寫主機名,也能夠寫 ip,這怎麼寫,你在/var/lib/ganglia/rrds/linux007/看到的信息是同樣
的。
[root@node2 libexec]# vim check_ganglia.py
ganglia_port = 8007
這下面的明顯是不對的,咱們寫的是 20%警告,10%危險,先面的輸出是危險,磁盤剩餘空間
83.04,很明顯是不對的。
[root@node2 libexec]# ./check_ganglia.py h node3.example.com m disk_free_percent_rootfs w 20
c 10
CHECKGANGLIA CRITICAL: disk_free_percent_rootfs is 83.04
修改腳本 check_ganglia.py,使其符合咱們的要求輸出。
[root@node2 libexec]# vim 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)
再次輸出發現徹底符合要求:
[root@node2 libexec]# ./check_ganglia.py h node3.example.com m disk_free_percent_rootfs w 20
c 10
CHECKGANGLIA OK: disk_free_percent_rootfs is 83.04
ganglia 擅長監控多臺服務,nagios 擅長警告,如今把他們結合起來。
首先 nagios 沒有 ganglia 的命令,咱們添加 nagios 命令。
# cd /usr/local/nagios/etc/objects/
[root@node2 objects]# vim commands.cfg 要是上面的驗證是 ip 則 HOSTADDRESS,我是域
名則
define command{
command_name check_ganglia
command_line $USER1$/check_ganglia.py h $HOSTNAME$ m $ARG1$ w $ARG2$ c
$ARG3$
}
[root@node2 objects]# vim templates.cfg
define service {
use genericservice
name gangliaservice
hostgroup_name gangliaservers
service_groups gangliametrics
register 0
}
[root@node2 objects]# vim hosts.cfg
define hostgroup {
hostgroup_name gangliaservers
alias gangliaservers
members node3.example.com
}
[root@node2 objects]# vim services.cfg
define servicegroup {
servicegroup_name gangliametrics
alias Ganglia Metrics
}
define service {
use gangliaservice
service_description 根分區
check_command check_ganglia!disk_free_percent_rootfs!20!10
}
define service {
use gangliaservice
service_description 系統負載
check_command check_ganglia!load_one!4!5
}
重啓服務後校驗語發是否錯誤:
[root@node2 etc]# /usr/local/nagios/bin/nagios v /usr/local/nagios/etc/nagios.cfg
校驗成後重啓服務:
# /etc/init.d/nagios restart
在瀏覽器輸入 http://192.168.2.79/nagios/ 點擊 servers 會看到下面:
下面額外的添加一臺客戶端 node4 192.168.2.82,爲其添加服務主機,使用 ganglia+nagios 監控:
scp gangliagmond* libconfuse2.63.el6.x86_64.rpm libganglia3.6.01.x86_64.rpm
192.168.2.82:/root/
安裝這些軟件包:
rpm ivh *
把客戶端的配置文件也給 node4 拷貝一份。
# scp gmond.conf 192.168.2.82:/etc/ganglia/
# /etc/init.d/gmond restart
在 node2 也就是服務端的/var/lib/ganglia/rrds/linux007 的目錄下回收到 node4 這臺主機的信息.
192.168.2.82 node2.example.com node3.example.com __SummaryInfo__
切換到 node2 這臺主機,也就是 ganglia 和 nagios 這臺主機的目錄下。
/usr/local/nagios/etc/objects
[root@node2 objects]# vim hosts.cfg 額外添加的主機只需以,隔開;添加主機名
define host{
use linuxserver
host_name node4.example.com
alias node4
address 192.168.2.82
}
define hostgroup {
hostgroup_name gangliaservers
alias gangliaservers
members node3.example.com,node4.example.com
}
[root@node2 objects]# vim services.cfg 額外添加的服務,全部的主機均可以收到。
define service {
use gangliaservice
service_description 內存空間
check_command check_ganglia!mem_free!100!50
}
重啓服務:
# /etc/init.d/gmond restart
# /etc/init.d/gmetad restart
# /etc/init.d/nagios restart
在瀏覽器中輸入:http://192.168.2.79/nagios/ 獲得下圖:python