第8章 Agent2监控MySQL
1.创建监控用户
CREATE USER 'zabbix'@'%' IDENTIFIED BY 'zabbix' ;
GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zabbix'@'%';
2.关联MySQL模板
3.更改宏记录
4.DeepSeek分析的监控项
### 1. **连接相关指标**
+ **MySQL: Aborted clients per second**: 每秒中止的客户端连接数。表示客户端未正确关闭连接而中止的连接数。
+ **MySQL: Aborted connections per second**: 每秒失败的连接尝试数。表示连接到 MySQL 服务器的失败尝试次数。
+ **MySQL: Connections per second**: 每秒的连接尝试数(成功或失败)。
+ **MySQL: Max used connections**: 自服务器启动以来同时使用的最大连接数。
+ **MySQL: Threads connected**: 当前打开的连接数。
+ **MySQL: Threads created per second**: 每秒创建的线程数。用于处理连接,如果该值较大,可能需要增加 `thread_cache_size`。
+ **MySQL: Threads running**: 当前未休眠的线程数。
### 2. **查询和操作相关指标**
+ **MySQL: Queries per second**: 每秒执行的查询数。包括存储程序中的查询。
+ **MySQL: Questions per second**: 每秒执行的语句数。仅包括客户端发送的语句,不包括存储程序中的语句。
+ **MySQL: Slow queries per second**: 每秒执行的慢查询数。执行时间超过 `long_query_time` 的查询。
+ **MySQL: Command Delete per second**: 每秒执行的 `DELETE` 语句数。
+ **MySQL: Command Insert per second**: 每秒执行的 `INSERT` 语句数。
+ **MySQL: Command Select per second**: 每秒执行的 `SELECT` 语句数。
+ **MySQL: Command Update per second**: 每秒执行的 `UPDATE` 语句数。
### 3. **InnoDB 缓冲池相关指标**
+ **MySQL: InnoDB buffer pool pages free**: InnoDB 缓冲池中的空闲页数。
+ **MySQL: InnoDB buffer pool pages total**: InnoDB 缓冲池中的总页数。
+ **MySQL: InnoDB buffer pool reads**: 无法从缓冲池中满足的逻辑读取次数,必须直接从磁盘读取。
+ **MySQL: InnoDB buffer pool read requests**: 逻辑读取请求数。
+ **MySQL: Buffer pool efficiency**: 缓冲池的效率,表示缓冲池为读取请求服务的有效性。
+ **MySQL: Buffer pool utilization**: 缓冲池的利用率,表示已使用的缓冲池页数与总页数的比率。
### 4. **临时表和文件相关指标**
+ **MySQL: Created tmp tables on disk per second**: 每秒创建的磁盘临时表数。表示由于内存不足而创建的磁盘临时表。
+ **MySQL: Created tmp files on disk per second**: 每秒创建的磁盘临时文件数。
+ **MySQL: Created tmp tables on memory per second**: 每秒创建的内存临时表数。
### 5. **二进制日志相关指标**
+ **MySQL: Binlog cache disk use**: 由于二进制日志缓存不足而使用磁盘缓存的次数。
+ **MySQL: Binlog commits**: 提交到二进制日志的事务数(仅适用于 MariaDB)。
+ **MySQL: Binlog group commits**: 提交到二进制日志的组提交数(仅适用于 MariaDB)。
### 6. **复制相关指标**
+ **MySQL: Replication Seconds Behind Master**: 从库 SQL 线程落后主库二进制日志的秒数。高值可能表示从库无法及时处理主库的事件。
+ **MySQL: Replication Slave IO Running**: 从库 I/O 线程是否正在运行。
+ **MySQL: Replication Slave SQL Running**: 从库 SQL 线程是否正在运行。
+ **MySQL: Replication Slave SQL Running State**: 从库 SQL 线程的状态。
### 7. **其他关键指标**
+ **MySQL: Bytes received**: 从所有客户端接收的字节数。
+ **MySQL: Bytes sent**: 发送到所有客户端的字节数。
+ **MySQL: Uptime**: 服务器的运行时间(秒)。
+ **MySQL: Version**: MySQL 服务器的版本号。
+ **MySQL: Status**: MySQL 服务的状态(Up/Down)。
### 8. **触发器和告警**
+ **MySQL: Server has aborted connections**: 如果失败的连接尝试次数超过设定的阈值,触发告警。
+ **MySQL: Buffer pool utilization is too low**: 如果缓冲池利用率低于设定的阈值,触发告警。
+ **MySQL: Number of on-disk temporary tables created per second is high**: 如果每秒创建的磁盘临时表数超过设定的阈值,触发告警。
+ **MySQL: Server has slow queries**: 如果慢查询数超过设定的阈值,触发告警。
+ **MySQL: Replication lag is too high**: 如果从库落后主库的时间超过设定的阈值,触发告警。
### 9. **宏定义**
+ **\{$MYSQL.DSN\}**: MySQL 数据源名称(DSN),如 `tcp://localhost:3306` 或 `unix:/var/run/mysql.sock`。
+ **\{$MYSQL.USER\}**: MySQL 用户名。
+ **\{$MYSQL.PASSWORD\}**: MySQL 用户密码。
+ **\{$MYSQL.ABORTED_CONN.MAX.WARN\}**: 触发告警的失败连接尝试次数的阈值。
+ **\{$MYSQL.BUFF_UTIL.MIN.WARN\}**: 触发告警的缓冲池利用率的最小阈值。
+ **\{$MYSQL.SLOW_QUERIES.MAX.WARN\}**: 触发告警的慢查询数的阈值。
### 10. **图形展示**
+ **MySQL: Bandwidth**: 展示 MySQL 的带宽使用情况,包括接收和发送的字节数。
+ **MySQL: Connections**: 展示连接相关的指标,如中止的连接、失败的连接、当前连接数等。
+ **MySQL: InnoDB buffer pool**: 展示 InnoDB 缓冲池的使用情况,包括空闲页、总页数、读取请求等。
+ **MySQL: Operations**: 展示 MySQL 的操作指标,如 `DELETE`、`INSERT`、`SELECT`、`UPDATE` 等操作的执行次数。
+ **MySQL: Queries**: 展示查询相关的指标,如总查询数、慢查询数等。
+ **MySQL: Threads**: 展示线程相关的指标,如缓存的线程、当前连接的线程、运行的线程等。
### 总结
这份模板文件非常全面地监控了 MySQL 数据库的各个方面,包括连接、查询、InnoDB 缓冲池、临时表、二进制日志、复制等关键性能指标。通过这些监控项,管理员可以及时发现数据库的性能瓶颈、连接问题、慢查询等,并采取相应的优化措施。