Prometheus-开源监控系统

Prometheus是一款高活跃生态系统的开源系统监控和警告工具包,它前身是SoundCloud的警告工具包。

prometheus主要特征

  • 多维度数据模型
  • 灵活的查询语言
  • 不依赖分布式存储,单个服务器节点是自主的
  • 以HTTP方式,通过pull模型拉去时间序列数据
  • 也通过中间网关支持push模型 通过服务发现或者静态配置,来发现目标服务对象
  • 支持多种多样的图表和界面展示,grafana也支持它

组件

  • 主服务Prometheus Server负责抓取和存储时间序列数据
  • 客户库负责检测应用程序代码
  • 支持短生命周期的PUSH网关
  • 基于Rails/SQL仪表盘构建器的GUI
  • 多种导出工具,可以支持Prometheus存储数据转化为HAProxy、StatsD、Graphite等工具所需要的数据存储格式
  • 警告管理器
  • 命令行查询工具
  • 其他各种支撑工具

Prometheus架构

在这里插入图片描述
Prometheus服务,可以直接通过目标拉取数据,或者间接地通过中间网关拉取数据。它在本地存储抓取的所有数据,并通过一定规则进行清理和整理数据,并把得到的结果存储到新的时间序列中,PromQL和其他API可视化地展示收集的数据。

适用场景

Prometheus在记录纯数字时间序列方面表现非常好。它既适用于面向服务器等硬件指标的监控,也适用于高动态的面向服务架构的监控。对于现在流行的微服务,Prometheus的多维度数据收集和数据筛选查询语言也是非常的强大。Prometheus是为服务的可靠性而设计的,当服务出现故障时,它可以使你快速定位和诊断问题。它的搭建过程对硬件和服务没有很强的依赖关系。

不适用场景

Prometheus的价值在于可靠性,甚至在很恶劣的环境下,你都可以随时访问它和查看系统服务各种指标的统计信息。 如果你对统计数据需要100%的精确,它并不适用,例如:它不适用于实时计费系统。

安装

安装方式包括,预编译二进制文件/源码/docker安装

  1. docker安装方式

    1、docker run -p 9090:9090 prom/prometheus;

    2、绑定挂载–在运行Prometheus服务的主机上,做一个本地到docker容器的配置文件关系映射:

    docker run -p 9090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
    

    3、自定义镜像—利用Dockerfile创建一个Prometheus配置目录prometheus.yml, Dockerfile应该这样写:

    FROM prom/prometheus
    ADD prometheus.yml /etc/prometheus/
    

    然后编译和运行它:

    docker build -t my-prometheus .
    docker run -p 9090:9090 my-prometheus
    

数据模型

存储的数据都是时间序列—

  • {metric和label:s度量指标名称和标签}
  • 有序的采样值
  • notation(符号)
    [metric name]{[label name]=[label value], …}<–>api_http_requests_total{method=”POST”, handler=”/messages”}

度量指标类型

  • counter(计数器):是累计度量指标,只能递增的数值。计数器主要用于统计服务的请求数、任务完成数和错误出现的次数等;
  • Gauge(测量器):是度量指标,它表示一个既可以递增, 又可以递减的值。测量器主要测量类似于温度、当前内存使用量等,也可以统计当前服务运行随时增加或者减少的Goroutines数量;
  • Histogram(柱状图):使用histogram_quantile()函数, 计算直方图或者是直方图聚合计算的分位数阈值
  • summary(总结):是采样点分位图统计,(通常的使用场景:请求持续时间和响应大小)。

Jobs&Instances(任务和实例):

当Prometheus拉取一个目标, 会自动地把两个标签添加到度量名称的标签列表中,分别是:

  • job: 目标所属的配置任务名称api-server。
  • instance: 采样点所在服务: host:port

安装和启动服务:

操作 步骤
下载 http://localhost:9090/metrics 下载到本机,远程连接10.226.133.41服务器,执行rz,选中下载的Prometheus-*.tar.gz上传到服务器端;
提取 tar zxvf prometheus-.tar.gz /// cd prometheus-
配置 prometheus.yml
启动 prometheus: ./prometheus --config.file=prometheus.yml---->指定配置文件

规则

为聚集到抓取的数据,设置规则并写入到新的时间序列中,

prometheus.rules ---->

job_service:rpc_durations_seconds_count:avg_rate5m = avg(rate(rpc_durations_seconds_count[5m])) by (job, service)

为了使Prometheus服务使用这个新的规则,在prometheus.yml配置文件的global配置区域添加一个rule_files语句---->

rule_files:

  - 'prometheus.rules'

查询

提供一个函数式的表达式语言,使用户实时查找和聚合时间序列数据。

  1. 表达式语言数据类型:
    • instant vector–瞬时向量(同一时刻,抓取的所有度量指标数据,所有数据具有相同的时间戳);
    • range vector–范围向量(任何一个时间范围内,抓取的所有度量指标数据);
    • scalar–标量(简单的浮点值);
    • string
  2. 时间序列选择器:
    • 瞬时向量选择器-----http_requests_total{job=“prometheus”,group=“canary”}
    • 范围向量选择器----http_requests_total{job=“prometheus”}[5m](s/m/h/d/w/y)(过去5min钟内的时间序列数据)
    • 偏移修饰符offset;

函数列表:

猜你喜欢

转载自blog.csdn.net/ccccsy99/article/details/107523700