Mysql学习利用Prometheus与Grafana对Mysql服务器的性能监控详解
《Mysql学习利用Prometheus与Grafana对Mysql服务器的性能监控详解》要点: MYSQL应用概述 MYSQL应用Prometheus是一个开源的服务监控系统,它通过HTTP协议从远程的机器收集数据并存储在本地的时序数据库上.它提供了一个简单的网页界面、一个功能强大的查询语言以及HTTP接口等等.Prometheus通过安装在远程机器上的exporter来收集监控数据,这里用到了以下两个exporter:
MYSQL应用Grafana是一个开源的功能丰富的数据可视化平台,通常用于时序数据的可视化.它内置了以下数据源的支持: MYSQL应用 MYSQL应用并可以通过插件扩展支持的数据源. MYSQL应用架构图 MYSQL应用下面是本次部署的架构图 MYSQL应用 MYSQL应用安装并运行Prometheus MYSQL应用1.在 Monitor 上安装 Prometheus MYSQL应用安装至/opt/prometheus MYSQL应用
$ wget https://github.com/prometheus/prometheus/releases/download/v1.5.2/prometheus-1.5.2.linux-amd64.tar.gz
$ tar zxvf prometheus-1.5.2.linux-amd64.tar.gz
$ mv prometheus-1.5.2.linux-amd64 /opt/prometheus
MYSQL应用2.在安装目下编辑配置文件 prometheus.yml MYSQL应用
vim /opt/prometheus/prometheus.yml
MYSQL应用
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Attach these labels to any time series or alerts when communicating with
# external systems (federation,remote storage,Alertmanager).
external_labels:
monitor: 'codelab-monitor'
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first.rules"
# - "second.rules"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
# 以下是添加的部分
- job_name: linux
static_configs:
- targets: ['172.30.251.214:9100']
labels:
instance: db1
- job_name: mysql
static_configs:
- targets: ['172.30.251.214:9104']
labels:
instance: db1
MYSQL应用其中:172.30.251.214是MySQL的IP,端口则是对应的exporter的监听端口. MYSQL应用3.启动Prometheus MYSQL应用
[loya@centos6 prometheus]$ ./prometheus
INFO[0000] Starting prometheus (version=1.5.2,branch=master,revision=bd1182d29f462c39544f94cc822830e1c64cf55b) source=main.go:75
INFO[0000] Build context (go=go1.7.5,user=root@a8af9200f95d,date=20170210-14:41:22) source=main.go:76
INFO[0000] Loading configuration file prometheus.yml source=main.go:248
INFO[0000] Loading series map and head chunks... source=storage.go:373
INFO[0000] 0 series loaded. source=storage.go:378
INFO[0000] Starting target manager... source=targetmanager.go:61
INFO[0000] Listening on :9090 source=web.go:259
MYSQL应用Prometheus内置了一个web界面,可以通过http://monitor_host:9090进行访问: MYSQL应用 MYSQL应用在Status->Targets页面下,可以看到我们配置的两个Target,它们的State为DOWN. MYSQL应用 MYSQL应用4.接下来需要在被监控机器上安装并运行exporter MYSQL应用下载exporters并解压: MYSQL应用
$ mkdir /opt/prometheus/prometheus_exporters
$ cd /opt/prometheus/prometheus_exporters
$ wget https://github.com/prometheus/node_exporter/releases/download/v0.14.0-rc.1/node_exporter-0.14.0-rc.1.linux-amd64.tar.gz
$ wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.9.0/mysqld_exporter-0.9.0.linux-amd64.tar.gz
$ tar zxvf node_exporter-0.14.0-rc.1.linux-amd64.tar.gz
$ tar zxvf mysqld_exporter-0.9.0.linux-amd64.tar.gz
# 将各自的可执行文件移动到/opt/prometheus/prometheus_exporters
$ ll /opt/prometheus/prometheus_exporters
total 24464
-rwxr-xr-x 1 root root 12182376 Feb 23 19:01 mysqld_exporter
-rwxr-xr-x 1 root root 12862209 Feb 23 19:01 node_exporter
MYSQL应用运行node_exporter MYSQL应用
$ cd /opt/prometheus/prometheus_exporters
$ ./node_exporter
INFO[0000] Starting node_exporter (version=0.14.0-rc.1,revision=5a07f4173d97fa0dd307db5bd3c2e6da26a4b16e) source="node_exporter.go:136"
INFO[0000] Build context (go=go1.7.4,user=root@ed143c8f2fcd,date=20170116-16:00:03) source="node_exporter.go:137"
INFO[0000] No directory specified,see --collector.textfile.directory source="textfile.go:57"
INFO[0000] Enabled collectors: source="node_exporter.go:156"
INFO[0000] - entropy source="node_exporter.go:158"
INFO[0000] - loadavg source="node_exporter.go:158"
INFO[0000] - stat source="node_exporter.go:158"
INFO[0000] - diskstats source="node_exporter.go:158"
INFO[0000] - textfile source="node_exporter.go:158"
INFO[0000] - vmstat source="node_exporter.go:158"
INFO[0000] - meminfo source="node_exporter.go:158"
INFO[0000] - filefd source="node_exporter.go:158"
INFO[0000] - filesystem source="node_exporter.go:158"
INFO[0000] - mdadm source="node_exporter.go:158"
INFO[0000] - netdev source="node_exporter.go:158"
INFO[0000] - sockstat source="node_exporter.go:158"
INFO[0000] - time source="node_exporter.go:158"
INFO[0000] - zfs source="node_exporter.go:158"
INFO[0000] - edac source="node_exporter.go:158"
INFO[0000] - hwmon source="node_exporter.go:158"
INFO[0000] - netstat source="node_exporter.go:158"
INFO[0000] - uname source="node_exporter.go:158"
INFO[0000] - conntrack source="node_exporter.go:158"
INFO[0000] Listening on :9100 source="node_exporter.go:176"
MYSQL应用mysqld_exporter需要连接到MySQL,所以需要MySQL权限,我们为其创建用户并赋予所需的权限: MYSQL应用
mysql> GRANT REPLICATION CLIENT,PROCESS ON *.* TO 'prom'@'localhost' identified by 'abc123';
mysql> GRANT SELECT ON performance_schema.* TO 'prom'@'localhost';
MYSQL应用创建.my.cnf文件并运行mysqld_exporter: MYSQL应用
$ cd /opt/prometheus/prometheus_exporters
$
$ cat << EOF > .my.cnf
[client]
user=prom
password=abc123
EOF
$
$ ./mysqld_exporter -config.my-cnf=".my.cnf"
INFO[0000] Starting mysqld_exporter (version=0.9.0,revision=8400af20ccdbf6b5e0faa2c925c56c48cd78d70b) source=mysqld_exporter.go:432
INFO[0000] Build context (go=go1.6.3,user=root@2c131c66ca20,date=20160926-18:28:09) source=mysqld_exporter.go:433
INFO[0000] Listening on :9104 source=mysqld_exporter.go:451
MYSQL应用回到Prometheus web界面Status->Targets,可以看到两个Target的状态已经变成UP了: MYSQL应用 MYSQL应用安装和运行Grafana MYSQL应用安装: MYSQL应用Grafana 的安装官方文档比较清晰,这里不再赘述. MYSQL应用配置: MYSQL应用编辑配置文件/etc/grafana/grafana.ini,修改dashboards.json段落下两个参数的值: MYSQL应用
[dashboards.json]
enabled = true
path = /var/lib/grafana/dashboards
MYSQL应用导入Prometheus Dashboard: MYSQL应用
$ git clone https://github.com/percona/grafana-dashboards.git
$ cp -r grafana-dashboards/dashboards /var/lib/grafana
MYSQL应用启动: MYSQL应用
$ /etc/init.d/grafana-server start
MYSQL应用通过http://monitor_host:3000访问Grafana Web界面(缺省帐号/密码为admin/admin) MYSQL应用登录后,通过Data Sources页面添加数据源: MYSQL应用 MYSQL应用然后就可以通过选择不同的仪表盘(左上角)和时间段(右上角)来呈现图表了: MYSQL应用System Overview: MYSQL应用 MYSQL应用MySQL Overview: MYSQL应用 MYSQL应用总结 MYSQL应用以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程之家PHP的支持. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Mysql应用mysql could not be resolved: Name or service n
- Mysql应用简单谈谈MySQL的半同步复制
- Mysql实例mysql存储过程事务管理简析
- MYSQL教程Shell下实现免密码快速登陆MySQL数据库的方法
- Mysql入门浅谈MySQL中授权(grant)和撤销授权(revoke)用法详
- MYSQL教程mysql数据库sql优化原则(经验总结)
- 怎样批量修改mysql数据库myisam引擎为innodb
- MYSQL数据库mysql drop database删除数据库命令实例讲解
- Mysql必读mysql连接数查看方法
- Mysql入门VPS下修改MySQL root用户密码的方法