prometheus监控mysql
介绍
本文使用的是官方的mysqld_exporter.github地址:mysqld_exporter
mysql版本需要在5.6版本或以上
mysqld_exporter提供很多监控项(具体参考github项目介绍).如果需要开启一个监控项,在启动mysqld_exporter时,携带以下命令:
1 | --collect.key |
如果需要关闭某个监控项.携带以下命令:
1 | --no-collect.key |
如果mysqld_exporter的版本小于0.10.0,命令有些变化,双横杠变成单横杠,使用-collect.key 或者-collect.key=True|false
mysqld_exporter安装
安装方式很简单,.下面是一个Ansible脚本以供参考
1 | - hosts: mysql-prod |
这里需要准备一个localhost_db.cnf
配置文件.内容如下
1 | [client] |
mysqld_exporter启动脚本
1 | [Unit] |
Ansible脚本执行完毕后,就可以通过IP:9104
来访问mysql的Metrics
为了监控到主机的情况.此时还需要部署node_exporter客户端.关于Node_exporter我在另一篇笔记中再详细介绍
prometheus配置
由于mysqld_exporter没有任何监控项能获取到mysql服务器的主机名.所以将数据展示到grafana时,只能通过IP去查看监控图表.这非常的不方便.比如下面截图中,当mysql服务器数量较多时,很难知道IP地址对应的是具体哪台服务器:
此时,就需要在prometheus配置文件中,将每个mysql服务器添加labels,给服务器打上主机名和组名的标签
1 | - job_name: 'aliyun-mysql-exporter' |
grafana dashboard
下载dashboard: https://grafana.com/grafana/dashboards/7362
或者直接在grafana中添加7362的dashboard
原生的dashboard只有一个instance的变量.为了添加主机名,更好的区分和展示监控效果,需要做一些修改.
1.定义变量:
job变量:
- name:job
label: job
query: label_values(mysql_up,job)
group变量:
- name: group
- label:主机组
- Query:label_values(mysql_up{job=~”$job”}, group)
2.修改变量
将host变量修改为:
name: host
label: 主机名
query:label_values(mysql_up{job=~”$job”,group=~”$group”}, hostname)
3.变量页面最终设置如下:
接着,将当前的dashboard的json文件导出.复制下面的json文件
将文件中的instance=~
全部替换为hostname=~
.然后复制回去,点击Save Changes
此时,可以通过主机组和主机名筛选具体的mysql服务器.
别忘记保存dashboard
rules告警规则
1 | groups: |