osquery 查询系统信息

osquery是一款能够使用SQL查询系统信息的工具,其核心是Query Engine,使用SQLite解析SQL但不依赖其存储数据。数据主要通过虚拟表(Virtual Tables)获取,RocksDB用于存储部分数据。osquery的Event System支持实时监控,Scheduler处理定时任务以避免浪涌,Diff Engine用于输出查询结果的差异。此外,还涉及配置、日志、分布式查询插件等功能,确保在多种环境中高效稳定运行。
摘要由CSDN通过智能技术生成

说明

本文是一篇翻译稿,原文是:Osquery: Under the Hood

在4年的时间里,有243个贡献者一共提交了4573个commit,为osquery的发展作出了贡献。osquery是一个复杂的项目,必须要兼备性能和稳定性,要要争能在数百万台的机器上面运行。本篇文章就是对osquery的整体架构进行一个简要的介绍。

本篇文章适用于那些对osquery的架构感兴趣,想为osquery发现贡献pr或者是想从成功的开源项目架构中学习的任何人。对于那些刚接触osquery来说,通过在macOS上面使用osquery也是一个很好的开始

架构说明

osquery的整体架构如下图所示:

Query Engine

由于osquery良好的设计使得普通用户也能够使用SQL语句查询得到系统信息。osquery并没有完全使用sqlite,只是SQL的执行引擎是sqlite。osquery使用SQLite来解析、优化、执行SQL语句,使得osquery更加关注于解析系统信息。osquery底层并没有完全使用sqlite,仅仅只是查询引擎使用的是osquery

虽然osquery使用SQLite作为查询引擎,但是并没有使用SQLite来存储数据。大部分的数据都是在查询时通过一个虚拟表得到的。osquery通过嵌入的RocksDB来存储数据。

查询示例如下:

Virtual Tables

虚表是osquery的核心。虚表中保存了我们查询时的所有数据。当我们执行SQL查询时才会产生虚表数据。虚表数据一般都是通过解析文件或者是调用系统API来实现的

所有的表都是利用Python中的DSL来定义的。osquery通过读取这些文件来判断osquery有哪些表。在前面的文章中也已经说过,在

osquery 是 SQL 驱动的分析和监控操作系统的工具,是操作系统分析框架,支持 OS X 和 Linux 系统osquery 能帮助监控和分析低水平的操作系统,提供更直观的性能监控。osquery 在操作系统中就像是一个高性能的关系数据库,允许你编写基于 SQL 的查询语句来洞察操作系统的数据。使用 osquery,SQL 表代表如下抽象概念:运行时的进程 加载内核模块开放网络连接 SQL 表通过一个简单的可扩展 API 实现,各种表已经存在并且还在不断增加。为了更好的理解 osquery,看看下面的 SQL 查询:-------------------------------------------------------- -- get the name, pid and attached port of all processes  -- which are listening on all interfaces -------------------------------------------------------- SELECT DISTINCT    process.name,    listening.port,    process.pid FROM processes AS process JOIN listening_ports AS listening ON process.pid = listening.pid WHERE listening.address = '0.0.0.0';-------------------------------------------------------- -- find every launchdaemon on an OS X host which  --   * launches an executable when the operating  --     system starts --   * keeps the executable running  -- return the name of the launchdaemon and the full  -- path (with arguments) of the executable to be ran. -------------------------------------------------------- SELECT    name,    program || program_arguments AS executable  FROM launchd  WHERE    (run_at_load = 'true' AND keep_alive = 'true')  AND    (program != '' OR program_arguments != '');这些查询可以:在特定条件下探索操作系统状态通过执行调度程序来监控操作系统的主机状态启动使用osquery api的自定义应用程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HeathXian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值