≡菜单

如何使用Nagios监控MongoDB check_mongodb Python插件

在生产环境中运行MongoDB时,必须监视MongoDB以确保其正常运行。

如果你 are already using Nagios for your enterprise monitoring, you can monitor MongoDB using plugins.

check_mongodb是一个用Python编写的Nagios插件,用于监视MongoDB数据库的各个区域。

本教程说明了如何使用check_mongodb.py Python插件安装,配置和监视MongoDB数据库。

1.下载check_mongodb Nagios插件

从下载Nagios MongoDB插件 这里 。或者,您可以使用wget将其直接下载到您的服务器,如下所示。

cd ~
wget --no-check-certificate //github.com/mzupan/nagios-plugin-mongodb/archive/master.zip
unzip /usr/save/nagios-plugin-mongodb-master.zip

解压缩下载文件后,它将创建nagios-plugin-mongodb-master目录。将此目录重命名为nagios-plugin-mongodb(即删除“-master”从目录名称)。

mv nagios-plugin-mongodb-master nagios-plugin-mongodb

2.在Libexec目录中安装插件

移动这个“nagios-plugin-mongodb” directory to nagios libexec directory where all the plugins are located. 如果你’从源代码安装了Nagios,libexec目录的位置是

mv nagios-plugin-mongodb /usr/local/nagios/libexec

另外,确保此插件目录归nagios用户和组所有,如下所示。

cd /usr/local/nagios/libexec/

chown -R nagios:nagios nagios-plugin-mongodb/

在此阶段,如果通过执行check_mongodb.py测试nagios插件,则可能会得到“没有名为pymongo的模块” as shown below.

# cd /usr/local/nagios/libexec/nagios-plugin-mongodb

#  ./check_mongodb.py 
没有名为pymongo的模块

3.下载并安装Mongo Python驱动程序

为了使check_mongodb插件正常工作,您应该在服务器上安装并配置pymongo模块。

从以下位置下载MongoDB Python驱动程序 这里 。或者,使用wget将其直接下载到您的服务器,如下所示。

cd ~
wget --no-check-certificate //github.com/mongodb/mongo-python-driver/archive/master.zip
unzip mongo-python-driver-master.zip
cd mongo-python-driver-master

如下所示,通过运行setup.py安装pymongo。

# python setup.py install
..
..
Adding distribute 0.6.30 to easy-install.pth file
Installing easy_install script to /usr/bin
Installing easy_install-2.4 script to /usr/bin

Installed /usr/lib/python2.4/site-packages/distribute-0.6.30-py2.4.egg
Processing dependencies for distribute==0.6.30
Finished processing dependencies for distribute==0.6.30
Processing pymongo-2.6-py2.4-linux-i686.egg
creating /usr/lib/python2.4/site-packages/pymongo-2.6-py2.4-linux-i686.egg
Extracting pymongo-2.6-py2.4-linux-i686.egg to /usr/lib/python2.4/site-packages
Adding pymongo 2.6 to easy-install.pth file

Installed /usr/lib/python2.4/site-packages/pymongo-2.6-py2.4-linux-i686.egg
Processing dependencies for pymongo==2.6
Finished processing dependencies for pymongo==2.6

4.从命令行测试MongoDB Nagios插件

现在,如果您尝试执行check_mongodb.py,您将’ll not get the “没有名为pymongo的模块” error anymore.

# cd /usr/local/nagios/libexec/nagios-plugin-mongodb

#  ./check_mongodb.py 
CRITICAL - General MongoDB Error: could not 连接 to 127.0.0.1:27017: (111, 'Connection refused')

The basic usage of the MongoDB plugin is to test whether it can 连接 to a mongoDB instance. You can test the 连接ion using any 上 e of the following methods.

在以下示例中,我们仅使用-H参数传递运行MongoDB数据库的服务器的ip地址。这将使用默认操作“connect”, and default port “27017”

#./check_mongodb.py -H 192.168.1.2
OK -连接花费了0秒 

如果MongoDB服务器在其他端口上运行,则可能需要使用-P选项进行指定。您还可以指定“connect”使用-A参数执行操作,如下所示。

#./check_mongodb.py -H 192.168.1.2 -A 连接 -P 27017

在相关说明中,如果您不备份MongoDB数据库,请确保首先安排 使用mongodump进行MongoDB备份 正如我们之前讨论的。

5.添加check_mongodb命令定义

将以下内容添加到commands.cfg文件。这将设置您可以在Nagios服务定义中使用的所有正确的check_mongodb命令定义。

# vi /usr/local/nagios/etc/objects/commands.cfg
define command {
command_name check_mongodb
command_line $USER1$/nagios-plugin-mongodb/check_mongodb.py -H $HOSTADDRESS$ -A $ARG1$ -P $ARG2$ -W $ARG3$ -C $ARG4$
}

