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