热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MongoDB接入PMM监控之初探

很早就听说过PMM,Percona开发的一套对MongoDB,MySQL,Postgres建立监控系统的套件。曾经也抽空想试用下,但由于使用上的各种毛病,以及文档欠缺,没成过。最近



很早就听说过PMM,Percona开发的一套对MongoDB, MySQL, Postgres建立监控系统的套件。曾经也抽空想试用下,但由于使用上的各种毛病,以及文档欠缺,没成过。最近在Mongo中文社区里听群友谈到已经有PMM2了,迫不及待地搭建一把,看看什么样子,毕竟网络上详细谈PMM搭建的貌似不多,此文抛砖引玉。


PMM


PMM是什么呢?简单说这是Percona开发的用来监控mysql,postgres,mongodb的一揽子方案,即它把该用的组件全部包在一起了,只向外暴露一个pmm-client,一个pmm-server;里面囊括了cloud-native氛围下大为流行的prometheus, grafana监控工具。


其pmm-client主要包括各种exporters(exporter是prometheus中的概念,是一种将服务metrics抓取的第三方工具,供prometheus来scrape),如node_exporter抓取主机metrics信息, mongodb_exporter抓取mongod, mongos metrics信息。


pmm-server内将prometheus,grafana,consul等工具一起打包,以整体方式提供服务;其中prometheus是时序数据库,grafana是监控面板系统,其可配置prometheus为它的一个数据源, consul作为服务发现组件,便于屏蔽后端的节点变更。


且它们都是开源的,见


https://github.com/percona


安装


客户端pmm-client


很多文档说用yum安装,但我没成过,估计是添加yum源的问题。干脆直接rpm安装,下载地址:


https://repo.percona.com/yum/release/7/RPMS/x86_64/pmm2-client-2.5.0-6.el7.x86_64.rpm


(不一定得是2.5,有更高版本也可用)


服务端pmm-server 2


 


v2版本,而不是v1,貌似很不兼容,曾经搭v1没搭成


此次为方便起见,采用了多数文章建议的方式,docker 容器运行,步骤:


– 创建容器及其volume


dockercreate -v /srv –name pmm-data percona/pmm-server:2 /bin/true


 


– 启动pmm-server 2


dockerrun -d -p 8080:80 -p 443:443 –volumes-from pmm-data –name pmm-server–restart always percona/pmm-server:2


如果主机不允许docker运行,恐怕得需自行编译了。官方文档似乎并未说清楚该如何自行编译打包安装,有朋友探索过不妨分享下。


注册节点


这里注册节点的意思就是指把各个mongos,mongod节点加入到监控中。这是通过pmm-client来做的。


首先,pmm-client要感知到pmm-server:


# pmm-admin config –server-insecure-tls–server-url=https://admin:admin@


– admin,admin是默认的用户、密码, 是pmm-server 的ip地址


– 如果下次想重置,可以用 –force


此命令的输出其实是每台 pmm-client机器上启动了 pmm-agent进程,用以采集各service的数据


然后,加入mongod 节点,


# pmm-admin add mongodb –cluster”cluster1″ –replication-set “cluster1_0” –username xxx–password xxx : :


命令格式我们可以随时用pmm-admin addmongodb -h 来查看。有些选项含义是显而易见的,可以知道第一个ip:port指 service name, 第二个是service address。我习惯让service name取值为service address,好处是在grafana的 Service Name下拉框里会显示 ip:port,这样我们更易区分同一机器上的不同节点( 默认时取为主机名,非常不适合标识同一机器上的不同节点! )。如下图所示:



另外,我并未按照官方文档


https://www.percona.com/doc/percona-monitoring-and-management/conf-mongodb.html


中说的先创建 mongodb_exporter,分配clusterMonitor权限来做,直接用一个有足够权限的用户也可以;当然单独分配一个用户应该更安全;


如果是添加mongos节点,和mongod差不多, 不过需移除 –replica-set 选项


将mongod, mongos加入后,我们可通过 pmm-admin list发现,服务节点已经注册了:



如果进入到pmm-server容器中去看,会发现,在/etc/prometheus.yml中已经加入了多个targets,



然后去/prometheus/targets,我们会发现,所有的targets都UP状态,如果有不是UP状态的,看看是否是网络故障或配置问题:



效果图


下面以我的本地一主二从的副本集集群 1p2s 举例,YCSB以insert ops=100 load


