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怎么用来帮助解决性能问题之入门篇相关推荐

  1. sqlserver性能调优入门篇

    相信不少的朋友,无论是做开发.架构的,还是DBA等,都经常听说"调优"这个词.说起"调优",可能会让很多技术人员心头激情澎湃,也可能会让很多人感觉苦恼.当然,也 ...

  2. 教你50招提升ASP.NET性能(十五):解决性能问题时不要低估UI的价值

    (26)Don't underestimate the value of the UI when tackling performance problems 招数26: 解决性能问题时不要低估UI的价 ...

  3. Python:通过执行100万次打印来比较C和python的性能,以及用C和python结合来解决性能问题的方法 .

    Python:通过执行100万次打印来比较C和python的性能,以及用C和python结合来解决性能问题的方法 . 参考文章: (1)Python:通过执行100万次打印来比较C和python的性能 ...

  4. Strace 解决性能问题案例一则

    前言 前面一篇文章说了因为公司同事在解决一个故障(性能问题)时利用到strace,在学习strace工具的时候也查看<性能之巅>第十三章中,大神解决性能问题的思路和方法.本文将我遇到的故障 ...

  5. 【转】一文掌握 Linux 性能分析之网络篇(续)

    [转]一文掌握 Linux 性能分析之网络篇(续) 在上篇网络篇中,我们已经介绍了几个 Linux 网络方向的性能分析工具,本文再补充几个.总结下来,余下的工具包括但不限于以下几个: sar:统计信息 ...

  6. Spark性能优化指南——基础篇

    在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark的功能涵盖了大数据领域的离线批处理.SQL类处理.流式/实时计算.机器学习.图计算等各种不同类型的计算操作,应用 ...

  7. Unity性能优化 :合批篇

    前言 本系列为一些性能优化的小知识,是日常游戏开发中与性能表现的一些点,本篇为该系列文章的第二篇,前篇链接: 第一篇: Unity性能优化:资源篇 在早期Unity中,对于合批的处理手段主要是下面三种 ...

  8. 【转】【技术博客】Spark性能优化指南——高级篇

    http://mp.weixin.qq.com/s?__biz=MjM5NjQ5MTI5OA==&mid=2651745207&idx=1&sn=3d70d59cede236e ...

  9. Android App 性能优化系列结语篇

    Android App 性能优化系列结语篇 原文出处:http://gold.xitu.io/post/581f4ad667f3560058a33057 关于Android App的优化, 从第一篇的 ...

最新文章

  1. xshell 家庭/学校 免费教育版下载
  2. 【Android RTMP】RTMPDumb 源码导入 Android Studio ( 交叉编译 | 配置 CMakeList.txt 构建脚本 )
  3. Bing空间数据服务
  4. 在Outlook中修改脱机文件(.ost)的保存位置
  5. mysql 中有没有临时表_MySQL临时表的简单用法
  6. 学习Python的好去处,微信公众号“Python小屋”
  7. 优秀网站设计:打造有吸引力的网站(原书第3版)
  8. 百度宣布成立量子计算研究所,段润尧加盟任所长
  9. 【数据仓库】数据仓库的发展史
  10. 【Python-2.7】对列表进行排序
  11. 基于CANape开发之Functions(一)
  12. AB变频器常见故障的原因及处理方法
  13. JavaScript基础--DOM部分01--李南江
  14. Bilibili的SWOT竞争力分析
  15. ZZULIOJ:1132: 数字字符统计
  16. 0基础快速开发口袋网盘小程序
  17. 锻造宝剑!如何用一款手机打造一个移动渗透工具箱??
  18. nosql包括的数据库
  19. 数据分析总结一:数据分析思维
  20. 为什么对渣土车的监控和管理如此重要

热门文章

  1. js 地理位置查询经纬度定位地图
  2. python matplotlib 双y轴图像实现
  3. 江苏省计算机技能大赛项目,南通职业大学荣获2020年江苏省职业院校技能大赛计算机网络应用赛项一等奖...
  4. C++实现double factorial双阶乘的算法(附完整源码)
  5. 计算机考研算什么学士学位
  6. bootstraptable 超多列_Bootstrap mergeCells合并单元格(多列)
  7. 机械键盘按键不灵敏怎么办、机械键盘按键坏了怎么办、维修机械键盘
  8. private方法可以被代理吗?
  9. [HarmonyOS][鸿蒙]fp、vp、px相互转换
  10. 网页设计作业-个人博客