[Oops, I just noticed I forgot to send this to the list. Sorry for the
dupe, Risto.]
On 9/17/2014 1:33 PM, Eric V. Smith wrote:
> It just occurs to me that another way to do this is to have an
> EnvironmentFile= configuration line (which specifies a filename that
> contains environment variables, like /etc/sysconfig/sec), and maybe I
> could specify the input files as -input=${INPUT_FILENAME_%I}. I'll have
> to play with how systemd expands %-variables and environment variables.
> Then I could in fact use the %I multiple instance mode, which would save
> me some hassle on starting the services. I'll report back what I find.
Okay, here's what I've come up with. The above approach will in fact work.
Here's /etc/systemd/system/[email protected]. Note the '@' in the filename.
Also note that ExecStart is all one line, I'm not really sure if systemd
lets you split lines like I've shown here:
----------------------------------
[Unit]
Description=Simple Event Correlator script to filter log file entries
After=syslog.target
[Service]
Type=simple
PIDFile=/run/sec-$I.pid
EnvironmentFile=/etc/sysconfig/sec
ExecStart=/usr/bin/sec --nodetach --pid=/run/sec-%I.pid \
${INPUT_%I} --conf=/etc/sec/sec-%I.conf \
--log=/var/log/sec-%I -intevents
[Install]
WantedBy=multi-user.target
----------------------------------
And here's /etc/sysconfig/sec
----------------------------------
INPUT_1=--input=/var/log/messages --input=/var/log/maillog
INPUT_2=--input=/var/log/secure
----------------------------------
With these 2 files in place, I can:
systemctl start [email protected]
systemctl start [email protected]
Which gives me these truncated lines from ps:
/usr/bin/perl -w /usr/bin/sec --nodetach --pid=/run/sec-1.pid
--input=/var/log/messages --input=/var/log/
/usr/bin/perl -w /usr/bin/sec --nodetach --pid=/run/sec-2.pid
--input=/var/log/secure --conf=/etc/sec/sec
So now, without creating additional .service files, I can start multiple
sec instances just by modifying each sec-N.conf file and putting the
input files into /etc/sysconfig/sec. It works perfectly!
I probably need to run "systemctl enable [email protected]", etc., if I want
the WantedBy line to be picked up. My framework happens to do that.
I switched to --nodaemon and type=simple. I was having problems with
--daemon and type=forking, but that may just have been an error in my
experimental setup while I was playing around. Anyway, I'm leaving it at
type=simple.
Note that with this scheme I'm not using the sec.service file that comes
with Fedora. I'll just mask sec.service, and there won't be a risk of it
starting.
Thanks for letting me bounce ideas off of you. Hopefully this helps
someone in the future.
--
Eric.
------------------------------------------------------------------------------
Slashdot TV. Video for Nerds. Stuff that Matters.
http://pubads.g.doubleclick.net/gampad/clk?id=160591471&iu=/4140/ostg.clktrk
_______________________________________________
Simple-evcorr-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/simple-evcorr-users