首页 > 数据库 >Zabbix监控MongoDB性能状态

Zabbix监控MongoDB性能状态

时间:2022-12-30 16:00:14浏览次数:40  
标签:BIN MongoDB DB HOST echo Zabbix 监控 print PORT

Zabbix监控MongoDB性能的原理:

通过echo "db.serverStatus()" | mongo admin 来查看mongodb的状态。

Zabbix监控MongoDB性能,主要监控以下项目:

- 内存使用情况

- 连接数

- 锁

- 刷新写操作到磁盘

- 每秒执行的查询,插入,删除,更新等操作次数

- 每秒访问的索引次数,每秒命中索引的次数

- MongoDB产生的总的页面错误数量

- MongoDB的网络流量状况

监控操作步骤:

1、编写脚本

2、上传脚本到指定位置

3、修改zabbix_agent配置文件

4、zabbix_server的WEB界面导入模版

5、主机关联

1)编辑zabbix_agent配置文件,添加以下内容

[root@localhost ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf

  1. UserParameter=Mongodb.state[*],/data/scripts/auto_detection_mongodb_state.sh $1
  2. UserParameter=mongodb.status[*],/data/scripts/auto_detection_mongodb_status.sh $1

#保存退出

2)重启zabbix_agentd服务

[root@localhost ~]# service zabbix_agentd restart

3)下载脚本文件(获取监控值)

[root@localhost ~]# cd /data/scripts

[root@localhost scripts]# wget https://mirrors.yangxingzhen.com/shell/auto_detection_mongodb_status.sh

[root@localhost scripts]# wget https://mirrors.yangxingzhen.com/shell/auto_detection_mongodb_state.sh

