1. 程式人生 > >監控系統---使用Ganglia監控MongoDB

監控系統---使用Ganglia監控MongoDB

序言: 說道監控問題,官網推介了很多工具,有的是命令列形式,比如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監控項了: