美文网首页
Mongodb添加Zabbix监控

Mongodb添加Zabbix监控

作者: 信念哥 | 来源:发表于2018-08-15 23:12 被阅读0次

    参考教程:http://www.netkiller.cn/monitoring/zabbix/zabbix-agent.html#idp135

    1、准备工作:

    安装Zabbix-server、Zabbix-agent和Mongodb,安装过程省略。

    2、导入Mongodb模板至Zabbix-server

    下载模板:https://github.com/oscm/zabbix/blob/master/mongodb/zbx_export_templates.xml
    在Zabbix-server主页,依次点击【配置】、【模板】、【选择文件】,然后选择刚才下载的模板,点击【导入】即可

    3、创建mongodb监控用户

    > use admin
    switched to db admin
    
    > db.createUser(
       {
         user: "monitor",
         pwd: "******",
         roles: [ "clusterMonitor"]
       }
    )
    Successfully added user: { "user" : "monitor", "roles" : [ "clusterMonitor" ] }
    

    可以通过下列命令测试是否创建成功

    db.auth("monitor", "******")
    

    4、安装jq

    由于Zabbix-agent采集脚本需要使用强大的jq解析json数据,安装jq教程可参考官网
    本人由于主机不能访问yum源,采用离线安装二进制文件的形式。
    下载二进制文件后,给予执行权限即可

    chmod +x jq-linux64
    

    5、 Zabbix agentd 配置

    编辑文件/etc/zabbix/zabbix_agentd.d/userparameter_mongodb.conf,添加以下内容

    # MongoDB - statistics
    #
    # Author: Neo Chen <netkiller@msn.com>
    # Website: http://www.netkiller.cn
    ############################################################
    
    # Discovery
    
    # Return Redis statistics
    UserParameter=mongodb.status[*],/usr/local/bin/mongodb.sh $1 $2 $3 $4 $5
    

    根据userparameter_mongodb.conf的内容,可知采集脚本在/usr/local/bin/mongodb.sh,所以新建文件/usr/local/bin/mongodb.sh,并添加以下内容。

    
    #!/bin/bash
    ##################################################
    # Description: zabbix mongodb monitor
    # Note: Zabbix 3.2
    # Date: Fri Apr 21 2017
    # Verion: 1.0
    # Requirments: mongo, jq, sudo access to mongo_conf.sh
    #
    # Based on Noe <netkiller@msn.com> script
    #
    # Change log:
    # Mon Apr 24, 2017
    #  - Added checks for mongo and jq
    #  - User --eval to fectch data
    #  - fixed json output to comform
    #  - Use jq to parse json https://stedolan.github.io/jq/
    #  - upated index to handle space or comma betwee values
    #
    ##################################################
    DB_HOST=HOST
    DB_PORT=PORT
    DB_USERNAME=monitor
    DB_PASSWORD=******
    MONGO=/data/mongodb/mongodb-linux-x86_64-rhel70-3.4.7/bin/mongo
    JQ=/data/jq-linux64
    EXIT_ERROR=1
    EXIT_OK=0
    
    if [ ! -x "$MONGO" ] ; then
      echo "mongo not found"
      exit $EXIT_ERROR
    elif [ ! -x "$JQ" ] ; then
      echo "jq not found"
      exit $EXIT_ERROR
    elif [ $# -eq 0 ] ; then
      echo "No values pass"
      exit $EXIT_ERROR
    fi
    index=.$(echo $@ | sed 's/[ ,]/./g')
    MONGO_CMD="$MONGO --host ${DB_HOST:-localhost} --port ${DB_PORT:-27017} --authenticationDatabase admin --quiet"
    [[ "$DB_USERNAME" ]] && MONGO_CMD="${MONGO_CMD} --username ${DB_USERNAME}"
    [[ "$DB_PASSWORD" ]] && MONGO_CMD="${MONGO_CMD} --password ${DB_PASSWORD}"
    
    output=$(
            $MONGO_CMD <<< "db.runCommand( { serverStatus: 1} )" |\
            sed -e 's/NumberLong(\(.*\))/\1/
              s/ISODate(\(.*\))/\1/
              s/ObjectId(\(.*\))/\1/
              s/Timestamp(.*)/"&"/
              s/"\([0-9]*\)"/\1/'
    )
    
    mongo_status=${PIPESTATUS[0]}
    if [ $mongo_status -ne $EXIT_OK ] ; then
      echo "mongo exec error"
      exit $EXIT_ERROR
    fi
    value=$(echo $output | jq $index)
    jq_status=$?
    echo $value
    

    备注:由于没有设置mongodb和jq脚本至环境变量,所以在采集脚本中设置两者执行脚本的路径。

    6、启动(重启)Zabbix-agent

    service zabbix-agent start
    

    7、在Zabbix服务端主机测试是否配置有效,可通过脚本

    zabbix_get -s HOST -k mongodb.status[version]
    

    8、至此,整个教程结束。

    相关文章

      网友评论

          本文标题:Mongodb添加Zabbix监控

          本文链接:https://www.haomeiwen.com/subject/vajgbftx.html