define command {
command_name check_mongodb_database
command_line $USER1$/nagios-plugin-mongodb/check_mongodb.py -H $HOSTADDRESS$ -A $ARG1$ -P $ARG2$ -W $ARG3$ -C $ARG4$ -d $ARG5$
}

define command {
command_name check_mongodb_collection
command_line $USER1$/nagios-plugin-mongodb/check_mongodb.py -H $HOSTADDRESS$ -A $ARG1$ -P $ARG2$ -W $ARG3$ -C $ARG4$ -d $ARG5$ -c $ARG6$
}

define command {
command_name check_mongodb_replicaset
command_line $USER1$/nagios-plugin-mongodb/check_mongodb.py -H $HOSTADDRESS$ -A $ARG1$ -P $ARG2$ -W $ARG3$ -C $ARG4$ -r $ARG5$
}

define command {
command_name check_mongodb_query
command_line $USER1$/nagios-plugin-mongodb/check_mongodb.py -H $HOSTADDRESS$ -A $ARG1$ -P $ARG2$ -W $ARG3$ -C $ARG4$ -q $ARG5$
}

6. Create Nagios Service Definition for MongoDB 连接

一旦您’我们已经从命令行测试了Nagios MongoDB插件,创建了如下所示的服务定义,并将其放置在/ usr / local / nagios / etc / servers目录下。在以下示例中,MongoDB在名为的服务器上运行“mongodb-prod-server”

# cat mongodb-prod-server.cfg
define service {
        use                     generic-service
        host_name               mongodb-prod-server
        service_description     MongoDB
        contacts                Prodalert
        check_command           check_mongodb!connect!27017!2!4
}

完成上述更改后,重新启动Nagios。此后,只要MongoDB数据库出现故障,Nagios就会向位于“prodalert” object.

7.检查MongoDB连接总数

You can also monitor the total number of MongoDB 连接数 using the “connections” object.

以下示例连接到以192.168.1.2 ip-address运行的MongoDB,使用提供的用户名和密码进行身份验证,并执行“connections” action. The “-W 60”表示警告百分比,并且“-C 80”指示临界百分比。

#./check_mongodb.py -H 192.168.1.2 -u adminuser -p mysecretpassword -A 连接数 -W 60 -C 80
OK - 1 percent (66 of 4000 连接数) used

不像“connect”上一个示例中显示的操作“connections”操作需要用户名和密码才能执行“serverStatus” mongoDB command. 如果你 don’不提供用户名和密码,您’会得到以下错误。

#./check_mongodb.py -H 192.168.1.2 -A 连接数 -W 60 -C 80
CRITICAL - General MongoDB Error: command SON([('serverStatus', 1)]) failed: unauthorized

8.检查MongoDB内存使用情况

您还可以使用以下命令检查MongoDB的内存使用情况:“memory”动作如下图所示。

#./check_mongodb.py -H 192.168.1.2 -u adminuser -p mysecretpassword -P 27017 -A内存-W 80 -C 90
OK -内存使用情况:驻留0.18GB,虚拟17.25GB,映射8.47GB,映射16.93GB

9.检查Mongo数据库总数

您可以使用“databases”动作如下图所示。在此示例中,警告限制设置为“-W 5”. Since the total number of 资料库 上 that server is 8, this is giving the WARNING message.

#./check_mongodb.py -H 192.168.1.2 -u adminuser -p mysecretpassword -P 27017 -A 资料库 -W 5 -C 10
WARNING - Number of DBs: 8

10.检查MongoDB复制

如果你’ve安装程序复制,可以使用“replication_state” and “replication_lag”动作如下图所示。在此示例中,由于此特定实例未在复制模式下运行,因此它提供了“OK”消息,但明确表明此实例未在MongoDB副本集上运行。

#./check_mongodb.py -H 192.168.1.2 -u adminuser -p mysecretpassword -P 27017 -A 复制滞后 -W 80 -C 90
OK - Not running with replSet

#./check_mongodb.py -H 192.168.1.2 -u adminuser -p mysecretpassword -P 27017 -A replset_state-W 80 -C 90
OK - Not running with replSet

11.所有Nagios MongoDB插件操作

