監控系統---使用Ganglia監控MongoDB
阿新 • • 發佈:2019-02-02
序言:
說道監控問題,官網推介了很多工具,有的是命令列形式,比如mongostat,mongotop,有的是圖形介面模式,但也有收費免費之分,
比如官網自己的Cloud Manager,Compass就是收費企業版才能用的,當然也可以試用
免費開源的官網也推介了很多,比如Ganglia、Zabbix等等
Ganglia是UC Berkeley發起的一個開源叢集監視專案,設計用於測量數以千計的節點。Ganglia的核心包含gmond、gmetad以及一個Web前端。
主要是用來監控系統性能,如:cpu 、mem、硬碟利用率、 I/O負載、網路流量情況等,通過曲線很容易見到每個節點的工作狀態,對合理調整、
分配系統資源,提高系統整體效能起到重要作用
配置環境:
OS:Red Hat Enterprise Linux Server release 7.2
MongoDB:3.2.10
python:2.7.5
Ganglia:3.7.2
下載地址:
安裝:
1、安裝epel源:
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
注:如果你已經可以直接使用下一步的命令進行yum安裝,那就忽略第1步
2、安裝依賴包:
yum -y install httpd-devel automake autoconf libtool ncurses-devel
libxslt groff pcre-devel pkgconfig
3、安裝ganglia的相關軟體:
# yum list | grep ganglia
ganglia.x86_64 3.7.2-2.el7 @epel
ganglia-gmetad.x86_64 3.7.2-2.el7 @epel
ganglia-gmond.x86_64 3.7.2-2.el7 @epel
ganglia-gmond-python.x86_64 3.7.2-2.el7 @epel
ganglia-web.x86_64 3.7.1-2.el7 @epel
ganglia-devel.x86_64 3.7.2-2.el7 epel
# yum install -y ganglia-gmetad.x86_64 ganglia-web.x86_64 ---安裝相關軟體
# rpm -qa | grep ganglia ---檢視是否安裝上
ganglia-3.7.2-2.el7.x86_64
ganglia-gmetad-3.7.2-2.el7.x86_64
ganglia-web-3.7.1-2.el7.x86_64
4、配置gmetad.conf:
#vim /etc/ganglia/gmetad.conf ---如果是用yum安裝的話,一般就是在此路徑下,沒有的話,可以使用find命令查詢
。。。。。
data_source "mongodb_1"
hostname:8649 ---找到此行資料,並修改紅色字型部分
。。。。。
注:mongo_1:為你叢集的名稱,可隨意命名
hostname:為當前伺服器主機的主機名或IP
5、修改Appache的配置:
# vim /etc/httpd/conf.d/ganglia.conf
<Location /ganglia>
Order deny,allow ---如果此句話也沒有,則直接新增上即可
Deny from all
---修改為Allow from all
#Require local
# Require ip 10.1.2.3
# Require host example.org
</Location>
注:如果檔案中沒有Deny from all,則直接在此位置新增Allow from all即可
6、關閉防火牆,SELINUX,修改hosts檔案
#systemctl stop firewalld ---關閉防火牆
#systemctl status firewalld
.....
Active: inactive (dead) ---有這樣一句話就表示已關閉
.....
#getenforce ---檢視SELINUX狀態,enforcing表示開啟
Enforcing
#setenforce 0 ---臨時關閉方法,重啟系統後失效,如果想永久關閉SELINUX,則直接修改/etc/sysconfig/selinux就好
# getenforce
Permissive ---表示已關閉SELINUX
#vim /etc/hosts
192.168.1.100 mongodb01 ---新增一筆這樣的資料就行,用於主機名解析
7、安裝gmond蒐集監控資料後臺程序,並配置:
#yum -y install ganglia-gmond.x86_64 ---可以使用上面使用的yum list 檢視gmond具體名稱
#rpm -qa | grep ganglia
配置gmond:
#vim /etc/ganglia/gmond.conf
cluster {
name = "mongodb_1"------ 叢集名稱,是你在gmetad.conf裡配置的叢集名稱
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
.....
udp_send_channel { #mcast_join = 239.2.11.71 ----- 組播 host = 192.168.1.100 -------------- 單播 gmeta伺服器主機的ip或主機名 port = 8649
ttl = 1
}
.....
udp_recv_channel {
#mcast_join = 239.2.11.71 port = 8649 #bind = localhost ------------- 本機的ip/hostname,因為登入不上ganglia的web頁面,所以這個地方我遮蔽掉了 } 8、啟動所有服務 #service gmetad start #service gmond start #service httpd start #service gmetad status ---檢視開啟狀態 #service gmond status 9、登入web驗證: 地址:http://192.168.1.100/ganglia
問題: 如果到這一步沒有實現上述介面,則可能是你的SELINUX、防火牆沒有關閉,注意檢視,以及第5步配置Appache,注意新增的Allow from all,我就是忘了新增Order deny,allow這句話,所以無法顯示web介面 配置MongoDB監控項 10、安裝ganglia的python模板: 因為我們的監控指令碼都是用python寫的,所以要安裝此模板 #yum -y install ganglia-gmond-python #rpm -qa | grep ganglia ---檢視是否安裝上 ganglia-gmond-python-3.7.2-2.el7.x86_64 11、檢視配置,指令碼等相關路徑 在ganglia的安裝路徑下,一般是/etc/ganglia,找到conf.d/modpython.conf檔案,內容如下: modules { module { name = "python_module" path = "/usr/lib64/ganglia/modpython.so" ---ganglia-gmond-python安裝正確的話,就會在此路勁下看到此檔案 params = "/usr/lib64/ganglia/python_modules" ---存放python的py指令碼的位置 } } include ("/etc/ganglia/conf.d/*.pyconf") ---#ganglia擴充套件存放配置指令碼的路徑,注意檔案字尾識別pyconf 12、建立mongodb.pyconf 和 修改mongodb.py檔案 首先上傳根據文章開頭下載下來的配置模板檔案mongodb.conf和python指令碼檔案mongodb.py 分別在conf.d和python_modules資料夾下,如圖:
注:上傳檔案到Linux系統,你可以使用任何工具,我用的是WinSCP工具 請將mongodb.py檔案放到/usr/lib64/ganglia/python_modules路徑下 # ll /usr/lib64/ganglia/python_modules/mongodb.py -rw-r--r--. 1 root root 14937 Jan 17 10:28 /usr/lib64/ganglia/python_modules/mongodb.py 將mongodb.conf檔案放到/etc/ganglia/conf.d/路徑下,並改名為mongodb.pyconf,(因為在第11步的時候最後一行路徑的識別字尾是pyconf) # ll /etc/ganglia/conf.d/mongodb.pyconf -rw-r--r--. 1 root root 2791 Jan 17 10:19 /etc/ganglia/conf.d/mongodb.pyconf 修改mongodb.py配置,如下: 注意將紅色部分修改為你本機mongo所在的路徑,以及需要監控的mongo的埠,如果有auth認證的話,需要加username、password NAME_PREFIX = 'mongodb_' PARAMS = { 'server_status' : '/apps/mongo/bin/mongo --host 192.168.1.100 --port 27017 --quiet --eval "printjson(db.serverStatus())"', 'rs_status' : '/apps/mongo/bin/mongo --host 192.168.1.100 --port 27017 --quiet --eval "printjson(rs.status())"' } METRICS = { 'time' : 0, 'data' : {} } 修改mongodb.pyconf,如下: 也是注意紅色部分的修改 #vim /etc/ganglia/conf.d/mongodb.pyconf modules { module { name = "mongodb" ---模組名,該模組名必須與開發的存放於"/usr/lib64/ganglia/python_modules"指定的路徑下的python指令碼名稱一致 language = "python" ---宣告使用python語言 #引數列表,所有的引數作為一個dict(即map)傳給python指令碼的metric_init(params)函式。 param server_status { value = "/apps/mongo/bin/mongo --host 10.25.161.15 --port 27017 --quiet --eval 'printjson(db.serverStatus())'" } param rs_status { value = "/apps/mongo/bin/mongo --host 10.25.161.15 --port 27017 --quiet --eval 'printjson(rs.status())'" } } } 13、重啟gmetad gmond服務 #service gmetad restart #service gmond restart 即可在web介面中看到mongodb的監控項: 注:如果仍然無法看到mongodb監控項,則可能是上述紅色字型部分沒有配置正確,請仔細檢查
選擇上述步驟後,就可以看到mongo監控項了:
latlong = "unspecified"
url = "unspecified"
}
.....
udp_send_channel { #mcast_join = 239.2.11.71 ----- 組播 host = 192.168.1.100 -------------- 單播 gmeta伺服器主機的ip或主機名 port = 8649
ttl = 1
}
.....
udp_recv_channel {
#mcast_join = 239.2.11.71 port = 8649 #bind = localhost ------------- 本機的ip/hostname,因為登入不上ganglia的web頁面,所以這個地方我遮蔽掉了 } 8、啟動所有服務 #service gmetad start #service gmond start #service httpd start #service gmetad status ---檢視開啟狀態 #service gmond status 9、登入web驗證: 地址:http://192.168.1.100/ganglia
問題: 如果到這一步沒有實現上述介面,則可能是你的SELINUX、防火牆沒有關閉,注意檢視,以及第5步配置Appache,注意新增的Allow from all,我就是忘了新增Order deny,allow這句話,所以無法顯示web介面 配置MongoDB監控項 10、安裝ganglia的python模板: 因為我們的監控指令碼都是用python寫的,所以要安裝此模板 #yum -y install ganglia-gmond-python #rpm -qa | grep ganglia ---檢視是否安裝上 ganglia-gmond-python-3.7.2-2.el7.x86_64 11、檢視配置,指令碼等相關路徑 在ganglia的安裝路徑下,一般是/etc/ganglia,找到conf.d/modpython.conf檔案,內容如下: modules { module { name = "python_module" path = "/usr/lib64/ganglia/modpython.so" ---ganglia-gmond-python安裝正確的話,就會在此路勁下看到此檔案 params = "/usr/lib64/ganglia/python_modules" ---存放python的py指令碼的位置 } } include ("/etc/ganglia/conf.d/*.pyconf") ---#ganglia擴充套件存放配置指令碼的路徑,注意檔案字尾識別pyconf 12、建立mongodb.pyconf 和 修改mongodb.py檔案 首先上傳根據文章開頭下載下來的配置模板檔案mongodb.conf和python指令碼檔案mongodb.py 分別在conf.d和python_modules資料夾下,如圖:
注:上傳檔案到Linux系統,你可以使用任何工具,我用的是WinSCP工具 請將mongodb.py檔案放到/usr/lib64/ganglia/python_modules路徑下 # ll /usr/lib64/ganglia/python_modules/mongodb.py -rw-r--r--. 1 root root 14937 Jan 17 10:28 /usr/lib64/ganglia/python_modules/mongodb.py 將mongodb.conf檔案放到/etc/ganglia/conf.d/路徑下,並改名為mongodb.pyconf,(因為在第11步的時候最後一行路徑的識別字尾是pyconf) # ll /etc/ganglia/conf.d/mongodb.pyconf -rw-r--r--. 1 root root 2791 Jan 17 10:19 /etc/ganglia/conf.d/mongodb.pyconf 修改mongodb.py配置,如下: 注意將紅色部分修改為你本機mongo所在的路徑,以及需要監控的mongo的埠,如果有auth認證的話,需要加username、password NAME_PREFIX = 'mongodb_' PARAMS = { 'server_status' : '/apps/mongo/bin/mongo --host 192.168.1.100 --port 27017 --quiet --eval "printjson(db.serverStatus())"', 'rs_status' : '/apps/mongo/bin/mongo --host 192.168.1.100 --port 27017 --quiet --eval "printjson(rs.status())"' } METRICS = { 'time' : 0, 'data' : {} } 修改mongodb.pyconf,如下: 也是注意紅色部分的修改 #vim /etc/ganglia/conf.d/mongodb.pyconf modules { module { name = "mongodb" ---模組名,該模組名必須與開發的存放於"/usr/lib64/ganglia/python_modules"指定的路徑下的python指令碼名稱一致 language = "python" ---宣告使用python語言 #引數列表,所有的引數作為一個dict(即map)傳給python指令碼的metric_init(params)函式。 param server_status { value = "/apps/mongo/bin/mongo --host 10.25.161.15 --port 27017 --quiet --eval 'printjson(db.serverStatus())'" } param rs_status { value = "/apps/mongo/bin/mongo --host 10.25.161.15 --port 27017 --quiet --eval 'printjson(rs.status())'" } } } 13、重啟gmetad gmond服務 #service gmetad restart #service gmond restart 即可在web介面中看到mongodb的監控項: 注:如果仍然無法看到mongodb監控項,則可能是上述紅色字型部分沒有配置正確,請仔細檢查
選擇上述步驟後,就可以看到mongo監控項了: