• Prometheus(普罗米修斯)监控架构简介


    最近在了解一些云原生相关的内容,其中就涉及到Prometheus这一个监控框架,下面就简要介绍一下这一个监控框架。

    1. 架构图

    下面是官方给出的架构图:
    在这里插入图片描述
    可以看到,普罗米修斯是基于pull-push即拉取和推送模型,(其实这样的说法太抽象了,简而言之就是获取监控指标metrics和发出告警信息alert以及进行可视化

    2. 各个组件介绍

    下面是对于里面主要的组件的介绍:

    • 用于采集和存取时间序列数据的 Prometheus server
    • 用于监测应用的客户端库 (client lib,在客户端这里,图中没有标出)
    • 用于支持短期的作业(Short-lived jobs)的 push gateway(下面有Short-lived jobs和push gateway的定义)
    • 诸如 HAProxy,StatsD,Graphite 等服务的专用 exporter (下面有他的定义)
    • 用于处理告警的 alertmanager
    • PromQL是Prometheus内置了一个强大的数据查询语言。
    • Grafana是可视化的工具。
    • docker镜像是有Prometheus的,所以Prometheus能够在K8s上迅速的部署
    • Exporters/Jobs:Prometheus的数据采集组件,负责收集目标对象(host, container…)的性能数据,并通过HTTP接口提供给Prometheus Server。支持数据库、硬件、消息中间件、存储系统、http服务器、jmx等。
    • Short-lived jobs:瞬时任务的场景,无法通过pull方式拉取,需要使用push方式,与PushGateway搭配使用
    • PushGateway:应对部分push场景的组件可选组件,这部分监控数据先推送到Push Gateway上,然后再由Prometheus Server端拉取 。用于存在时间较短,可能在Prometheus来拉取之前就消失了的 jobs

    由于Prometheus基于Golang编写,所以是原生支持go的。
    此外还有以下特点:

    1. 定义了开放指标数据标准:支持pull和push两种方式的数据采集,以基于HTTP的Pull方式采集时序数据,只有实现了prometheus监控数据格式才可以被prometheus采集;以Push方式向中间网关(Gateway)推送时序数据,能更灵活地应对各种监控场景。
    1. 支持通过静态文件配置和动态发现机制发现监控对象,自动完成数据采集。prometheus目前已经支持Kubernetes、Consul等多种服务发现机制,可以减少运维人员的手动配置环节。

    所以,如果你是在k8sKubernetes)上面部署Prometheus监控,**可以通过对外暴露服务(service的方式,利用Prometheus进行监控。**可以参考资料一最后一节的内容。

    3. 官方给出的特点

    下面是官方文档上说的Prometheus的特点:

    • 具有由指标名称和键/值对标识的时间序列数据的多维数据模型
    • PromQL,一种灵活的查询语言
    • 不依赖分布式存储(指的是普罗米修斯监控应用本身,不是说它不支持对分布式场景进行监控)
    • 时间序列收集通过HTTP上的拉取模型(就是前面的 pull)进行
    • 通过中间网关(就是前面的gateway)支持推送时间序列(就是前面的 push
    • 通过服务发现或静态配置发现目标
    • 多种图形和仪表板支持模式
      也就是实际上Prometheus本身并不做直接监控,只是做了一个监控整合,把监控信息获取,数据分析,告警,前端界面等整合到一起了。

    参考资料

    1. https://hulining.gitbook.io/prometheus/introduction/overview 这是一个对于Prometheus的入门的介绍,如果有时间,很推荐跟着教程完整的走一遍
    2. https://www.modb.pro/db/45956
  • 相关阅读:
    面试总结之消息中间件
    配置错误的smb共享
    4.03 用户中心-订单管理功能开发
    基于paddlehub 未戴口罩检测算法
    传统图像增强三大类别:点增强、空域增强、频域增强
    代码随想录刷题|LeetCode 62.不同路径 63. 不同路径 II
    Hadoop MapReduce 2.x 工作原理
    【Spring】DI依赖注入
    ubuntu 20.04 SD 卡分区类型 msdos 改为 GPT 的方法
    [附源码]java毕业设计JAVA点餐系统
  • 原文地址:https://blog.csdn.net/Sansipi/article/details/127040015