Prometheus怎么用来帮助解决性能问题之入门篇
Prometheus是啥?Prometheus做什么的?
Prometheus - Monitoring system & time series database
就是个开源的监控系统,显示数据的图表,可自定义查询数据规则,集成多种语言客户端
哦,就是跑job,从自己的客户端里抓数据(自己的项目里还得集成它的client,侵入了啊喂),显示成图表嘛,大家莫慌,直接上
Prometheus怎么用?不要怂直接上官网教程撸一遍
下载解压版
Download | Prometheus
或者 docker
Docker Hub
我无耻的下载了windows版本的。
https://github.com/prometheus/prometheus/releases/download/v2.13.1/prometheus-2.13.1.windows-amd64.tar.gz
不先启动下吗?
双击prometheus.exe,windows提示有风险,点击more info,选择run anyway
或者命令行运行吧,这玩意儿启动时真的快
看到打印信息,习惯性的扫一遍,它能给我们看到的是
level=info ts=2019-11-01T02:14:28.256Z caller=main.go:296 msg="no time or size retention was set so using the default time retention" duration=15d
默认保留15天数据
level=info ts=2019-11-01T02:14:28.257Z caller=main.go:332 msg="Starting Prometheus" version="(version=2.13.1, branch=HEAD, revision=6f92ce56053866194ae5937012c1bec40f1dd1d9)"
level=info ts=2019-11-01T02:14:28.258Z caller=main.go:333 build_context="(go=go1.13.1, user=root@88e419aa1676, date=20191017-13:31:33)"
level=info ts=2019-11-01T02:14:28.258Z caller=main.go:334 host_details=(windows)
level=info ts=2019-11-01T02:14:28.258Z caller=main.go:335 fd_limits=N/A
level=info ts=2019-11-01T02:14:28.258Z caller=main.go:336 vm_limits=N/A
level=info ts=2019-11-01T02:14:28.261Z caller=main.go:657 msg="Starting TSDB ..."
level=info ts=2019-11-01T02:14:28.261Z caller=web.go:450 component=web msg="Start listening for connections" address=0.0.0.0:9090
level=info ts=2019-11-01T02:14:28.264Z caller=head.go:514 component=tsdb msg="replaying WAL, this may take awhile"
level=info ts=2019-11-01T02:14:28.281Z caller=head.go:562 component=tsdb msg="WAL segment loaded" segment=0 maxSegment=0
level=info ts=2019-11-01T02:14:28.282Z caller=main.go:672 fs_type=unknown
level=info ts=2019-11-01T02:14:28.282Z caller=main.go:673 msg="TSDB started"
启动了个TSDB,现在做mertrics的都用它,time-series database,可以按时间点和时间区间索引数据
level=info ts=2019-11-01T02:14:28.283Z caller=main.go:743 msg="Loading configuration file" filename=prometheus.yml
加载了个配置文件prometheus.yml,配置文件这咱熟悉,一会肯定是要玩配置了
level=info ts=2019-11-01T02:14:28.295Z caller=main.go:771 msg="Completed loading of configuration file" filename=prometheus.yml
level=info ts=2019-11-01T02:14:28.295Z caller=main.go:626 msg="Server is ready to receive web requests."
那就打开配置文件先看看,也不是很复杂
# 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.# 还有它自己的,这里可以扩展到其他appscrape_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']# 它启动的时候不告诉我们访问的端口,感情这放在配置里呢,浏览器贴入localhost:9090# 看到页面,反正是起来了,下面继续看看怎么用吧
要怎么用呢?当然是配置配置文件啦
Prometheus 通过HTTP 抓数据,而且还抓自己的数据。
那我们就来抓抓除它自己以外的app的数据
进入prometheus.yml:
在global下面添加,不添加也行,不影响我们的小demo,注释里也说了是和外部app交互时用的label
# Attach these labels to any time series or alerts when communicating with# external systems (federation, remote storage, Alertmanager).external_labels:monitor: 'codelab-monitor'
然后添加在自己的scrape_configs下面添加新的job,叫做example-random。
你看,加job拉数据了又。
scrape_configs: - job_name: 'prometheus' # Override the global default and scrape targets from this job every 5 seconds. scrape_interval: 5s static_configs:- targets: ['localhost:9090']- job_name: 'example-random' # Override the global default and scrape targets from this job every 5 seconds. scrape_interval: 5s static_configs: - targets: ['localhost:8080', 'localhost:8081'] labels: group: 'production' - targets: ['localhost:8082'] labels: group: 'canary'
官网自己用的是go写的,先尝个鲜,后面性能调试的时候,我们直接用springboot做例子。
Ensure you have the Go compiler installed and have a working Go build environment (with correct GOPATH) set up.
# Fetch the client library code and compile example. git clone https://github.com/prometheus/client_golang.git
cd client_golang/examples/random
go get -d
go build # Start 3 example targets in separate terminals:
./random -listen-address=:8080
./random -listen-address=:8081
./random -listen-address=:8082
这就可以了,在9090页面里,在执行按钮后面选择一个metric的label,就可以看数据了。
但我们一般都是要count avg啥的,看简单的不合适,在线上做这个就不合适了,在线计算耗时占资源,最好先定义好了,这时候就是rules入场了
创建prometheus.rules.yml,和prometheus.yml在同一个目录
添加如下代码
groups: - name: example rules: - record: job_service:rpc_durations_seconds_count:avg_rate5m expr: avg(rate(rpc_durations_seconds_count[5m])) by (job, service)
在prometheus.yml下添加,存在别的地方的就按照自己的路径改下
rule_files:- 'prometheus.rules.yml'
重启,还是老方式,打开9090,输入job_service:rpc_durations_seconds_count:avg_rate5m
执行,选择graph和console都看看。
其实在status菜单下面configuration,rules,targets,直接打开点击就送,不用手动输入的。
好了,现在算是入了门了。
下篇文章讲讲如何用prometheus来帮助解决性能问题。
Prometheus怎么用来帮助解决性能问题之入门篇相关推荐
- sqlserver性能调优入门篇
相信不少的朋友,无论是做开发.架构的,还是DBA等,都经常听说"调优"这个词.说起"调优",可能会让很多技术人员心头激情澎湃,也可能会让很多人感觉苦恼.当然,也 ...
- 教你50招提升ASP.NET性能(十五):解决性能问题时不要低估UI的价值
(26)Don't underestimate the value of the UI when tackling performance problems 招数26: 解决性能问题时不要低估UI的价 ...
- Python:通过执行100万次打印来比较C和python的性能,以及用C和python结合来解决性能问题的方法 .
Python:通过执行100万次打印来比较C和python的性能,以及用C和python结合来解决性能问题的方法 . 参考文章: (1)Python:通过执行100万次打印来比较C和python的性能 ...
- Strace 解决性能问题案例一则
前言 前面一篇文章说了因为公司同事在解决一个故障(性能问题)时利用到strace,在学习strace工具的时候也查看<性能之巅>第十三章中,大神解决性能问题的思路和方法.本文将我遇到的故障 ...
- 【转】一文掌握 Linux 性能分析之网络篇(续)
[转]一文掌握 Linux 性能分析之网络篇(续) 在上篇网络篇中,我们已经介绍了几个 Linux 网络方向的性能分析工具,本文再补充几个.总结下来,余下的工具包括但不限于以下几个: sar:统计信息 ...
- Spark性能优化指南——基础篇
在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark的功能涵盖了大数据领域的离线批处理.SQL类处理.流式/实时计算.机器学习.图计算等各种不同类型的计算操作,应用 ...
- Unity性能优化 :合批篇
前言 本系列为一些性能优化的小知识,是日常游戏开发中与性能表现的一些点,本篇为该系列文章的第二篇,前篇链接: 第一篇: Unity性能优化:资源篇 在早期Unity中,对于合批的处理手段主要是下面三种 ...
- 【转】【技术博客】Spark性能优化指南——高级篇
http://mp.weixin.qq.com/s?__biz=MjM5NjQ5MTI5OA==&mid=2651745207&idx=1&sn=3d70d59cede236e ...
- Android App 性能优化系列结语篇
Android App 性能优化系列结语篇 原文出处:http://gold.xitu.io/post/581f4ad667f3560058a33057 关于Android App的优化, 从第一篇的 ...
最新文章
- xshell 家庭/学校 免费教育版下载
- 【Android RTMP】RTMPDumb 源码导入 Android Studio ( 交叉编译 | 配置 CMakeList.txt 构建脚本 )
- Bing空间数据服务
- 在Outlook中修改脱机文件(.ost)的保存位置
- mysql 中有没有临时表_MySQL临时表的简单用法
- 学习Python的好去处,微信公众号“Python小屋”
- 优秀网站设计:打造有吸引力的网站(原书第3版)
- 百度宣布成立量子计算研究所,段润尧加盟任所长
- 【数据仓库】数据仓库的发展史
- 【Python-2.7】对列表进行排序
- 基于CANape开发之Functions(一)
- AB变频器常见故障的原因及处理方法
- JavaScript基础--DOM部分01--李南江
- Bilibili的SWOT竞争力分析
- ZZULIOJ:1132: 数字字符统计
- 0基础快速开发口袋网盘小程序
- 锻造宝剑!如何用一款手机打造一个移动渗透工具箱??
- nosql包括的数据库
- 数据分析总结一:数据分析思维
- 为什么对渣土车的监控和管理如此重要
热门文章
- js 地理位置查询经纬度定位地图
- python matplotlib 双y轴图像实现
- 江苏省计算机技能大赛项目,南通职业大学荣获2020年江苏省职业院校技能大赛计算机网络应用赛项一等奖...
- C++实现double factorial双阶乘的算法(附完整源码)
- 计算机考研算什么学士学位
- bootstraptable 超多列_Bootstrap mergeCells合并单元格(多列)
- 机械键盘按键不灵敏怎么办、机械键盘按键坏了怎么办、维修机械键盘
- private方法可以被代理吗?
- [HarmonyOS][鸿蒙]fp、vp、px相互转换
- 网页设计作业-个人博客