On Wed, Jul 22, 2020 at 06:16:01AM -0700, Richard Cochran wrote:
> On Wed, Jul 22, 2020 at 02:14:48PM +1000, Luke Howard wrote:
> > [resending from correct email]
> >
> > > The output of the pmc tool is still unstructured text. So to feed it into
> > > a script I would still need to write an output parser of some sort and I
> > > would have to guess that my parser covers all of the cases that the tool
> > > might generate and I would have to assume that the output format doesn’t
> > > change. This is what got me thinking about structuring the output format
> > > somehow in a way that any tool could consume it.
> >
> > Perhaps in that case a structured text option to pmc(8) would be useful and
> > not too hard to add?
>
> In contrast to the logging, I think the pmc output is already
> structured and easy to parse.
Case in point:
- I wanted to add simple client monitoring to a deployment.
- Running pmc every second (or so) is really easy in systemd, and the
output is logged automatically, BUT
- the client's records are spread across multiple lines, and that is
not very convenient in the syslog.
- So, what do I do? Invent a new logging interface? Nah.
Something like this in python could emit json pretty easily, I would
expect...
---8<--- pmc-monitor.service ------
[Unit]
Description=PTP Logging Service
After=network.target
[Service]
Type=exec
ExecStart=/usr/local/bin/pmc-monitor.sh
Restart=always
[Install]
WantedBy=multi-user.target
---8<--- pmc-monitor.sh ------
#!/bin/sh
while [ 1 ]; do
pmc -u 'get current' | awk -e '
function print_last_record() {
if (!last) {
return;
}
gsub("\t", " ", last);
print last;
}
{
if ($1 == "sending:") {
next;
}
if ($4 == "RESPONSE" && $5 == "MANAGEMENT") {
print_last_record();
last = $1 " " $6;
next;
}
last = last $0;
}
END {
print_last_record();
}
'
sleep 1
done
_______________________________________________
Linuxptp-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel