* GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。
简介
Prometheus 一套开源的监控&报警&时间序列数据库的组合,通常 Kubernetes 中都会配合 Prometheus 进行监控, 由于Prometheus 自带的图像不够强大,Grafana 作为 Dashboard 配合Prometheus 作为展示。 Grafana 也是可以直接访问 MySQL 的Performance Schema 作为展示。
架构

通过Prometheus 采集 mysql exporter 与 node exporter ,通过 Grafana 作为展示
部署
基于docker 方式部署,本文仅作为本地测试展示
1. node_exporter 部署
node_exporter 会采集系统cpu ,内存, 磁盘, 网卡等使用情况,由于mysql 本身并没有采集系统的相关配置,因此我们可以通过node_exporter 进行关联
cd /opt/node_exporterwget https://github.com/prometheus/node_exporter/releases/download/v0.14.0/node_exporter-0.14.0.linux-amd64.tar.gz -O node_exporter.tar.gz tar -zxf node_exporter.tar.gz
复制
配置成系统服务
cat > /etc/systemd/system/node_exporter.service << EOF[Unit]Description=node_exporterDocumentation=https://prometheus.io/After=network.target[Service]Type=simpleUser=prometheus # 系统用户名称ExecStart=/opt/node_exporter/node_exporterRestart=on-failure[Install]WantedBy=multi-user.targetEOF
复制
启动服务
systemctl enable node_exportersystemctl start node_exporter
复制
查看
curl 127.0.0.1:9100/metrics
复制
进行验证是否生效
2. mysql_exporter 部署
mysql_exporter 通过查询 mysql 的 performance_schema 生成对应的 metric 数据库分配一个用户给 exporter
CREATE USER 'exporter'@'%' IDENTIFIED BY '123456' WITH MAX_USER_CONNECTIONS 3; GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'%'; flush privileges;
复制
docker-compose.yml
version: '2.1'services: mysqld-exporter: image: prom/mysqld-exporter container_name: mysqld-exporter environment: - DATA_SOURCE_NAME=exporter:123456@(192.168.5.242:3306)/ ports: - "9104:9104" restart: "always"
复制
启动
docker-compose up -d
复制
查看是否正确启动
curl 127.0.0.1:9104/metrics
复制
3.prometheus 部署
prometheus 配置文件
global: scrape_interval: 15s # 默认情况下抓取目标的频率 evaluation_interval: 15s # 执行 rules 的时间间隔scrape_configs: - job_name: 'prometheus' scrape_interval: 5s static_configs: - targets: ['localhost:9090'] - job_name: 'mysql' static_configs: - targets: ['192.168.5.242:9104'] - targets: ['192.168.5.242:9100']
复制
scrape_configs 主要用于配置拉取数据节点,每一个拉取配置主要包含以下参数:
- job_name:任务名称- honor_labels: 用于解决拉取数据标签有冲突,当设置为 true, 以拉取数据为准,否则以服务配置为准- params:数据拉取访问时带的请求参数- scrape_interval: 拉取时间间隔- scrape_timeout: 拉取超时时间- metrics_path: 拉取节点的 metric 路径- scheme: 拉取数据访问协议- sample_limit: 存储的数据标签个数限制,如果超过限制,该数据将被忽略,不入存储;默认值为0,表示没有限制- relabel_configs: 拉取数据重置标签配置- metric_relabel_configs:metric 重置标签配置
复制
prometheus 容器启动 docker-compose up -d
version: '3'services: prometheus: user: "root" container_name: prometheus image: prom/prometheus:v2.2.1 command: - --log.level=error - --storage.tsdb.path=/data/prometheus - --config.file=/etc/prometheus/prometheus.yml ports: - "9090:9090" volumes: - ./config/prometheus.yml:/etc/prometheus/prometheus.yml:ro - ./data:/data restart: on-failure
复制
通过查看 127.0.0.1:9090/targets 查看是否在

4. Grafana 部署
rafana 的 docker-compose.yml
version: '3'services: grafana: user: "0" container_name: grafana image: grafana/grafana:6.0.1 environment:
GF_LOG_LEVEL: info
GF_PATHS_PROVISIONING: /etc/grafana/provisioning
GF_PATHS_CONFIG: /etc/grafana/grafana.ini
volumes:
- ./data/grafana:/var/lib/grafana
ports:
- "3000:3000"
restart: on-failure复制
通过页面进入并且配置 prometheus 作为数据源

选择导入模板

可以导入 https://grafana.com/grafana/dashboards/7362 percona 提供的模板, 也可以直接选择id ,grafana 将会根据id 下载模板

模板中系统配置 是根据hosts 来聚合数据,由于是直接使用的 node_exporter 作为采集系统的配置, 则没有这个System Charts, 最简单的方式就是 Queries 修改 instance 的hosts 直接替换成 '192.168.5.242:9100' node_exporter 的名称

这样一个基础的监控平台就搭建完成了。
参考:
https://prometheus.io/docs/introduction/overview/ https://github.com/percona/grafana-dashboards
Enjoy GreatSQL :)
《深入浅出MGR》视频课程
戳此小程序即可直达B站
https://www.bilibili.com/medialist/play/1363850082?business=space_collection&business_id=343928&desc=0
文章推荐:
想看更多技术好文,点个“在看”吧!
文章转载自老叶茶馆,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【MySQL 30周年庆】MySQL 8.0 OCP考试限时免费!教你免费领考券
墨天轮小教习
3200次阅读
2025-04-25 18:53:11
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
严少安
892次阅读
2025-04-25 15:30:58
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
527次阅读
2025-04-17 17:02:24
MySQL 9.3 正式 GA,我却大失所望,新特性亮点与隐忧并存?
JiekeXu
454次阅读
2025-04-15 23:49:58
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
382次阅读
2025-04-15 14:48:05
MySQL 8.0 OCP 1Z0-908 考试解析指南(二)
JiekeXu
340次阅读
2025-04-30 17:37:37
记录MySQL数据库的一些奇怪的迁移需求!
陈举超
301次阅读
2025-04-15 15:27:53
SQL优化 - explain查看SQL执行计划(下)
金同学
294次阅读
2025-05-06 14:40:00
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
数据库运维之道
284次阅读
2025-04-28 11:01:25
MySQL 8.0 OCP 1Z0-908 考试题解析指南
青年数据库学习互助会
282次阅读
2025-04-30 12:17:54