NODE_EXPORTER+PROMETHEUS+GRAFANA 快速实现LINUX系统性能数据提取、存储和可视化展示原创
1. 前言
本文将通过Node_exporter+Prometheus+Grafana三者结合,快速提取Linux内核数据,数据包括但不限于CPU、内存、磁盘、网络IO等,并进行可视化展示。当然,这一套对于分布式也同样适用。
2. Node_exporter
Node_exporter 是 prometheus 提供的一个可以采集到主机信息的应用程序,它能采集到系统的 CPU、内存、网络、磁盘等信息。
2.1 安装 node_exporter
cd ~ && mkdir npg && cd npg
wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz
tar -zxvf node_exporter-1.1.2.linux-amd64.tar.gz
不同系统或其它安装方法请参考:https://prometheus.io/download/
2.2 运行 node_exporter
解压后运行 node_exporter,可以使用 8080 端口运行:
cd node_exporter-1.1.2.linux-amd64
./node_exporter --web.listen-address 127.0.0.1:8080
启动成功后,可以看到如下输出:
在浏览器访问 http://localhost:8080/ 可以看到以下页面:
在浏览器访问 http://localhost:8080/metrics,可以看到当前 node_exporter 获取到的当前主机的所有监控数据,如下所示:
每一个指标都会有 HELP 和 TYPE,其中 HELP 用于解释当前指标的含义,TYPE 则说明当前指标的数据类型。
了解想详细的内容,可以访问:https://github.com/prometheus/node_exporter
3. Prometheus
Prometheus 是一个数据监控解决方案,能简单快速地搭建起一套可视化的监控系统。Prometheus的基本架构如下图所示:
3.1 安装Prometheus
Prometheus Server 负责数据的采集,首先安装 Prometheus Server ,针对Ubuntu,可使用以下命令来安装:
cd ~/npg
wget https://github.com/prometheus/prometheus/releases/download/v2.26.0/prometheus-2.26.0.linux-amd64.tar.gz
tar -zxvf prometheus-2.26.0.linux-amd64.tar.gz
不同系统或其它安装方法请参考:
https://prometheus.io/download/
3.2 运行Prometheus
解压后可以看到如下目录:
其中:
- data 目录是数据的存储路径,也可以通过运行时的 –storage.tsdb.path="data/” 命令另行指定;
- prometheus.yml 是 Prometheus的配置文件;
- prometheus 是运行的命令。
启动prometheus,会默认加载当前路径下的prometheus.yaml文件,也可以手动指定配置文件地址:
./prometheus --config.file=prometheus.yml
启动 prometheus 后,正常情况下会输出以下内容:
在浏览器输入访问地址:http://localhost:9090/graph 可以看到Prometheus 自带的监控管理界面:
3.3 配置 prometheus 的监控数据源为 node_exporter
配置 prometheus 的配置 prometheus.yml 文件,使 prometheus 服务器定时去业务数据源拉取数据。编辑prometheus.yml 并在 scrape_configs 节点下添加以下内容:
# 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']
# 采集node exporter监控数据
- job_name: 'node'
static_configs:
- targets: ['localhost:8080']
上面配置文件配置了两个任务,一个是名为 prometheus 的任务,其从localhost:9090地址读取数据,另一个是名为 node 的任务,其从localhost:8080地址读取数据。配置完成后,重新启动 prometheus。
./prometheus --config.file=prometheus.yml
配置完 prometheus 读取的数据源之后,prometheus 便可以从 Node Exporter 获取到数据了。
3.4 Prometheus UI 查看监控数据
Prometheus UI 是 Prometheus 内置的一个可视化管理界面,通过浏览器访问地址 http://localhost:9090 就可以访问到该页面。 通过 Prometheus UI 可以查询 Prometheus 收集到的数据,而 Prometheus 定义了 PromQL 语言来作为查询监控数据的语言。
在浏览器访问 http://localhost:9090,进入到 Prometheus Server。输入 up 并且点击执行按钮以后,可以看到如下结果:
可以看到有两个名为 node 和 prometheus 的 job ,其后面的 value 为 1,代表他们是激活状态。
如果想查看 NodeExporter 节点所在机器 CPU 1 分钟的负载情况,可以输入 node_load1 查看:
Prometheus UI 提供了快速验证 PromQL 以及临时可视化支持的能力,但其可视化能力却比较弱。我们可以用 Grafana 来实现 Prometheus 的可视化。
4. Grafana
Grafana 是一个用来展示各种各样数据的开源软件,只需要在 Grafana 上配置一个 Prometheus 的数据源,然后配置各种图表,Grafana 就会自动去 Prometheus 拉取数据进行展示。
4.1 安装 Grafana
可使用以下命令来安装 Grafana:
cd ~/npg
wget https://dl.grafana.com/oss/release/grafana-7.5.2.linux-amd64.tar.gz
tar -zxvf grafana-7.5.2.linux-amd64.tar.gz
不同系统或其它安装方法请参考:
https://grafana.com/grafana/download
4.2 运行 Grafana
解压后使用以下命令来启动 Grafana:
cd grafana-7.5.2.linux-amd64
./grafana-server web
正常启动会输出如下信息:
Grafana 默认使用 3000 端口启动,浏览器访问:http://localhost:3000 查看对应页面:
默认的账号:admin,密码: admin,登录后显示如下页面:
4.3 配置数据源
设置菜单添加 Prometheus 数据源:
添加一个名为 Prometheus 的数据源,数据获取地址为:http://localhost:9090 。
4.4 配置面板
Grafana 中有 Dashboard 和 Panel 的概念,Dashboard 可以理解成看板,Panel 可以理解成图表,一个看板中包含了无数个图表。下面创建一个图表来显示系统 1 分钟平均负载。
点击右上角Apply,数据可视化结果如下:
可以展示的图表样式有:
详细使用方法可以参考:https://grafana.com/docs/?pg=community&plcmt=topnav
5. 总结
本文主要通过Node_exporter+Prometheus+Grafana三者结合,介绍了快速提取Linux内核数据,并进行可视化展示。随着eBPF技术的发展,其应用场景也越来越多,本文目前使用传统工具对内核数据进行提取和展示,接下来将基于eBPF技术,结合Prometheus和Grafana进行数据提取,存储和展示,同样也可以应用于分布式场景。
参考资料:
https://shuyi.tech/archives/00-why-learn-prometheus
https://prometheus.io/
https://grafana.com/
https://github.com/prometheus/node_exporter