首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Linux 進程性能監控:Sigar API 實現單進程多維度指標採集與趨勢圖

     編輯:程式設計綜合問答

需求

監控特定進程 (如搜狗輸入法) 的 CPU、內存、文件 IO、網絡連接、打開文件描述符,並繪製隨時間變化的趨勢圖。

推薦方案:Sigar API

Sigar (System Information Gatherer And Reporter) 是跨平台原生庫,提供豐富接口:

  • sigar_proc_cpu_get:進程 CPU 使用率、時間。
  • sigar_proc_mem_get:RSS、虛擬內存、共享內存。
  • sigar_proc_fd_get:打開文件描述符列表。
  • sigar_net_connection_list_get:TCP/UDP 連接狀態。
  • sigar_file_system_usage_get:磁盤 IO。

Java 封裝示例

org.hyperic.sigar.Sigar sigar = new Sigar();
long pid = Sigar.getPid(); // 或通過名稱查找
ProcCpu cpu = sigar.getProcCpu(pid);
ProcMem mem = sigar.getProcMem(pid);
ProcFd fd = sigar.getProcFd(pid);
System.out.println("CPU%: " + cpu.getPercent());
System.out.println("RSS: " + mem.getResident());
System.out.println("FD Count: " + fd.getTotal());

趨勢圖繪製

  1. 定時採集 (如每秒) 寫入 CSV / InfluxDB / Prometheus。
  2. 前端用 ECharts / Highcharts 讀取數據繪圖。
  3. 或直接用 Grafana + Prometheus 全棧方案。

替代輕量方案

  • /proc//stat、/proc//fd/ 直接讀取 (僅 Linux)。
  • pidstat -p 1 命令行監控。
  • Java Flight Recorder (JFR) 針對 JVM 進程。

總結

Sigar 適合跨平台、多語言、需豐富指標的場景;Linux 專用可直接讀 /proc 更輕量。配合時序數據庫 + 可視化組件即可得到專業趨勢圖。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved