溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Ganglia與Nagios如何整合

發(fā)布時間:2021-11-23 10:08:35 來源:億速云 閱讀:156 作者:小新 欄目:云計算

這篇文章主要介紹了Ganglia與Nagios如何整合,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

基本介紹

Ganglia:Ganglia是UC Berkeley發(fā)起的一個開源集群監(jiān)視項目,設計用于測量數(shù)以千計的節(jié)點。Ganglia的核心包含gmond、gmetad以及一個Web前端。主要是用來監(jiān)控系統(tǒng)性能,如:cpu 、mem、硬盤利用率, I/O負載、網(wǎng)絡流量情況等,通過曲線很容易見到每個節(jié)點的工作狀態(tài),對合理調(diào)整、分配系統(tǒng)資源,提高系統(tǒng)整體性能起到重要作用。

Nagios:Nagios是一款開源的電腦系統(tǒng)和網(wǎng)絡監(jiān)視工具,能有效監(jiān)控Windows、Linux和Unix的主機狀態(tài),交換機路由器等網(wǎng)絡設置,打印機等。在系統(tǒng)或服務狀態(tài)異常時發(fā)出郵件或短信報警第一時間通知網(wǎng)站運維人員,在狀態(tài)恢復后發(fā)出正常的郵件或短信通知。

 

架構

Ganglia的優(yōu)勢在于實時監(jiān)控集群中的機器的各項指標,比如cpu,內(nèi)存,磁盤,溫度等數(shù)據(jù),匯總成成各種圖形化界面,并提供接口可供調(diào)用數(shù)據(jù)。而在出現(xiàn)問題的時候報警提示功能,相對較弱。

Nagios的優(yōu)勢在于出現(xiàn)問題之時可以提供強大的報警提示功能,但是在實時監(jiān)控上,功能較弱,即使使用NRPE本地插件也不能提供強大的機器監(jiān)控。

在集群運維中,有兩種方式,第一種,當問題出現(xiàn)的時候能夠得到報警提示,運維人員能夠迅速出擊解決問題,將損失減少到最少。第二種,在問題出現(xiàn)之前,找到可能出現(xiàn)的問題,解決問題,避免問題出現(xiàn)。

因此Nagios適合第一種場景,Ganglia適合第二種場景,兩者結合能有效的解決各種場景。當然還有其他的監(jiān)控報警軟件,比如Monitorix,NetXMS,cacti,Zabbix等。

這里,我們選擇最成熟的Ganglia和Nagios。

Ganglia與Nagios如何整合

環(huán)境介紹

1.      集群中已經(jīng)安裝了Ganglia(安裝過程可以參考我的上一篇博客http://blog.csdn.net/shifenglov/article/details/40587527)

2.      集群中已經(jīng)安裝了Nagios(安裝過程可以參考這篇博客http://www.cnblogs.com/mchina/archive/2013/02/20/2883404.html)

安裝思路

通過Nagios調(diào)用Ganglia的接口,獲取整個集群的監(jiān)控指標,如果超過設定的報警閥值,則予以報警提示。

安裝過程

1.復制check_ganglia.py腳本到nagios的執(zhí)行目錄中

如果有源碼,則check_ganglia.py在ganglia-3.6.0/contrib/check_ganglia.py中

如果沒有源碼,則可以下載check_ganglia.py,很容易搜到

#cp check_ganglia.py/usr/local/nagios/libexec/

#!/usr/bin/env python
 
import sys
import getopt
import socket
import xml.parsers.expat
 
class GParser:
  def __init__(self, host, metric):
    self.inhost =0
    self.inmetric = 0
    self.value = None
    self.host = host
    self.metric = metric
 
  def parse(self, file):
    p = xml.parsers.expat.ParserCreate()
    p.StartElementHandler = parser.start_element
    p.EndElementHandler = parser.end_element
    p.ParseFile(file)
    if self.value == None:
      raise Exception('Host/value not found')
    return float(self.value)
 
  def start_element(self, name, attrs):
    if name == "HOST":
      if attrs["NAME"]==self.host:
        self.inhost=1
    elif self.inhost==1 and name == "METRIC">

修改好以后(注意上面文件中ganglia_host及ganglia_port變量修改)
./check_ganglia.py   試一下,沒問題
-h   指定主機。在這里需要注意的是,這里填寫的是主機名。前提是IP可以被解析。
在/var/lib/ganglia/rrds/my cluster/里面可以看到相應的主機名
-m   檢測的是什么參數(shù),在rrds目錄下可以看到。命令中不帶.rrd
-w   warning    
-c   critical
例如
./check_ganglia.py -h 10.20.1.131 -m load_one -w 4 -c 5

2.追加獲取ganglia數(shù)據(jù)命令

#vim /usr/local/nagios/etc/objects/commands.cfg

追加內(nèi)容如下:

define command {
        command_name check_ganglia
        command_line $USER1$/check_ganglia.py -h $HOSTADDRESS$ -m $ARG1$ -w $ARG2$ -c $ARG3$
}

3.追加監(jiān)測數(shù)據(jù)所在主機信息(文件為新追加)

#vim /usr/local/nagios/etc/objects/hosts.cfg

文件內(nèi)容如下:

define host{
        use                             linux-server
        host_name                       test
        address                         10.20.1.131
}

define hostgroup{
        hostgroup_name ganglia-servers
        alias ganglia-servers
        members test
}

4.追加監(jiān)測metrics信息(文件為新追加)

#vim /usr/local/nagios/etc/objects/services.cfg

文件內(nèi)容如下:

define servicegroup{
        servicegroup_name ganglia-metrics
        alias Ganglia Metrics
}
define service{
        use     ganglia-service
        host_name test
        hostgroup_name ganglia-servers
        service_description load_one
        check_command   check_ganglia!load_one!4!5
}
define service{
        use     ganglia-service
        host_name test
        hostgroup_name ganglia-servers
        service_description mem_free
        check_command   check_ganglia!mem_free!50000!40000
}

5.追加模板信息

#vim /usr/local/nagios/etc/objects/templates.cfg

追加內(nèi)容如下:

define service {
        use generic-service
        name ganglia-service
        hostgroup_name ganglia-servers
        service_groups ganglia-metrics
        register        0
}

6.追加配置文件關聯(lián)

#vim /usr/local/nagios/etc/nagios.cfg

追加內(nèi)容如下:

#引進host文件
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg

#引進監(jiān)控項的文件
cfg_file=/usr/local/nagios/etc/objects/services.cfg

7. 修改gmetad配置,使其share監(jiān)控數(shù)據(jù)

因為默認情況下,ganglia的gmetad服務不會share監(jiān)控指標給網(wǎng)絡上的其他機器,默認只能把數(shù)據(jù)傳輸?shù)絣ocalhost,所以需要做相應的配置,使其可以share相應數(shù)據(jù)給其他機器。主要是考慮nagios的主機與ganglia的主機沒在同一臺機器上。

# vi /etc/ganglia/gmetad.conf

修改內(nèi)容如下:

trusted_hosts 10.20.1.158 ##添加信任的主機IP

8.重啟ganglia及nagios服務

ganglia:

#service ganglia-monitor restart

#service gmetad restart

nagios:

#service nagios restart

9.訪問

Ganglia與Nagios如何整合

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Ganglia與Nagios如何整合”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業(yè)資訊頻道,更多相關知識等著你來學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI