[Cacti] mongodb性能监控实战

标签: cacti mongodb 性能 | 发表时间:2014-10-06 03:41 | 作者:mchdba
出处:http://blog.csdn.net


  前言:

          为了更好的使用mongodb,需要监控出mongodb的一些基础使用情况,比如Flush数、连接数、内存使用率、Index操作,Slave延迟等等,这些可以通过配置cacti监控mongodb的模板来完成。
 

1,在cacti界面导入模板

在计算机本地,下载此tgz包:http://mysql-cacti-templates.googlecode.com/files/better-cacti-templates-1.1.8.tar.gz

解压到任意目录,然后打开cacti的web界面,选择"Import/Export" — "Improt Templates",点击"选择文件",将cacti_host_template_x_mongodb_server_ht_0.8.6i-sver1.1.8.xml,导入到cacti里,这样,cacti的图形模板里就可以选择使用mongodb的图形项目了。


2,在cacti服务器端配置监控脚本

[root@squid-2 soft]#  wget  http://mysql-cacti-templates.googlecode.com/files/better-cacti-templates-1.1.8.tar.gz

[root@squid-2 soft]# tar zxvf better-cacti-templates-1.1.8.tar.gz

[root@squid-2 soft]# cd better-cacti-templates-1.1.8

[root@squid-2 better-cacti-templates-1.1.8]#  cp scripts/ss_get_by_ssh.php /var/www/html/cacti/scripts/ss_get_by_ssh.php

[root@squid-2 better-cacti-templates-1.1.8]# chown –R apache /var/www/html/cacti/scripts/ss_get_by_ssh.php

 

修改监控脚本ss_get_by_ssh.php

[root@squid-2 better-cacti-templates-1.1.8]# vim /var/www/html/cacti/scripts/ss_get_by_ssh.php

$ssh_user   = 'root';                          # SSH username

$ssh_port   = 22;                               # SSH port

$ssh_iden   = '-i /var/www/html/cacti/id_rsa';  # SSH identity

 

这里mongodb由于使用了30000端口不是默认端口27018,所以还需要修改端口配置

  function mongodb_cmdline ( $options ) {

  return “echo \”db._adminCommand({serverStatus:1, repl:2})\” | /usr/local/mongo/mongodb/bin/mongo --port 30000″;

  }

之后,重启cacti服务

[root@squid-2 templates]# service httpd restart

停止 httpd:                                               [确定]

正在启动 httpd:                                           [确定]

[root@squid-2 templates]#

 

3,使用SSH的方式登录监控

(1):创建SSH远曾登录账号

使用ssh-keygen命令生成秘钥,回车后输入key的路径/var/www/html/cacti/id_rsa,然后2个回车,密码为空,如下:

[root@ squid-2 soft]# ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): /var/www/html/cacti/id_rsa

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /var/www/html/cacti/id_rsa.

Your public key has been saved in /var/www/html/cacti/id_rsa.pub.

The key fingerprint is:

73:8e:77:45:a0:54:ef:c8:a4:2d:62:50:8d:da:d8:e4 root@name01

The key's randomart image is:

+--[ RSA 2048]----+

|        .o..o    |

|       .o... o   |

|      .B  . . o  |

|      o.E  = +   |

|        S + + o  |

|       . * . .   |

|        . o .    |

|         . .     |

|                 |

+-----------------+

 

把key文件权限改成cacti的使用用户可以访问的权限:

[root@ squid-2 soft]# chown -R cacti_user /var/www/html/cacti/id_rsa*

[root@ squid-2 soft]#

将key加入到远程mongodb服务器上,也可在远程服务器建立一个cacti_user用户,将key加上到cactiuser目录下

[root@ squid-2 soft]# ssh-copy-id -i /var/www/html/cacti/id_rsa  [email protected]

 

(2):配置各种参数

  修改ss_get_by_ssh.php,设置好私钥文件路径:

  $ssh_user   = 'root';                          # SSH username

  $ssh_port   = 22;                               # SSH port

  $ssh_iden   = '-i /var/www/html/cacti/id_rsa';  # SSH identity

  如果mongodb不使用默认端口,需要修改下面一段,把端口加上即可:

  function mongodb_cmdline ( $options ) {

  return “echo \”db._adminCommand({serverStatus:1, repl:2})\” | /usr/local/mongo/mongodb/bin/mongo --port 30000″;

  }


(3)检测监控脚本

