CentOS_linux7+mysql,使用grafana+prometheus+node_exporter监控

前言:

部署完成的前提下

1、启动监控服务

echo "111111111111111111"
echo -e "\033[31m<<<<< 1.正在启动普罗米修斯!!!>>>>>\033[0m"
ps -ef | grep prometheus | grep -v grep
if [ $? -ne 0 ]; then
cd /usr/local/prometheus
./prometheus --config.file=prometheus.yml  >/dev/null 2>&1 &
echo "普罗米修斯启动!" 
else
echo "普罗米修斯进程存在!"
fi
sleep 10


echo "222222222222222222"
echo -e "\033[31m<<<<< 2.正在启动Mysql_exporter!!!>>>>>\033[0m"
ps -ef | grep mysqld_exporter | grep -v grep
if [ $? -ne 0 ]; then
nohup /usr/local/mysql_exporter/mysqld_exporter --config.my-cnf="/usr/local/mysql_exporter/my.cnf"  >/dev/null 2>&1 &
echo "Mysql_exporter启动!" 
else
echo "Mysql_exporter进程存在!"
fi
sleep 10


echo "333333333333333333"
echo -e "\033[31m<<<<< 3.正在启动Grafana!!!>>>>>\033[0m"
systemctl start grafana-server
systemctl status grafana-server
sleep 10


echo "//////////////////"
echo ""
echo -e "\033[31m====== 1. 启动完毕,普罗米修斯访问地址为:http://127.0.0.1:9090======\033[0m"
echo -e "\033[31m====== 2. 启动完毕,mysqld_exporter端口是9104======\033[0m"
echo -e "\033[31m====== 2. 启动完毕,mysqld_exporter访问地址:http://localhost:9104/metrics======\033[0m"
echo -e "\033[31m====== 3. 启动完毕,Grafana访问地址为:http://127.0.0.1:3000======\033[0m"
"n1-start-Prometheus,Mysql_exporter,Grafana.sh" 65L, 1854C                                                                                                  47,1          28%
###########一、启动 普罗米修斯,Mysql_exporter,Grafana  请稍等......##############

echo "Hi,即将启动  普罗米修斯,Mysql_exporter,Grafana  请稍等......"
echo ""
echo ""
echo -e "\033[31m<<<<< 正在为您启动:普罗米修斯,Mysql_exporter,Grafana  请稍候!!!>>>>>\033[0m"
echo ""


echo "111111111111111111"
echo -e "\033[31m<<<<< 1.正在启动普罗米修斯!!!>>>>>\033[0m"
ps -ef | grep prometheus | grep -v grep
if [ $? -ne 0 ]; then
cd /usr/local/prometheus
./prometheus --config.file=prometheus.yml  >/dev/null 2>&1 &
echo "普罗米修斯启动!" 
else
echo "普罗米修斯进程存在!"
fi
sleep 10
启动shell脚本

监控LINUX平台 node_exporter(收集数据) ------->Prometheus(保存数据) -------> grafana(显示数据)

监控MySQL Mysql_exporter(收集数据) ------->Prometheus(保存数据) -------> grafana(显示数据)

 2、访问http://192.168.159.132:9090,成功则表示prometheus连接成功

 3、访问http://192.168.159.132:3000/login,录入admin/admin

成功则表示grafana连接成功

 

 

 4、点击skip,下一步,添加prometheus

找到齿轮图标,选择data sources,点击add data sources,进入页面之后,选择添加 一个prometheus,在url里填写http://localhost:9090,其他不用管,点击save&test,如果是绿色,那么 就表示连接成功

 5、添加mysql

选择添加一个mysql,在url里填写http://localhost:3306,数据库的用户名密码 

 6、给grafana添加面板

点击左侧的➕号,选择import,然后点击upload.json file,然后填写必 填项,之后点击import

6.1、导入监控linux的json模板

保存右侧都打了勾,点import

 效果

 6.2、导入监控mysql的json模板

 保存右侧都打上了勾,点击import

 效果

 7、补充

7.1、常用的exporter下载

https://www.cnblogs.com/momoyan/p/11520755.html

7.2、指标的含义-监控linux模板

### ①CPU使用率

System:内核空间占用CPU的百分比

User:用户空间占用CPU的百分比

Idle:空闲CPU百分比

Iowait:IO等待占用CPU的百分比

### ②系统平均负载

1m:1分钟前到现在的平均负载

5m:5分钟前到现在的平均负载

15m:15分钟前到现在的平均负载

平均负载是指单位时间内,系统处于**可运行状态**和**不可中断状态**的平均进程数,也就是**平均活跃进程数**,它和 CPU 使用率并没有直接关系

### ③内存信息

总内存:总共的内存大小

已用:使用的内存大小

可用:空闲的内存大小

### ④各分区可用空间

xfs:centos7.0开始默认文件系统是xfs

/:为整个系统的全部空间包括(已使用和未使用)

