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 数据 存储 设置 prometheus数据库_应用程序

适用于哪些场景

不适用于哪些场景

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 数据 存储 设置 prometheus数据库_Prometheus 数据 存储 设置_02


Prometheus提供了/metrics接口,可以通过这个接口采集Prometheus server自身的状态信息。http://localhost:9090/metrics

使用表达式

Prometheus的metrics中有个指标:promhttp_metric_handler_requests_total表示metrics接口的请求次数。使用这个指标演示expression的使用

Prometheus 数据 存储 设置 prometheus数据库_应用程序_03


返回结果形式:metricsName{lable=value}使用lable进行筛选:

Prometheus 数据 存储 设置 prometheus数据库_应用程序_04


通过以上的Prometheus的安装和使用能体会到,客户端只要能提供metrics采集接口,就可以通过Prometheus观测该系统。