osquery 是一款面向 OSX 和 Linux 的操作系统检测框架。它将操作系统暴露为一个高性能的关系型数据库,允许用户编写 SQL 查询查看操作系统数据。在 osquery 中,SQL 表代表像下面这样的抽象概念:
- 正在运行的进程
- 已加载的内核模块
- 打开的网络连接
osqueryi 是 osquery 中的交互式查询控制台。通过它,用户可以执行像下面这样的语句,从 SQL 表中获取操作系统中正在监听所有端口的进程的 pid、名称和端口:
osquery> 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';
osquery 中已经存在许多表,用户可以在 osquery 命令行中使用“.table”命令列出所有表,而且还可以根据需要创建新表。有了这些表,用户可以:
- 根据需要执行查询以查看操作系统的状态
- 通过调度器执行查询以监控分布式主机操作系统
- 使用 osquery API 从自定义应用程序中发起查询
除了上文提及的特性及易于安装外,osquery 还具有如下特性:
- osqueryd ——这是 osquery 中的一个分布式主机监控守护进程,它性能高,内存占用小,允许用户在整个基础设施上执行查询。
- 跨平台——虽然 osquery 利用了非常底层的操作系统 API,但它允许用户在 Ubuntu、Cent OS 和 Mac OS X 上构建并使用它。
- 详细的内部部署文档
此外,osquery 代码库是由高性能的模块化组件构成,并且其公共 API 有清楚的文档记录。这些组件可以组合出新的、有趣的应用程序和工具。
要想了解更多信息,请查看 osquery wiki 。
感谢郭蕾对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。
评论