Prometheus+Grafana监控MySQL浅析

Posted 老叶茶馆_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Prometheus+Grafana监控MySQL浅析相关的知识,希望对你有一定的参考价值。

* 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/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



文章推荐:


想看更多技术好文,点个“在看”吧!

以上是关于Prometheus+Grafana监控MySQL浅析的主要内容,如果未能解决你的问题,请参考以下文章

Prometheus+Grafana可视化监控MySQL

Grafana+Prometheus系统监控之MySql

MySQL 监控 第01期:Prometheus+Grafana 监控 MySQL

利用Prometheus和Grafana监控MySQL

使用Prometheus+Grafana监控MySQL实践

Grafana+Prometheus监控mysql性能