[root@squid-2 templates]# php /var/www/html/cacti/scripts/ss_get_by_ssh.php  --type mongodb --host 10.254.3.62 --items dc,de,df,dg,dh,di,dj,dk,dl,dm,dn,do,dp,dq,dr,ds,dt,du

dc:57 de:0 df:401604608 dg:-1 dh:-1 di:-1 dj:-1 dk:-1 dl:-1 dm:-1 dn:-1 do:46268320 dp:5245 dq:0 dr:6 ds:52 dt:46697435 du:-1[root@squid-2 templates]#

[root@squid-2 templates]#

看到有数据了,检测OK。


4,使用Mongodb远程连接的方式来监控

4.1. 修改mongodb_cmdline函数,通过授权帐号密码、指定端口进行登录。

function mongodb_cmdline ( $options ) {

   // return "echo \"db._adminCommand({serverStatus:1, repl:2})\" | mongo";

   return "echo \"db._adminCommand({serverStatus:1, repl:2})\" | /usr/local/mongodb/bin/mongo admin --port $options[port2] --username pluser --password !378zm13yt";

}

 

4.2. 修改get_command_result函数,采用远程登录的方式,而非默认SSH的方式。(数据库本来就可以远程连接), 大概在558行

// $final_cmd = $use_ssh ? "$ssh '$cmd'" : $cmd;

$final_cmd = "$cmd --host $options[host]";

 

4.3  修改 Data Input Methods

         选择“Console”,在左侧菜单栏选择“Data Input Methonds”,再选择mongodb监控项连接“X Get Mongodb Stats…”,在中间的“Input String”后面的输入框里面,带上参数符合,如下所示:

<path_php_binary> -q <path_cacti>/scripts/ss_get_by_ssh.php --host <hostname> --type mongodb –port2 30000 --username pluser --password !378zm13yt --items dk,dl,dm,dn


4.4. 执行脚本进行测试,结果如下:

[root@squid-2 ~]# php ss_get_by_ssh.php --type mongodb --host 10.254.3.62 --port2 30000 --items jc,jd

PHP Parse error:  syntax error, unexpected T_STRING in /var/www/html/cacti/scripts/ss_get_by_ssh.php on line 1265

[root@squid-2 ~]#

脚本有全角乱码,去掉,再执行脚本进行测试,结果如下:

[@cacti scripts]# php ss_get_by_ssh.php --type mongodb --host 10.254.3.62 --port2 30000 --items jc,jd

jc:4 jd:5497683968

 

5,生成监控图

在界面,选择“Device”,选择mongodb服务器连接“3.X2_mongodb”,再选择右上角的“Create Graphs for this Host”,在“Graph Types”后的下拉框里面选择Mongodb服务项,就会看到列表中有mongodb监控服务,然后打勾选上,点击右下角的“Create”按钮,为主机添加进监控图,如下所示:


PS:在添加Device设备的时候,如果勾选了MongoDB的模板,需要指定Port2参数。


  
6,查看mongodb监控图像
    添加完毕之后,会有一下系列监控图,如下所示:


(1)MongoDB Background Flushes GT


 

(2)MongoDB Commands GT

   

 

(3)MongoDB Connections GT

 

(4)MongoDB Index Ops GT

 

(5)MongoDB Memory GT

 

(6) MongoDB Slave Lag GT

 

----------------------------------------------------------------------------------------------------------------

<版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!>
​本文章地址原始地址: http://blog.csdn.net/mchdba/article/details/39805039

----------------------------------------------------------------------------------------------------------------

参考文章地址:
http://blog.chinaunix.net/uid-21505614-id-3186756.html

http://c20031776.blog.163.com/blog/static/68471625201341424117630/


 

作者:mchdba 发表于2014-10-5 19:41:23 原文链接
阅读:90 评论:0 查看评论

相关 [cacti mongodb 性能] 推荐:

[Cacti] mongodb性能监控实战

- - CSDN博客数据库推荐文章
          为了更好的使用mongodb,需要监控出mongodb的一些基础使用情况,比如Flush数、连接数、内存使用率、Index操作,Slave延迟等等,这些可以通过配置cacti监控mongodb的模板来完成. 1,在cacti界面导入模板 在计算机本地,下载此tgz包:http://mysql-cacti-templates.googlecode.com/files/better-cacti-templates-1.1.8.tar.gz.

使用Cacti监控MongoDB和Redis

