Node_exporter+Prometheus+Grafana 快速实现Linux系统性能数据提取、存储和可视化展示

  • 1. 前言
  • 2. Node_exporter
    • 2.1 安装 node_exporter
    • 2.2 运行 node_exporter
  • 3. Prometheus
    • 3.1 安装Prometheus
    • 3.2 运行Prometheus
    • 3.3 配置 prometheus 的监控数据源为 node_exporter
    • 3.4 Prometheus UI 查看监控数据
  • 4. Grafana
    • 4.1 安装 Grafana
    • 4.2 运行 Grafana
    • 4.3 配置数据源
    • 4.4 配置面板
  • 5. 总结

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

Node_exporter+Prometheus+Grafana 快速实现Linux系统性能数据提取、存储和可视化展示相关推荐

  1. prometheus+grafana简介与linux下的安装

    1.简介 prometheus+grafana为一份监控平台的解决方案.其中可以监控linux服务器,nginx,rabbitmq,springboot项目等,功能非常强大. prometheus负责 ...

  2. Linux之数据提取操作

    数据提取操作 1.操作命令(都可以结合pipe使用) 1.cut:切分操作(可以切分出一整列) 2.grep:检索(可以使用正则表达式) 3.sort:排序(可以对整列排序) 4.wc:统计字符.字数 ...

  3. Python抓取电商平台数据 / 采集商品评论 / 可视化展示 词云图...

    前言 大家早好.午好.晚好吖 ❤ ~ 我给大家准备了一些资料,包括: 2022最新Python视频教程.Python电子书10个G (涵盖基础.爬虫.数据分析.web开发.机器学习.人工智能.面试题) ...

  4. Prometheus和Grafana的监控Linux服务器和MYSQL数据库

    [使用root用户执行以下操作] 目录 一.安装Prometheus和Grafana 1.安装 Prometheus 1)下载 Prometheus 2)解压安装包 3)启动prometheus 4) ...

  5. Grafana Prometheus 服务安装部署(Linux服务器监控)

    文章目录 一.概述 二.安装Prometheus 1.安装node_exporter 2.安装Prometheus 三.安装Grafana展示监控 监控进程 一.概述 Prometheus 介绍 Pr ...

  6. Linux安装prometheus+grafana监控

    一.在业务中遇到服务器负载过高问题,由于没有监控,一直没发现,直到业务方反馈网站打开速度慢,才发现问题.这样显得开发很被动.所以是时候搭建一套监控系统了. 由于是业余时间自己捯饬,所以神马业务层面的监 ...

  7. Prometheus+Grafana安装配置并配置linux服务器监控dashboard

    一.简介: prometheus是谷歌用golang语言开发的一款开源的监控软件,使用安装在远程机器上的exporter,通过HTTP协议从远程的机器收集数据并存储在本地的时序数据库上. Promet ...

  8. 视频教程-Prometheus+Grafana搭建全方位的监控告警系统-Linux

    Prometheus+Grafana搭建全方位的监控告警系统 高级运维工程师.资深DevOps工程师,精通kubernetes容器编排工具,熟练使用linux操作系统,多年线上线下教学经验 韩先超 ¥ ...

  9. Jmeter+Prometheus+Grafana性能监控平台:将JMeter压测数据输出到Prometheus

    前言 1.小编之前写过一篇文章详细讲解了如何搭建一个HTTP接口性能实时监控测试平台,是用Grafana+Influxdb+Jmeter组合实现的,可以参考我写的这篇博客https://editor. ...

最新文章

  1. pip、conda 换国内源,大大提高下载速度
  2. python显示图片
  3. LeetCode Construct Binary Tree from Inorder and Postorder Traversal
  4. 接上一篇Ansible和celery的结合,在celery的tasks.py文件里为了实现并发不阻塞的需求,用到了多进程
  5. Tutorial on Variational AutoEncoders
  6. 【Android】系统目录理解
  7. Spring Boot核心配置
  8. tf.acos_带有Python示例的math.acos()方法
  9. (转) java 复制文件,不使用输出流复制,高效率,文件通道的方式复制文件
  10. Chrome开发者工具之JavaScript内存分析
  11. 网友评论:Struts漏洞为什么来势凶猛
  12. Mac终端编c语言,【新手提问】有知道用mac终端编c语言的网络编程的人吗?
  13. 洛谷——P2820 局域网
  14. FireFox的插件
  15. 【渝粤教育】广东开放大学 商务翻译实务 形成性考核 (49)
  16. 带遮挡效果的轮廓线(描边)在3D实时渲染中的一种实现
  17. 计算机科学学院宣传标语,师范学院宣传标语
  18. ReactNative解决方案研究
  19. 什么是计算机立体化教程,全国计算机等级考试立体化应试教程
  20. VUE实现PDF在线阅读

热门文章

  1. NSMutableArray 如果只进行了声明,而没有进行初始化,那么程序不会报错,但是,声明的那个变量不起任何作用...
  2. sqlite3.h--dbhelp.h数据库底层文件
  3. 周日21点50:关注电子阅读的大潮到来
  4. 什么是.NET 程序集强签名
  5. 业务系统设计之一:系统菜单设计
  6. 机器学习--信息 信息熵 信息增益
  7. sql server 备份与恢复系列一 必备知识
  8. liferay笔记之copy-request-parameters
  9. GPUImageMovieWriter实现暂停录制,重新录制
  10. Android更新Ui的几种方法