Prometheus 入门(一):架构和基本概念学习

2019-06-25  本文已影响0人  星光下的胖子

目录:
  1. Prometheus 简介
  2. Prometheus 组成与架构
  3. Prometheus 的相关概念


近年来,随着容器技术的迅猛发展,Kubernetes 已然成为受大家热捧的容器集群管理系统。Prometheus 作为 CNCF 的重要成员,活跃度仅此于 Kubernetes,现已广泛应用于 Kubernetes 集群的监控系统中。

一、Prometheus 简介

Prometheus 是一套开源的系统监控报警框架。它始于2012年由 SoundCloud 创建,并作为社区开源项目进行开发。2016,Prometheus 正式加入 Cloud Native Computing Foundation (简称:CNCF),成为受欢迎程度仅次于 Kubernetes 的项目。

作为新一代的监控系统,Prometheus 具有以下特点:

需要指出的是,由于 Prometheus 采集数据可能会丢失,因此 Prometheus 不适用于对采集数据要求 100% 精确的场景,例如计费系统。但如果用于记录时间序列数据,Prometheus 是具有很大的查询优势。此外,Prometheus 适用于微服务框架。

二、Prometheus 组成与架构

Prometheus 生态圈中包含了多个组件,其中许多组件是可选的:

值得一提的是,大多数的 Prometheus 组件都是由 Go 语言编写的,这使得它们易于(作为二进制文件进行)构建和部署。

下图为 Prometheus 官网中的架构图:



由上图可见,Prometheus 的主要模块包块包括:Prometheus server、jobs/exporters、Pushgateway、PromQL、Alertmanager以及图形化管理界面(如:Grafana)。

其大概的工作流程:

三、Prometheus 的相关概念

下面介绍 Prometheus 的几个重要概念:Data model、Metric types、Jobs and instances。

Data model

Prometheus 几乎将所有的数据存储为时间序列,每个时间序列都由 metrics 名和一组键值对(也称为标签)唯一标识的,不同的标签代表不同的时间序列。除了存储时间序列外,Prometheus 还可以根据查询结果生成临时派生的时间序列。

Metric types

Prometheus 的 Client Libraries 提供了四种核心的 metric 类型:Counter、Gauge、Histogram、Summary。它们目前只在 Client Libraries 和 wire 协议中进行区分,Prometheus server 尚未使用类型信息,而是将所有的数据保存为无类型的时间序列。这个在将来或许会有所变化。

Prometheus 的 Client Libraries 提供的四种 metric 类型如下:

Jobs and instances

instance:一个单独 scrape 的目标,一般对应于一个进程。
job:一组同种类型的 instances(主要用于保证可扩展性和可靠性)。

当 scrape 目标时,Prometheus 会自动给这个 scrape 的时间序列附加一些标签(例如:instance、job)以便更好的分别。

示例说明

以实际的 metric 为例,对上述概念加以说明:

http_requests_total{code="2",handler="graph",instance="172.18.238.200:9090",job="prometheus"}
http_requests_total{code="2",handler="rules",instance="172.18.238.200:9090",job="prometheus"}
http_requests_total{code="2",handler="status",instance="172.18.238.200:9090",job="prometheus"}

可见,这三个 metric 的名字都一样,凭 handler 标签的值不同而被标识为不同的metrics。这类标签只会向上累加,属于 Counter 类型的 metric,且 metrics 中包含 instance 和 job 这两个标签。

上一篇 下一篇

猜你喜欢

热点阅读