MySQL

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

2019-12-31  本文已影响0人  小知_知数堂

导读

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

一、面对的问题

单机多实例场景下如何“简单”,“高效”,“低成本” 地采集到所有 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

上一篇下一篇

猜你喜欢

热点阅读