關連式資料庫 系統管理 作業系統 開源碼 跨平台

靈活運用osquery 系統資源狀態隨時查詢

2018-12-03
隨時掌握處理程序、對外連線狀態、系統記憶體、使用者資訊、歷史指令等系統資源,是系統管理者最重要的工作內容。本文將介紹一套開源碼系統管理工具osquery,讓管理者可以透過關連式資料庫的SQL語法來隨時查看所需的系統資源相關資訊。
對一個系統管理者而言,最掛心的事應該是各項系統資源(例如記憶體使用率)的狀況。為了得知相關的資訊,必須學習各種指令的用法,方能以指令的方式來取得系統資源的狀況。如此的用法,其實很不方便。如果有一個整合式的環境,讓管理者能夠利用統一的用法來取得系統資源的資訊,相信對於系統管理會有莫大的助益。對此,以下將簡介一套開源碼的系統管理工具osquery(官方網址為https://osquery.io/),讓管理者統一以SQL語法來取得系統資源的相關資訊。為簡化說明,本文將以Linux系統來做說明。

什麼是osquery

osquery是一套由Facebook所釋出的開源碼系統管理工具,也是一套跨平台的應用程式,可以運作在Windows、Mac OS、Linux等主要的作業系統,其最主要的特色是提供了讓管理者以關連式資料庫的SQL語法來操作系統資源。

osquery的安裝方式很簡單,在此以Centos 7為例示範安裝步驟:

rpm -ivh https://osquery-
packages.s3.amazonaws.com/
centos7/noarch/osquery-s3-
centos7-repo-1-0.0.noarch.rpm
yum install osquery

安裝完成之後,就會提供一個名稱為「osqueryi」的主程式,管理者即可利用此程式來取得系統資源。以下為取得系統內某一個程序(Processe)的資訊,並輸出為json格式,如圖1所示。


▲圖1 取得系統內某個程序的資訊。

osqueryi --json "SELECT * FROM
processes limit 1"

目前osquery提供了200餘個資料庫表格(Table)來操作系統資源,相關的說明可參考「https://osquery.io/schema/3.3.0」網址的文件以取得更深入的說明:

接下來,說明幾個在系統上常見的運用。

查詢處理程序

通常會利用ps(Process Status)指令來查看系統內正在運作的程序(Processes)狀態。要特別注意的是,利用ps所得到的資訊僅是在執行此指令時當下系統的程序運作情形。如果需要持續監控程序的執行情況,必須使用top指令才能持續地監控程序執行的情形。

ps常用的組態選項,說明如下:

-a:表示要顯示系統上目前使用者所擁有的程序。

-u:顯示某個使用者所擁有的程序。

-f:表示要顯示各個程序間的關係。

-aux:表示要顯示系統內所有的程序(包括其他使用者)的資訊。

以下為利用「ps aux」來顯示系統內所有的程序資訊,輸出如圖2所示,輸出欄位說明如下:

USER:該程序的擁有者(即此程序是屬於那個使用者帳號)。

PID:該程序的辨識ID(此ID在系統內必須是唯一,不可與其他的程序重複)。

%CPU:該程序所使用的CPU資源百分比。

%MEM:該程序所占用的實體記憶體百分比。

VSZ:該程序所使用的虛擬記憶體量,單位為位元組(Kbytes)。

RSS:該程序占用的固定的記憶體量,單位為位元組。


▲圖2 顯示系統內所有的程序資訊。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!