/boot:是存放运行系统的引导文件内核会按照其引导一步一步加载磁盘内文件配置

### ⑤网络带宽

in:网络输入带宽

out:网络输出带宽

### ⑥磁盘

磁盘读写速率

磁盘读写容量大小

磁盘I/O读写时间

磁盘每秒的I/O操作耗费时间百分比

dm-0:映射设备

sda:物理磁盘,SATA接口的硬盘

### ⑦TCP连接情况

ESTABLISHED:当前状态为 ESTABLISHED 或 CLOSE-WAIT 的 TCP 连接数

TCP_tw:等待关闭的TCP连接数

ActiveOpens:已从 CLOSED 状态直接转换到 SYN-SENT 状态的 TCP 平均连接数

PassiveOpens:已从 LISTEN 状态直接转换到 SYN-RCVD 状态的 TCP 平均连接数

TCP_alloc: 已分配(已建立、已申请到sk_buff)的TCP套接字数量

TCP_inuse: 正在使用(正在侦听)的TCP套接字数量

7.3、指标的含义-mysql模板

### 1.MySQL Uptime运行时间

MySQL 服务器自从上次重启运行到现在的时长。

### 2.Current QPS每秒查询速率

根据使用 MySQL 的`SHOW STATUS`命令查询到的结果,它是服务器在最后一秒内执行的语句数量。这个变量包含在存储程序中执行的语句,与 Questions 变量不同。

### ③InnoDB Buffer Pool Size缓冲池大小

InnoDB 维护一个称为缓冲池的存储区域,用于在内存中缓存数据和索引,目标是将工作集保存在内存中。在大多数情况下,这个值应该处于主机上60%-90%的可用内存之间。

### 3.Mysql连接数

自服务器启动以来同时使用的最大连接数

Max Connections:最大连接数

Max Used Connections:最大使用的连接数

Connections:使用的连接数

### 4.MySQL Client Thread Activity客户端活动线程数

Peak Threads Connected:当前连接数

Avg Threads Running:平均并发数

Peak Threads Running:当前并发数

### 5.MySQL Questions服务器执行的语句数

与 QPS 计算中使用的查询不同,只包括客户端发送到服务器的语句,而不包括存储程序中执行的语句。

Questions:查询Questions计数器

### 6.MySQL Thread Cache线程缓存

当客户端断开连接时,如果缓存未满,客户端的线程将被放入缓存中

Thread Cache Size:当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应下一个客户而不是销毁(前提是缓存数未达上限)

Threads Created:创建过的线程数

Threads Cached:缓存的线程数

### 7.MySQL Temporary Objects临时对象

Created Tmp Tables:创建临时表

Created Tmp Files:创建的临时文件文件数

Created Tmp Disk Tables:磁盘上创建临时表

### 8.MySQL Select Types查询类型

Select Full Join:和 Select_scan 差不多,区别是 Select_full_join 代表的是第二张及之后的表。explain 中的类型也是 ALL,原因是表联接所用的字段上没有索引。它对性能有更为严重的影响,绝对要避免,所以用于联接的字段上一般都要加索引。

Select Full Range Join:和 Select_range_check 类似,不过 MySQL 可以肯定它能够使用范围查找。这时 explain 中的类型是 range。这是联接中最好的情况。

Select Range:代表需要从硬盘读表在一段范围内的行。在 explain 中显示为 range,说明使用了索引查找记录在硬盘上的位置

Select Range Check:这个比 Select_full_join 要好一点,和 Select_range 差不多。区别是 MySQL 不能确定它是否能否使用一个范围来做联接。如果可以那么会使用范围,如果不行仍会使用全表扫描。

Select Scan:代表了需要做全表扫描。在 explain 中 type 会显示为 ALL,原因是查询没有能用到索引。因为全表扫描一般比较慢,所以应该尽量避免

### 9.MySQL Sorts排序

Sort Rows:这代表了被排序的记录的总数。因为 Sort_range 和 Sort_scan 是一样的,所以这个值只是说明了有多少记录被排序.

Sort Range:根据Range类型进行排序。

Sort Merge Passes:包括两步。MySQL 首先会尝试在内存中做排序,使用的内存大小由系统变量 Sort_buffer_size 决定,如果它的大小不够把所有的记录都读到内存中,MySQL 就会把每次在内存中排序的结果存到临时文件中,等 MySQL 找到所有记录之后,再把临时文件中的记录做一次排序。这再次排序就会增加 Sort_merge_passes。实际上,MySQL 会用另一个临时文件来存再次排序的结果,所以通常会看到 Sort_merge_passes 增加的数值是建临时文件数的两倍。因为用到了临时文件,所以速度可能会比较慢,增加 Sort_buffer_size 会减少 Sort_merge_passes 和 创建临时文件的次数。

Sort Scan:根据Scan类型进行排序。

### 10.MySQL Slow Queries慢查询

Slow Queries:慢查询

### 11.MySQL Aborted Connections终止的连接数