[root@localhost scripts]# cat auto_detection_mongodb_status.sh

  1. #!/bin/bash
  2. # Description: zabbix ${DB_BIN}/mongodb monitor
  3. # Note: Zabbix 4.0.7
  4. # Date: 2019-7-31 21:20:39
  5. # Verion: 1.0

  6. DB_HOST=127.0.0.1
  7. DB_PORT=27017
  8. DB_BIN="/usr/local/mongodb/bin"

  9. if [[ $# == 1 ]];then
  10. case $1 in
  11. insert)
  12. echo "db.serverStatus().opcountersRepl" |${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep "insert"|awk '{print $3}'|sed 's/,//'
  13. ;;
  14. query)
  15. echo "db.serverStatus().opcountersRepl" |${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep "query"|awk '{print $3}'|sed 's/,//'
  16. ;;
  17. delete)
  18. echo "db.serverStatus().opcountersRepl" |${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep "delete"|awk '{print $3}'|sed 's/,//'
  19. ;;
  20. getmore)
  21. echo "db.serverStatus().opcountersRepl" |${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep "getmore"|awk '{print $3}'|sed 's/,//'
  22. ;;
  23. command)
  24. echo "db.serverStatus().opcountersRepl" |${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep "command"|awk '{print $3}'|sed 's/,//'
  25. ;;
  26. update)
  27. echo "db.serverStatus().opcountersRepl" |${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep "update"|awk '{print $3}'|sed 's/,//'
  28. ;;
  29. current)
  30. echo "db.serverStatus().connections"|${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep -w "current"|awk '{print $4}'|sed 's/,//'
  31. ;;
  32. available)
  33. echo "db.serverStatus().connections"|${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep -w "available"|awk '{print $7}'|sed 's/,//'
  34. ;;
  35. totalCreated)
  36. echo "db.serverStatus().connections"|${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep -w "totalCreated"|awk '{print $10}'|sed 's/,//'
  37. ;;
  38. total)
  39. echo "db.serverStatus().globalLock.activeClients"|${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep "total"|awk '{print $4}'|sed 's/,//'
  40. ;;
  41. readers)
  42. echo "db.serverStatus().globalLock.activeClients"|${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep "readers"|awk '{print $7}'|sed 's/,//'
  43. ;;
  44. writers)
  45. echo "db.serverStatus().globalLock.activeClients"|${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep "writers"|awk '{print $10}'|sed 's/,//'
  46. ;;
  47. deleted)
  48. echo "db.serverStatus().metrics.document"|${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep -w "deleted"|awk -F '(' '{print $2}'|sed 's/),//'
  49. ;;
  50. inserted)
  51. echo "db.serverStatus().metrics.document"|${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep -w "inserted"|awk -F '(' '{print $2}'|sed 's/),//'
  52. ;;
  53. returned)
  54. echo "db.serverStatus().metrics.document"|${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep -w "returned"|awk -F '(' '{print $2}'|sed 's/),//'
  55. ;;
  56. updated)
  57. echo "db.serverStatus().metrics.document"|${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep -w "updated"|awk -F '(' '{print $2}'|sed 's/)//'
  58. ;;
  59. totalTime)
  60. echo "db.serverStatus().globalLock"|${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep "totalTime" |awk '{print $3}'|awk -F '"' '{print $2}'
  61. ;;
  62. bytesIn)
  63. echo "db.serverStatus().network"|${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep "bytesIn"|awk -F'(' '{print $2}'|sed 's/),//'
  64. ;;
  65. bytesOut)
  66. echo "db.serverStatus().network"|${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep "bytesOut"|awk -F'(' '{print $2}'|sed 's/),//'
  67. ;;
  68. numRequests)
  69. echo "db.serverStatus().network"|${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep "numRequests"|awk -F'(' '{print $2}'|sed 's/)//'
  70. ;;
  71. mapped)
  72. echo "db.serverStatus().mem" |${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep -w "mapped"|awk '{print $3}'|sed 's/,//'
  73. ;;
  74. resident)
  75. echo "db.serverStatus().mem" |${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep -w "mappedWithJournal"|awk '{print $3}'|sed 's/,//'
  76. ;;
  77. virtual)
  78. echo "db.serverStatus().mem" |${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep -w "virtual"|awk '{print $3}'|sed 's/,//'
  79. ;;
  80. mappedWithJournal)
  81. echo "db.serverStatus().mem" |${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep -w "resident"|awk '{print $3}'|sed 's/,//'
  82. ;;
  83. *)
  84. echo -e "\033[33mUsage: $0 {insert|query|delete|getmore|command|update|current|available|totalCreated|total|readers|writers|deleted|inserted|returned|updated|totalTime|bytesIn|bytesOut|numRequests||mapped|resident}\033[0m"
  85. exit 1
  86. esac
  87. else
  88. echo -e "\033[33mUsage: $0 {insert|query|delete|getmore|command|update|current|available|totalCreated|total|readers|writers|deleted|inserted|returned|updated|totalTime|bytesIn|bytesOut|numRequests||mapped|resident}\033[0m"
  89. exit 1
  90. fi

[root@localhost scripts]# cat auto_detection_mongodb_state.sh

  1. #!/bin/bash
  2. # Description: zabbix ${DB_BIN}/mongodb monitor
  3. # Note: Zabbix 4.0.7
  4. # Date: 2019-7-31 21:01:22
  5. # Verion: 1.0

  6. DB_HOST="127.0.0.1"
  7. DB_PORT="27017"
  8. DB_BIN="/usr/local/mongodb/bin"

  9. if [[ $# == 1 ]];then
  10. case $1 in
  11. insert)
  12. echo "db.serverStatus().opcounters" |${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep "insert"|awk '{print $3}'|sed 's/,//'
  13. ;;
  14. query)
  15. echo "db.serverStatus().opcounters" |${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep "query"|awk '{print $3}'|sed 's/,//'
  16. ;;
  17. delete)
  18. echo "db.serverStatus().opcounters" |${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep "delete"|awk '{print $3}'|sed 's/,//'
  19. ;;
  20. getmore)
  21. echo "db.serverStatus().opcounters" |${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep "getmore"|awk '{print $3}'|sed 's/,//'
  22. ;;
  23. command)
  24. echo "db.serverStatus().opcounters" |${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep "command"|awk '{print $3}'|sed 's/,//'
  25. ;;
  26. update)
  27. echo "db.serverStatus().opcounters" |${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep "update"|awk '{print $3}'|sed 's/,//'
  28. ;;
  29. total)
  30. echo "db.serverStatus().globalLock.currentQueue"|${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep "total"|awk '{print $4}'|sed 's/,//'
  31. ;;
  32. readers)
  33. echo "db.serverStatus().globalLock.currentQueue"|${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep "readers"|awk '{print $7}'|sed 's/,//'
  34. ;;
  35. writers)
  36. echo "db.serverStatus().globalLock.currentQueue"|${DB_BIN}/mongo ${DB_HOST}:${DB_PORT}/admin |grep "writers"|awk '{print $10}'|sed 's/,//'
  37. ;;
  38. *)
  39. echo -e "\033[33mUsage: $0 {insert|query|delete|getmore|command|update|total|readers|writers}\033[0m"
  40. exit 1
  41. esac
  42. else
  43. echo -e "\033[33mUsage: $0 {insert|query|delete|getmore|command|update|total|readers|writers}\033[0m"
  44. exit 1
  45. fi

4)脚本授权

