美文网首页MySQL
基于WEB-API的单机多实例监控

基于WEB-API的单机多实例监控

作者: 小知_知数堂 | 来源:发表于2019-12-31 09:44 被阅读0次

    导读

    作者:蒋乐兴 MySQL-DBA 目前在 github 上维护着两套 MySQL 开源工具 mysqltools & dbm(dbm-agent dbm-center),对机器学习和程序化交易也有些心得。

    • 面对的问题

    • 解决方案

    • MySQL监控网关安装配置过程

    • 环境说明

    • 安装配置三步曲

    • 体验效果

    • 杀手级功能--MySQL自动发现自动监控

    一、面对的问题

    单机多实例场景下如何“简单”,“高效”,“低成本” 地采集到所有 MySQL 实例的任意监控项呢?

    二、解决方案

    一个可行的方案是“监控网关”,由它负责采集,聚合,暴露(Restful WEB-API)主机上所有 MySQL 的监控项。为什么是这个方案?dbm-agent 的文档上有对这个问题的详细讨论。下面先来体验一下监控网关带来的改变

    通过命令行方式采集 172.16.192.100:3306 这个实例的 MGR 角色

    curl http://172.16.192.100:8080/instances/3306/member_role
        
    {
    "member_role":  "PRIMARY"
    }
    

    如果你喜欢用浏览器也是一样的

    image

    最重要的是,要实现上面的效果,MySQL-DBA 们几乎没有工作量也没有任何经济上的成本,节约下来的时间可以做更加有意义的事。


    三、MySQL监控网关安装配置过程

    (一)环境说明

    以一个真实的环境为例子,来说明一下怎么使用

    1、 环境的关键信息

    关键信息 说明
    主机IP 172.16.192.100
    操作系统 centos-7.6
    Python版本 3.6.0
    MySQL版本 8.0.18

    2、 目前主机上运行着两个实例 3306 & 3308

    ps -ef | grep mysqld
    mysql33+  10913  1  0  13:21  ?  00:00:56  /usr/local/mysql-8.0.18-linux-glibc2.12-x86_64/bin/mysqld --defaults-file=/etc/my-3306.cnf
    mysql33+  10995  1  0  13:25  ?  00:00:54  /usr/local/mysql-8.0.18-linux-glibc2.12-x86_64/bin/mysqld --defaults-file=/etc/my-3308.cnf
    

    (二)安装配置三步曲

    1、 在 MySQL 实例上创建用户,监控网关会通过这个用户连接进 MySQL 并采集监控项

    create user monitor@'127.0.0.1' identified by  'dbma@0352';
    grant replication client,process on *.* to monitor@'127.0.0.1';
    grant select on performance_schema.* to monitor@'127.0.0.1';
    

    2、 安装监控网关程序(它是作为 dbm-agent 程序包的一部分发行的,所以真正要安装的是 dbm-agent)

    sudo su
        
    pip3 install dbm-agent # 安装
    dbm-agent init # 初始化一下 dbm-agent ,使用 dbm-agent 之前一定要初始化
    

    ****3、启动监控网状****

    sudo su
        
    dbm-monitor-gateway --bind-ip=172.16.192.100  --bind-port=8080 \
    --monitor-user=monitor --monitor-password=dbma@0352 start
        
    Successful start and log file save to '/usr/local/dbm-agent/logs/dbm-monitor-gateway.log'
    

    四、体验效果

    1、 查看主机上所有被监控实例的列表

    curl http://172.16.192.100:8080/instances
        
    [3306,  3308]  # 可以看到 dbm-monitor-gateway 返回了当前主机(172.16.192.100) 上的实例列表
    

    浏览器上的效果

    image

    2****、 查询某一实例的特定监控项(以 com_select 为例)

    curl http://172.16.192.100:8080/instances/3306/com_select
        
    {
    "com_select":  "1702"
    }
    

    浏览器上的效果

    image

    3、 查询给定实例的所有监控项

    curl http://172.16.192.100:8080/instances/3306/
        
    {
    "aborted_clients":  "5",
    "aborted_connects":  "155",
    "acl_cache_items_count":  "0",
    "binlog_cache_disk_use":  "0",
    "binlog_cache_use":  "0",
    "binlog_stmt_cache_disk_use":  "0",
    "binlog_stmt_cache_use":  "0",
    "bytes_received":  "495062",
    "bytes_sent":  "62005555",
    ....
    ....
    ....  # 监控项太多了,只列出了前面几项
    }
    

    浏览器上的效果

    image

    五、杀手级功能--MySQL自动发现自动监控


    监控网关最值得称道的功能就是它能自动发现主机上新增的 MySQL 实例,并且它会自动的连接到新增的实例然后开始采集它的监控项。

    下面我们在主机上再安装一个监听在 3307 的实例,你并不需要重启监控网关,它的内部有一个专门的线程来检测是否有新增实例。尽可能的让 DBA 省心,是 dbm(dbm-center & dbm-agent) 的使命与追求

    dbma-cli-single-instance --max-mem=128  --port=3307 install
    

    一分钟过后 3307 已经被发现了

    image

    另外dbm-monitor-gateway是一个全特性的监控工具,更多、更全的文档。


    推荐阅读:https://github.com/Neeky/dbm-agent

    相关文章

      网友评论

        本文标题:基于WEB-API的单机多实例监控

        本文链接:https://www.haomeiwen.com/subject/tmxboctx.html