• Prometheus(一)原理


    简介

    Prometheus是一个开源的监控、告警整体解决方案,最初由SoundCloud构建。从2012年开始,大量的公司开始适配Prometheus,拥有大量的开发者和非常活跃的用户社区。目前已作为独立的项目在运营,并与2016年加入CNCF,是继Kubernetes之后第二个被CNCF托管的项目。

    特性

    • 通过指标名称和标签(key/value对)区分的多维度、时间序列数据模型
    • 灵活的查询语法 PromQL
    • 不需要依赖额外的存储,一个服务节点就可以工作
    • 利用http协议,通过pull模式来收集时间序列数据
    • 需要push模式的应用可以通过中间件gateway来实现
    • 监控目标支持服务发现和静态配置
    • 支持各种各样的图表和监控面板组件

    核心组件

    整个Prometheus生态包含多个组件,除了Prometheus server组件其余都是可选的

    • Prometheus server:主要的核心组件,用来收集和存储时间序列数据
    • client libraries:提供个客户端,主要是用来帮助应用程序更容易生成满足Prometheus格式的监控数据,支持各种各样的开发语言
    • push gateway:对于那些生存时间很短的job工作,采用Prometheus的pull模式可能来不及收集,可以部署这个组件,让job主动把监控指标push到getway,Prometheus再从getway中拉取
    • 各种各样的exports
    • alertmanager 一个告警组件

    架构图

    下面这张图,清晰的描绘出了Prometheus各个组件如何相互协作完成系统监控

    • Prometheus server利用各种各样的服务发现机制获取需要监控的target
    • Prometheus server通过pull从各种各样的target处拉取指标数据
    • 数据可视化组件(Grfana)通过PromQl从Prometheus server查询数据,进行展示
    • Prometheus server根据自己定义的rule,可以提前对指标数据再次进行计算,触发报警的发送到alertmanager组件
    • alertmanager组件根据配置的告警方式发送相应的通知

    适用范围

    Prometheus非常适合用来获取和存储纯粹数值型时间序列数据,如cpu使用率、系统访问量、数据更新频率等,所以多被用来对宿主机和微服务架构中的指标监控。

    Prometheus非常的可靠,每个Prometheus server可以作为一个独立体进行部署,不用依赖其他服务或者是网络。所以在底层基础设施出现问题时,你还可以从Prometheus server中取出历史指标来分析问题出现的原因,并且Prometheus server运行时也不会占用很多的资源

    不适用场景

    因为Prometheus server是周期性pull指标信息的,所以收集的数据可能是不完整的(比如拉取间隔期间,目标服务出现故障,则这个间隔期间中的数据就获取不到),所以对于要求数据100%准确的场景如交易额统计等,Prometheus就不太适合了。对于Prometheus最好的用法就是来做监控,通过Prometheus收集的指标数据对系统的健康状态进行评判和报警处理。

  • 相关阅读:
    MySQL Explain详解
    sql查询:存在A表而不在B表中的数据
    mybatis处理集合、数组参数使用in查询
    mysql日期范围查找(两个日期之间的记录)
    MYSQL查询数据表中某个字段包含某个数值
    springboot+jpa分页(Pageable+Page)
    MySQL单表能存储多少条数据?
    nosql几种热门数据库的优缺点及应用场景
    MySQL百万级数据分页查询及优化
    Redis cluster群集操作
  • 原文地址:https://www.cnblogs.com/gaofeng-henu/p/12532634.html
Copyright © 2020-2023  润新知