2012-02-06 21:19:30

by Jörn Engel

[permalink] [raw]
Subject: Announce: cancd 0.2.0 netconsole capture server

Quoting Documentation/networking/netconsole.txt:
The remote host can run either 'netcat -u -l -p <port>',
'nc -l -u <port>' or syslogd.

Now, both of these options have their issues. Netcat works fine, but
only reasonably scales to 1. Having to use a seperate port for every
test machine, as well as a seperate netcat process that writes to a
proper file becomes a bit of a nightmare by the time you approach
three digits of machines.

Syslogd would be great, if netconsole actually spoke syslog protocol.
As it is netconsole speaks a protocol I would describe as "7bit ascii,
no nonsense". Syslog protocal is described in rfc5424, a 38-page
document. I think it is fair to say the two are incompatibel. In
case someone actually wants to see the full trainwreck, a quick search
should come up with enough bug reports to scare your children into
bed.

Given that sad state of things, here is yet another alternative:
http://git.kernel.org/?p=linux/kernel/git/joern/cancd.git

It is far from perfect. Bases on cancd 0.1.0, written by Joel Becker,
it is completely incompatible to the older version. I decided to just
bang on the code long enough until it happened to do what I wanted.
No thought went into preserving previous functionality that I didn't
want to use. No thought went into making functionality I did actually
want optional. So unless your taste and requirements closely match
mine, you will have to invest some work.

The good new is that you have the source and can do it, just like I
did it. If you send me patches that keep things working for me, I
will be happy to merge them. If someone else wants to become
maintainer, great! Less work for me.

Also beware that I changed the code, but not the documentation. Oh,
Joel also disagrees with a number of the changes I made. A better
programmer with more time could have kept 0.1.0 and 0.2.0 compatible.
I didn't, sorry.

Jörn

PS: Since there is no documentation, here is a quick overview.

Invocations: cancd -p <port> -l <log_dir>

Cancd will take any messages thrown at that port, prepend a timestamp
to each line and write them out to a logfile matching the "machine".
Initially, the logfile will be the IP address of the source host. If
that IP has a matching reverse DNS entry, the logfile will be "foo"
for "foo.example.org". If you have two seperate machines
foo.a.example.org and foo.b.example.org, they will use the same
logfile.

Best used in combination with logrotate, for obvious reasons.


2012-02-06 21:31:26

by Jeff Moyer

[permalink] [raw]
Subject: Re: Announce: cancd 0.2.0 netconsole capture server

Jörn Engel <[email protected]> writes:

> Quoting Documentation/networking/netconsole.txt:
> The remote host can run either 'netcat -u -l -p <port>',
> 'nc -l -u <port>' or syslogd.
>
> Now, both of these options have their issues. Netcat works fine, but
> only reasonably scales to 1. Having to use a seperate port for every
> test machine, as well as a seperate netcat process that writes to a
> proper file becomes a bit of a nightmare by the time you approach
> three digits of machines.
>
> Syslogd would be great, if netconsole actually spoke syslog protocol.
> As it is netconsole speaks a protocol I would describe as "7bit ascii,
> no nonsense". Syslog protocal is described in rfc5424, a 38-page
> document. I think it is fair to say the two are incompatibel. In
> case someone actually wants to see the full trainwreck, a quick search
> should come up with enough bug reports to scare your children into
> bed.
>
> Given that sad state of things, here is yet another alternative:
> http://git.kernel.org/?p=linux/kernel/git/joern/cancd.git

Hmm, the old netdump-server package that we used to ship in RHEL should
work too, I think, if you are interested in that approach. That was
designed specifically to receive netconsole messages and netdumps from
multiple servers. Google up netdump-server-0.7.16 and you should find
an srpm. If there's interest in keeping that alive, I can put it up in
some public repo.

Cheers,
Jeff

2012-02-06 21:54:06

by Jörn Engel

[permalink] [raw]
Subject: Re: Announce: cancd 0.2.0 netconsole capture server

On Mon, 6 February 2012 16:31:14 -0500, Jeff Moyer wrote:
>
> Hmm, the old netdump-server package that we used to ship in RHEL should
> work too, I think, if you are interested in that approach. That was
> designed specifically to receive netconsole messages and netdumps from
> multiple servers. Google up netdump-server-0.7.16 and you should find
> an srpm. If there's interest in keeping that alive, I can put it up in
> some public repo.

Interesting. Not sure whether I care about keeping it alive, but
having a peek at the source cannot hurt.

I wonder how many more parallel efforts are out there.

Jörn