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的自定义应用程序
说明 osquery是一个由FaceBook开源用于对系统进行查询、监控以及分析的一款软件。osquery对其的说明如下: osquery exposes an operating system as a high-performance relational database. This allows you to write SQL-based queries to explore opera
目的 在使用Java采集Osquery端数据时,因为TLS证书问题困扰了很久,一直出现Request error: certificate verify failed,详情如下: I0828 14:19:27.860253 30918 database.cpp:563] Checking database version for migration W0828 14:19:32.998385 30
/* 参考github地址 https://github.com/segmentio/kafka-go https://github.com/kolide/osquery-go 脚本启动示例:go run testQuery.go /root/.osquery/shell.em "select * from sudoers;" */ package main import (
1.Windows上的构建 1.1. 工具 CMake(>=3.17.5):建议使用MSI安装程序。在安装过程中,选择选项以将其添加到所有用户的系统“ PATH”中。如果安装了任何较旧的CMake版本,需要先卸载该版本。不要使用Visual Studio安装程序来安装CMake,因为它包含的版本比要求的要旧。 Visual Studio 2019(2个选项) Visual Studio 2019
一、表的结构 system_info.table在源码中相对位置为/specs/system_info.table table_name("system_info") description("System information for identification.") schema([ Column("hostname", TEXT, "Network hostname includ
nmon 说明 官网:http://nmon.sourceforge.net/pmwiki.php 分析工具 nmon analyser:https://www.ibm.com/developerworks/community/wikis/home?lang=en nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具, nmon所记录的信息是比较全面的,它能在系统运行过程中实时
操作系统提供的服务 操作系统的五大功能,分别为:作业管理、文件管理、存储管理、输入输出设备管理、进程及处理机管理 中断 所谓的中断就是在计算机执行程序的过程中,由于出现了某些特殊事情,使得CPU暂停对程序的执行,转而去执行处理这一事件的程序。等这些特殊事情处理完之后再回去执行之前的程序。中断一般分为三类: 内部异常中断:由计算机硬件异常或故障引起的中断; 软中断:由程序中执行了引起中断的指令而造成
sed sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。 sed命令行格式为: sed [-nefri] ‘command’ 输入文本 常用选项: -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的
进程与线程 对于有线程系统: 进程是资源分配的独立单位 线程是资源调度的独立单位 对于无线程系统: 进程是资源调度、分配的独立单位 进程之间的通信方式以及优缺点 管道(PIPE) 有名管道:一种半双工的通信方式,它允许无亲缘关系进程间的通信 优点:可以实现任意关系的进程间的通信 缺点: 长期存于系统中,使用不当容易出错 缓冲区有限 无名管道:一种半双工的通信方式,只能在具有亲缘关系的进程间使用(父
1 select,poll和epoll 其实所有的I/O都是轮询的方法,只不过实现的层面不同罢了. 这个问题可能有点深入了,但相信能回答出这个问题是对I/O多路复用有很好的了解了.其中tornado使用的就是epoll的. selec,poll和epoll区别总结 基本上select有3个缺点: 连接数受限 查找配对速度慢 数据由内核拷贝到用户态 poll改善了第一个缺点 epoll改了三个缺点.
你可以在任何主流操作系统下去做开发工作,Windows,macOS,Linux 都可以。如果选择 Windows ,版本最好选择 Windows 10 专业版。用 macOS 的用户不用太担心系统问题,可以无痛并免费升级,现在你应该用的是 Sierra 这个版本的 macOS 。Linux 也可以,比如 Ubuntu 的桌面版。 如果你能满足下面三个条件的其中一个,这个任务就算完成了: Windo
指令运行参数 设定变量T为指令运行总时间,t为所需时间最长部分指令的时间(周期),n为指令条数 指令相关公式 顺序方式运行指令所需时间:Tn 流水方式运行指令所需时间:T+(n-1)t 重叠方式运行指令所需时间:(n+2)t 吞吐率:n/流水方式运行指令所需时间 效率:效率=吞吐率t 加速比:加速比=效率n 可变分区分配算法 首次适应法 从主存低地址开始,寻找第一个可用(即大于等于作业需求的内存)
业务监控子系统分为单机版和集群版两个版本,单机版只需依赖一个用于存储监控数据的Mysql数据库即可正常运行,而集群版则需要在单机版的基础上,在监控数据收集端部署一个服务端程序进行相关的数据聚合入库处理。 整个业务监控子系统不管是单机版还是集群版,都是基本一个给Java服务的各项指标提供度量工具的包Metrics进行扩展实现的,这样可以有效保证底层监控指标统计算法的性能和正确性,在此基础上,本系统扩