当一个给定的主机连接到 MySQL 并且连接在中间被中断(例如由于凭证错误)时,MySQL 会将该信息保存在系统表中

Aborted Connects (attempts):连接到mysql服务器的失败次数

Aborted Clients (timeout):因客户端消亡时未恰当的关闭连接而引起的被中断连接数

### 12.MySQL Table Locks表级锁

MySQL 因各种原因需要多个不同的锁。在这个图表中,我们看到 MySQL 从存储引擎请求了多少个表级锁。

Table Locks Immediate:能够立即获得表级锁的次数

Table Locks Waited:不能立即获取表级锁而需要等待的次数

如果 Table_locks_waited的值比较大的话,并且你遇到了性能问题,你可能希望将大表切分成小表。

### 13.MySQL Network Traffic网络流量

在这里我们可以看到 MySQL 产生了多少网络流量。出站是从 MySQL 发送的网络流量,入站是 MySQL 收到的网络流量。

Inbound: MySQL 收到的网络流量

Outbound:从 MySQL 发送的网络流量

### 14.MySQL Network Usage Hourly每小时网络流量

这里我们可以看到每小时 MySQL 产生多少网络流量。您可以使用条形图来比较 MySQL 发送的数据和 MySQL 收到的数据。

Sent:MySQL 发送的数据

Received: MySQL 收到的数据

### 15.MySQL Internal Memory Overview数据库使用的内存情况

InnoDB Buffer Pool Data:InnoDB使用该参数指定大小的内存来缓冲数据和索引。对于单独的MySQL数据库服务器,最大可以把该值设置成物理内存的80%。

InnoDB Log Buffer Size:事务在内存中的缓冲,也就是日志缓冲区的大小。

Key Buffer Size:索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度

Query Cache Size:查询缓冲区大小,使用查询缓冲,MySQL将查询结果存放在缓冲区中,今后对于同样的SELECT语句(区分大小写),将直接从缓冲区中读取结果。

### 16.Top Command Counters统计命令使用的数量

Com_select:select使用的数量

Com_show_status:show_status使用的数量

Com_show_slave_status:show_slave_status使用的数量

Com_set_option:设置操作使用数量

Com_admin_commands:admin_command使用数量

Com_show_variables:show_variables使用数量

### 17.MySQL Handlers语句

read_rnd_next:在数据文件中读下一行的请求数。如果你正进行大量的表扫描,该值较高。通常说明你的表索引不正确或写入的查询没有利用索引。

write:请求向表中插入一行的次数。

external_lock:此变量与锁定操作数量有关,主要是在表访问的开始和结束时起作用。

read_key:根据键读一行的请求数。如果较高,说明查询和表的索引正确。

read_next:按照键顺序读下一行的请求数。如果你用范围约束或如果执行索引扫描来查询索引列,该值增加。

read_first:索引中第一条被读的次数。如果较高,它建议服务器正执行大量全索引扫描。

update: 请求更新表中一行的次数。

### 18.MySQL Query Cache Memory查询缓存内存

Query Cache Size:查询缓冲区大小

Free Memory:Query Cache 中目前剩余的内存大小

### 19.MySQL Query Cache Activity查询缓存活动

Hits:多少次命中。

Inserts:多少次未命中然后插入。

通过“Qcache_hits”和“Qcache_inserts”两个参数我们就可以算出Query Cache 的命中率了:Query Cache 命中率= Qcache_hits / ( Qcache_hits + Qcache_inserts )。

Not Cached:因为query_cache_type 的设置或者不能被cache 的Query 的数量。

Prunes:多少条Query 因为内存不足而被清除出Query Cache。

Queries in Cache:当前Query Cache 中cache 的Query 数量。

### 20.MySQL File Openings文件打开

Openings: 系统打开过的文件总数

### 21.MySQL Open Files打开文件

Open Files:系统打开的文件总数。

Open Files Limit:限制了mysqld进程可持有的最大打开文件数。

InnoDB Open Files:限制InnoDB引擎中表空间文件最大打开的数量。

### 22.MySQL Table Open Cache Status打开表缓存情况

Openings:代表自MySQL启动后,打开过的表个数,如该值过大,可能是table_open_cache设置太小。

Hits:表缓存被命中的次数。

Misses:打开表缓存查找的未命中数。

Misses due to Overflows:打开表缓存溢出数。

Table Open Cache Hit Ratio:缓冲命中率。

### 23.MySQL Open Tables打开表

Open Tables:当前打开的表总和。

Table Open Cache:表缓冲大小。

### 24.MySQL Table Definition Cache

Open Table Definitions:当前缓存了多少.frm文件。

Table Definitions Cache Size:就是控制总frm文件的数量大小。

Opened Table Definitions:自从MySQL启动后,缓存了.frm文件的数量。

 

 

 

posted @ 2024-03-08 12:02  坚固的大兴  阅读(247)  评论(0)    收藏  举报