HelloCoder HelloCoder
首页
《Java小白求职之路》
《小白学Java》
计算机毕设
  • 一些免费计算机资源
  • 脚手架工具
  • 《从0到1学习Java多线程》
  • 《从0到1搭建服务器》
随笔
关于作者
首页
《Java小白求职之路》
《小白学Java》
计算机毕设
  • 一些免费计算机资源
  • 脚手架工具
  • 《从0到1学习Java多线程》
  • 《从0到1搭建服务器》
随笔
关于作者
  • 《从0到1学习Java多线程》

  • 《从0到1搭建服务器》

  • RPC

  • Spring源码

  • 《Java日志框架》

  • 可观测和监控

    • 可观测是什么
    • Prometheus和OpenTelemetry
    • Python接入opentelemetry
    • 基于opentelemetry的filelog插件收集日志
    • 日志采集
  • 玩转IDEA

  • 专栏
  • 可观测和监控
#Prometheus #OpenTelemetry
码农阿雨
2025-02-21

Prometheus和OpenTelemetry

# 1、Prometheus

微服务以及云原生的趋势下,prometheus (opens new window) 应运而生。

Prometheus (opens new window)是一个开源系统监控和警报工具包。

Prometheus 将其指标收集并存储为时间序列数据,即指标信息与记录时的时间戳一起存储,以及称为标签的可选键值对。

Prometheus 定义了 4 种不同的指标类型:Counter(计数器)、Gauge(仪表盘)、Histogram(直方图)、Summary(摘要)。

这些简单的数据类型,使用PromQL(一种 利用此维度的灵活查询语言 )对开发人员来说,十分简单。

同时还有grafana、开源 exporter 的配合,prometheus 受到了越来越多人的使用。

同时 prometheus 还自带告警功能。

在可观测建设能力的上来说,选择 prometheus ,可以说是最快速,最简单的方案了。

优点如下:

  • 非常适合记录任何纯数字时间序列。它既适合以机器为中心的监控,也适合高度动态的面向服务的架构的监控。在微服务的世界中,它对多维数据收集和查询的支持是一个特殊的优势。(比如说 HTTP接口调用次数、CPU、磁盘、内存 使用率等等)

但是prometheus也有缺点:

  • 因为收集的数据可能不够详细和完整,它的数据并不是100%准确

  • 只能适合做指标(Metrics),虽然现在也有loki 这种日志工具,但使用场景也有局限性

如果 prometheus 对于不是开发的同学来说,是首选。你可以使用它很简单地就把服务器监控起来。

# 2、OpenTelemetry

同时,还有OpenTelemetry 的出现。

毕竟prometheus只能用来做指标,对于 链路(Traces)、日志(Logs),prometheus 无能为力。

而 OpenTelemetry 的出现,把指标(Metrics)、链路(Traces)、日志(Logs)都一起实现了,统一成OTLP的格式,支持不同的Exporter导出

最重要的是:

OpenTelemetry 也支持把OTLP格式的指标(Metrics)转换成 prometheus格式。

OpenTelemetry 是个庞大的工具,里面涉及服务和方案也很多,可以阅读一下官方文档。

# 3、如何选择

这篇文章提到 OpenTelemetry 和 Prometheus 的差异,可以参考一下:

当 OpenTelemetry 遇上阿里云 Prometheus (opens new window)

在我的公司,OpenTelemetry 和 Prometheus 是混合使用的:

在基础服务器监控上,运维团队已经很早就使用了prometheus,而且kafka、clickhouse、MySQL 等等组件都有自带或者开源的expoter(prometheus指标采集,见上图),而且还有 grafna监控大盘模板。

只需要几步即可接入。

在这个基础上,应用服务指标(请求量、响应时间、错误率)也需要尽量使用 prometheus 格式。

我们业务团队使用Java居多,springboot已经有相关的sdk开源使用了:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
  <groupId>io.micrometer</groupId>
  <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

开源的SDK提供了常用的指标,如 HTTP、JVM 等等,都是自动采集的。

但是开源的spring-boot-starter-actuator,对我们来说 有两个缺点:

  • 自动埋点的指标不够,如果要上报埋点,需要业务改代码埋点上报
  • 只有指标

所以我们就使用了javaagent的形式,拦截常用的足组件埋点 ,另外引入了 OpenTelemetry,解决 链路、日志 问题。

使用 OpenTelemetry 把指标转换成 prometheus 格式。以便接入 prometheus 的告警监控系统。

阅读全文
×

(为防止恶意爬虫)
扫码或搜索:HelloCoder
发送:290992
即可永久解锁本站全部文章

解锁
#Prometheus#OpenTelemetry
上次更新: 2025-02-21 06:04:57
最近更新
01
《LeetCode 101》
02-21
02
IDEA、Golang、Pycharm破解安装
02-21
03
《LeetCode CookBook》
02-21
更多文章>
Theme by Vdoing | Copyright © 2020-2025 码农阿雨
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式