54

Prometheus+Grafana打造Mysql监控平台

 5 years ago
source link: https://studygolang.com/articles/15557?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
  1. prometheus/node_exporter/mysqld_exporter都是由go语言编写,需要先安装GoLang环境
  2. 下载 node_exporter (监控服务器的CPU、内存、存储使用情况)和 mysqld_exporter 放到Mysql服务器(被监控端)
  • 需要为mysqld_exporter在Mysql数据库新建一个用户,并赋予相应权限
CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'XXXXXXXX' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
  • 配置mysql_exporter启动时连接mysql的用户名和密码

    • 环境变量方式:
    export DATA_SOURCE_NAME='user:password@(hostname:3306)/'
    ./mysqld_exporter <flags>
    • 配置.my.cnf文件
    [client]
    user=exporter
    password=exporter
    
     然后启动mysqld_exporter
     mysqld_exporter -config.my-cnf=".my.cnf"
  1. 下载 Prometheus 放到监控端(或被监控端)。
  • 配置文件prometheus.yml
scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']
        labels:
          instance: prometheus

  - job_name: linux
    static_configs:
     # 192.168.1.7为node_exporter所在服务器的IP;9100为node_exporter暴露的端口
      - targets: ['192.168.1.7:9100']
        labels:
          #db1为实例名,以后在Grafana获取prometheus时,要配置prometheus所有服务器的host为db1
          instance: db1

  - job_name: mysql
    static_configs:
     # 192.168.1.7为mysqld_exporter所在服务器的IP;9100为mysqld_exporter暴露的端口
      - targets: ['192.168.1.7:9104']
        labels:
          instance: db1

3.启动prometheus,并查看配置的Linux和Mysql节点状态是否为Up

4.下载 Grafana ,并按文档安装

5.下载Percona提供的 Dashboards

EBVreqr.png!web

datasource

如果grafana与prometheus不在一台服务器,需要指定prometheus的主机名(此例中应该为db1),access要选择proxy,表示由grafana处理请求,而不是直接请求prometheus。

6.启动Grafana,并添加Prometheus数据源(注意必须为"Prometheus",因为Percona提供的dashboards使用的是Prometheus数据源)

7.正常情况下可以看见Mysql和System的仪表盘,如果显示不出来,请检查下面几个方面

  • 检查Grafana和grafana-dashboards版本(grafana-4.2 匹配grafana-dashboards-1.3.2,不匹配当前最新版本1.15).
  • Grafana使用grafana用户运行,所以需要检查/etc/grafana,/var/lib/grafana,/usr/grafana目录所有者和用户组是否是grafana
  • 对于grafana 3.X版本,还需要做如下处理,参见 grafana-dashboards
sed -i 's/expr=\(.\)\.replace(\(.\)\.expr,\(.\)\.scopedVars\(.*\)var \(.\)=\(.\)\.interval/expr=\1.replace(\2.expr,\3.scopedVars\4var \5=\1.replace(\6.interval, \3.scopedVars)/' /usr/share/grafana/public/app/plugins/datasource/prometheus/datasource.js
sed -i 's/,range_input/.replace(\/"{\/g,"\\"").replace(\/}"\/g,"\\""),range_input/; s/step_input:""/step_input:this.target.step/' /usr/share/grafana/public/app/plugins/datasource/prometheus/query_ctrl.js
  • grafana所有服务器是否配置prometheus所有服务器的IP与Host映射,如上的Prometheus的配置,host应该配置成db1
  1. 安装成功结果如下图:

    2Un6jyZ.png!web

    mysql overview

YBZVjyA.png!web

system overview

UzeyIfq.png!web

mysql innodb metrics


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK