Hacker News new | ask | show | jobs
by hyperman1 1379 days ago
For another alternative: I added some monitoring, by using file_fdw. This is a standard pg extension that presents files or program stdout as tables. So I file_fdw'd some files in /proc and some system utilities.
1 comments

I would like to see your magic please.
Not much magic in there, to be honest:

Setup like this:

  CREATE EXTENSION file_fdw;

  CREATE SERVER pglog FOREIGN DATA WRAPPER file_fdw;
then do this for the easy interpretable proc files:

  CREATE FOREIGN TABLE IF NOT EXISTS proc_loadavg(
  load1 decimal,
  load5 decimal,
  load15 decimal,
  threads_runnable_total text,
  most_recent_pid integer
) SERVER pglog OPTIONS ( filename '/proc/loadavg', header 'false',delimiter ' ' );

For harder things, read the file as lines instead of fields, then create a view with some regexes to split it in fields:

  CREATE  FOREIGN TABLE IF NOT EXISTS proc_meminfo(
   line text
 ) SERVER pglog OPTIONS ( filename '/proc/meminfo', header 'false',delimiter '$'  );

  CREATE OR REPLACE VIEW  proc_meminfo_interpreted AS
  WITH arr AS (SELECT regexp_split_to_array(line,':| +') a FROM proc_meminfo)
  SELECT a[1] as name,a[3] as value FROM arr;
Hardest part is creating semi-legible source code in HN ;-)