19|应用监控:如何使用埋点方式对应用监控?
秦晓辉
你好,我是秦晓辉。
💡 因为业务指标的生成也需要应用程序侧来实现,所以这两个层面的监控可以统称为应用监控。
在指标监控的世界里,应用和业务层面的监控有两种典型手段,一种是在应用程序里埋点,另一种是分析日志,从日志中提取指标。埋点的方式性能更好,也更灵活,只是对应用程序有一定侵入性,而分析日志的话对应用程序侵入性较小,但由于链路较长、需要做文本分析处理,性能较差,需要更多算力支持。这一讲我们先来介绍第一种方式,使用埋点的方式做应用和业务监控。
埋点方式介绍
所谓的埋点,就是指应用程序内嵌了埋点的 SDK(一个 lib 库),然后在一些关键代码流程里调用 SDK 提供的方法,记录下各种关键指标。比如某个 HTTP 服务,提供了 10 个接口,每个接口的处理花费了多少毫秒,就可以作为指标记录下来。
你可能会疑惑,我的监控系统已经提供了 PUSH 接口了,比如 Prometheus 的 Pushgateway 组件,在应用程序里直接调用 Pushgateway 接口推数据不就行了吗?为什么还需要 SDK 呢?
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了应用监控中使用埋点方式的方法,通过StatsD和Prometheus两种跨语言埋点工具,实现了应用程序内嵌入埋点的SDK,记录关键指标并进行监控。StatsD采用UDP传输协议,轻量且对应用程序影响较小,而Prometheus的埋点方式则通过SDK的逻辑运行在应用进程中。文章详细介绍了StatsD和Prometheus的埋点方式,并探讨了数据传输通路的构建方式,包括使用UDP推送和中心端服务发现模式。此外,还提到了两种数据抓取方式的优缺点,以及如何根据具体场景灵活选择。总的来说,本文通过介绍埋点方式的原理和实际操作,帮助读者了解应用监控中埋点的重要性和实现方法。文章内容涵盖了技术细节和实际操作,对于需要了解应用监控中埋点方法的读者具有很高的参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《运维监控系统实战笔记》,新⼈⾸单¥59
《运维监控系统实战笔记》,新⼈⾸单¥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: keep2023-02-20归属地:上海3
收起评论