Prometheus监控(一)

本文介绍了Prometheus监控系统,对比了与Zabbix的区别,强调了Prometheus在K8S环境中的优势。文章详细讲解了Prometheus的监控体系,包括系统层、中间件、应用层和业务层的监控。此外,还探讨了Prometheus的数据模型、生态组件和数据收集方式,如Exporter、Instrumentation和Pushgateway。最后,提到了防止告警信息轰炸的解决方案——Alertmanager。
摘要由CSDN通过智能技术生成

引言

我们知道 zabbix 在监控界占有不可撼动的地位,功能强大。但是对容器监控显得力不从心。为解决监控容器的问题,引入了 Prometheus 技术。

一、Prometheus 概述

zabbix与prometheus区别

zabbix消耗的资源比较多,如果监控的主机非常多时(服务器数量超过500台),可能会出现监控超时、告警超时、告警系统,单点故障等现象,不过也有很多解决办法,比如提高硬件性能、改变zabbix监控模式、 多套zabbix等。

1. 简介

  • borgmon (监控系统) 对应克隆的版本:prometheus(go语言)
  • 所以prometheus 特别适合K8S 的架构上,作为一个数据监控解决方案,它由一个大型社区支持,有来自700多家公司的6300个贡献者,13500个代码提交和7200个拉取请求

2. 特性

  • 可以自定义多维数据模型,储存更加高效
  • 具有灵活且强大的查询语句(PromQL)
  • 提供本地存储和分布式存储
  • 通过基于HTTP和HTTPS的Pull模型采集时间序列数据(pull数据的推送,时间序列:每段时间点的数据值指标,持续性的产生。横轴标识时间,纵轴标识数据值,一段时间内数值的动态变化,所有的点连线形成大盘式的折线图)
  • 可以通过push gateway进行时序列数据库推送
  • 可以通过服务发现或静态配置去获取要采集的目标服务器(通过consul自动发现和收缩)
  • 支持多种可视化图表及仪表盘

补充:
apen-Falcaon是小米开源的企业级监控工具,用Go语言开发,包括小米、滴滴、美团等在内的互联网公司都在使用它,是一款灵活、可拓展并且高性能的监控方案

3. 监控三大核心步骤

① 数据收集模块 ② 数据提取模块 ③ 监控告警模块

可以细化为下面6层

第一层:数据收集层 (多渠道监控数据)
第二层:数据展示层 (数据生成曲线图展示,对时序数据的动态展示)
第三层:数据提取层 (定时采集数据到监控模块)
第四层:告警规则配置层 (告警规则设置、告警伐值设置)
第五层:告警事件生成层 (实时记录告警事件、形成分析图表,趋势分析、可视化)
第六层:用户展示管理层 (同一用户管理、集中监控、集中维护)

二、Prometheus 监控体系

1. 系统层监控

  • CPU、load、Memory、swap、disk、I/O、process 等

  • 网络监控:网络设备、工作负载、网络延迟、丢包率等

2. 中间件及基础设施类监

如果你想在Spring Cloud项目中使用Prometheus监控一个没有Controller的方法,可以考虑使用Micrometer来收集自定义的指标数据。Micrometer是一个通用的指标收集库,可以集成到Spring Boot和Spring Cloud项目中。 首先,你需要添加Micrometer依赖到你的项目中: ``` <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-core</artifactId> <version>${micrometer.version}</version> </dependency> ``` 然后,你可以在你的方法中添加Micrometer计数器来记录调用次数和执行时间。例如: ``` import io.micrometer.core.instrument.Counter; import io.micrometer.core.instrument.Metrics; import io.micrometer.core.instrument.Timer; public class MyService { private final Counter myCounter = Metrics.counter("my_counter"); private final Timer myTimer = Metrics.timer("my_timer"); public void myMethod() { myCounter.increment(); Timer.Sample sample = Timer.start(); // 执行你的方法代码 sample.stop(myTimer); } } ``` 在上面的代码中,我们创建了一个计数器`myCounter`来记录方法调用次数,以及一个计时器`myTimer`来记录方法执行时间。在方法中,我们首先增加计数器的值,然后使用计时器记录方法的执行时间。 最后,你可以使用Prometheus的HTTP接口来访问Micrometer收集的指标数据。例如,你可以使用以下命令来查询`my_counter`计数器的值: ``` curl http://localhost:8080/actuator/prometheus | grep my_counter ``` 这样就可以在没有Controller的方法中使用Prometheus监控了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值