walt-log-monitor
logging tool¶
walt-log-monitor
is an advanced logging tool provided on some of the
images. It allows to emit loglines. For more info about WalT logging in
general, see walt help show logging.
Basic usage¶
You can run walt-log-monitor
like this:
[node]$ walt-log-monitor <command...>
Output lines of <command...>
(i.e. stdout and stderr) will be
transmitted up to WalT server and stored as log lines associated with
the log streams <command>.<pid>.monitor
.
Most of the time, you could achieve a similar goal by typing the following:
[node]$ <command...> | walt-log-cat <command>.out
Or, if you want to catch stderr too:
[node]$ <command...> 2>&1 | walt-log-cat <command>.out
There is, however, a difference: walt-log-monitor
will run
<command...>
in a virtual terminal. Therefore, <command...>
should behave exactly the same whether you typed it directly or you
prefixed with walt-log-monitor
. We wrote this tool because some
commands act differently when then detect their output is not a
terminal. For example, if tcpdump
detects its output is a pipe (like
in the walt-log-cat
construct), it will bufferize its output
differently. As a result, you may get different results whether you type
the command alone or with the pipe plus walt-log-cat
construct. On
the contrary, it should act exactly the same if you prefix the command
with walt-log-monitor
.
Installation¶
If your image does not provide walt-log-monitor
, but it already
provides python3.6+ and systemd, then you can get it by installing
python package walt-node
:
[image-shell]$ pip3 install walt-node
[image-shell]$ walt-node-setup
Simple example¶
I first run this in a first terminal:
$ walt log show --realtime
This will catch all loglines emitted from my nodes. (see walt help show log-realtime for more info)
Then, on a second terminal:
$ walt node shell node1
Caution: changes outside /persist will be lost on next node reboot.
Run 'walt help show shells' for more info.
root@node1:~# walt-log-monitor tcpdump -l -i wlan0
tcpdump: verbose output suppressed, [...]
listening on eth0, link-type EN10MB [...]
10:57:58.4151 IP 10.8.1.3.85 > 10.8.1.1.56: [...]
10:57:58.4157 IP 10.8.1.1.56 > 10.8.1.3.85: [...]
[...]
And immediately log lines are catched on first terminal:
$ walt log show --realtime
12:57:58.300114 node1.tcpdump.514.monitor -> START
12:57:58.446818 node1.tcpdump.514.monitor -> tcpdump: verbose output suppressed, [...]
12:57:58.457552 node1.tcpdump.514.monitor -> listening on eth0, link-type EN10MB [...]
12:57:58.481478 node1.tcpdump.514.monitor -> 10:57:58.4151 IP 10.8.1.3.85 > 10.8.1.1.56: [...]
12:57:58.486306 node1.tcpdump.514.monitor -> 10:57:58.4157 IP 10.8.1.1.56 > 10.8.1.3.85: [...]
[...]