Facebook开源的基于SQL的操作系统检测和监控框架:osquery
osquery简介
osquery是一款由facebook开源的,面向OSX和Linux的操作系统检测框架。
osquery顾名思义,就是query os,允许通过使用SQL的方式来获取操作系统的数据。
通过osquery,SQL表可以提供诸如正在运行的进程,已加载的内核模块,已打开的网络连接,硬件事件等等信息。
下载与安装
osquery的安装很简单,在这里可以找到对应的下载。本文使用的centos6进行的安装:
$rpm -ivh https://osquery-packages.s3.amazonaws.com/centos6/noarch/osquery-s3-centos6-repo-1-0.0.noarch.rpm
$yum install osquery
osqueryi
osqueryi命令可以用于进行查询。osquery提供了若干个table。用户可以通过sql语句查询对应的系统信息。
比如,列举所有用户的uid,gid和username,使用如下命令:
[root@localhost osquery]# osqueryi
osquery - being built, with love, at Facebook
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Using a virtual database. Need help, type '.help'
osquery> select uid,gid,username from users;
+-----+-----+----------------+
| uid | gid | username |
+-----+-----+----------------+
| 0 | 0 | root |
| 1 | 1 | bin |
+-----+-----+----------------+
借助于SQL语句的灵活性,可以更容易的从数据中筛选出想要的结果。比如查询现有的进程数量:
osquery> select count(*) from processes;
+----------+
| count(*) |
+----------+
| 110 |
+----------+
又比如,查询在运行状态,即state为R的进程相关信息:
osquery> select pid,name,cmdline,state from processes where state='R';
+------+-----------+----------+-------+
| pid | name | cmdline | state |
+------+-----------+----------+-------+
| 4714 | osqueryi | osqueryi | R |
| 7 | rcu_sched | | R |
+------+-----------+----------+-------+
更高级的用法,还可以进行连表查询。比如要显示进程状态为R的进程打开的文件的信息。从process_open_files表的信息如下:
| Column | Type | Description |
|---|---|---|
| pid | BIGINT_TYPE | Process (or thread) ID |
| fd | BIGINT_TYPE | Process-specific file descriptor number |
| path | TEXT_TYPE | Filesystem path of descriptor |
可以看到process_open_files和process有公用的pid列。
因此只要将process_open_files表和processes表进行联合查找,
查找条件为processes的state为R且processes.pid与process_open_files.pid匹配的对应行的信息:
osquery> select processes.pid, processes.name, process_open_files.fd, process_open_files.path,processes.state from process_open_files,processes where process_open_files.pid = processes.pid and processes.state='R';
+------+----------+----+---------------+-------+
| pid | name | fd | path | state |
+------+----------+----+---------------+-------+
| 4791 | osqueryi | 0 | /dev/pts/5 | R |
| 4791 | osqueryi | 1 | /dev/pts/5 | R |
| 4791 | osqueryi | 2 | /dev/pts/5 | R |
| 4791 | osqueryi | 8 | /proc/4791/fd | R |
+------+----------+----+---------------+-------+
还有更高级的功能,比如查询最大的pid:
osquery> select max(pid) from processes;
+----------+
| max(pid) |
+----------+
| 7706 |
+----------+
比如查询每个进程打开的文件数:
osquery> select pid, count(fd) from process_open_files group by pid;
+------+------------+
| pid | count(pid) |
+------+------------+
| 1 | 10 |
| 456 | 6 |
| 475 | 2 |
+------+------------+
还有更多复合的功能,只要是SQL里支持的,osquery都尽力做了支持。这样需要取什么样的数据,可以轻松的使用sql来进行取值。
小结
osquery的各种监控指标目前来看,并不是特别完善。但是已经相当够用。而且其能够自行扩展table(需要进行二次开发)。
该项目的主要价值在于可以用SQL的方式灵活获取数据,并发送到后端进行收集(后面的博客再进行介绍)。
SQL的数据模型使得对于一些监控信息进行组合变得更容易。
Facebook开源的基于SQL的操作系统检测和监控框架:osquery的更多相关文章
- Facebook开源的基于SQL的操作系统检测和监控框架:osquery daemon详解
osqueryd osqueryd(osquery daemon)是可以定期执行SQL查询和记录系统状态改变的驻守程序. osqueryd能够根据配置手机归档查询结果,并产生日志. 同时也可以使用系统 ...
- Facebook开源的基于SQL的操作系统检测和监控框架:osquery Table详解
写在前面 上一篇介绍了osquery的一些用法,即如何使用SQL语句查询系统信息.本文就来介绍下这个table是如何定义的,及table中的数据是如何取得的. 本文以uptime和process两张表 ...
- 开源一个基于dotnet standard的轻量级的ORM框架-Light.Data
还在dotnet framework 2.0的时代,当时还没有EF,而NHibernate之类的又太复杂,并且自己也有一些特殊需求,如查询结果直接入表.水平分表和新增数据默认值等,就试着折腾个轻量点O ...
- Facebook开源软件列表
从 Facebook 的 GitHub 账户中可以看到,Facebook 已经开源的开源项目有近 300 个,领域涉及移动.前端.Web.后端.大数据.数据库.工具和硬件等.Facebook 开源项目 ...
- 代码内存泄露检测(1) MLeaksFinder (Wechat开源) + FBRetainCycleDetector (FaceBook开源)
每次项目编译完成之后,都被内存搞得头昏脑胀,压力甚大. 利用两周时间,稍微研究了 微信开源的 MLeaksFinder 和 facebook 开源的 FBMemoryProfiler, 这两个开源三方 ...
- 基于Facebook开源框架SocketRocket的即时通讯
SocketRocket 介绍: SocketRock 是 Facebook 开源的框架,基于 WebSocket 客户端类库,适用于 iOS.Mac OS.tv OS.GitHub 传送门:http ...
- 最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目
最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目 最近一个来自重庆的客户找到走起君,客户的业务是做移动互联网支付,是微信支付收单渠道合作伙伴,数据库里存储的是支付流水和交易流水 ...
- 基于SQL Server 2008 Service Broker构建企业级消息系统
注:这篇文章是为InfoQ 中文站而写,文章的地址是:http://www.infoq.com/cn/articles/enterprisemessage-sqlserver-servicebroke ...
- 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码
本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 开源倾情奉献系列链接 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码 开源倾 ...
随机推荐
- JQ优化性能
一.注意定义jQuery变量的时候添加var关键字这个不仅仅是jQuery,所有javascript开发过程中,都需要注意,请一定不要定义成如下:$loading = $('#loading'); / ...
- 使用八种牛云存储解决方案ios7.1的app部署问题
使用八种牛云存储解决方案ios7.1的app部署问题 一个.问题叙述性说明 开发完ios版本号的app.须要将.ipa文件和.plist文件打包上传,供用户下载,在线安装.用户安装过程简单描写叙述例如 ...
- [探索]点点轻博客搬家到WordPress(一)
摘要:点点博客备份XML通过DiandianToWordpress-beta.sh(文末给出)搬家到Wordpress博客 本人曾使用过点点轻博客,也深知像点点博客,Lofter博客导出的XML文件不 ...
- 非接触式电子音乐控制器CHIMAERA
本篇文章,我将介绍个有意思的设备. 她就是Chimaera,一个基于电磁场效应的非接触式电子音乐控制器. <弹奏Chimaera的声音> 霍尔效应传感器阵列及其周围部件组成了一个连续的2D ...
- idea中ajax中文乱码
case:@RequestMapping中添加 produces= "text/plain;charset=UTF-8", @RequestMapping(method = Req ...
- c#多线程随记回顾
C#多线程随记回顾 1.创建多线程方式知道的有三种: ---手动创建Thread.使用线程池.使用task任务 ---手动创建Thread,分两种带参数和不带参数的帮助委托器 eg: //帮助器委托 ...
- java中数据库通用层
/** * 数据库通用类 * */ public class ConnDB { /** * 获取数据库连接对象 * @return 数据库连接对象 * */ public static Connect ...
- windows服务安装启动报错误1053:服务没有及时响应启动或控制请求
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0&qu ...
- Product Trader(操盘手)
Product Trader(操盘手) 索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):Product Trader 的示例实现. 意图 使客户程序可以通过命名抽象超类和给定规 ...
- ASP.NET MVC应用程序处理并发
为ASP.NET MVC应用程序处理并发 2014-05-14 08:37 by Bce, 694 阅读, 2 评论, 收藏, 编辑 这是微软官方教程Getting Started with Enti ...