MongoDB之监控

1.  PMM监控MongoDB

    1.  PMM架构图

        

    2.  Server组件

        Query Analytics  用来搜集指令并作性能分析的

          QAN API  作为percona-qan-agent后端存储和读取Query资料用

          QAN App  提供图形化分析界面

        Metrics Monitor

          Prometheus  监控软件

          Consul  提供一个PMM客户端可以远程列出,添加或删除prometheus主机的API

          Grafana  展示工具

          Percona Dashboards  用于Grafana的仪表板

    3.  Client组件

        pmm-admin  用于管理PMM Client的命令行工具

        pmm-mysql-queries-0  管理QAN代理的服务,从mysql收集查询性能数据并将其发送到PMM服务器上的QAN API

        pmm-mongodb-queries-0  管理QAN代理的服务,从mongodb收集查询性能数据并将其发送到PMM服务器上的QAN API

        node_exporter  用于收集系统信息

        mysqld_exporter  收集mysql信息

        mongodb_exporter  收集mongodb信息

        proxysql_exporter  收集proxysql信息

    4.  创建PMM数据容器

        docker pull percona/pmm-server:1.17.4  拉取镜像

        docker create -v /opt/prometheus/data -v /opt/consul-data -v /var/lib/mysql -v /var/lib/grafana --name pmm-data percona/pmm-server:latest /bin/true  

        docker run -d -p 80:80 --volumes-from pmm-data --name pmm-server -e SERVER_USER=admin -e SERVER_PASSWORD=admin --restart always percona/pmm-server:latest 

        http://192.168.1.203  账号密码: admin

    5.  安装客户端

        在所要监控的mongodb服务器上,安装客户端

        yum install -y https://downloads.percona.com/downloads/percona-release/percona-release-0.1-6/redhat/percona-release-0.1-6.noarch.rpm

        yum install pmm-client -y

        pmm-admin config --server 192.168.1.203 --server-user admin --server-password admin  连接

    6.  添加mongodb实例               

        pmm-admin add mongodb --cluster mongodb-zhengshi --uri mongodb://192.168.1.125:16535

        pmm-admin add mongodb --cluster mongodb-zhengshi --uri mongodb://192.168.1.16:16535

        pmm-admin add mongodb --cluster mongodb-zhengshi --uri mongodb://192.168.1.12:16535

2.  使用命令在shell监控

    1.  服务器级别

        1.  登录到服务器中,输入指令  db.serverStatus();

            会输出很多内容。

        2.  常用的函数

            db.serverStatus().host;  主机名

            db.serverStatus().locks;  锁信息

            db.serverStatus().globalLock;  全局锁信息

            db.serverStatus().mem  内存信息          

{
        "bits" : 64,
        "resident" : 4254,         //物理内存消耗,单位M   
        "virtual" : 5791,         //虚拟内存消耗,单位M   
        "supported" : true,
        "mapped" : 0,
        "mappedWithJournal" : 0
}

            db.serverStatus().connections  连接数信息

{
        "current" : 55,     //当前连接数
        "available" : 52373,     //可用连接数
        "totalCreated" : 75760,     //截止目前为止总共创建的连接数75760
        "active" : 2
}

            db.serverStatus().extra_info  额外信息

            db.serverStatus().indexCounters  索引统计信息

            db.serverStatus().backgroundFlushing  后台刷新信息

            db.serverStatus().cursors  游标信息

            db.serverStatus().network  网络信息

            db.serverStatus().repl  副本集信息

            db.serverStatus().opcountersRepl  副本集的操作计数器

{
        "insert" : 32619505,
        "query" : 0,
        "update" : 28,
        "delete" : 25070432,
        "getmore" : 0,
        "command" : 13
}

            db.serverStatus().opcounters

            db.serverStatus().asserts

            db.serverStatus().writeBacksQueued

    2.   数据库级别

        db.stats();        

    3.  collection级别 

        db.student.stats(); 

3.  使用mongostat实时监控

