Prometheus第一篇:Prometheus架构解析
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架构解析的更多相关文章
- [转帖]我花了10个小时,写出了这篇K8S架构解析
我花了10个小时,写出了这篇K8S架构解析 https://www.toutiao.com/i6759071724785893891/ 每个微服务通过 Docker 进行发布,随着业务的发展,系统 ...
- 【prometheus】学习第一篇——prometheus
前言: 说到监控方案,市面上开源的有很多,最常用的zabbix,深入使用zabbix以后,才知道zabbix设计团队有多厉害,简直是一个完美的监控告警方案.但是在针对docker的监控上还差点,需要自 ...
- Kubernetes容器集群管理环境 - Prometheus监控篇
一.Prometheus介绍之前已经详细介绍了Kubernetes集群部署篇,今天这里重点说下Kubernetes监控方案-Prometheus+Grafana.Prometheus(普罗米修斯)是一 ...
- ActiveMQ源码架构解析第一节(转)
工作四年已久,也快到了而立之年,本人也酷爱技术,总是想找一些途径来提升自己,想着温故而知新所以就写起了博客,然而写博客这个想法也是酝酿了很久,近期也看到了有很多人在问关于ActiveMQ的相关问题,有 ...
- lnmp架构(第一篇)
lnmp 架构 第一篇 nginx 源码安装 nginx的安装包:nginx-1.12.0.tar.gz 建议安装前的修改: 在nginx的解压包中修改文件nginx-1.12.0/src/core/ ...
- 第一篇:解析Linux是什么?能干什么?它的应用领域!
不得不说的前言(不看完睡觉会尿床):饿货们~!你说你们上学都学了点啥?这不懂那也不懂,快毕业了啥也不会.专业课程不学好毕业了也找不到好工作.爸妈给你养大,投资了多少钱.你毕业后随便找了个什么鸡毛工作开 ...
- 王院生:Apache APISIX 微服务网关极致性能架构解析
2019 年 10 月 27 日,又拍云联合 Apache APISIX 社区举办 API 网关与高性能服务最佳实践丨Open Talk 杭州站活动,Apache APISIX PPMC 成员王院生做 ...
- Winform常用开发模式第一篇
Winform常用开发模式第一篇 上一篇博客最后我提到“异步编程模型”(APM),之后本来打算整理一下这方面的材料然后总结一下写篇文章与诸位分享,后来在整理的过程中不断的延伸不断地扩展,发现完全偏离了 ...
- JDFS:一款分布式文件管理系统,第五篇(整体架构描述)
一 前言 截止到目前为止,虽然并不完美,但是JDFS已经初步具备了完整的分布式文件管理功能了,包括:文件的冗余存储.文件元信息的查询.文件的下载.文件的删除等.本文将对JDFS做一个总体的介绍,主要是 ...
随机推荐
- Codeforces1312E Array Shrinking 区间DP
题意 给你一个数组\(a\),只要满足\(a_i=a_{i+1}\)就可以将这两个元素合并成一个值为\(a_i+1\)的元素,问数组最小长度. 解题思路 记得之前某场的F和这题差不多,当时好像是相邻且 ...
- 博主心酸历程:初始Hadoop安装安装过程出现的各种问题。
首先,作为一名第一次安装Hadoop的小白,费时六七个小时终于安装好了. 如果你是一名小白也是第一次安装,请参考以下教程: 链接:https://pan.baidu.com/s/1pwu6_znWKz ...
- Pycharm 激活插件与码
Pycharm2020最新永久激活码插件(支持Windows),100%永久激活 用到pycharm工具发现没用多久时间又过期了,在网上有看到很多朋友都遇到同样的情况,于是找到了一批很不错的永久激活方 ...
- padding-top:100%解决高度塌陷问题
<div class="img_box"> <img src="http://sms-shop.oss-cnbeijing.aliyuncs.com/$ ...
- C#中部分重点前端设置问题
背景 在工作及学习过程中经常会遇到一些奇怪的需求,这里便会记录我遇到的奇怪需求及解决方法. 内容 一.动态设置页面标题 1.前端设置 JS代码: document.title="这是一个标题 ...
- idea导入spring源码
1.环境: Intellij idea 2018.2 gradle 4.10.2 spring framework:5.2.0 注意版本不符合可能会导致编译失败. 参考版本: 1.首先下载安装 Int ...
- Python 字符串去除相邻重复的元素
1 def quchong(S): 2 str1=[""] 3 for i in S: 4 if i == str1[-1]: 5 str1.pop() 6 else: 7 str ...
- 初等函数——指数函数(Exponential Function)
一般地,函数叫做指数函数,其中x是自变量,函数的定义域是R.
- WeihanLi.Npoi 1.10.0 更新日志
WeihanLi.Npoi 1.10.0 更新日志 Intro 上周有个网友希望能够导入Excel时提供一个 EndRowIndex 来自己控制结束行和根据字段过滤的,周末找时间做了一下这个 feat ...
- 突然挂了!Redis缓存都在内存中,这下完了!
我是Redis,一个叫Antirez的男人把我带到了这个世界上. “快醒醒!快醒醒!”,隐隐约约,我听到有人在叫我. 慢慢睁开眼睛,原来旁边是MySQL大哥. “我怎么睡着了?” “嗨,你刚才是不是出 ...