• 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_exporter
wget 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_exporter
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=prometheus # 系统用户名称
ExecStart=/opt/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
  • 启动服务
systemctl enable node_exporter
systemctl 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 作为数据源

  • 选择导入模板

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

这样一个基础的监控平台就搭建完成了。

参考:

Enjoy GreatSQL

文章推荐:

GreatSQL MGR FAQ

https://mp.weixin.qq.com/s/J6wkUpGXw3YkyEUJXiZ9xA

万答#12,MGR整个集群挂掉后,如何才能自动选主,不用手动干预

https://mp.weixin.qq.com/s/07o1poO44zwQIvaJNKEoPA

『2021数据技术嘉年华·ON LINE』:《MySQL高可用架构演进及实践》

https://mp.weixin.qq.com/s/u7k99y6i7riq7ScYs7ySnA

一条sql语句慢在哪之抓包分析

https://mp.weixin.qq.com/s/AYibbzl860D90rOeyjB6IQ

万答#15,都有哪些情况可能导致MGR服务无法启动

https://mp.weixin.qq.com/s/inSGpd0Q_XIl2Mb-VsvNsA

技术分享 | 为什么MGR一致性模式不推荐AFTER

https://mp.weixin.qq.com/s/rNeq479RNsklY1BlfKOsYg

关于 GreatSQL

GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。

Gitee:

https://gitee.com/GreatSQL/GreatSQL

GitHub:

https://github.com/GreatSQL/GreatSQL

Bilibili:

https://space.bilibili.com/1363850082/video

微信&QQ群:

可搜索添加GreatSQL社区助手微信好友,发送验证信息“加群”加入GreatSQL/MGR交流微信群

QQ群:533341697

微信小助手:wanlidbc

本文由博客一文多发平台 OpenWrite 发布!

最新文章

  1. java web学习总结(十一) -------------------基本概念使用Cookie进行会话管理
  2. Java基础——基本类型和包装类、基本类型和字符串之间的转换
  3. [转]C#在创建完项目后如何重命名项目名称。
  4. 15 BasicHashTable基本哈希表类(二)——Live555源码阅读(一)基本组件类
  5. Java中重点关键词的区分
  6. java 23 种设计模式
  7. 计算方法(三)C#矩阵类库
  8. C++引用和函数返回值
  9. mysql数据库备份及还原
  10. nfs服务启动失败:Failed to start NFS status monitor for NFSv2/3 locking..
  11. sass 工具库
  12. Ubuntu中搭建强化学习平台(使用anaconda管理Python并安装tensorflow、opencv)
  13. rabbitmq (五)RPC
  14. alfred3配置
  15. 图像分类(三)GoogLenet Inception_v3:Rethinking the Inception Architecture for Computer Vision
  16. Finished yeah!
  17. 基于Confluent.Kafka实现的Kafka客户端操作类使用详解
  18. PGM1.1-简介
  19. Linux uname命令详解
  20. Redis-SDS

热门文章

  1. 印尼医疗龙头企业Halodoc的数据平台转型之Lakehouse架构
  2. declare-声明限定类型变量
  3. 满满干货!手把手教你实现基于eTS的分布式计算器
  4. 关于『HTML5』:第二弹
  5. mybatis if判断等于某个字符串
  6. MTK 虚拟 sensor bring up (pick up) sensor2.0
  7. sql语句中 int(1)与int(10)有什么区别?资深开发竟然能理解错
  8. 腾讯云数据库TDSQL-大咖论道 | 基础软件的过去、现在、未来
  9. [WUSTCTF2020]颜值成绩查询-1
  10. Torch的索引与形变