Postgresql监控操作系统指标(file_fdw)

proc是Linux系统下一个很重要的目录。 它跟/etc, /home等这些系统目录不同, 它不是一个真正的文件系统, 而是一个虚拟的文件系统。
我们可以通过查看proc目录下的文件来获取操作系统的一些信息,例如内存使用情况, cpu使用情况等等。但是我们怎么在postgresql中通过sql来查看这些文件的内容呢?只需要使用pg内置的file_fdw外部表, 就可以直接读取proc的内容了。

列举一些常用到的指标对应的文件:

  • /proc/cpuinifo CPU的信息(型号、家族、缓存大小等)
  • /proc/meminfo物理内存、交换空间
  • /proc/mounts 已加载的文件系统的列表
  • /proc/devices 可用设备的列表
  • /proc/filesystems 被支持的文件系统
  • /proc/modules 已加载的模块
  • /proc/virsion 内核版本

例子:
1、安装file_fdw扩展,创建server

bill=# create extension file_fdw ;
CREATE EXTENSION
bill=# CREATE SERVER fileserver FOREIGN DATA WRAPPER file_fdw;    
CREATE SERVER

2、创建对应的外部表
系统负载:

bill=# CREATE FOREIGN TABLE loadavg     
bill-# (one text, five text, fifteen text, scheduled text, pid text)     
bill-# SERVER fileserver     
bill-# OPTIONS (filename '/proc/loadavg', format 'text', delimiter ' ');
CREATE FOREIGN TABLE

内存:

bill=# CREATE FOREIGN TABLE meminfo     
bill-# (stat text, value text)     
bill-# SERVER fileserver     
bill-# OPTIONS (filename '/proc/meminfo', format 'csv', delimiter ':'); 
CREATE FOREIGN TABLE

3、查看

bill=# select * from loadavg;
 one  | five | fifteen | scheduled |  pid  
------+------+---------+-----------+-------
 0.08 | 0.13 | 0.29    | 2/1292    | 32704
(1 row)

bill=# select * from meminfo ;
       stat        |         value          
-------------------+------------------------
 MemTotal          |         8174424 kB
 MemFree           |            84312 kB
 MemAvailable      |     3207292 kB
 Buffers           |                0 kB
 Cached            |           5628872 kB
 SwapCached        |         26012 kB
 Active            |           4862388 kB
 Inactive          |         2531532 kB
 Active(anon)      |     3378624 kB
 Inactive(anon)    |   1048416 kB
 Active(file)      |     1483764 kB
 Inactive(file)    |   1483116 kB
 Unevictable       |            0 kB
 Mlocked           |                0 kB
 SwapTotal         |       17825788 kB
 SwapFree          |        16887804 kB
 Dirty             |                 16 kB
 Writeback         |             16 kB
 AnonPages         |        1745120 kB
 Mapped            |           2395368 kB
 Shmem             |            2661992 kB
 Slab              |              333952 kB
 SReclaimable      |      237624 kB
 SUnreclaim        |         96328 kB
 KernelStack       |        20688 kB
 PageTables        |        177952 kB
 NFS_Unstable      |           0 kB
 Bounce            |                 0 kB
 WritebackTmp      |           0 kB
 CommitLimit       |     21913000 kB
 Committed_AS      |    16193568 kB
 VmallocTotal      |    34359738367 kB
 VmallocUsed       |       167036 kB
 VmallocChunk      |    34359341052 kB
 HardwareCorrupted |      0 kB
 AnonHugePages     |          0 kB
 CmaTotal          |               0 kB
 CmaFree           |                0 kB
 HugePages_Total   |        0
 HugePages_Free    |         0

同理,想要监控其他的指标我们只需要通过建立对应外部表去解析/proc目录下面相应的文件即可。

猜你喜欢

转载自blog.csdn.net/weixin_39540651/article/details/108215034