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

20|应用监控:如何使用日志来监控应用?

你好,我是秦晓辉。
上一讲我们介绍了应用埋点监控,对于自研的软件,在一开始就建立可观测能力是非常好的选择,但是很多软件可能无法修改源代码,比如一些外采的软件,那就只能用一些外挂式的手段,比如在请求链路上插入一些代理逻辑,或者读取分析应用日志。
典型的代理方式是 Nginx,如果是 HTTP 服务,从 Nginx 的 Access 日志中可以获取很多信息,比如访问的是哪个接口,用的什么 HTTP 方法,返回的状态码是什么,耗时多久等等。这些信息对应用的监控很有帮助。
除此之外,我们也可以使用 eBPF 技术为网络包增加一些过滤分析逻辑,不过 eBPF 要求的内核版本较高。而通过日志对应用做监控,显然是相对直观和廉价的方式,这一讲我们就来看看怎么从日志中提取指标。

提取指标的典型做法

根据提取规则运行的位置可以分为两类做法,一个是在中心端,一个是在日志端。
中心端就是把要处理的所有机器的日志都统一传到中心,比如通过 Kafka 传输,最终落到 Elasticsearch,指标提取规则可以作为流计算任务插到 Kafka 通道上,性能和实时性都相对更好。或者直接写个定时任务,调用 Elasticsearch 的接口查询日志,同时给出聚合计算函数,让 Elasticsearch 返回指标数据,然后写入时序库,实时性会差一些,但也基本够用。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了如何使用日志对应用进行监控,重点介绍了一款名为 mtail 的工具的用法。作者首先介绍了在无法修改源代码的情况下,可以通过外挂式手段或读取分析应用日志来实现应用监控。他提到了在中心端和日志端两种位置上运行提取规则的做法,并详细介绍了在日志端处理的方式。通过示例演示了如何使用 mtail 统计日志中关键字出现的次数,并展示了 mtail 的启动命令和效果。此外,作者还介绍了如何配置 mtail 文件以统计接口的吞吐、延迟等,并给出了相应的 mtail 文件内容和测试输出。文章还介绍了如何使用 grok_exporter 进行日志指标提取,并展示了 grok_exporter 的运行和测试效果。整体而言,本文以实际操作为主线,详细介绍了如何使用日志对应用进行监控。文章还总结了指标提取的几种方式,重点介绍了日志端的处理方式,以及 mtail 和 grok_exporter 的特点和适用场景。最后,作者提出了关于性能优化的问题,鼓励读者分享实践方式。整体而言,本文内容丰富,适合对应用监控感兴趣的读者阅读学习。

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

全部留言(9)

  • 最新
  • 精选
  • 那时刻
    讨论:物理机大概率会有混部 5 个甚至 50 个服务的场景,容器又必然是一个服务一个 Pod,那虚拟机呢?做成大规格的好,还是小规格的好呢?是有混部好还是没有混部好呢? 我觉得对于虚拟机,大规格适合混部,小规格适合单独部署。大规格混部的话,可以最大化利用资源。不过,从监控角度来说,混部会对于数据监控带来干扰因素,因为混部破坏了隔离性。 思考题:由于 mtail 和 grok_exporter 都是通过正则提取的方式来处理非结构化的日志数据的,性能是个比较关键的问题,如果日志量很大,可能会侵蚀较多的机器算力,甚至影响上面运行的服务 我没有过多的使用经验,谈谈我的想法。对于日志量大,可以考虑分段处理,可以先把日志切分成多段,然后每段分别处理,减少一次处理的数据量。另外,为了控制mtail 和 grok_exporter侵蚀较多的算力,可以通过cgroup的方式来控制max cpu使用率。 问题:请问老师 Telegraf的 plugin logparser 和 tail可以读取log文件, 同时也有 prometheus_client,实际工作中有应用么?

    作者回复: 读取日志到中心,大都还是采用EFK的生态;Telegraf 采集数据通过 prometheus_client 暴露,没有看到哪个公司这么用,通过 remotewrite 写数据到后端存储的倒是不少,如果是pull的方式,大都还是使用node-exporter居多

    2023-03-01归属地:北京
    1
  • Geek_be4f4d
    老师您好,应用监控本身,推荐埋点方式实现,请问php有什么好用的sdk来实现埋点监控吗?

    作者回复: php是否有特定语言的专属方案我不太清楚,通用metrics方案的话,就是 prometheus、statsd 了,tracing的话可以看看 otel

    2023-06-07归属地:北京
  • 勇敢黄瓜
    请教下老师,文中说的中心端监控日志方案没有开源,EFK或者loki算吗

    作者回复: loki是可以做中心端监控的,EFK的话一般是配合开源的elastalert

    2023-06-07归属地:广东
    2
  • Kevin
    看了下目录,这是指标搜集的最后一章了。想问下,categraf没有做etcd的指标采集吗?看conf目录下没有input.etcd目录

    作者回复: etcd直接暴露prometheus协议的监控数据,使用input.prometheus直接抓就好了,Kubernetes监控章节其实介绍过如何采集etcd的数据了

    2023-02-24归属地:北京
  • peter
    请教老师几个问题: Q1:应用保存日志还有用吗? 既然对于应用的监控推荐使用埋点方式,不推荐使用日志方式。那么,对于应用,还有必要打印、保存日志吗?尤其是线上环境。 Q2:用云服务的话,一般是虚拟机,categraf怎么部署到机器上?机器是虚拟的,是不确定的实体,怎么把categraf部署到特定的机器上啊。 Q3:注册用户100万的网站,适合用什么监控? 通过前面的学习,感觉Prometheus适合比较大的规模的网站。那么,对于注册用户100万的网站,是不是有更合适的监控方案?(注1:对于网站规模大小,我不很清楚;100万用户的规模,算大还是小,不清楚,只是个人臆测; 注2: 也许Prometheus也适合小规模的网站)

    作者回复: 1,需要保存,指标是统计数据,日志是细节 2,虚拟机对于用户来说跟正常的机器没啥太大区别。。。。 3,没法通过注册用户量衡量,根据监控目标衡量

    2023-02-22归属地:北京
  • 刘涛
    中心处理,filebeat kafka flink
    2023-02-23归属地:广东
    2
  • 不经意间
    关于互动问题,有方法可以对日志内容去反吗,对于看是否有错误日志的情况。 对于counter应该就不行了,它得计数。
    2023-08-09归属地:北京
  • 林龍
    由于项目中已经搭建了opentraceing链路,把数据加载到prometheus,请问这种方案有没有什么缺点
    2023-02-22归属地:广东
  • Tangzen
    同类产品有loki+grafana,sls
    2023-02-22归属地:北京
收起评论
显示
设置
留言
9
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部