企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
# prometheus的特点 Prometheus是一个开源的完整监控解决方案,其对传统监控系统的测试和告警模型进行了彻底的颠覆,形成了基于中央化的规则计算、统一分析和告警的新模型。 相比于传统监控系统Prometheus具有以下优点: 易于管理:只有一个单独的二进制文件,不存在任何的第三方依赖,采用Pull的方式拉取数据 强大的数据模型:每一条时间序列由指标名称(Metrics Name)以及一组标签(Labels)唯一标识 强大的查询语言PromQL:内置了一个强大的数据查询语言PromQL,可以实现多种查询、聚合 高性能:单实例可以处理数以百万的监控指标、每秒处理数十万的数据点 # prometheus大概的工作流程是: Prometheus server 定期从配置好的 jobs 或者 exporters 中拉 metrics,或者接收来自 Pushgateway 发过来的 metrics,或者从其他的 Prometheus server 中拉 metrics。 Prometheus server 在本地存储收集到的 metrics,并运行已定义好的 alert.rules,记录新的时间序列或者向 Alertmanager 推送警报。 Alertmanager 根据配置文件,对接收到的警报进行处理,发出告警。 在图形界面中,可视化采集数据。 ------------------------------------------------------------------------------------------------------------- # 合理选择黄金指标 采集的指标有很多,我们应该关注哪些?Google 在“Sre Handbook”中提出了“四个黄金信号”:延迟、流量、错误数、饱和度。实际操作中可以使用 Use 或 Red 方法作为指导,Use 用于资源,Red 用于服务。 Use 方法:Utilization、Saturation、Errors。如 Cadvisor 数据 Red 方法:Rate、Errors、Duration。如 Apiserver 性能指标 # Prometheus 采集中常见的服务分三种: 在线服务:如 Web 服务、数据库等,一般关心请求速率,延迟和错误率即 RED 方法 离线服务:如日志处理、消息队列等,一般关注队列数量、进行中的数量,处理速度以及发生的错误即 Use 方法 批处理任务:和离线任务很像,但是离线任务是长期运行的,批处理任务是按计划运行的,如持续集成就是批处理任务,对应 K8S 中的 job 或 cronjob, 一般关注所花的时间、错误数等,因为运行周期短,很可能还没采集到就运行结束了,所以一般使用 Pushgateway,改拉为推。 # 使用 Prometheus 监控java的场景如下: * 日常监控,观察 CPU、内存、垃圾回收时间、线程状态、异常日志数量等是否正常 * 日常监控,观察接口调用数量,HTTP 请求时间是否正常 * 新服务上线,持续观察各种指标是否正常,接口请求量有多少(可以判断使用人数有多少) * 压测时,观察并发量有多少,异常具体有哪些类型,各自抛出多少次 * 发生线上事故时,观察当时 CPU、内存、线程数、接口调用数、HTTP 最大请求时间、数据库 ops、数据库请求耗时,分析可能的问题原因 参考:https://zhuanlan.zhihu.com/p/357830096 包括java怎么使用prometheus 参考:https://code2life.top/2020/02/25/0051-prometheus-in-action-thinking/ 监控告警总结与思考