2007/12/19, Rainer Gerhards <[EMAIL PROTECTED]>:
> Michael and all,
>
> I took me a while to craft a response to your excellent question. I have
> done this as a blog post so that it is easier to reference it in the
> future.
>
> I suggest that everyone interested in the v3 design has a look at it,
> because it describes the way I am heading. If someone doesn't like that,
> it is now time to speak up - in a few weeks it will probably be
> impossible to change routes.

Based on your recent blog post here are some thoughts of mine. Please
keep in mind, that being (Debian) package maintainer, so I speak from
a distributors pov.

1.) external dependencies
Having loadable modules for stuff like MySQL/PostgreSQL output support
is great (for a package maintainer)
This means I can package a basic rsyslog package with minimal
dependencies (glibc) and people can chose to install
rsyslog-(mysql,pgsql) based on their needs.
Here in this case, loadable modules have a real benefit.
The only remaining external dependencies currently in rsyslog are libz
(NETZIP support) and gssapi-krb (KERBEROS support). If those
functionality would be put into a loadable module, I'd support that.
2.) memory usage
I don't think this is a real issue, even for embedded systems. See
point 1. If we manage to put external dependencies into loadable
modules, that would be sufficient imho.
Modularising everything won't have that much of an memory benefit
imho. Given that a standard rsyslogd is about 1M RSS, this doesn't
imply the need for more modularization.
3.) Security
You mentioned, that you try to improve security through modules.
Usually, having loadable module support is considered a security risk.
One messed up $IncludeConfig directive (or manipulated through a
malicious attacker), and you load potentially hazardous modules.
Loadable modules support introduces a much bigger attack vector.

I'm not a SELinux guy. But I'd be interested if loadable modules could
cause trouble in putting rsyslog in it's own security domain. Maybe
the fedora guys can comment on this.

4.) (code) modularization
Writing modular code doesn't strictly imply that the modules have to
be loadable *.so files.
You can still write modular code, with a strict API etc. and organize
it e.g. via sub directories.
5.) Performance penalty through loadable modules.
I could be wrong on this point, but given that you have pointers on
functions, when you use modules (dlsym), there is an additional
indirection on each function call. This could have a performance
impact for core functionality. This is just speculation and should be
tested/evaluated beforehand. After all, rsyslog tries to meet
high-performance needs, too.
6.) Inconvenience
This is just a gut feeling, but having to load all sorts of moduls
first, before rsyslog does anything, could prove cumbersome. As
administrator you'd have to know, which modules to load, to get
rsyslog to do what you want. This means additional effort (reading
docs) and inconvenience.
7.) Robustness
Having a single binary can prove to be a live safer. E.g. you could
simply copy the rsyslogd binary from another machine if there is
something wrong with your local copy.
As you were talking about embedded systems, having the ability to
compile a static binary including all functionality is a definite
plus. There might be platforms out there which don't support dlopen().

I'm still missing the complete picture, too. It's still a bit too vague for me.

You were talking about input, output and filter modules. Rainer, could
cou try to complete this list somehow, maybe draw/sketch a flow
diagram, marking the modules.

input: local, kernel and network, ...
filter: regexp, ...
output: mysql, pgsql, file, forward...
authorization?


I hope, this all doesn't sound too negative. But before going all
modular, all these issues should be considered imho.

Hopefully these comments will help.

Michael

-- 
Why is it that all of the instruments seeking intelligent life in the
universe are pointed away from Earth?
_______________________________________________
rsyslog mailing list
http://lists.adiscon.net/mailman/listinfo/rsyslog

Reply via email to