[root@localhost scripts]# chmod +x auto_detection_mongodb_status.sh

[root@localhost scripts]# chmod +x auto_detection_mongodb_state.sh

5)验证server端验证是否能获取agent端的key值

#使用zabbix_get命令获取key值

Zabbix监控MongoDB性能状态_sed

Zabbix监控平台配置

1、下载监控模板文件

模板附件下载:https://mirrors.yangxingzhen.com/templates/zabbix_mongodb_templates.xml

2、导入Mongodb监控模板

进入后台->配置->模板->导入(右上角)->选择下载的模板文件->最后点击导入 。

Zabbix监控MongoDB性能状态_ide_02

至此Mongodb监控模板已经导入到Zabbix中。

Zabbix监控MongoDB性能状态_mongodb_03

3、关联模板

需要把Mongodb监控模板链接到你的监控主机上,进入后台->配置->点击你的主机->模板->选择刚才导入模板,点击添加,最后点击更新即可。

Zabbix监控MongoDB性能状态_mongodb_04

4、效果图展示

Zabbix监控MongoDB性能状态_ide_05

Zabbix监控MongoDB性能状态_sed_06

Zabbix监控MongoDB性能状态_mongodb_07

标签:BIN,MongoDB,DB,HOST,echo,Zabbix,监控,print,PORT
From: https://blog.51cto.com/u_12018693/5980594

相关文章

  • Zabbix终端管理工具zabbix_manager
    说明Zabbix_manager是Zabbix终端管理工具,可以在linux终端实现管理Zabbix同时可以通过Zabbix_manager实现对Zabbix的一键初始化,一键导出报表(报表为excel)等功能。Zabbix_ma......
  • Zabbix与乐维监控对比分析(六)——图形图表篇
    前面我们详细介绍了乐维监控与Zabbix的架构与性能、Agent管理、自动发现、权限管理、对象管理、告警管理、可视化的对比分析,相信大家对二者的对比分析有了更加深入的了解,接......
  • 5-3 掌握 egg.js + 云 mongodb
    1egg.js1.1初始化初始化和项目启动方法#初始化$mkdiregg-example&&cdegg-example$npminitegg--type=simple#实际上执行的是npmicreate-egg$npm......
  • Flutter异常监控 - 贰 | 框架Catcher原理分析
    前言在给Flutter应用做异常监控的时候,一开始我是拒绝滴,如果不考虑FlutterEngine和native侧的监控,用我另一篇文章中不得不知道的Flutter异常捕获知识点提到的方......
  • Centos7下Zabbix5.0部署
    系统简介:zabbix是一个企业级解决方案,支持实时监控数千台服务器,虚拟机和网络设备采集百万级监控指标。Zabbix的主要特点有:指标收集:从任何设备、系统、应用程序上进行......
  • Zabbix与乐维监控对比分析(六)——图形图表篇
    前面我们详细介绍了乐维监控与Zabbix的架构与性能、Agent管理、自动发现、权限管理、对象管理、告警管理、可视化的对比分析,相信大家对二者的对比分析有了更加深入的了解,接......
  • etcd 监控项梳理
    指标类型说明etcd_server_has_leaderGaugeetcdmember是否有Leader。1:表示有主节点。0:表示没有主节点。etcd_server_is_leaderGaugeetcdmember是否是Le......
  • MongoDB从入门到实战之Docker快速安装MongoDB
    前言   在上一篇文章中带领带同学们快速入门MongoDB这个文档型的NoSQL数据库,让大家快速的了解了MongoDB的基本概念。这一章开始我们就开始实战篇教程,为了快速把Mong......
  • 监控flash_recovery_area的使用情况
    监控flash_recovery_area的使用情况可以查询2个视图:1.V$FLASH_RECOVERY_AREA_USAGE:displaysusageinformationaboutflashbackrecoveryareas SQL >   select......
  • docker安装mongodb
    dockerrun-d\--namemongodb\--restartalways\--privileged\-p27017:27017\-v/data/mongodb/data:/data/db\-eMONGO_INITDB_ROOT_USERNAME......