您的位置:首页 > 数据库 > Mongodb

监控系统---使用Ganglia监控MongoDB

2017-01-17 21:05 337 查看
序言:
说道监控问题,官网推介了很多工具,有的是命令行形式,比如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

下载地址:
下载mongodb的ganglia配置模板和python脚本:https://github.com/ganglia/gmond_python_modules

安装:
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
e6aa
-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监控项了:



参考网址:http://www.cnblogs.com/admln/p/ganglia-install-yum.html
http://blog.csdn.net/silent_strings/article/details/50879870
http://www.cnblogs.com/jaredyang/p/3573377.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: