Skip to main content

04 - Parsing with whitespace

The df command is a very common command used to check disk usage. It provides a table like structure of data that doesn't automatically parse.

However, we can use the inbuilt parsing capabilities to handle these in more then one way, either via detecting whitespace, or with regex.

Whitespace parsing may not work for all cases where the output is as straight forward, so utilize regex parsing for more complex scenarios.

Command output

Example command output from df -k

ubuntu@host:~$ df -k
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 98440 1560 96880 2% /run
/dev/sda1 47145992 5042744 42086864 11% /
tmpfs 492196 0 492196 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
/dev/sda15 99791 6418 93374 7% /boot/efi
tmpfs 98436 4 98432 1% /run/user/1001

Review configuration

We have set the run command to df-k.

The parse options have explictily defined the header keys with split_whitespace enabled.

  • Place the configuration into your configs directory
  • Stop/Start the binary
    ./airpipe --api-key enter-your-api-key --config-dir configs/
tutorial-df-whitespace-to-api.yml
name: tutorial-df-whitespace-to-api

interfaces:
tutorial/parse-df-whitespace:
output: http

actions:
- name: DiskDf
command:
run: df -k
parse:
keys: [fs, 1K-blocks, used, available, usePerc, mountedOn]
split_whitespace: true

HTTP Response

{
"data": {
"DiskDf": {
"data": [
{
"1K-blocks": 4106912,
"available": 4105284,
"fs": "tmpfs",
"mountedOn": "/run",
"usePerc": "1%",
"used": 1628
},
{
"1K-blocks": 203770680,
"available": 5789456,
"fs": "/dev/mapper/ubuntu--vg-ubuntu--lv",
"mountedOn": "/",
"usePerc": "98%",
"used": 188632988
},
{
"1K-blocks": 20534548,
"available": 20534520,
"fs": "tmpfs",
"mountedOn": "/dev/shm",
"usePerc": "1%",
"used": 28
},
{
"1K-blocks": 5120,
"available": 5116,
"fs": "tmpfs",
"mountedOn": "/run/lock",
"usePerc": "1%",
"used": 4
},
{
"1K-blocks": 1992552,
"available": 1515172,
"fs": "/dev/sda2",
"mountedOn": "/boot",
"usePerc": "20%",
"used": 356140
},
{
"1K-blocks": 4106908,
"available": 4106832,
"fs": "tmpfs",
"mountedOn": "/run/user/1000",
"usePerc": "1%",
"used": 76
}
],
"time.ms": 20
}
}
}