Prometheus是新一代的监控系统解决方案,原生支持云环境,和kubernetes无缝对接,的却是容器化监控解决方案的不二之选。当然对传统的监控方案也能够兼容,通过自定义或是用开源社区提供的各种exporter无疑又为prometheus丰满羽翼。那么从今天开始我将会持续更新我对prometheus使用过程中的了解和踩坑记录,一是为了沉淀自己,二是为同学们提供个思路。

  • 1、架构介绍

上图就是prometheus的一个整体的架构图,这篇文章就围绕这张图展开,介绍prometheus的工作机制和各组件提供的功能。

  • 1.1 Prometheus server组件介绍

    a. Prometheus server:

    它是prometheus的主程序,本身也是一个时序数据库,它来负责整个监控集群的数据拉取、处理、计算和存储。和zabbix采取push监控数据的方式不同,

    1、prometheus的设计是使用pull方式由服务端主动拉取监控数据。关于push和pull两种方式的优缺点争论一直存在,这里不再过多赘述,只需知道即可。

    当prometheus拉取到数据之后首先进行的操作是数据的处理:根据配置的数据格式或者标签转换/删除等操作。

    2、数据处理完成后是根据rule中配置的规则进行计算:比如CPU使用率达到80%是一条告警规则,则prometheus会对数据进行计算看是否命中规则,命中则发送消息给alertmanager组件,否则不做操作。

    3、完成上面的一些操作之后,prometheus会根据配置时间周期保存数据到本地或者是第三方存储中

    以上便是prometheus server做的比较重要的事情(大致流程是这样,细节方面未做探讨。)

  • 1.2 Alertmanager 组件介绍

    b. Alertmanager:

    它是prometheus的告警组件,负责整个集群的告警发送、分组、调度、警告抑制等功能。

    需要知道的是alertmanager本身是不做告警规则计算的,简单来说就是,alertmanager不去计算当前的监控取值是否达到我设定的阈值,上面已经提过该部分规则计算是prometheus server来计算的,alertmanager监听prometheus server发来的消息,然后在结合自己的配置,比如等待周期,重复发送告警时间,路由匹配等配置项,然后把接收到的消息发送到指定的接收者。同时他还支持多种告警接收方式,常见的如邮件、企业微信、钉钉等。

  • 1.3 Pushgateway 组件介绍

    c. Pushgateway

    它是prometheus的一个中间网管组件,类似于zabbix的zabbix-proxy。它主要解决的问题是一些不支持pull方式获取数据的场景,比如:自定义shell脚本来监控服务的健康状态,这个就没办法直接让prometheus来拉数据,这时就可以借助pushgateway,它是支持推送数据的,我们可以把对应的数据按照prometheus的格式推送到pushgateway,然后配置prometheus server拉取pushgateway即可。

  • 1.4 数据展示组件介绍

    上图右下角的几个组件,grafana、prometheus-ui是用来图形化展示数据的组件,其中prometheus-ui是prometheus项目原生的ui界面,但是在数据展示方面不太好用,因此推荐grafana来展示你的数据,grafana支持prometheus的PromQL语法,能够和prometheus数据库交互,加上grafana强大的ui功能,我们可以很轻松的获取到很多好看的界面,同时也有很多做好的模版可以使用。

  • 1.5 服务发现组件介绍

    对一个监控系统来说,自动发现肯定是一个最基础的功能,试想如果没有自动发现,添加10000台主机到监控系统该是中什么体验?还好,prometheus是有该组件的,而且还很多,支持多种自动发现机制,比如基于文件、DNS、consul、zookeeper、etcd、kuberbetes等服务自动发现的方式,这些服务发现方式后面都会写到。

本篇写到这里就要结束了,主要是简要介绍了下prometheus中各组件的大致功能,对prometheus又一个大致的了解。下一篇会写几种prometheus的安装方式。