集群指标 


框住部分表明是在做 insert ops=100


副本集指标 



实例指标 



WiredTiger指标 



主机指标 


可见指标是多么地集中、丰富!对于分析定位问题,抓住因果关系,是非常有利的。


结语


相信看到这里,大家能明白,PMM其实是一套可以快速建立mongo监控系统的工具,非常适合于迭代开发、测试过程。当然由于其各个组件被bundle在一起,可能存在以下的缺陷:


1. 无法灵活扩展,节点多了后,一个pmm server能撑住吗?


2. 如果是云服务,可能需要重新考虑架构,负载均衡,自动化配置等


3. 不容易定制。pmm-client, pmm-server是不是暴露了足够多的功能供调用呢?特别是如果我们想定制grafana 的template 变量,label不满足需求怎么办?


4. 面板中的metrics计算是否都准确?很多指标需要熟悉


当然我们也可以选择单独部署各个组件,毕竟PMM证明了可行性。比如我们考虑把无状态的服务如exporter, grafana 放到k8s集群里,其管理由k8s负责;甚至prometheus带有 data目录的组件也可放进去,毕竟是时序数据库,可以允许一定时间的rotation。这样好处就是灵活,管理也不复杂,交给k8s,但配置会略微麻烦,得很懂 prometheus.yml的语法。最终可怎么用,看我们的需求了。




作者:陈仕


一名热衷和专职于数据库、分布式、存储技术的技术人,对linux内核、微处理器架构也颇有兴趣。工作初接触redis/couchbase/scylladb等NoSQL数据库,现在腾讯做mongo云数据库开发。业余时间喜欢爬山,研究论文,学习人文。



References


[1] https://www.percona.com/blog/2019/07/23/pmm-for-mongodb-start-guide/


[2] https://www.percona.com/blog/2019/09/19/installing-percona-monitoring-and-management-pmm-2-for-the-first-time/


[3] https://www.jianshu.com/p/ed2bf649a43f


[4] https://www.jianshu.com/p/dffe5b2d29c2


[5] https://jira.percona.com/browse/PMM-3980


[6] https://www.percona.com/doc/percona-monitoring-and-management/2.x/manage/client-config.html


[7] https://forums.percona.com/discussion/47945


[8] https://www.percona.com/doc/percona-monitoring-and-management/2.x/conf-mongodb.html


[9] https://www.percona.com/doc/percona-monitoring-and-management/pmm-admin.html


[10] https://www.percona.com/blog/2018/01/17/troubleshooting-percona-monitoring-and-management-pmm-metrics/


[11] https://www.percona.com/blog/2018/07/05/configuring-pmm-monitoring-mongodb-cluster/




推荐阅读
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
  • 微信商户扫码支付 java开发 [从零开发]
    这个教程可以用作了解扫码支付的整体运行过程,已经实现了前端扫码,记录订单,回调等一套完整的微信扫码支付。相关链接:微信支 ... [详细]
  • 寻求更强大的身份和访问管理(IAM)平台的企业正在转向云,并接受身份即服务(IDaaS)的灵活性。要为IAM选择正确的场外解决方案,业务管理人员和IT专业人员必须在实施之前评估安全 ... [详细]
  • redis 端口_使用Prometheus和Grafana构建Redis实时监控平台
    Redis作为缓存系统,在整个后端体系中是较为重要的一环,需要实时监控运行状态。现在有各种各样的工具都可以对Redis进行监控,例如&#x ... [详细]
  • kubeadm构建k8s之Prometheusoperated监控(0.18.1)
       介绍:    大家好,k8s的搭建有许多方式,也有许多快速部署的,为了简化部署的复杂度,官方也提供了开源的kubeadm快速部署,最新1.10.x版本已经可以实现部署集群,  ... [详细]
  • Prometheus Grafana实现对Linux Kubernetes Nginx  的监控系统
    2019独角兽企业重金招聘Python工程师标准用Prometheus配合Grafana实现多用途的服务监控系统。一.Prometheus简介Prometheus是一个开源监 ... [详细]
  • 怎么把项目推到gitlab上_Gitlab利用Webhook+jenkins实现自动构建与部署
    之前部署了Gitlab的代码托管平台和Jenkins的代码发布平台。通常是开发后的代码先推到Gitlab上管理,然后在Jenkins里通过脚本构建代码发布。这种方式每 ... [详细]
author-avatar
知心friend2007
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有