前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Prometheus简易入门

Prometheus简易入门

作者头像
雨临Lewis
发布2023-11-08 10:34:28
3220
发布2023-11-08 10:34:28
举报
文章被收录于专栏:雨临Lewis的博客

前言

APM系统即Application Performance Management应用性能管理,目的是对企业的关键业务系统进行实时性能监控和故障管理,主要有以下三个维度:日志聚合Logs、业务指标Metrics、链路跟踪Traces。

在现今很流行的分布式架构微服务系统中,主流的APM系统组件:日志聚合可以使用ELK Stack,业务指标采用Prometheus,链路跟踪使用SkyWalking。比如新时代的银行业务系统需要上云,日志往往采用云服务商提供的日志聚合平台(如阿里云的SLS、腾讯云的CLS)。

架构理解

Prometheus基于HTTP的Pull方式采集时序数据,由Go语言编写,其总体架构分为三层:采集层、存储计算层、应用层。

这里的Pull指的是指标抓取模型,还有对应的Push模型,其区别在于被监控服务是否主动将指标数据推送到监控服务。

在Prometheus的Pull模型中,每一个被Prometheus监控的服务都是一个job。被监控服务一般通过主动暴露metrics端口,或通过exporter方式暴露指标metrics_path,监控服务通过服务发现模块发现被监控服务,从而定期抓取业务指标(如性能,交易量,交易成功率等)。

存储计算层

分为两部分:Prometheus server服务端,Service discovery服务发现。

Prometheus server:存储计算层的核心,包含了存储引擎和计算引擎,有以下三大组件。

  • Retrieval:取数组件,会主动从Pushgateway或者jobs/exporters拉取指标数据。
  • TSDB:时间序列数据库,属于内存数据库,负责存储采集到的时序数据。指标数据以时间序列的形式保存在内存中,并且定时刷到磁盘节点(HDD/SSD)上,默认是两个小时回刷一次。并且为了防止Prometheus发生崩溃或重启时能够恢复数据,Prometheus也提供了类似MySQL中binlog一样的预写日志,当Prometheus崩溃重启时,会读这个预写日志来恢复数据。
  • HTTP server:对外提供HTTP服务。

Service discovery:可以动态发现要监控的目标,支持多种服务发现协议:kubernetes_sd、file_sd等。

采集层

分为两类:一类生命周期较短的作业,一类生命周期较长的作业。

1)短作业:直接通过API(比如Java的MetricsServlet),在退出时(比如Flink)将指标推送给Pushgateway,Retrieval组件再从Pushgateway拉取指标数据。

2)长作业:Retrieval组件直接从jobs或exporters拉取指标数据,jobs或exporters在Prometheus中属于targets,即采集目标。

应用层

分为两种:负责数据可视化、导出的Prometheus web UI,负责告警的Alertmanager。

1)Alertmanager:当PromeQL查询的指标超过Rules文件定义的阈值时,Prometheus会发出一条告警到Alertmanager,manager会将告警下发到配置好的钉钉、微信、邮件等进行告警。

2)Prometheus web UI:官方提供的可视化界面,通过PromQL查询语言来查询指标。也可以使用其他组件进行查询,如Grafana、API Clients。

安装与配置

可以从官网下载自己需要的组件服务:https://prometheus.io/download/

prometheus是必备的服务(即Prometheus server),其他的诸如告警alertmanager、采集blackbox_exporter / node_exporter / pushgateway等自行选择是否需要下载安装,下载后解压开来即可使用。

prometheus服务只有一个配置文件prometheus.yml,初始配置分为三部分:

1)global全局配置模块:

  • scrape_interval:拉取数据的时间间隔,默认为1分钟。
  • evaluation_interval:规则验证(生成alert)的时间间隔,默认为1分钟。

2)alertingrule_files告警配置模块。

3)scrape_configs抓取配置模块。Prometheus自身运行信息可以通过HTTP访问,所以Prometheus可以监控自身的运行数据。

  • job_name:监控作业的名称。
  • static_configs:静态目标配置,固定从某个target拉取数据。
  • targets:指定监控的目标,Prometheus会从配置的target采集指标数据。

Prometheus支持动态更新配置,在启动Prometheus时添加--web.enable-lifecycle启动参数即可开启该功能:

1

prometheus --config.file=/usr/local/etc/prometheus.yml --web.enable-lifecycle

之后无需重启Prometheus,可以通过HTTP服务来通知Prometheus重新加载最新配置:

1

curl -v --request POST 'http://localhost:9090/-/reload'

PromQL

查询时间序列

范围查询

时间位移操作

聚合操作

标量和字符串

合法的PromQL表达式

操作符

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-11-062,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 架构理解
    • 存储计算层
      • 采集层
        • 应用层
        • 安装与配置
        • PromQL
          • 查询时间序列
            • 范围查询
              • 时间位移操作
                • 聚合操作
                  • 标量和字符串
                    • 合法的PromQL表达式
                      • 操作符
                      相关产品与服务
                      Prometheus 监控服务
                      Prometheus 监控服务(TencentCloud Managed Service for Prometheus,TMP)是基于开源 Prometheus 构建的高可用、全托管的服务,与腾讯云容器服务(TKE)高度集成,兼容开源生态丰富多样的应用组件,结合腾讯云可观测平台-告警管理和 Prometheus Alertmanager 能力,为您提供免搭建的高效运维能力,减少开发及运维成本。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档