Prometheus第一篇:Prometheus架构解析的更多相关文章

  1. [转帖]我花了10个小时,写出了这篇K8S架构解析

    我花了10个小时,写出了这篇K8S架构解析 https://www.toutiao.com/i6759071724785893891/   每个微服务通过 Docker 进行发布,随着业务的发展,系统 ...

  2. 【prometheus】学习第一篇——prometheus

    前言: 说到监控方案,市面上开源的有很多,最常用的zabbix,深入使用zabbix以后,才知道zabbix设计团队有多厉害,简直是一个完美的监控告警方案.但是在针对docker的监控上还差点,需要自 ...

  3. Kubernetes容器集群管理环境 - Prometheus监控篇

    一.Prometheus介绍之前已经详细介绍了Kubernetes集群部署篇,今天这里重点说下Kubernetes监控方案-Prometheus+Grafana.Prometheus(普罗米修斯)是一 ...

  4. ActiveMQ源码架构解析第一节(转)

    工作四年已久,也快到了而立之年,本人也酷爱技术,总是想找一些途径来提升自己,想着温故而知新所以就写起了博客,然而写博客这个想法也是酝酿了很久,近期也看到了有很多人在问关于ActiveMQ的相关问题,有 ...

  5. lnmp架构(第一篇)

    lnmp 架构 第一篇 nginx 源码安装 nginx的安装包:nginx-1.12.0.tar.gz 建议安装前的修改: 在nginx的解压包中修改文件nginx-1.12.0/src/core/ ...

  6. 第一篇:解析Linux是什么?能干什么?它的应用领域!

    不得不说的前言(不看完睡觉会尿床):饿货们~!你说你们上学都学了点啥?这不懂那也不懂,快毕业了啥也不会.专业课程不学好毕业了也找不到好工作.爸妈给你养大,投资了多少钱.你毕业后随便找了个什么鸡毛工作开 ...

  7. 王院生:Apache APISIX 微服务网关极致性能架构解析

    2019 年 10 月 27 日,又拍云联合 Apache APISIX 社区举办 API 网关与高性能服务最佳实践丨Open Talk 杭州站活动,Apache APISIX PPMC 成员王院生做 ...

  8. Winform常用开发模式第一篇

    Winform常用开发模式第一篇 上一篇博客最后我提到“异步编程模型”(APM),之后本来打算整理一下这方面的材料然后总结一下写篇文章与诸位分享,后来在整理的过程中不断的延伸不断地扩展,发现完全偏离了 ...

  9. JDFS:一款分布式文件管理系统,第五篇(整体架构描述)

    一 前言 截止到目前为止,虽然并不完美,但是JDFS已经初步具备了完整的分布式文件管理功能了,包括:文件的冗余存储.文件元信息的查询.文件的下载.文件的删除等.本文将对JDFS做一个总体的介绍,主要是 ...

随机推荐

  1. Oracle 回滚段undo

    Undo的作用 数据的回滚 一致性读 表的闪回(事务,查询的闪回..) 失败会话的恢复 回滚rollback操作 SQL> archive log list; ORA-01031: 权限不足 S ...

  2. 数据库行转列的sql语句

    问题描述 假设有张学生成绩表(CJ)如下Name Subject Result张三 语文 80张三 数学 90张三 物理 85李四 语文 85李四 数学 92李四 物理 82 现在 想写 sql 语句 ...

  3. Spring Boot与日志

    目录 1.日志框架 2.市面上的日志框架 2.1 下表行间无任何对应关系 2.2 日志门面:slf4j 2.3 日志实现:logback 2.4 Spring Boot怎么做的呢? 3.slf4j的使 ...

  4. Ubuntu更换国内源--解决终端下载速度慢的问题

    目前我已知的更改国内源的方法基本上就两种,第一种,把/etc/apt/sources.list文件里的源更换一下,改成阿里云或者其它源.第二种,更换在设置中software&updates(软 ...

  5. Linux下Python3.6的安装及避坑指南

    Python3的安装 1.安装依赖环境 Python3在安装的过程中可能会用到各种依赖库,所以在正式安装Python3之前,需要将这些依赖库先行安装好. yum -y install zlib-dev ...

  6. linux基础命令一、

    命令格式:  命令  -选项   参数 uname -r   查看内核版本 uname -m 查看系统版本 alias 别名. 举例: alias grep ='grep --color=auto' ...

  7. CentOS7下mysql忘记root密码的处理方法

    1.  vi /etc/my.cnf,在[mysqld]中添加 skip-grant-tables 例如: [mysqld] skip-grant-tables datadir=/var/lib/my ...

  8. Centos7,PHP7安装swoole

    Swoole详细介绍及如何使用,这里暂时不做说明,可以参考一下文档:https://wiki.swoole.com/ 源码编译安装 下载地址如下: https://github.com/swoole/ ...

  9. 口罩预约管理系统——数据库设计(前端+PHP+MySQL)

    目录 一.背景 二.口罩预约管理系统介绍 三.数据库设计 四.MySQL创建数据库以及数据表 五.数据库设计总结 一.背景 2020年的疫情影响了我们的生产生活,政府不断加大力度联防联控,遏制疫情的蔓 ...

  10. Powershell编程基础-002-日期及日期格式化

    在Powershell中,关于日期,时间计算与格式化,常用的如下: $today=Get-Date                                                    ...