监控数据的采集方式及原理

114 阅读2分钟

读取 /proc 目录

/proc 是一个位于内存中的伪文件系统,该目录下保存的不是真正的文件和目录,而是一些“运行时”信息,Linux 操作系统层面的很多监控数据,比如内存数据、网卡流量、机器负载等,都是从 /proc 中获取的信息。

执行命令行工具

这种方式非常简单,就是调用一下系统命令,解析输出就可以了。比如我们想获取 9090 端口的监听状态,可以使用 ss 命令 ss -tln|grep 9090,想要拿到各个分区的使用率可以通过 df 命令 df -k。但是这个方式不太通用,性能也不好。先说通用性问题,就拿 ss 命令来说吧,不是所有的机器都安装了这个命令行工具,而且不同的发行版或不同 ss 版本,命令输出内容格式可能不同。性能问题也容易理解,调用命令行工具是需要 fork 一个进程的,相比于进程内的逻辑,效率大打折扣,不过监控采集频率一般都是 10 秒起步,不频繁,所以这个性能问题倒不是什么大事,关键还是通用性问题。读取本地 /proc 目录或执行命令行工具,都是在目标监控机器上进行的操作。有的时候,我们无法在目标机器上部署客户端程序,这时候就需要黑盒探测手段了。

远程黑盒探测

典型的探测手段有三类,ICMP、TCP 和 HTTP。有一个软件叫 Blackbox Exporter,就是专门用来探测的,Categraf、Datadog-Agent 等采集器也都可以做这种探测。

此文章为11月Day20学习笔记,内容来源于极客时间《运维监控系统实战笔记》,强烈推荐该课程