- Wang Dong - NoSQLFan
Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具. 被广泛的用于对服务器的运维监控中,Cacti提供了一种插件式的管理,只要按要求写好特定的模板,那么你就可以对任何服务进行流量监控. 本文就是要为大家介绍两个模板,分别是MongoDB和Redis的Cacti模板,使用它,你可以对你的MongoDB和Redis服务进行流量监控.

mongodb性能测试

- - 数据库 - ITeye博客
1) Mongodb的非安全插入方式,在一开始插入性能是非常高的,但是在达到了两千万条数据之后性能骤减,这个时候恰巧是服务器24G内存基本占满的时候(随着测试的进行mongodb不断占据内存,一直到操作系统的内存全部占满),也就是说Mongodb的内存映射方式,使得数据全部在内存中的时候速度飞快,当部分数据需要换出到磁盘上之后,性能下降很厉害.

记一次MongoDB性能问题

- Fstone - 火丁笔记
最近忙着把一个项目从MySQL迁移到MongoDB,在导入旧数据的过程中,遇到了些许波折,犯了不少错误,但同时也学到了不少知识,遂记录下来. 公司为这个项目专门配备了几台高性能务器,清一色的双路四核超线程CPU,外加32G内存,运维人员安装好MongoDB后,就交我手里了,我习惯于在使用新服务器前先看看相关日志,了解一下基本情况,当我浏览MongoDB日志时,发现一些警告信息:.

mongodb索引讲解与性能调优

- - haohtml's blog
mongodb索引规则基本上与传统的关系库一样,大部分优化MySQL/Oracle/SQLite索引的技巧也适用于mongodb. 当查询中用到某些条件时,可以对该键建立索引,以提高查询速度. 如果数据量很多且查询多于更新时,可以用索引提高查询的速度. a)         查询索引:. 查询索引很简单,比如说需要查询mailaccess数据库中的Mail collection上的索引时:.

Cassandra HBase和MongoDb性能比较

- - 数据库 - ITeye博客
这是一篇基于亚马逊云平台上对三个主流的. NoSQL数据库性能比较,在读写两个操作不同的组合情况下性能表现不同. 横坐标是吞吐量,纵坐标是延迟,这是一对矛盾,吞吐量越大,延迟越低,代表越好. 纯粹插入,Cassandra领先,见下图:. 2.WorkloadA: 读修改操作各占一半情况下的修改性能:MongoDB明显延迟增加,落败:.

开发高性能的MongoDB应用—浅谈MongoDB性能优化 - 吴纹羽

- - 博客园_首页
大数据时代的数据存储,非关系型数据库MongoDB(一).   “如何能让软件拥有更高的性能. ”,我想这是一个大部分开发者都思考过的问题. 性能往往决定了一个软件的质量,如果你开发的是一个互联网产品,那么你的产品性能将更加受到考验,因为你面对的是广大的 互联网用户,他们可不是那么有耐心的. 严重点说,页面的加载速度每增加一秒也许都会使你失去一部分用户,也就是说, 加载速度和用户量是成反比的.

[Cacti] memcache安装运行、cacti监控memcache实战

- - CSDN博客系统运维推荐文章
Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力. Memcache官方网站:http://memcached.org/. 下载地址:  http://www.memcached.org/downloads,我们线上使用的比较稳定的版本是1.4.15,如果官网找不到以前的版本了,可以去我的csdn资源里面下载此版本,下载地址:.

记一次MongoDB性能问题,附原理解析

- zffl - NoSQLFan
下面文章转载自火丁笔记,原作者描述了一次MongoDB数据迁移过程中遇到的性能问题及其解决方案,中间追查问题的方法和工具值得我们学习. 另外NoSQLFan还对作者略讲的问题产生原理进行了分析,希望对您有用. 最近忙着把一个项目从MySQL迁移到MongoDB,在导入旧数据的过程中,遇到了些许波折,犯了不少错误,但同时也学到了不少知识,遂记录下来.

Mongodb亿级数据量的性能测试

- - haohtml's blog
进行了一下Mongodb亿级数据量的性能测试,分别测试如下几个项目:.  (所有插入都是单线程进行,所有读取都是多线程进行). 1) 普通插入性能 (插入的数据每条大约在1KB左右). 2) 批量插入性能 (使用的是官方C#客户端的InsertBatch),这个测的是批量插入性能能有多少提高. 3) 安全插入功能 (确保插入成功,使用的是SafeMode.True开关),这个测的是安全插入性能会差多少.