cheng029 发表于 2016-4-21 14:11:47

zabbix监控mongodb

    zabbix监控mongodb

1、配置zabbix自定义用户key
      vim /usr/local/zabbix/etc/zabbix_agentd.conf
      UserParameter=MongoDB.Status,/bin/echo "db.serverStatus().$1" | /usr/local/mongodb/bin/mongo admin | grep "\<$2\>"| awk -F : '{print $$2}'|awk -F , '{print $$1}'
      上面是通过db.serverStatus()来获取服务器状态
      其中$1表示第一个参数
      grep $2的时候要加上锚地符 "\<" 和 "\>",因为有的对象名可能部分相同
      重启zabbix客户端
2、使用自定义的命令测试获取的结果
      # echo "db.serverStatus().opcounters" | mongo admin
      MongoDB shell version: 2.6.3
      connecting to: admin
      {
               "insert" : 6,
               "query" : 138,
               "update" : 1,
               "delete" : 1,
               "getmore" : 0,
               "command" : 9884
      }
      bye
3、测试用户自定义key是否生效
      ./zabbix_get -s 127.0.0.1 -k MongoDB.Status
4、在zabbix上添加监控
      新建一个模板
      
      添加监控项
      监控command,收集所有的命令数,包括插入,删除,查询,更新等所有命令,这里每过10秒取一次值
      insert、query、update、delete、getmore、command等都用相同的设置
      
      监控内存,virtual是虚拟内存,resident是无论内存
      
      监控网络,bytesIN是进流量,bytesOut是出流量,numRequests是请求数
      
      监控连接数,available是可用连接数、current是当前连接数
      
      监控刷写数据到硬盘的次数
      
      定义mapped的项目,单位是MB
      
5、监控locks项目,由于部分项目是多维数组,不能使用之前自定义的用户key获取,需要额外创建专门的key
#echo "db.serverStatus().locks" | mongo admin
      MongoDB shell version: 2.6.3
      connecting to: admin
      {
               "." : {
                     "timeLockedMicros" : {
                               "R" : NumberLong(572504),
                               "W" : NumberLong(480751)
                     },
                     "timeAcquiringMicros" : {
                               "R" : NumberLong(480946),
                               "W" : NumberLong(70198)
                     }
               },
               "admin" : {
                     "timeLockedMicros" : {
                               "r" : NumberLong(142364),
                               "w" : NumberLong(0)
                     },
                     "timeAcquiringMicros" : {
                               "r" : NumberLong(15018),
                               "w" : NumberLong(0)
                     }
               },
               "local" : {
                     "timeLockedMicros" : {
                               "r" : NumberLong(271651),
                               "w" : NumberLong(271)
                     },
                     "timeAcquiringMicros" : {
                               "r" : NumberLong(120699),
                               "w" : NumberLong(5)
                     }
               },
               "test" : {
                     "timeLockedMicros" : {
                               "r" : NumberLong(93725),
                               "w" : NumberLong(114935)
                     },
                     "timeAcquiringMicros" : {
                               "r" : NumberLong(67411),
                               "w" : NumberLong(41)
                     }
               }
      }
      bye
      创建自定义key
UserParameter=MongoDB.Status.locks,/bin/echo "db.serverStatus().locks.$1.$2.$3" | /usr/local/mongodb/bin/mongo admin |/usr/bin/tail -n 2 | /usr/bin/head -n 1 | awk -F '(' '{print $$2}'|awk -F ')' '{print $$1}'

模板见附件。

      

天下123 发表于 2017-7-25 08:48:28

这个好像不是原创,这样的监控,不完善啊,你要是mongo集群,就没法监控了
页: [1]
查看完整版本: zabbix监控mongodb