Prometheus最全详解(监控功能及原理使用)

Prometheus最全详解(监控功能及原理使用)-mikechen

Prometheus简介

Prometheus最全详解(监控功能及原理使用)-mikechen

Prometheus是一个开源的系统监控和警报工具,广泛用于云原生环境和容器化应用的监控和性能分析。

 

Prometheus功能

Prometheus为系统监控提供了强大的工具和功能,支持多维数据分析、动态警报、自动服务发现等特性。

以下是Prometheus的主要功能:

1.多维数据模型

Prometheus使用多维数据模型来表示时间序列数据,每个时间序列都由一个唯一的标识符,包括:指标名称和一组标签标识。

2.数据采集和存储

Prometheus支持从各种数据源中采集指标数据,包括应用程序、操作系统、容器、服务发现和云平台等。

3.指标类型

Prometheus支持多种指标类型,包括计数器(Counter)、仪表(Gauge)、直方图(Histogram)和摘要(Summary)等数据。

4.数据查询

Prometheus提供了PromQL(Prometheus Query Language)查询语言,允许用户灵活地查询和聚合数据。

5.警报和通知

Prometheus可以设置警报规则,当指标数据达到预设的阈值时,可以触发警报通知。

6.云原生支持

Prometheus在云原生环境中得到广泛应用,与Kubernetes等容器编排平台集成紧密,能够自动发现和监控容器化应用。

 

Prometheus架构原理

下图是 Prometheus 的整体架构图:

Prometheus最全详解(监控功能及原理使用)-mikechen

从上图可以看出,Prometheus 生态系统包含了几个关键的组件:Prometheus server、Pushgateway、Alertmanager、Web UI 等。

1.Prometheus Server

最核心的组件是 Prometheus server,它负责收集和存储指标数据,支持表达式查询,和告警的生成。

Prometheus server会根据配置定期抓取目标的数据,并将数据存储在本地时间序列数据库中。

除此之外,Prometheus Server 还负责数据的压缩和清理。

 

2.PushGateway 

PushGateway 允许短暂性的指标数据推送到 Prometheus,这对于一些无法被拉取的临时性任务非常有用,如批处理任务。

 

3.数据采集器

数据采集器是用于从各种数据源中收集指标数据的组件,Prometheus 支持许多内置的数据采集器,也允许用户编写自己的数据采集器。

 

4.PromQL

PromQL 是 Prometheus 的查询语言,允许用户使用类似 SQL 的语法来查询和聚合指标数据,用户可以使用 PromQL 进行数据分析、趋势观察、故障排除等操作。

 

5.WebUI

虽然 Prometheus 本身不提供可视化功能,但通常与其他可视化工具,比如: Grafana结合使用,将采集到的数据进行图表展示和仪表盘设计。

 

Prometheus使用示例

1.安装Prometheus

首先,你需要下载并安装 Prometheus,可以从官方网站或仓库获取二进制文件或容器镜像。

wget https://github.com/prometheus/prometheus/releases/download/v2.30.0/prometheus-2.30.0.linux-amd64.tar.gz
tar xvfz prometheus-2.30.0.linux-amd64.tar.gz
cd prometheus-2.30.0.linux-amd64

 

2.创建一个配置文件

prometheus.yml,内容如下:

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'sample-app'
    static_configs:
      - targets: ['localhost:8080']

 

3.启动Prometheus 

安装完成后,运行 Prometheus Server。

./prometheus --config.file=prometheus.yml

 

4.定义指标数据

在示例应用的控制器中,定义一个简单的接口来生成示例的指标数据。

import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.MeterRegistry;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class SampleController {

    private final Counter requestsCounter;

    public SampleController(MeterRegistry meterRegistry) {
        requestsCounter = meterRegistry.counter("sample_app_requests_total");
    }

    @GetMapping("/hello")
    public String hello() {
        requestsCounter.increment();
        return "Hello, Prometheus!";
    }
}

 

5.访问示例应用

启动示例应用,确保它运行在端口 8080。

访问 http://localhost:8080/hello 来增加示例应用的请求数。

访问 http://localhost:9090 来访问 Prometheus 的 Web UI。

 

Prometheus总结

总之,使用 Prometheus 需要配置数据采集、定义警报规则、编写查询语句和可视化数据等步骤。

通过合理的配置和使用,你可以实现对系统的实时监控、数据分析和警报通知,帮助你及时发现和解决问题。

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法