05 - Parsing with regex
Following from the previous section, the below demonstrates parsing the same output with regex.
Utilize regex parsing when dealing with complicated outputs.
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
We have set the run command to df -k.
The parse options have set the matches parsing option with the required regex, and keys, as well as what line to start parsing from.
- Place the configuration into your
configsdirectory - Stop/Start the binary
./airpipe --api-key enter-your-api-key --config-dir configs/
Review configuration
tutorial-df-regex-to-api.yml
name: tutorial-df-regex-to-api
interfaces:
tutorial/parse-df-regex:
output: http
actions:
- name: DiskDf
command:
run: df -k
parse:
line_start: 1
matches:
- keys: [
fs,
1K-blocks,
used,
available,
usePerc,
mountedOn,
]
regex: (\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)
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
}
}
}