why is prometheus?
prometheus是开源的监控和告警系统,是个TSDB(time serial database)时序数据库。
主要功能
- 具有由metrics和键/值对标识的时间序列数据的多维数据模型
- PromQL, 支持灵活的查询
- 不依赖分布式存储,每个server节点都是自治的
- 通过HTTP以pull模式收集数据
- 通过intermediary gateway支持push形式收集数据
- 可以通过service discovery或者静态配置要采集的target
- 支持多样的仪表盘和图表
metrics
metrics翻译过来就是指标的意思。用很通俗的话说,指标是数字测量。 时间序列意味着随着时间的推移记录变化。 用户想要测量的内容因应用程序而异。 对于 Web服务器,它可能是请求时间,对于数据库,它可能是活跃连接数或活跃查询数等。
metrics在理解应用程序以某种方式工作方面起着重要作用。 假设你发现线上Web 应用程序运行缓慢, 必须要有一些信息帮助你了解应用程序发生了什么。 例如,当请求数量很高时,应用程序可能会变慢。 如果你有请求计数指标,你可以找出原因并增加服务器数量来处理负载。
组件
Prometheus生态由多种组件组成,许多是可选的:
- Prometheus server用于抓取并存储时序数据
- client libriaries用于应用程序
- push gateway用于short-lived jobs
- 一些特殊用于的exporters 用于 HAProxy StatsD 等等
- alertmanager用于告警
架构图
适用于哪些场景
不适用于哪些场景
Prometheus重视可靠性,但是无法保证精确性,比如要求统计每个请求的耗时。如果有这种需求,可以使用其他的组件实现数据采集和分析
使用
下载
官网下载地址:https://prometheus.io/download/
进入解压后的目录可看到以下文件:
LICENSE
NOTICE
console_libraries/
consoles/
data/
prometheus*
prometheus.yml
promtool*
prometheus是可执行的二进制文件,可以使用–help来查看支持的命令
./prometheus --help
在启动之前先做些配置
配置
Prometheus 使用 YAML 格式配置,Prometheus下载解压后有个叫做prometheus.yml的配置文件,内容如下:
global:
scrape_interval: 15s
evaluation_interval: 15s
rule_files:
# - "first.rules"
# - "second.rules"
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
样例中有三块配置:global、rule_files、scrape_configs
global控制Prometheus server的全局配置,其中scrape_interval控制server采集target的频率,evaluation_interval控制server执行rule的频率。Prometheus使用rules创建新的时序数据和生成告警。
rule_files指定了rule文件位置。
scrape_configs控制了Prometheus监控的资源。此处配置的是监控Prometheus自身,默认path是/metrics
启动
配置文件配置完成之后就可以启动了
./prometheus --config.file=prometheus.yml
通过 http://localhost:9090 查看
Prometheus提供了/metrics接口,可以通过这个接口采集Prometheus server自身的状态信息。http://localhost:9090/metrics
使用表达式
Prometheus的metrics中有个指标:promhttp_metric_handler_requests_total表示metrics接口的请求次数。使用这个指标演示expression的使用
返回结果形式:metricsName{lable=value}使用lable进行筛选:
通过以上的Prometheus的安装和使用能体会到,客户端只要能提供metrics采集接口,就可以通过Prometheus观测该系统。