一、监控背景
我们通常会有这样的需求:
1、对服务端进行性能测试时,需要实时监控CPU、内存、IO读写、网络状态等信息;
2、对线上服务,如HTTP(Nginx)、数据存储(Redis、MySQL)、消息队列(Kafka、RabbitMQ)等服务进行监控,当出现异常时可以及时报警;
今天给大家分享的是使用Prometheus+NodeExporter+Grafana搭建高端大气的监控系统,上手非常简单,而且高逼格,即用即会,一直用一直爽~
二、监控框架系统结构介绍
1、Prometheus模块:可以理解为数据收集系统,所有向它推送的数据,都可以以时间序列的方式记录下来;
2、NodeExporter模块:向Prometheus模块按照约定的格式推送数据,NodeExporter是专门负责收集系统相关信息的Exporter。在 Prometheus官网上我们可以找到各式各样的Exporter,如数据库相关、消息队列相关的Exporter,不同的Exporter监控收集不同服务的数据;
3、Grafana模块:一个高逼格的可视化开源框架,支持将Prometheus的数据直接可视化展示(下面有图有真相)。
三、快速搭建监控系统
安装部署监控系统只需要3步,使用脚本操作可以在1分钟完成:
1、Exporter安装
// 最新版本下载地址:https://prometheus.io/download/
// 下载安装包
wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
// 解压
tar -xvzf node_exporter-0.18.1.linux-amd64.tar.gz
cd node_exporter-0.18.1.linux-amd64/
// 后台启动服务
./node_exporter &
2、安装和配置Prometheus
// 最新版本下载地址:https://prometheus.io/download/
// 1. 下载安装包
wget https://github.com/prometheus/prometheus/releases/download/v2.10.0/prometheus-2.10.0.linux-amd64.tar.gz
// 2. 解压
tar -xvf prometheus-2.10.0.linux-amd64.tar.gz
cd prometheus-2.10.0.linux-amd64
// 3. 配置从node_exporter获取数据
打开目录下的prometheus.yml配置文件,添加如下配置:
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
// 4. 后台运行服务
./prometheus -config.file=prometheus.yml &
3、安装Grafana
// 最新版本下载地址:https://grafana.com/grafana/download
// 下载安装包
wget https://dl.grafana.com/oss/release/grafana-5.4.2-1.x86_64.rpm
// 安装
sudo yum install initscripts urw-fonts
sudo rpm -Uvh grafana-5.4.2-1.x86_64.rpm
// 启动服务
sudo service grafana-server start
四、在Grafana上配置数据可视化
Grafana可视化配置仅需2步,点点点就可以完成:
1、配置从Prometheus获取数据:
STEP1: 配置数据源入口
STEP2: 配置数据获取链接
2、配置可视化面板:
Grafana社区提供了各类Exporter的监控展示看板,我们可以直接使用对应的看板配置,非常方便:
STEP3: 从https://grafana.com/dashboards/8919下载最新版本的NodeExporter看板配置文件:
STEP4: 在Grafana导入看板配置:
STEP5: 监控展示面板效果(非常炫酷)
四、最后
1、留言或添加搜狗测试官方微信号,可获取一键部署监控自动化脚本,让你5分钟即可打造高逼格监控系统;
2、部署监控系统遇到问题的可以直接留言或添加我们官方微信好友,我们竭诚为您服务(交流学习
);
3、Prometheus相关学习资料:
Prometheus 实战:https://songjiayang.gitbooks.io/prometheus/content/
Prometheus的Exporter支持列表:https://prometheus.io/docs/instrumenting/exporters/#exporters-and-integrations