以下是check_mongodb.py Nagios插件中所有可用操作的列表。将其中任何一个作为参数传递给-A选项。

  • 连接 – Default action. Check the 连接ion
  • 连接数 – Check the percentage of open database 连接数
  • 记忆 – Check 记忆 usage
  • 记忆_mapped – Check mapped 记忆 usage
  • 锁– Check 锁time percentage
  • 潮红–检查平均冲洗时间(以微秒为单位)
  • last_flush_time–检查上次冲洗时间(以微秒为单位)
  • index_miss_ratio–检查索引命中率
  • 资料库 – Check total number of 资料库
  • 馆藏–查看收藏总数
  • database_size–检查特定数据库的大小
  • database_indexes–检查特定数据库的索引大小
  • collection_indexes–检查集合的索引大小
  • 复制滞后 –检查复制延迟(以秒为单位)
  • 复制滞后_percent –检查复制延迟(百分比)
  • replset_state–检查副本集状态
  • 复制副本原始–检查副本集的主服务器
  • 每秒查询数–检查每秒查询数
  • 连接_primary – Check 连接ion to the primary server in a group
  • collection_state–检查数据库中特定集合的状态

如果你 enjoyed this article, you might also like..

  1. 50个Linux Sysadmin教程
  2. 50个最常用的Linux命令(包括示例)
  3. 排名前25位的最佳Linux性能监视和调试工具
  4. 妈妈,我找到了! – 15个实用的Linux Find命令示例
  5. Linux 101 Hacks第二版电子书 Linux 101黑客手册

 Bash 101 Hacks书 Sed和Awk 101黑客手册  Nagios Core 3书  Vim 101黑客手册

{ 9 评论 … 加一 }

  • 卡达尔 2013年11月27日,上午7:46

    你好

    我已经在win2012中安装了MongoDB。
    当尝试对腻子获得响应的推荐时,我已经配置了插件。
    “./check_mongodb.py -H 192.168.1.2 -u adminuser -p mysecretpassword -P 27017 -A内存-W 80 -C 90″

    OK –内存使用情况:驻留0.18GB,虚拟17.25GB,映射8.47GB,映射16.93GB”

    但是在门户网站上获取警告和空状态信息..,请让我知道需要进行任何处理…

  • sv 2014年3月26日,晚上11:35

    我正在运行mongodb插件。我可以运行
    /check_mongodb.py -H 192.168.1.2 -u adminuser -p mysecretpassword -P 27017 -A内存-W 80 -C 90“来自命令行,没有问题,但是如何在脚本或services.cfg中运行它可以传递用户名和密码。一世

  • 拉杰什·冈古拉(Rajesh Gangula) 2014年8月9日,晚上10:44

    $ /usr/lib64/nagios/plugins/check_mongodb.py -H dc1osmongo02 -P 27017 -A 复制滞后_percent -r core
    在不检查copy_primary的情况下传递副本集不起作用

  • 香气 2015年1月9日,上午6:59

    嗨Ramesh,
    我正在使用mongodb 2.6,并且能够使用命令行检查参数。我遵循了您的教程。我如何在nagios前端观察相同的值。
    是否也需要安装神经节。
    请帮忙。

  • dk 2015年1月14日,上午6:48

    我在安装pymongo时遇到错误
    =================================
    在/ tmp / tmpjeFTYm中提取
    追溯(最近一次通话):
    文件“setup.py”, line 27, in ?
    use_setuptools()
    文件“/tmp/mongodb/nagios-plugin-mongodb-master/mongo-python-driver-master/ez_setup.py”,在use_setuptools中的第132行
    返回_do_download(版本,download_base,to_dir,download_delay)
    文件“/tmp/mongodb/nagios-plugin-mongodb-master/mongo-python-driver-master/ez_setup.py”,_do_download中的第111行
    _build_egg(egg,tarball,to_dir)
    文件“/tmp/mongodb/nagios-plugin-mongodb-master/mongo-python-driver-master/ez_setup.py”,_build_egg中的第88行
    subdir = os.path.join(tmpdir,os.listdir(tmpdir)[0])
    IndexError:列表索引超出范围
    ========================================

  • 奥立佛 2015年2月11日,上午5:13

    I’我试图监视我的mongo实例,但无法进入。顺便说一下,我在mongodb上启用了ssl。

    ./check_mongodb.py -H

    危急– General MongoDB Error: 连接ion closed

  • 捷径 2015年8月21日,上午4:08

    When mongo is stopped shows 连接ion success
    ./check_mongodb.py
    ./check_mongodb.py -H 8.8.8.8
    两个评论的输出:好–连接花费了0秒

  • 萨蒂亚 2015年9月23日,上午11:53

    你好

    #./check_mongodb.py -H 192.168.1.2
    OK –连接花费了0秒

    即使MongoDB未运行,我也收到上述消息。我没有’无论MongoDB是否运行,都不会有任何区别。

  • 克里斯·科穆夫(Chris Komuves) 2015年12月8日,上午10:06

    至少可以说这个插件有一些问题!

    ck @ nagios:〜/ nagios-plugin-mongodb-master $ ./check_mongodb.py -H hello.notarealaddress.com
    OK –连接花费了0秒

发表评论