运维监控系统实战笔记
秦晓辉
快猫星云联合创始人,Open-Falcon、Nightingale、Categraf 核心研发
9147 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 25 讲
运维监控系统实战笔记
15
15
1.0x
00:00/00:00
登录|注册

19|应用监控:如何使用埋点方式对应用监控?

你好,我是秦晓辉。
前面几讲我们主要是介绍了常见的中间件、数据库的监控,统称为组件监控,根据第 9 讲中我们对监控做的分类,还有应用和业务层面的监控没有介绍,接下来我会用两讲来介绍这部分内容。
💡 因为业务指标的生成也需要应用程序侧来实现,所以这两个层面的监控可以统称为应用监控。
在指标监控的世界里,应用和业务层面的监控有两种典型手段,一种是在应用程序里埋点,另一种是分析日志,从日志中提取指标。埋点的方式性能更好,也更灵活,只是对应用程序有一定侵入性,而分析日志的话对应用程序侵入性较小,但由于链路较长、需要做文本分析处理,性能较差,需要更多算力支持。这一讲我们先来介绍第一种方式,使用埋点的方式做应用和业务监控。

埋点方式介绍

所谓的埋点,就是指应用程序内嵌了埋点的 SDK(一个 lib 库),然后在一些关键代码流程里调用 SDK 提供的方法,记录下各种关键指标。比如某个 HTTP 服务,提供了 10 个接口,每个接口的处理花费了多少毫秒,就可以作为指标记录下来。
你可能会疑惑,我的监控系统已经提供了 PUSH 接口了,比如 Prometheus 的 Pushgateway 组件,在应用程序里直接调用 Pushgateway 接口推数据不就行了吗?为什么还需要 SDK 呢?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了应用监控中使用埋点方式的方法,通过StatsD和Prometheus两种跨语言埋点工具,实现了应用程序内嵌入埋点的SDK,记录关键指标并进行监控。StatsD采用UDP传输协议,轻量且对应用程序影响较小,而Prometheus的埋点方式则通过SDK的逻辑运行在应用进程中。文章详细介绍了StatsD和Prometheus的埋点方式,并探讨了数据传输通路的构建方式,包括使用UDP推送和中心端服务发现模式。此外,还提到了两种数据抓取方式的优缺点,以及如何根据具体场景灵活选择。总的来说,本文通过介绍埋点方式的原理和实际操作,帮助读者了解应用监控中埋点的重要性和实现方法。文章内容涵盖了技术细节和实际操作,对于需要了解应用监控中埋点方法的读者具有很高的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《运维监控系统实战笔记》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(5)

  • 最新
  • 精选
  • opentelemetry+opentelemetry protocol collector+spanmetrics connector针对主要库框架等进行自动注入,类似sdk,但可以说无侵入性的,也能做到老师要做的分位监控

    作者回复: 嗯,trace 数据可以生成 span metrics。本专栏主要是讲指标监控所以没有提,实际三大类可观测性数据是可以相互转换的,比如 trace 可以生成 span metrics,日志中打印详尽的 access log 也可以分析出应用 metrics。

    2024-02-07归属地:广东
  • CDS
    背景 1 同事不愿意埋点增加代码 2 目前只是希望看见系统(ubuntu 18.04)内各个进程的资源(cpu 内存)的大致趋势 3 精度要求为秒级 4 只监控本机 不监控其他机器 请问如下方案是否可行 使用Prometheus SDK http方式 拉取固定一个HTTP接口 (A服务上的) A服务通过端口查询pid 在使用top命令去查询资源使用情况 如果可行 github上面有没有类似这样的项目 如果不可行 是使用ebpf进行监控吗

    作者回复: categraf 的 input.procstat 插件就可以哈,指定要监控的进程是什么,就可以采集进程的cpu、mem等信息

    2023-03-29归属地:浙江
    2
  • x
    应用进程里的sdk一直在计算和保存数据,长期没有prometheus去访问它的/metrics接口,会有内存问题吗

    作者回复: 不会,这个大可放心

    2023-03-09归属地:广东
  • peter
    请教老师几个问题: Q1:Pod 中的 Sidecar agent就是指Telegraf或Categraf吗? Q2:Sidecar方式的图中,StatsD用Telegraf;prometheus用Categraf,这是一种典型配置?还是说必须这样?(比如,Prometheus可以使用Telegraf吗?或者StatsD可以使用Categraf吗?) Q3:应用层埋点的Prometheus方式,是Prometheus自身具备的一个功能,不是另外的一个软件,对吗? Q4:老师经历的公司所用的应用层埋点方案,是用开源框架多还是自研的多?框架的话,是StatsD用得多还是Prometheus用得多? Q5:本文的两种埋点方案适用于移动端吗? 比如安卓、iOS,可以用这两种方式吗?

    作者回复: 1,是 2,categraf目前不支持接收statsd协议的数据 3,是应用引入lib 4,开源的多,statsd和prom都挺多 5,适用,但是端上,metrics没有那么关键,更应该引入sentry之类的方案做事件监控

    2023-02-20归属地:北京
    2
  • Geek_1a3949
    尝试回答一下课后题: 分片可以使用Prometheus的hashmod,label选择尽量随机的,比如address,或者address+name等等 - job_name: "pods" ... relabel_configs: - source_labels: [__address__] modulus: 3 target_label: __tmp_hash action: hashmod - source_labels: [__tmp_hash] regex: 1 action: keep
    2023-02-20归属地:上海
    3
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部