Prometheus详解

一、prometheus 介绍
因为Prometheus的高扩展性、高性能、生态好,部署复杂度低,所以这里我们主要讲Prometheus

Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包 。自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发人员和用户社区。现在,它是一个独立的开源项目,并且独立于任何公司进行维护。为了强调这一点并阐明项目的治理结构,Prometheus 在2016年加入了 Cloud Native Computing Foundation,这是继Kubernetes之后的第二个托管项目

Prometheus(由go语言(golang)开发)是一套开源的监控&报警&时间序列数据库的组合。

Prometheus 是一款基于时序数据库的开源监控告警系统,非常适合Kubernetes集群的监控。Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等)。
prometheus和K8S一样属于CNCF
官网地址:https://prometheus.io/
github地址:https://github.com/prometheus

二、prometheus 工作流程


组件介绍
Prometheus Server
Retrieval
获取监控数据
 
TSDB: 
时间序列数据库(Time Series Database),我们可以简单的理解为一个优化后用来处理时间序列数据的软件,并且数据中的数组是由时间进行索引的。具备以下特点:
    大部分时间都是顺序写入操作,很少涉及修改数据
    删除操作都是删除一段时间的数据,而不涉及到删除无规律数据
    读操作一般都是升序或者降序
 
HTTP Server
为告警和出图提供查询接口
1
2
3
4
5
6
7
8
9
10
11
pull metrics 指标采集
Exporters:
    Prometheus的一类数据采集组件的总称。它负责从目标处搜集数据,并将其转化为Prometheus支持的格式。与传统的数据采集组件不同的是,它并不向中央服务器发送数据,而是等待中央服务器主动前来抓取
    用于暴露已有的第三方服务的 metrics 给 Prometheus。
 
Pushgateway
    用于网络不可直达或者生命周期比较短的数据采集job,居于exporter与server端的中转站,将多个节点数据汇总到Push Gateway,再统一推送到server。
1
2
3
4
5
6
service discovery 服务发现
Kubernetes_sd
    支持从Kubernetes中自动发现服务和采集信息。而Zabbix监控项原型就不适合Kubernets,因为随着Pod的重启或者升级,Pod的名称是会随机变化的。
 
file_sd
    通过配置文件来实现服务的自动发现
1
2
3
4
5
altermanager 单独抽离的告警组件
从 Prometheus server 端接收到 alerts(告警) 后,会进行去除重复数据,分组,并路由到对方的接受方式,发出报警。常见的接收方式有:电子邮件,pagerduty,OpsGenie, webhook 等。
1
图形化展示
通过ProQL语句查询指标信息,并在页面展示。虽然Prometheus自带UI界面,但是大部分都是使用Grafana出图。另外第三方也可以通过 API 接口来获取监控指标。
1
工作流程
1、Prometheus server 定期从配置好的 jobs 或者 exporters(出口) 中拉metrics(指标),或者接收来自 Pushgateway 发过来的 metrics(指标),或者从其他的 Prometheus server 中拉 metrics(指标)。
2、默认使用的拉取方式是pull,也可以使用pushgateway提供的push方式获取各个监控节点的数据。
3、将获取到的数据存入TSDB,一款时序型数据库。
4、此时prometheus已经获取到了监控数据,可以使用内置的PromQL进行查询。
5、它的报警功能使用Alertmanager提供,Alertmanager是prometheus的告警管理和发送报警的一个组件。
6、prometheus原生的图标功能过于简单,可将prometheus数据接入grafana,由grafana进行统一管理。
1
2
3
4
5
6
三、Prometheus的优缺点及特点
优点
1、非常少的外部依赖,安装使用超简单
2、已经有非常多的系统集成 例如:docker HAProxy Nginx JMX等等
3、服务自动化发现
4、直接集成到代码
5、设计思想是按照分布式、微服务架构来实现的
1
2
3
4
5
特点
1、一个多维数据模型,其中包含通过度量标准名称和键/值对标识的时间序列数据
2、PromQL,一种灵活的查询语言 ,可利用此维度
3、不依赖分布式存储;单服务器节点是自治的
4、时间序列收集通过HTTP上的拉模型进行
5、通过中间网关支持推送时间序列
6、通过服务发现或静态配置发现目标
7、多种图形和仪表板支持模式
1
2
3
4
5
6
7
不足
1、Prometheus 是基于 Metric 的监控,不适用于日志(Logs)、事件(Event)、调用链(Tracing)。
2、Prometheus 默认是 Pull 模型,合理规划你的网络,尽量不要转发。
3、对于集群化和水平扩展,官方和社区都没有银弹,需要合理选择 Federate、Cortex、Thanos 等方案。
4、监控系统一般情况下可用性大于一致性,容忍部分副本数据丢失,保证查询请求成功。这个后面说 Thanos 去重的时候会提到。
5、Prometheus 不一定保证数据准确,这里的不准确一是指 rate、histogram_quantile 等函数会做统计和推断,产生一些反直觉的结果,这个后面会详细展开。二来查询范围过长要做降采样,势必会造成数据精度丢失,不过这是时序数据的特点,也是不同于日志系统的地方。

————————————————
版权声明:本文为CSDN博主「givenchy_yzl」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/givenchy_yzl/article/details/119808658

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Prometheus是一个开源的监控系统,用于收集和存储时间序列数据。它可以周期性地采集数据,并将多次采集的数据集合形成时间序列。你可以通过访问192.168.10.20:9090/metrics来查看Prometheus自带的内置指标。\[1\] Prometheus的启动可以通过指定配置文件来进行。你可以使用命令"./prometheus --config.file=./file_sd/prometheus.yml"来启动Prometheus,并指定配置文件的路径。\[2\] 在监控概念方面,Prometheus支持两种类型的监控:白盒监控和黑盒监控。白盒监控是指在被监控端内部生成指标,并等待监控系统来采集这些指标数据。而黑盒监控则是指对被监控系统没有侵入性,通过探针机制进行监控。Prometheus支持通过三种方式从目标上抓取指标数据:Exporters、Instrumentation和Pushgateway。Exporters工作在被监控端,周期性地抓取数据并转换为Prometheus兼容格式,等待Prometheus来收集;Instrumentation是指被监控对象内部自身有数据收集和监控的功能,只需要Prometheus直接获取;Pushgateway用于短周期(5s-10s)的数据收集。\[3\] 总结起来,Prometheus是一个功能强大的监控系统,可以通过周期性采集数据来形成时间序列,并支持多种方式来获取指标数据。 #### 引用[.reference_title] - *1* *2* *3* [Prometheus 监控详解](https://blog.csdn.net/shenyuanhaojie/article/details/121775976)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值