你好,我是测试开发工程师——臻叔。
欢迎和我交流测试领域相关问题(测试入门、技术、python交流都可以)
我们在做性能测试的时候,需要监控服务器的各项性能指标。
除了吞吐率和响应时间之外,我们还需要关注服务器的系统性能指标。
系统性能指标包括:CPU使用率、内存使用率、硬盘、硬盘读写IO、带宽和流量等等。
相信大部分人一看到系统性能指标的采集,脑海里马上会条件反射般浮现:top、free、vmstat、netstat、mpstat、du、df...等等命令。
但是现在互联网架构,基本上都是分布式架构(服务器集群化)。
假设一个搜索服务集群有30台实例,如果我们要用top命令去观测30台服务器的性能,那么我们得创建30个ssh连接,然后在30个终端窗口中,输入top命令去观测,就算有100只眼睛,也很难看得过来。
观测的成本实在是太高了!
我们有没有什么好的解决方案,可以有效的观测服务器的系统性能数据呢?
当然有,那就是 prometheus + Grafana。
Prometheus是一个开源的系统监控和警报工具包,最初是在SoundCloud上构建的。自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发人员和用户社区。
在 Prometheus + Grafana 的体系架构下,Prometheus 相当于一个注册中心。
1.1 下载 prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.27.1/prometheus-2.27.1.linux-amd64.tar.gz
1.2 解压
tar xvfz prometheus-2.27.1.linux-amd64.tar.gz
1.3 查看配置文件(一开始可以不用做任何修改)
用 Vim 打开 prometheus.yml
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# 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']
我们可以看到,prometheus 的默认端口号是:9090
1.4 启动 prometheus
./prometheus --config.file=prometheus.yml
通过浏览器输入:http://your_ip:9090,
假如能够跳转到如下页面,说明 prometheus 安装启动成功。
node_exporter 可以看作是 prometheus 的一个监控插件,用于监控服务器的系统指标。
2.1 下载 node_exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz
2.2 解压
tar xvfz node_exporter-1.1.2.linux-amd64.tar.gz
2.3 启动 node_exporter
默认端口是:9100
./node_exporter
通过浏览器输入:http://your_ip:9100/metrics
假如能够跳转到如下页面,则说明 node_exporter 安装启动成功。
2.4 修改 prometheus.yml 配置
到这里,我们还需要修改一下 prometheus.yml 配置,
回到prometheus的目录下,通过
vim prometheus.yml
来修改 prometheus.yml 配置文件。
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# 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 的 ip 和端口号填上
- job_name: 'server'
static_configs:
- targets: ['localhost:9100']
2.5 重启 Prometheus
./prometheus --config.file=prometheus.yml
第三步:安装Grafna
3.1 下载 Grafna
wget https://dl.grafana.com/oss/release/grafana-8.0.1.linux-amd64.tar.gz
3.2 解压
tar xvzf grafana-8.0.1.linux-amd64.tar.gz
3.3 启动 Grafna
./bin/grafana-server web
通过浏览器输入:http://your_ip:3000,
进入Grafna的监控平台。
一开始会让你输入用户名和密码,默认用户名和密码都是 admin。
随后,你需要重新设置一个密码。
登陆之后,会进入到 Grafna 的欢迎页面。
第四步:配置 Grafna
4.1 配置数据源(Data sources)
点击 Add data source
选择数据源为 Prometheus,点击 Select
在 “Settings” Tab下,填写 Name 和 URL
URL 为 Prometheus 的服务地址。
填写完毕后,点击 Save & test
随后,再点击上边的 “Dashboards” Tab
把 Prometheus Stats、Prometheus 2.0 Stats、Grafana metrics 都 import 进来。
这样,数据源就已经配置好了。
4.2 配置 Dashboard 模版
“8919” 是一个中文的 Dashboard 模版的ID,输入后,点击 Load
如果想用别的 Dashboard,也可以上官网去自由选择别的展示面板,
链接: https://grafana.com/dashboards
输入自定义的 Dashboad 名称,
选择 VictoriaMetrics 下拉框为:Prometheus
然后点击 Import,
这样就完成了 Dashboard 的配置。
4.3 完成后的画面
有木有十分的酷炫屌炸天!?
因为篇幅有限,本文只是展示最简单的搭建性能监控平台,
Prometheus还可以添加 MySQL监控、MQ监控、Redis监控、告警管理工具等等插件,这里就不一一演示了。
感兴趣的小伙伴可以参考以下博客进行搭建。
https://blog.csdn.net/qq_37128049/article/details/108143110
我是专注分享测试干货的臻叔,喜欢的可以关注哦~
其他精华文章——
UI自动化:
贝壳找房:移动端的UI自动化测试实战分享(真实案例)62 赞同 · 6 评论文章
接口测试:
程序员臻叔:全网最详细的接口测试实战案例!小白必看!154 赞同 · 12 评论文章
抖音测试面试题答案:
面试官:你来设计一下抖音直播功能测试用例吧!143 赞同 · 6 评论文章
百度测试开发面试题答案:
程序员臻叔:8000字-百度测试开发面试题答案(臻叔)214 赞同 · 10 评论文章
❤既然都看到这里啦,请你帮个忙:
1、点赞,让更多小伙伴看到;
2、关注我,持续更新测试干货。
关注我,免费咨询测试问题→→www.zhihu.com/people/nethuangdz
最后,感谢您的阅读。
你的盛赞就是对创作者最大的支持!
原网址: 访问
创建于: 2023-06-13 10:21:08
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论