• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    利用Prometheus与Grafana对Mysql服务器的性能监控详解

    概述

    Prometheus是一个开源的服务监控系统,它通过HTTP协议从远程的机器收集数据并存储在本地的时序数据库上。它提供了一个简单的网页界面、一个功能强大的查询语言以及HTTP接口等等。Prometheus通过安装在远程机器上的exporter来收集监控数据,这里用到了以下两个exporter:

    1. node_exporter – 用于机器系统数据
    2. mysqld_exporter – 用于Mysql服务器数据

    Grafana是一个开源的功能丰富的数据可视化平台,通常用于时序数据的可视化。它内置了以下数据源的支持:

    并可以通过插件扩展支持的数据源。

    架构图

    下面是本次部署的架构图

    安装并运行Prometheus

    1.在 Monitor 上安装 Prometheus

    安装至/opt/prometheus

    $ 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

    2.在安装目下编辑配置文件 prometheus.yml

    vim /opt/prometheus/prometheus.yml
    # 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

    其中:172.30.251.214是MySQL的IP,端口则是对应的exporter的监听端口。

    3.启动Prometheus

    [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

    Prometheus内置了一个web界面,可以通过http://monitor_host:9090进行访问:

    在Status->Targets页面下,可以看到我们配置的两个Target,它们的State为DOWN。

    4.接下来需要在被监控机器上安装并运行exporter

    下载exporters并解压:

    $ 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

    运行node_exporter

    $ cd /opt/prometheus/prometheus_exporters
    $ ./node_exporter 
    INFO[0000] Starting node_exporter (version=0.14.0-rc.1, branch=master, 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"

    mysqld_exporter需要连接到MySQL,所以需要MySQL权限,我们为其创建用户并赋予所需的权限:

    mysql> GRANT REPLICATION CLIENT, PROCESS ON *.* TO 'prom'@'localhost' identified by 'abc123';
    mysql> GRANT SELECT ON performance_schema.* TO 'prom'@'localhost';

    创建.my.cnf文件并运行mysqld_exporter:

    $ 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, branch=master, 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

    回到Prometheus web界面Status->Targets,可以看到两个Target的状态已经变成UP了:

    安装和运行Grafana

    安装:

    Grafana 的安装官方文档比较清晰,这里不再赘述。

    配置:

    编辑配置文件/etc/grafana/grafana.ini,修改dashboards.json段落下两个参数的值:

    [dashboards.json]
    enabled = true
    path = /var/lib/grafana/dashboards

    导入Prometheus Dashboard:

    $ git clone https://github.com/percona/grafana-dashboards.git
    $ cp -r grafana-dashboards/dashboards /var/lib/grafana

    启动:

    $ /etc/init.d/grafana-server start

    通过http://monitor_host:3000访问Grafana Web界面(缺省帐号/密码为admin/admin)

    登录后,通过Data Sources页面添加数据源:

    然后就可以通过选择不同的仪表盘(左上角)和时间段(右上角)来呈现图表了:

    System Overview:

    MySQL Overview:

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

    您可能感兴趣的文章:
    • 使用Grafana+Prometheus监控mysql服务性能
    • SpringBoot使用prometheus监控的示例代码
    • springboot2.X整合prometheus监控的实例讲解
    • SpringBoot+Prometheus+Grafana实现应用监控和报警的详细步骤
    • Prometheus的安装和配置教程详解
    • Prometheus 入门教程之SpringBoot 实现自定义指标监控
    • Prometheus开发中间件Exporter过程详解
    • springboot集成普罗米修斯(Prometheus)的方法
    • 使用 prometheus python 库编写自定义指标的方法(完整代码)
    • 使用prometheus统计MySQL自增主键的剩余可用百分比
    • 使用Prometheus+Grafana的方法监控Springboot应用教程详解
    • Prometheus 监控MySQL使用grafana展示
    上一篇:SQL中distinct 和 row_number() over() 的区别及用法
    下一篇:Mysql数据库表定期备份的实现详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    利用Prometheus与Grafana对Mysql服务器的性能监控详解 利用,Prometheus,与,Grafana,