FantasticMao 技术笔记
BlogGitHub
  • README
  • C & Unix
    • C
      • 《C 程序设计语言》笔记
      • C 语言中的陷阱
      • CMake 示例
      • GNU make
      • LLVM Clang
      • Nginx 常用模块
      • Vim 常用命令
    • Unix-like
      • 《深入理解计算机系统》笔记
      • 《UNIX 环境高级编程》笔记 - UNIX 基础知识
      • 《UNIX 环境高级编程》笔记 - 文件 IO
      • 《UNIX 环境高级编程》笔记 - 标准 IO 库
      • 《鳥哥的 Linux 私房菜》笔记 - 目录配置
      • 《鳥哥的 Linux 私房菜》笔记 - 认识与学习 bash
      • 《鳥哥的 Linux 私房菜》笔记 - 任务管理
      • OpenWrt 中的陷阱
      • iptables 工作机制
  • Go
    • 《A Tour of Go》笔记
    • Go vs C vsJava
    • Go 常用命令
    • Go 语言中的陷阱
  • Java
    • JDK
      • 《Java 并发编程实战》笔记 - 线程池的使用
      • 设计模式概览
      • 集合概览
      • HashMap 内部算法
      • ThreadLocal 工作机制
      • Java Agent
    • JVM
      • 《深入理解 Java 虚拟机》笔记 - Java 内存模型与线程
      • JVM 运行时数据区
      • 类加载机制
      • 垃圾回收算法
      • 引用类型
      • 垃圾收集算法
      • 垃圾收集器
    • Spring
      • Spring IoC 容器扩展点
      • Spring Transaction 声明式事务管理
      • Spring Web MVC DispatcherServlet 工作机制
      • Spring Security Servlet 实现原理
    • 其它
      • 《Netty - One Framework to rule them all》演讲笔记
      • Hystrix 设计与实现
  • JavaScript
    • 《写给大家看的设计书》笔记 - 设计原则
    • 《JavaScript 权威指南》笔记 - jQuery 类库
  • 数据库
    • ElasticSearch
      • ElasticSearch 概览
    • HBase
      • HBase 数据模型
    • Prometheus
      • Prometheus 概览
      • Prometheus 数据模型和指标类型
      • Prometheus 查询语法
      • Prometheus 存储原理
      • Prometheus vs InfluxDB
    • Redis
      • 《Redis 设计与实现》笔记 - 简单动态字符串
      • 《Redis 设计与实现》笔记 - 链表
      • 《Redis 设计与实现》笔记 - 字典
      • 《Redis 设计与实现》笔记 - 跳跃表
      • 《Redis 设计与实现》笔记 - 整数集合
      • 《Redis 设计与实现》笔记 - 压缩列表
      • 《Redis 设计与实现》笔记 - 对象
      • Redis 内存回收策略
      • Redis 实现分布式锁
      • Redis 持久化机制
      • Redis 数据分片方案
      • 使用缓存的常见问题
    • MySQL
      • 《高性能 MySQL》笔记 - Schema 与数据类型优化
      • 《高性能 MySQL》笔记 - 创建高性能的索引
      • 《MySQL Reference Manual》笔记 - InnoDB 和 ACID 模型
      • 《MySQL Reference Manual》笔记 - InnoDB 多版本
      • 《MySQL Reference Manual》笔记 - InnoDB 锁
      • 《MySQL Reference Manual》笔记 - InnoDB 事务模型
      • B-Tree 简述
      • 理解查询执行计划
  • 中间件
    • gRPC
      • gRPC 负载均衡
    • ZooKeeper
      • ZooKeeper 数据模型
    • 消息队列
      • 消息积压解决策略
      • RocketMQ 架构设计
      • RocketMQ 功能特性
      • RocketMQ 消息存储
  • 分布式系统
    • 《凤凰架构》笔记
    • 系统设计思路
    • 系统优化思路
    • 分布式事务协议:二阶段提交和三阶段提交
    • 分布式系统的技术栈
    • 分布式系统的弹性设计
    • 单点登录解决方案
    • 容错,高可用和灾备
  • 数据结构和算法
    • 一致性哈希
    • 布隆过滤器
    • 散列表
  • 网络协议
    • 诊断工具
    • TCP 协议
      • TCP 报文结构
      • TCP 连接管理
由 GitBook 提供支持
在本页
  • 简介
  • 特性
  • 指标
  • 组件
  • 架构
  • 适用场景
  • 不适用场景
  • 参考资料
  1. 数据库
  2. Prometheus

Prometheus 概览

简介

Prometheus 是一个开源的系统监控和告警工具。

Prometheus 收集和存储指标信息为时序数据,Prometheus 在存储指标信息时候会记录当前时间戳,以及被称为标签的可选的 key-value 键值对信息。

特性

Prometheus 的主要特性如下:

  • 通过指标名称和键值对来标识的多维时序数据模型

  • 充分利用多维度数据的、灵活的查询语言 PromQL

  • 不依赖于分布式存储;每个服务节点都具有自治能力

  • 通过 HTTP pull 模式收集时序数据

  • 通过中介网关来实现 push 时序数据

  • 通过服务发现或者静态配置来发现监控对象

  • 支持多种图标和仪表盘

指标

用外行的话来说,指标就是测量的数据,时序则意味着随时间的推移而记录的变化。用户对不同的应用程序期望测量的指标大不相同,对于 Web 应用来说可能是请求次数,对于数据库来说可能是活跃连接数、活跃查询数等等。

指标对于理解应用程序特定的方式运行来说,扮演着重要的角色。假如你有一个正在运行的 Web 应用程序,并且发现它运行得很慢。那么你将会需要一些信息来了解你的应用程序究竟发生了什么。例如是由于请求数变高,导致应用程序运行变慢。如果你有请求次数的指标的话,你便可以方便得找出问题原因,然后通过增加服务器数量来承受更高的负载。

组件

Prometheus 的生态系统由多个组件构成,大多数是可选的:

  • 各种各样的工具

Prometheus 的大部分组件使用 Go 编写的,这使它们非常易于构建和部署。

架构

下图展示了 Prometheus 的架构及其一些系统的组件:

Prometheus 可以使用直接抓取或者通过中介网关来间接抓取的方式,从检测任务中抓取指标信息。Prometheus 会将所有抓取的样本数据存储在本地,并基于这些数据来运行规则,用于聚合和记录新的时序数据或者是生成告警。Grafana 和其它使用 Prometheus API 的客户端负责可视化这些数据。

适用场景

Prometheus 适用于记录纯数字的时序数据。它即适合以机器为中心的监控,也适合高度动态的微服务架构的应用监控。

不适用场景

Prometheus 不适用于对数据精确度要求很高的场景,例如「按请求次数计费」,因为它收集的数据不够详细和完整。

参考资料

最后更新于1年前

最主要的 ,用于抓取和存储时序数据

,用于检测应用程序

,用于支持临时的任务

定制化的 ,用于检测各种服务,例如 HAProxy、StatsD、Graphite 等等

,用于处理告警

Prometheus Server
client libraries
push gateway
exporters
alertmanager
Prometheus Overview
architecture.png