软件测试|简单易学的性能监控体系prometheus+grafana搭建教程

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 软件测试|简单易学的性能监控体系prometheus+grafana搭建教程

快速了解普罗米修斯

普罗米修斯是用 go 语言编写的软件并且利用了 go 语言的交叉编译特性编译成了纯二进制文件, 运行的时候不需要额外安装依赖。 直接从官网上下载就可以。 下载地址: https://prometheus.io/download/ 这里面除了普罗米修斯的主程序意外, 一些 额外的组件,比如 pushgateway, alertmanager 以及各种官方 exporter 的下载包都可以在这里找到。 由于我们现在部署普罗米修斯都是容器化部署的, 所以这里我选择用 docker 进行部署。

docker run --name=prometheus  -d -p 9090:9090 -v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml  prom/prometheus

部署方式很简单, 只不过需要通过-v 来挂载一个配置文件到容器里。 至于这个配置文件, 大概张下面这个样子:

global:
  scrape_interval:     15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'node_exporter'
    static_configs:
    - targets: ['localhost:9100']
  - job_name: 'mysql'
    static_configs:
    - targets: ['localhost:9104']
  - job_name: 'cadvisor'
    static_configs:
    - targets: ['localhost:8091']
  - job_name: 'pushgateway'
    static_configs:
    - targets: ['localhost:9091']
      labels:
        instance: pushgateway

上面便是一个普罗米修斯的配置文件 其中 global 是全局的配置,上面配置了我们每隔 15s 便向各个 exporter 抓取一次监控数据,而 scrape_configs 配置的是普罗米修斯主服务要去抓取的各个 exporter 的配置。 普罗米修斯是标准的 pull 架构, 主服务并不负责监控任务, 真正负责监控的是各种不同的 exporter。 比如要监控一个 linux 服务器的各项性能指标,则需要在那台服务器上部署一个 node_exporter。然后在普罗米修斯的配置文件上配置上这个 node_exporter 的地址即可。 普罗米修斯的主服务自然会周期性的去拉监控数据并保存在本地。 PS: 普罗米修斯本身就是一个时序数据库,所有监控数据都是带有时间戳的。 我们在普罗米修斯的 UI 上或者通过 grafana, HTTP 接口等查询监控数据的时候, 都是主服务直接查询本地的时序数据库返回的结果。 下面是服务启动后便可通过 9090 端口访问主服务的 UI 界面:

在这里插入图片描述

如图如果我们部署了在每台机器 上 都部署了 node_exporter, 就会通过 PromQL(普罗米修斯自己定义的一个类 SQL 语言,后面再讲)查询到当前的性能信息。 上图用了 node_load15 这个语句从所有 node_exporter 获取到的数据中查询到了当前所有机器的 15 分钟内 CPU 的平均负载。 至于部署 node_exporter 的方法也很 简单, 可以二进制包部署也可以 docker 部署。 就在上面的链接里能下载的到。

总用量 16524
-rw-r--r-- 1 work work    11357 5月  29 2019 LICENSE
-rwxr-xr-x 1 work work 16900416 5月  29 2019 node_exporter
-rw-r--r-- 1 work work      463 5月  29 2019 NOTICE

上面就是下载了 node_exporter 解压后的结果。 其中 node_exporter 就是个二进制文件 , 直接运行就可以了。

在这里插入图片描述

上面是普罗米修斯的架构图。 刚才说过普罗米修斯是 pull 架构, 主服务会根据配置的时间参数周期性的拉取各个 exporter 提供的接口来抓取数据。 但是这样的架构有两个缺陷:

  • 需要 exporter 是一个持续运行着的并且对外暴露 http 接口的服务, 可是有些时候我们的监控数据的收集不能满足这样的条件
  • 主服务周期性的抓取数据, 就会有事件遗漏的可能性。 比如我们要监控 k8s 集群中 pod 的事件, 如果有 pod 挂掉需要监控到这个数据。 但是很多 pod 的重启时间是很快的, 可能 10s 就完成了重启, 而普罗米修斯的主服务在 pod crash 的期间没有调用 exporter 抓取数据,那么这个事件就会遗漏掉监控不到。 PS:大部分的 exporter 的逻辑都是反应当前这一时刻的系统状态,不会保存历史状态。 所以一旦事件过去了, 主程序才来抓取 exporter, 就无法采样到这个事件的数据了。

