关于mysql:技术分享-PrometheusGrafana监控MySQL浅析

34次阅读

共计 3783 个字符,预计需要花费 10 分钟才能阅读完成。

  • 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 作为数据源

  • 抉择导入模板

  • 能够导入 https://grafana.com/grafana/d… percona 提供的模板,也能够间接抉择 id ,grafana 将会依据 id 下载模板

  • 模板中系统配置 是依据 hosts 来聚合数据,因为是间接应用的 node_exporter 作为采集零碎的配置,则没有这个 System Charts,
  • 最简略的形式就是 Queries 批改 instance 的 hosts 间接替换成 ‘192.168.5.242:9100’ node_exporter 的名称

这样一个根底的监控平台就搭建实现了。

参考:

  • https://prometheus.io/docs/in…
  • https://github.com/percona/gr…

Enjoy GreatSQL :)

文章举荐:

GreatSQL MGR FAQ
https://mp.weixin.qq.com/s/J6…

万答 #12,MGR 整个集群挂掉后,如何能力主动选主,不必手动干涉
https://mp.weixin.qq.com/s/07…

『2021 数据技术嘉年华·ON LINE』:《MySQL 高可用架构演进及实际》
https://mp.weixin.qq.com/s/u7…

一条 sql 语句慢在哪之抓包剖析
https://mp.weixin.qq.com/s/AY…

万答 #15,都有哪些状况可能导致 MGR 服务无奈启动
https://mp.weixin.qq.com/s/in…

技术分享 | 为什么 MGR 一致性模式不举荐 AFTER
https://mp.weixin.qq.com/s/rN…

对于 GreatSQL

GreatSQL 是由万里数据库保护的 MySQL 分支,专一于晋升 MGR 可靠性及性能,反对 InnoDB 并行查问个性,是实用于金融级利用的 MySQL 分支版本。

Gitee:
https://gitee.com/GreatSQL/Gr…

GitHub:
https://github.com/GreatSQL/G…

Bilibili:
https://space.bilibili.com/13…

微信 &QQ 群:
可搜寻增加 GreatSQL 社区助手微信好友,发送验证信息“加群”退出 GreatSQL/MGR 交换微信群

QQ 群:533341697
微信小助手:wanlidbc

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

正文完
 0