Prometheus监控mysql

数据库自行安装mariadb或者mysql,

1、创建数据库授权用户

[root@localhost ~]# mysql
MariaDB [(none)]> create user 'mysqld_exporter'@'localhost' identified by '123456';
MariaDB [(none)]> grant process, replication client, select on *.* to 'mysqld_exporter'@'localhost';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> select Host,User from mysql.user;
MariaDB [(none)]> select Host,User from mysql.user;
+-----------+-----------------+
| Host      | User            |
+-----------+-----------------+
| %         | mysqld_exporter |
| 127.0.0.1 | root            |
| ::1       | root            |
| localhost |                 |
| localhost | mysqld_exporter |
| localhost | root            |
+-----------+-----------------+
6 rows in set (0.00 sec)

2、安装mysqld_exporter

自己从官网下载mysqld_exporter

https://prometheus.io/download/

解压

tar xf mysqld_exporter-0.14.0.linux-amd64.tar.gz
mv mysqld_exporter-0.12.1.linux-amd64 /usr/local/mysqld_exporter

3、配置数据库认证

[root@localhost ~]# cd /usr/local/mysqld_exporter/
[root@localhost mysqld_exporter]# vi mysqld_exporter.cnf 
[client]
user=mysqld_exporter
password=123456

4、创建系统服务启动配置文件mysqld_exporter.service

root@localhost ~]# vi /usr/lib/systemd/system/mysqld_exporter.service
[Unit]
Description=Prometheus MySQL daemon
After=network.target


[Service]
User=root
Group=root
Type=simple
Restart=always
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter \
    --config.my-cnf=/usr/local/mysqld_exporter/mysqld_exporter.cnf \
    --collect.global_status \
    --collect.auto_increment.columns \
    --collect.info_schema.processlist \
    --collect.binlog_size \
    --collect.info_schema.tablestats \
    --collect.global_variables \
    --collect.info_schema.innodb_metrics \
    --collect.info_schema.query_response_time \
    --collect.info_schema.userstats \
    --collect.info_schema.tables \
    --collect.perf_schema.tablelocks \
    --collect.perf_schema.file_events \
    --collect.perf_schema.eventswaits \
    --collect.perf_schema.indexiowaits \
    --collect.perf_schema.tableiowaits \
    --collect.slave_status \
    --web.listen-address=0.0.0.0:9104


[Install]
WantedBy=multi-user.target


[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start mysqld_exporter

5、与prometheus集成

[root@localhost ~]# vi /usr/local/prometheus/prometheus.yml
  - job_name: 'mysqld_exporter'
    scrape_interval: 10s
    static_configs:
    - targets: ['192.168.1.20:9104']
#添加一个job
[root@localhost ~]# systemctl restart prometheus

6、web测试

 

访问:http://IP:9090
1、查询吞吐量
监控任何系统时,我们的主要关注点是确保系统工作有效完成,数据库运行时完成大量的查询操作,所有监控优先级应该确保MySQL按照预期执行查询。MySQL有一个名为Questions的内部计数器,MySQL术语为“服务器状态变量”。对于客户端应用程序发送的所有语句,该计数器都是递增的。
MariaDB [(none)]> show global status like "Questions";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Questions     | 513   |
+---------------+-------+
数学命令行:mysql_global_status_questions


2、查询执行性能
关于查询执行性能表现方面,可以使用MySQL提供的Slow_queries计数器,每当查询的执行时间超过long_query_time参数指定的秒数时,计数器就会增加。默认阀值为10秒。
MariaDB [(none)]> show global status like "Slow_queries";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Slow_queries  | 0     |
+---------------+-------+
数学命令行:mysql_global_status_slow_queries


3、连接情况
为了防止MySQL服务器的过载运行,数据库管理员需要根据业务进行预评估,以便现在客户端连接MySQL的数量。可以在my.cnf文件中配置最大连接数max_connections=512。
MariaDB [(none)]> show variables like "max_connections";
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 512   |
+-----------------+-------+
数学命令行:mysql_global_variables_max_connections


4、缓存池使用情况
当MySQL默认的存储引擎是InnoDB时,会使用缓存池来缓存表和索引的数据。可以在my.cnf中配置innodb_buffer_pool_size=128M。这是InnoDB最重要的参数,主要作用是缓存innodb表和索引、数据和插入数据,默认值为128M。
MariaDB [(none)]> show global status like "Innodb_buffer_pool_reads";
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| Innodb_buffer_pool_reads | 144   |
+--------------------------+-------+
数学命令行:mysql_global_status_innodb_buffer_pool_reads
posted @ 2022-05-04 18:15  Throb_JL  阅读(358)  评论(0编辑  收藏  举报