概述

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

3.启动Prometheus

[loya@centos6 prometheus]$ ./prometheusINFO[0000] Starting prometheus (version=1.5.2, branch=master, revision=bd1182d29f462c39544f94cc822830e1c64cf55b) source=main.go:75INFO[0000] Build context (go=go1.7.5, user=root@a8af9200f95d, date=20170210-14:41:22) source=main.go:76INFO[0000] Loading configuration file prometheus.yml source=main.go:248INFO[0000] Loading series map and head chunks... source=storage.go:373INFO[0000] 0 series loaded. source=storage.go:378INFO[0000] Starting target manager... source=targetmanager.go:61INFO[0000] Listening on :9090 source=web.go:259

在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_exporterstotal 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
$ 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"
mysql> GRANT REPLICATION CLIENT, PROCESS ON *.* TO 'prom'@'localhost' identified by 'abc123';mysql> GRANT SELECT ON performance_schema.* TO 'prom'@'localhost';
$ cd /opt/prometheus/prometheus_exporters$$ cat << EOF > .my.cnf[client]user=prompassword=abc123EOF$$ ./mysqld_exporter -config.my-cnf=".my.cnf"INFO[0000] Starting mysqld_exporter (version=0.9.0, branch=master, revision=8400af20ccdbf6b5e0faa2c925c56c48cd78d70b) source=mysqld_exporter.go:432INFO[0000] Build context (go=go1.6.3, user=root@2c131c66ca20, date=20160926-18:28:09) source=mysqld_exporter.go:433INFO[0000] Listening on :9104 source=mysqld_exporter.go:451

安装和运行Grafana

安装:

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

配置:

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

[dashboards.json]enabled = truepath = /var/lib/grafana/dashboards
$ git clone https://github.com/percona/grafana-dashboards.git$ cp -r grafana-dashboards/dashboards /var/lib/grafana
$ /etc/init.d/grafana-server start

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

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

System Overview:

MySQL Overview:

总结

更多相关文章

  1. MySQL系列多表连接查询92及99语法示例详解教程
  2. Android(安卓)- Manifest 文件 详解
  3. Android的Handler机制详解3_Looper.looper()不会卡死主线程
  4. android 下写文件性能测试
  5. Selector、shape详解(一)
  6. android2.2资源文件详解4--menu文件夹下的菜单定义
  7. [android]android性能测试命令行篇
  8. Android发送短信方法实例详解
  9. Android(安卓)读取资源文件实例详解

随机推荐

  1. Android(安卓)SDK 4.0.3 开发环境配置及
  2. android am命令
  3. Android 经典示例,初学者的绝好源码资料
  4. shape的使用
  5. Android进入页面默认不弹出软键盘
  6. Android Studio 指定DEBUG和RELEASE版本
  7. Android跨进程通信传输大数据
  8. android activity onSearchRequested()
  9. API Demos 2.2 研读笔记(5)——Window Feat
  10. Android动画之 Alpha与Translate结合使用