基于以上两个原因, 普罗米修斯又推出了上图中右边的 pushgateway 和相关的 client。 pushgateway 可以理解为一种特别的 exporter, 主服务还是根据配置周期性的抓取数据。 只不过, pushgateway 本身并不监控数据,它的数据都来自使用普罗米修斯开源的 client 开发的程序上 。 这些程序不用像 exporter 一样需要是持续运行的服务,它可是任何形式的程序,只要它按自己的逻辑收集到监控数据后, 通过主动 push 的方式发送给 pushgateway 就好了。 通过这个机制就补全了普罗米修斯没有主动 push 机制的缺点。 在做测试项目的时候 , 我们往往在测试程序中把收集到的测试数据通过 push 到 pushgateway 上, 这样 就可以让测试自定义的监控能力无缝的对接到产品提供的普罗米修斯上了(产品里一般都是会部署 pushgateway 的)。

对接 grafana

普罗米修斯本身并不擅长可视化的能力, 所以对应的可视化报表一般都是交给 grafana。 所以可以先部署一个 grafana。

docker run --name grafana -d
-p 8000:3000 grafana/grafana

然后按照下面的步骤进行配置:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

granfa 的配置非常的复杂, 所以一般我们都是在社区找一个开源的模板 import 进来然后自己改吧改吧。 比如可以在https://grafana.com/grafana/dashboardsnode_exporter 的模板。然后引入到 grafana 中。比如我们搜到下面的模板,中搜到 把 id 复制过来,或者直接下载模板 json。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

通过如此配置就可以快速搭建一个可用的仪表盘了。

相关实践学习
通过可观测可视化Grafana版进行数据可视化展示与分析
使用可观测可视化Grafana版进行数据可视化展示与分析。
相关文章
|
8天前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
55 3
|
2天前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
9 1
|
26天前
|
自然语言处理 机器人 Python
ChatGPT使用学习:ChatPaper安装到测试详细教程(一文包会)
ChatPaper是一个基于文本生成技术的智能研究论文工具,能够根据用户输入进行智能回复和互动。它支持快速下载、阅读论文,并通过分析论文的关键信息帮助用户判断是否需要深入了解。用户可以通过命令行或网页界面操作,进行论文搜索、下载、总结等。
39 1
ChatGPT使用学习:ChatPaper安装到测试详细教程(一文包会)
|
9天前
|
Prometheus 监控 Cloud Native
基于Docker安装Grafana和Prometheus
Grafana 是一款用 Go 语言开发的开源数据可视化工具,支持数据监控和统计,并具备告警功能。通过 Docker 部署 Grafana 和 Prometheus,可实现系统数据的采集、展示和告警。默认登录用户名和密码均为 admin。配置 Prometheus 数据源后,可导入主机监控模板(ID 8919)进行数据展示。
42 2
|
7天前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第27天】在智能运维中,Prometheus和Grafana的组合已成为监控和告警体系的事实标准。Prometheus负责数据收集和存储,支持灵活的查询语言PromQL;Grafana提供数据的可视化展示和告警功能。本文介绍如何配置Prometheus监控目标、Grafana数据源及告警规则,帮助运维团队实时监控系统状态,确保稳定性和可靠性。
38 0
|
1月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【10月更文挑战第1天】告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
55 4
|
2月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【9月更文挑战第5天】性能测试是确保应用在高负载下稳定运行的关键。本文介绍Apache JMeter和Locust两款常用性能测试工具,帮助识别并解决性能瓶颈。JMeter适用于测试静态和动态资源,而Locust则通过Python脚本模拟HTTP请求。文章详细讲解了安装、配置及使用方法,并提供了实战案例,帮助你掌握性能测试技巧,提升应用性能。通过分析测试结果、模拟并发、检查资源使用情况及代码优化,确保应用在高并发环境下表现优异。
72 5
|
3月前
|
Prometheus 监控 Cloud Native
自定义grafana_table(数据源Prometheus)
综上所述,自定义 Grafana 表格并将 Prometheus 作为数据源的关键是理解 PromQL 的查询机制、熟悉 Grafana 面板的配置选项,并利用 Grafana 强大的转换和自定义功能使数据展示更为直观和有洞见性。随着对这些工具更深入的了解,您将可以创建出更高级的监控仪表盘,以支持复杂的业务监控需求。
250 1
|
3月前
|
Prometheus 监控 Cloud Native
prometheus学习笔记之Grafana安装与配置
prometheus学习笔记之Grafana安装与配置
|
3月前
|
存储 Prometheus 监控
Grafana 与 Prometheus 集成:打造高效监控系统
【8月更文第29天】在现代软件开发和运维领域,监控系统已成为不可或缺的一部分。Prometheus 和 Grafana 作为两个非常流行且互补的开源工具,可以协同工作来构建强大的实时监控解决方案。Prometheus 负责收集和存储时间序列数据,而 Grafana 则提供直观的数据可视化功能。本文将详细介绍如何集成这两个工具,构建一个高效、灵活的监控系统。
367 1