Hi,
So I've been working on getting rsyslogd set up on a Solaris platform
(not as a local syslog replacement, but as the central syslog server for
a network).
Attached is a patchset which adds a Solaris SMF service manifest
(rsyslog.xml) and method script (svc-rsyslog).
I'm not sure how exactly to wire this into the install process, so I'll
describe what needs to get done.
svc-rsyslog needs to be kicked into $PREFIX/etc and be chmod +x.
rsyslog.xml needs the literal string 'PREFIX' replaced with $PREFIX, and
then passed to svccfg import. Something as simple as 'sed
"s#PREFIX#$PREFIX#g" < rsyslog.xml | svccfg import -' would do the trick.
The manifest registers rsyslog with SMF under the FMRI
svc:/network/rsyslog:default. The properties (accessible using svcprop)
'rsyslog/conf' and 'rsyslog/opts' contain the path to the config file
and any command-line options for rsyslog respectively.
I've also updated http://wiki.rsyslog.com/index.php/Solaris based on my
experiences getting rsyslog working on Solaris 10.
All in all, this has been much, MUCH easier than it was when I tried two
years ago.
Cheers,
-Jesse
------------------------------------------------------------------------
The information contained in this communication is intended
only for the use of the recipient(s) named above. It may
contain information that is privileged or confidential, and
may be protected by State and/or Federal Regulations. If
the reader of this message is not the intended recipient,
you are hereby notified that any dissemination,
distribution, or copying of this communication, or any of
its contents, is strictly prohibited. If you have received
this communication in error, please return it to the sender
immediately and delete the original message and any copy
of it from your computer system. If you have any questions
concerning this message, please contact the sender.
------------------------------------------------------------------------
# HG changeset patch
# User Jesse Kempf <[email protected]>
# Date 1272312372 0
# Node ID db0b8987512e9996ffea1ebf342bb5ac34a7849d
# Parent 9ff608272afffbcdc03cc9a5c48f0b65dae8b3ef
Add SMF manifest and method script.
diff --git a/solaris/rsyslog.xml b/solaris/rsyslog.xml
new file mode 100644
--- /dev/null
+++ b/solaris/rsyslog.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
+<!--
+ Created by Jesse Kempf <[email protected]>
+ 26 Apr 2010
+-->
+
+<service_bundle type='manifest' name='NONE:rsyslog'>
+<service name='network/rsyslog' type='service' version='4.7.1'>
+ <create_default_instance enabled='false' />
+ <single_instance/>
+
+ <dependency name='milestone' grouping='require_all'
+ restart_on='none' type='service'>
+ <service_fmri value='svc:/milestone/sysconfig' />
+ </dependency>
+
+ <dependency name='filesystem' grouping='require_all'
+ restart_on='none' type='service'>
+ <service_fmri value='svc:/system/filesystem/local' />
+ </dependency>
+
+ <dependency name='nameservice' grouping='require_all'
+ restart_on='restart' type='service'>
+ <service_fmri value='svc:/milestone/name-services'>
+ </dependency>
+
+ <dependency name='multiuser' grouping='require_all'
+ restart_on='none' type='service'>
+ <service_fmri value='svc:/milestone/multi-user-server' />
+ </dependency>
+
+
+ <stability value='Evolving' />
+
+ <property_group name='rsyslog' type='framework'>
+ <stability value='Evolving' />
+ <propval name='conf' type='string'
+ value='/usr/local/etc/rsyslog.conf' />
+ <propval name='opts' type='string' value='-c4' />
+ </property_group>
+
+ <method_context>
+ <method_environment>
+ <envvar name='LD_LIBRARY_CONFIG'
+ value='/opt/csw/gcc4/lib:/opt/csw/lib'
/>
+ </method_environment>
+ </method_context>
+
+ <exec_method type='method' name='start' timeout_seconds='60'
+ exec='/usr/local/etc/rsyslogd start' />
+ <exec_method type='method' name='stop' timeout_seconds='60'
+ exec='/usr/local/etc/rsyslogd stop' />
+ <exec_method type='method' name='refresh' timeout_seconds='60'
+ exec='/usr/local/etc/rsyslogd reload' />
+
+ <template>
+ <common_name>
+ <loctext xml:lang='C'>
+ rsyslog server
+ </loctext>
+ </common_name>
+ <documentation>
+ <manpage title='rsyslogd' section='8'
manpath='/usr/local/man' />
+ <doc_link name='rsyslog.com' uri='http://rsyslog.com' />
+ </documentation>
+ </template>
+
+</service>
+
+</service_bundle>
diff --git a/solaris/svc-rsyslog b/solaris/svc-rsyslog
new file mode 100644
--- /dev/null
+++ b/solaris/svc-rsyslog
@@ -0,0 +1,40 @@
+#!/bin/sh
+#
+# Created by Jesse Kempf <[email protected]> 26 Apr 2010
+#
+PREFIX=/usr/local
+RSYSLOG=$PREFIX/sbin/rsyslog
+CONFFILE=`svcprop -p rsyslog/conf svc:/network/rsyslog:default`
+OPTIONS=`svcprop -p rsyslog/opts svc:/network/rsyslog:default`
+PIDFILE=/var/run/rsyslogd.pid
+
+case "$1" in
+ start)
+ if [ -f $CONFFILE -a -f $RSYSLOG} ]; then
+ echo "starting rsyslogd."
+ $RSYSLOG $OPTIONS -f $CONFFILE
+ fi
+ ;;
+ stop)
+ if [ -f $PIDFILE ]; then
+ pid=`cat $PIDFILE`
+ if [ "$pid" -gt 0 ]; then
+ kill -TERM $pid
+ rm $PIDFILE
+ fi
+ fi
+ ;;
+ reload)
+ if [ -f $PIDFILE ]; then
+ pid=`cat $PIDFILE`
+ if [ "$pid" -gt 0 ]; then
+ kill -HUP $pid
+ rm $PIDFILE
+ fi
+ fi
+ ;;
+ *)
+ echo "Usage: $0 { start | stop | reload }"
+ exit 1
+ ;;
+esac
# HG changeset patch
# User Jesse Kempf <[email protected]>
# Date 1272313244 0
# Node ID 12ce9b53064dc26a5d81a068f24ceed9b4953d1c
# Parent db0b8987512e9996ffea1ebf342bb5ac34a7849d
fix unclosed tag.
diff --git a/solaris/rsyslog.xml b/solaris/rsyslog.xml
--- a/solaris/rsyslog.xml
+++ b/solaris/rsyslog.xml
@@ -22,7 +22,7 @@
<dependency name='nameservice' grouping='require_all'
restart_on='restart' type='service'>
- <service_fmri value='svc:/milestone/name-services'>
+ <service_fmri value='svc:/milestone/name-services' />
</dependency>
<dependency name='multiuser' grouping='require_all'
# HG changeset patch
# User Jesse Kempf <[email protected]>
# Date 1272313463 0
# Node ID fd1620bbfbdd09edeb2572913a26ac89219d67be
# Parent 12ce9b53064dc26a5d81a068f24ceed9b4953d1c
Fix SMF manifest structure to fit the DTD.
diff --git a/solaris/rsyslog.xml b/solaris/rsyslog.xml
--- a/solaris/rsyslog.xml
+++ b/solaris/rsyslog.xml
@@ -30,16 +30,6 @@
<service_fmri value='svc:/milestone/multi-user-server' />
</dependency>
-
- <stability value='Evolving' />
-
- <property_group name='rsyslog' type='framework'>
- <stability value='Evolving' />
- <propval name='conf' type='string'
- value='/usr/local/etc/rsyslog.conf' />
- <propval name='opts' type='string' value='-c4' />
- </property_group>
-
<method_context>
<method_environment>
<envvar name='LD_LIBRARY_CONFIG'
@@ -54,6 +44,15 @@
<exec_method type='method' name='refresh' timeout_seconds='60'
exec='/usr/local/etc/rsyslogd reload' />
+ <property_group name='rsyslog' type='framework'>
+ <stability value='Evolving' />
+ <propval name='conf' type='string'
+ value='/usr/local/etc/rsyslog.conf' />
+ <propval name='opts' type='string' value='-c4' />
+ </property_group>
+
+ <stability value='Evolving' />
+
<template>
<common_name>
<loctext xml:lang='C'>
# HG changeset patch
# User Jesse Kempf <[email protected]>
# Date 1272313494 0
# Node ID ff436f87eb4bec8d2e3cdbbc6f11c6748555bdca
# Parent fd1620bbfbdd09edeb2572913a26ac89219d67be
The SMF DTD defines the type for a string as 'astring', not 'string'.
diff --git a/solaris/rsyslog.xml b/solaris/rsyslog.xml
--- a/solaris/rsyslog.xml
+++ b/solaris/rsyslog.xml
@@ -46,9 +46,9 @@
<property_group name='rsyslog' type='framework'>
<stability value='Evolving' />
- <propval name='conf' type='string'
+ <propval name='conf' type='astring'
value='/usr/local/etc/rsyslog.conf' />
- <propval name='opts' type='string' value='-c4' />
+ <propval name='opts' type='astring' value='-c4' />
</property_group>
<stability value='Evolving' />
# HG changeset patch
# User Jesse Kempf <[email protected]>
# Date 1272314961 0
# Node ID 487a7cbf0847fb8f63405135c2185124e4c08452
# Parent ff436f87eb4bec8d2e3cdbbc6f11c6748555bdca
In svc-rsyslog, we should look for sbin/rsyslogd, not sbin/rsyslog.
diff --git a/solaris/svc-rsyslog b/solaris/svc-rsyslog
--- a/solaris/svc-rsyslog
+++ b/solaris/svc-rsyslog
@@ -3,14 +3,14 @@
# Created by Jesse Kempf <[email protected]> 26 Apr 2010
#
PREFIX=/usr/local
-RSYSLOG=$PREFIX/sbin/rsyslog
+RSYSLOG=$PREFIX/sbin/rsyslogd
CONFFILE=`svcprop -p rsyslog/conf svc:/network/rsyslog:default`
OPTIONS=`svcprop -p rsyslog/opts svc:/network/rsyslog:default`
PIDFILE=/var/run/rsyslogd.pid
case "$1" in
start)
- if [ -f $CONFFILE -a -f $RSYSLOG} ]; then
+ if [ -f $CONFFILE -a -f $RSYSLOG ]; then
echo "starting rsyslogd."
$RSYSLOG $OPTIONS -f $CONFFILE
fi
# HG changeset patch
# User Jesse Kempf <[email protected]>
# Date 1272314981 0
# Node ID 07a53828d754ff443fb2ec6107fcaa72441414bc
# Parent 487a7cbf0847fb8f63405135c2185124e4c08452
For the SMF manifest, set LD_LIBRARY_PATH, not LD_LIBRARY_CONFIG. Oops.
diff --git a/solaris/rsyslog.xml b/solaris/rsyslog.xml
--- a/solaris/rsyslog.xml
+++ b/solaris/rsyslog.xml
@@ -32,7 +32,7 @@
<method_context>
<method_environment>
- <envvar name='LD_LIBRARY_CONFIG'
+ <envvar name='LD_LIBRARY_PATH'
value='/opt/csw/gcc4/lib:/opt/csw/lib'
/>
</method_environment>
</method_context>
# HG changeset patch
# User Jesse Kempf <[email protected]>
# Date 1272315789 0
# Node ID a90296c95fbfc1311852a3f83c9e38dee375c0fb
# Parent 07a53828d754ff443fb2ec6107fcaa72441414bc
Rename '/usr/local' to PREFIX in the SMF manifest. The import to svccfg can
then be done as "sed 's#PREFIX#${PREFIX}#g' < rsyslog.xml | svccfg import -".
diff --git a/solaris/rsyslog.xml b/solaris/rsyslog.xml
--- a/solaris/rsyslog.xml
+++ b/solaris/rsyslog.xml
@@ -38,16 +38,16 @@
</method_context>
<exec_method type='method' name='start' timeout_seconds='60'
- exec='/usr/local/etc/rsyslogd start' />
+ exec='PREFIX/etc/rsyslogd start' />
<exec_method type='method' name='stop' timeout_seconds='60'
- exec='/usr/local/etc/rsyslogd stop' />
+ exec='PREFIX/etc/rsyslogd stop' />
<exec_method type='method' name='refresh' timeout_seconds='60'
- exec='/usr/local/etc/rsyslogd reload' />
+ exec='PREFIX/etc/rsyslogd reload' />
<property_group name='rsyslog' type='framework'>
<stability value='Evolving' />
<propval name='conf' type='astring'
- value='/usr/local/etc/rsyslog.conf' />
+ value='PREFIX/etc/rsyslog.conf' />
<propval name='opts' type='astring' value='-c4' />
</property_group>
@@ -60,7 +60,7 @@
</loctext>
</common_name>
<documentation>
- <manpage title='rsyslogd' section='8'
manpath='/usr/local/man' />
+ <manpage title='rsyslogd' section='8'
manpath='PREFIX/man' />
<doc_link name='rsyslog.com' uri='http://rsyslog.com' />
</documentation>
</template>
_______________________________________________
rsyslog mailing list
http://lists.adiscon.net/mailman/listinfo/rsyslog
http://www.rsyslog.com