博客
关于我
监控神器-Prometheus(原理和实践)
阅读量:550 次
发布时间:2019-03-09

本文共 2982 字,大约阅读时间需要 9 分钟。

Prometheus 特 点

Prometheus 是一款强大且灵活的数据监控工具,适用于微服务架构中对时间序列数据的采集、存储和查询。以下是其主要特点:

  • 多维度数据模型

    Prometheus 的数据模型支持灵活的标签体系,通过标签(键值对)将时间序列数据细粒化,便于按维度查询和分析。可以针对每个标签(如环境、机器类型、应用实例)进行聚合、切割或切片操作,支持双精度浮点类型和全 Unicode 标签。

  • 灵活的 PromQL 语法

    在同一个查询中,可以对多个 metrics 进行算术运算(如加、乘、取整),空间替换(如连接),取分位数等操作,极大提升数据处理的灵活性。

  • 高效的数据存储

    Prometheus 服务器每个采样点仅占 3.5 字节,处理能力强,单实例可以支持数百万级别的 time series 数据。

  • 按需拉取或推送数据

    Prometheus 采用 pull 模式,计算机直接向服务器拉取数据;同时支持通过 Push Gateway 向服务器推送数据,适用于防火墙或网络隔离场景。

  • 多样化可视化界面

    提供丰富的可视化图表类型(如表、条形、柱状、折线图等),满足不同用户的数据展示需求。


  • Prometheus 组成及架构

    Prometheus 生态系统由多个关键组件组成,典型安装包括:

  • Prometheus Server

    数据收集和存储的核心,负责从配置好的 jobs 或 exporters拉取 metrics,运行 alert 规则生成警报。

  • Push Gateway

    用于短期 metric 数据的推送,适用于防火墙限制或网络不稳定的场景,支持持久化存储。

  • ** exporters**

    负责将第三方系统(如数据库、应用程序)的 metrics 暴露给 Prometheus。常见的有 Node exporter(收集系统资源信息)、http exporter 等。

  • Alertmanager

    处理 Prometheus 生成的警报,进行去重、分组后发送给配置的通知接收端(如 PagerDuty、OpsGenie等)。

  • PromQL

    提供强大的查询语言,支持复杂的数据聚合和计算。


  • Prometheus 工作流程

  • 数据采集

    Prometheus 按需从配置的 jobs、exporters 或 Push Gateway 拉取 metrics,或主动从 Push Gateway 推送数据。

  • 数据存储

    将收集到的 metrics 存储为时间序列数据,建立一个多维度的数据模型。

  • 告警处理

    Prometheus 根据预设的 alert 规则,生成并推送告警信息到 Alertmanager,Alertmanager 接下来根据配置处理并发布告警。

  • 可视化展示

    利用 Prometheus 提供的图形界面对数据进行可视化展示,便于监控和分析。

  • 扩展与管理

    支持通过配置文件或 API 扩展监控模块,实现对任意数据源的统一管理。


  • 数据模型与 Metric 类型

  • 数据模型

    Prometheus 中的数据由以下元素构成:

    • Metric 名字:唯一标识 metric,如 http_requests_total 表示 HTTP 请求数。
    • 标签:将数据细粒化,例如 http_requests_total{method=“GET”}。
    • 样本:包含数值和时间戳的数据点。
    • 格式:采用类似 {metric_name}{label_key1="label_value1", label_key2="label_value2"} 的方式表示。
  • Metric 类型

    Prometheus 提供四种主要的 metric 类型:

    • Counter:累计型 metric,用于统计事件数量(如请求数、错误数等)。

    • 示例:http_requests_total{method=“GET”} 返回 8。

    • Gauge:常规型 metric,用于监控动态变化的值,如系统资源使用情况。

    • 示例:go_goroutines{instance=“172.17.0.2”} 返回 147。

    • Histogram:时间分布型 metric,适合监控持续时间,如请求延迟。

    • Summary:类似于 Histogram,提供计数和百分位信息。


  • JOBS 和 INSTANCES

    在 Prometheus TERMINOLOGY 中:

    • Instance:单个目标(如 1.2.3.4:5670)。
    • Job:多个 INSTANCES 组成的集合,用于定义同一任务的多实例部署(如四个副本的 API 服务器)。

    Node exporter

    Node exporter 的主要功能是从目标节点(如服务器或客户端)收集系统级别的 metrics,包括:

    • CPU 和内存使用情况
    • 磁盘使用情况
    • 网络统计数据(如带宽、包数量)
    • 进程信息(如 goroutines)

    这些数据可直接暴露给 Prometheus 或通过 Push Gateway 推送。


    PushGateway

    PushGateway 是 Prometheus 生态中的重要工具,主要用于:

  • 数据推送:可以将局部或远程节点的 metrics 直接推送到 Prometheus server,而不是等待 pull 发现。
  • 短期 metrics 处理:适用于处理短期或高密度的数据时间序列(如日志 rotated事件)。
  • 注意事项

    • PushGateway 可能导致数据丢失,需注意配置持久化存储。
    • 推送数据量大时可能带来性能问题。

    安装实践

    Prometheus 服务器(Push Gateway/Alertmanager 含默认安装)

  • 下载 & 安装

    Prometheus 提供单独的二进制文件安装,适合本地快速部署。

  • 配置

    基本配置文件(config.yml)包含:

    • scrapinterval:设置采样频率。
    • evaluation_interval:设置告警计算频率。
    • push_to推送目标端地址和端口。
  • 启动

    ./prometheus --config-file=prometheus.yml
  • 访问

    Prometheus 界面访问地址:http://localhost:9090


  • PushGateway 安装

  • 下载 & 安装

    go get -download https://github.com/prometheus-community/pushgateway/releases/download/...
  • 配置命令运行

    ./pushgateway --listen=:9090 --source=:9090

  • 文档

    • Prometheus 官方文档Prometheus Documentation
    • 文档连接
      • [Prometheus 提示本文档](https://prometheus.io/docs/guides Niagara)
      • [Pushgateway 使用手册](https://github.com/prometheus-community/pushgateway docs)

    本文详细介绍了 Prometheus 的特点、架构、工作流程、数据模型、安装方法及常用实践,希望能为用户掌握 Prometheus 提供全面的参考。

    转载地址:http://fomsz.baihongyu.com/

    你可能感兴趣的文章
    MySQL万字总结!超详细!
    查看>>
    Mysql下载以及安装(新手入门,超详细)
    查看>>
    MySQL不会性能调优?看看这份清华架构师编写的MySQL性能优化手册吧
    查看>>
    MySQL不同字符集及排序规则详解:业务场景下的最佳选
    查看>>
    Mysql不同官方版本对比
    查看>>
    MySQL与Informix数据库中的同义表创建:深入解析与比较
    查看>>
    mysql与mem_细说 MySQL 之 MEM_ROOT
    查看>>
    MySQL与Oracle的数据迁移注意事项,另附转换工具链接
    查看>>
    mysql丢失更新问题
    查看>>
    MySQL两千万数据优化&迁移
    查看>>
    MySql中 delimiter 详解
    查看>>
    MYSQL中 find_in_set() 函数用法详解
    查看>>