[root@mongodb-125 bin]# ./mongostat -h 192.168.1.12:16535
insert query update delete getmore command dirty  used flushes vsize   res qrw arw net_in net_out conn              set repl                time
    *0     4     *0     *0       1    10|0  0.0% 79.8%       0 3.43G 1.92G 0|0 1|0  1.73k    113k   64 zhenpin-zhengshi  PRI Aug  8 14:32:28.053
    *0     3     *0     *0       0     7|0  0.0% 79.8%       0 3.43G 1.92G 0|0 1|0  1.60k    111k   64 zhenpin-zhengshi  PRI Aug  8 14:32:29.055
    *0     4     *0     *0       1    10|0  0.0% 79.8%       0 3.43G 1.92G 0|0 1|0  1.73k    113k   64 zhenpin-zhengshi  PRI Aug  8 14:32:30.054
    *0     3     *0     *0       1     9|0  0.0% 79.8%       0 3.43G 1.92G 0|0 1|0  2.80k    113k   64 zhenpin-zhengshi  PRI Aug  8 14:32:31.054
    *0     3     *0     *0       0    11|0  0.0% 79.8%       0 3.43G 1.92G 0|0 1|0  1.84k    114k   64 zhenpin-zhengshi  PRI Aug  8 14:32:32.055
    *0     4     *0     *0       1    12|0  0.0% 79.8%       0 3.43G 1.92G 0|0 1|0  1.83k    114k   64 zhenpin-zhengshi  PRI Aug  8 14:32:33.054
    *0     4     *0     *0       1     9|0  0.0% 79.8%       0 3.43G 1.92G 0|0 1|0  1.67k    112k   64 zhenpin-zhengshi  PRI Aug  8 14:32:34.053
    *0     3     *0     *0       0     8|0  0.0% 79.8%       0 3.43G 1.92G 0|0 1|0  1.66k    112k   64 zhenpin-zhengshi  PRI Aug  8 14:32:35.055
    *0     5     *0     *0       3    14|0  0.6% 79.8%       0 3.43G 1.92G 0|0 1|0  6.39k    115k   64 zhenpin-zhengshi  PRI Aug  8 14:32:36.053
    *0     2     *0     *0       0     8|0  0.6% 79.8%       0 3.43G 1.92G 0|0 1|0  1.50k    112k   64 zhenpin-zhengshi  PRI Aug  8 14:32:37.054  
  • inserts/s 每秒插入次数
  • query/s 每秒查询次数
  • update/s 每秒更新次数
  • delete/s 每秒删除次数
  • getmore/s 每秒执行getmore次数
  • command/s 每秒的命令数,比以上插入、查找、更新、删除的综合还多,还统计了别的命令
  • dirty  脏数据字节的缓存百分比
  • used  正在使用中的缓存百分比
  • flushs/s 每秒执行fsync将数据写入硬盘的次数。
  • vsize 虚拟内存使用量,单位MB
  • res 物理内存使用量,单位MB
  • vsize一般不会有大的变动, res会慢慢的上升,如果res经常突然下降,去查查是否有别的程序狂吃内存
  • qr 客户端等待从MongoDB实例读数据的队列长度
  • qw 客户端等待从MongoDB实例写入数据的队列长度
  • ar 执行读操作的活跃客户端数量
  • aw 执行写操作的活跃客户端数量
  • 当Mongodb接收到太多的命令而数据库被锁住无法执行完成,它会将命令加入队列。这一栏显示了总共、读、写3个队列的长度,都为0的话表示mongo毫无压力。高并发时,一般队列值会升高。
  • netIn MongoDB实例的网络进流量
  • netOut MongoDB实例的网络出流量
  • conn: 打开连接的总数,是qr,qw,ar,aw的总和
    注:MongoDB为每一个连接创建一个线程,线程的创建与释放也会有开销,所以尽量要适当配置连接数的启动参数,maxIncomingConnections,阿里工程师建议在5000以下,基本满足多数场景
  • time 时间戳

4.  使用命令mongotop监控

    mongotop --host 192.168.2.232:16535  默认每一秒刷新一次

                                   ns    total    read    write    2022-08-31T09:56:42+08:00
                       local.oplog.rs      4ms     4ms      0ms                             
                 admin.$cmd.aggregate      0ms     0ms      0ms                             
                    admin.system.keys      0ms     0ms      0ms                             
                   admin.system.roles      0ms     0ms      0ms                             
                 admin.system.version      0ms     0ms      0ms                             
               config.system.sessions      0ms     0ms      0ms                             
                  config.transactions      0ms     0ms      0ms                             
               local.replset.election      0ms     0ms      0ms                             
               local.replset.minvalid      0ms     0ms      0ms                             
local.replset.oplogTruncateAfterPoint      0ms     0ms      0ms                             

    mongotop --host 192.168.2.232:16535 5  每5秒刷新一次      

5.  使用HTTPconsole监控

    需要在配置文件中添加:httpinterface=true,这样才允许使用28017端口

    一般为了安全考虑,不会开启http接口

                               

posted @ 2022-08-05 10:39  奋斗史  阅读(376)  评论(0)    收藏  举报