Prometheus入门实践

本文介绍了Prometheus的基本原理,包括Counter、Gauge、Histogram和Summary四种数据类型。详细讲解了Prometheus的主要组件,如Prometheus-server、Alertmanager和Push Gateway。文章还涵盖了Prometheus的部署、数据收集、Grafana图表展示以及Alertmanager的报警管理。通过实例演示了从安装到优化的整个流程,帮助读者掌握Prometheus监控系统。
摘要由CSDN通过智能技术生成

官方链接

Prometheus下载地址Prometheus相关文档Prometheus官方文档

一、基本原理

通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。

输出被监控组件信息的HTTP接口被叫做exporter,也就是数据采集端,通常来说,最需要接入改造的就是expoter. 当前互联网上已经有很多成熟的exporter组件,当然用户也可用根据官方提供的sdk自行编写exporter.

注意:prometheus的时间序列数据分为四种类型

  • Counter: 收集的数据是按照某个趋势(增加/减少)一直变化的,我们往往用它记录服务请求总量,错误总数等
  • Gauge: 搜集的数据是一个瞬时的,与时间没有关系,可以任意变高变低,往往可以用来记录内存使用率、磁盘使用率等
  • Histogram: 用于表示一段时间范围内对数据进行采样,并能够对其指定区间以及总数进行统计,通常我们用它计算分位数的直方图。
  • Summary: 和Histogram类似,用于表示一段时间内数据采样结果。它直接存储了 quantile 数据,而不是根据统计区间计算出来的

二、组件介绍

  • 1.Prometheus-server: 负责数据采集和存储(TSDB),提供PromQL查询语言的支持
  • 2.Alertmanager: 警告管理器,用来进行报警
  • 3.Push Gateway: 支持临时性Job主动推送指标的中间网关(通常对应于短声明周期的任务监控)

三、服务过程

  • 1.Prometheus Daemon定时去目标上抓取metrics(指标)数据,每个抓取目标需要暴露一个http服务的接口给server进行定时获取。支持配置文件、文本文件、Zookeeper、Consul、DNS SRV Lookup方式抓取目标;对于长生命周期的服务,采用Pull模式定期拉取数据,对于段生命周期的任务,通过push-gateway来主动推送数据
  • 2.Prometheus本地存储抓取的所有数据,并通过一定规则进行清理和整理数据,并把得到的结果存储到新的时间序列中。
  • 3.Prometheus通过PromQL和其他API可视化地展示收集的数据. 可以作为Grafana的数据源进行图标输出,也可通过API对外提供数据展示
  • 4.PushGateway支持client主动推送metrics到push-gateway(相当于是一个常驻的exporter服务),prometheus定期去push-gateway中获取数据
  • 5.Alertmanager是独立于prometheus的一个组件,支持PromQL查询语句,提供灵活的报警功能

四、pronetheus服务构建使用

下载地址

源码安装

# 三个组件
$ wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz -O node_exporter-0.18.1.tar.gz

$ wget https://github.com/prometheus/prometheus/releases/download/v2.10.0/prometheus-2.10.0.linux-amd64.tar.gz -O prometheus-2.10.0.linux-amd64.tar.gz

$ wget https://github.com/prometheus/pushgateway/releases/download/v0.8.0/pushgateway-0.8.0.linux-amd64.tar.gz -O pushgateway-0.8.0.linux-amd64.tar.gz

docker方式安装

注意:prometheus默认使用yaml格式来定义配置文件

# 编写prometheus默认配置文件
$ cat prometheus.yml
global:
  scrape_interval:     15s
  evaluation_interval: 15s

rule_files:
  # - "first.rules"
  # - "second.rules"

scrape_configs:
  # 会在每个metrics数据中增加job="prometheus"和instance="localhost:9090"的基本数据
  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']

# 热启动prometheus服务
$ docker run --name=prometheus -d -p 9090:9090  -v /Users/xuxuebiao/Desktop/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus --config.file=/etc/prometheus/prometheus.yml --web.enable-lifecycle

$ docker ps -l
CONTAINER
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值