A few weeks after we got our NBN HFC1 service up and running, I set up Smokeping, which has been quite useful. What I forgot to do was create an SMF manifest and service script for it, so I missed a few days of monitoring when I updated to a newer build of Solaris.Next (or whatever that release ends up being called).
I've now fixed that oversight and thought I should share what I'd written. My
installation is at /opt/smokeping/2.6.11
, for the record.
Firstly, the manifest:
<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<!--
Copyright (c) 2017 James C. McPherson. All rights reserved.
-->
<service_bundle type='manifest' name='smokeping'>
<service
name='network/smokeping'
type='service'
version='1'>
<create_default_instance enabled='true' />
<single_instance/>
<dependency
name='smokeping'
type='service'
grouping='require_all'
restart_on='refresh'>
<service_fmri value='svc:/network/http:apache24' />
</dependency>
<exec_method
type='method'
name='start'
exec='/lib/svc/method/svc-smokeping %m'
timeout_seconds='600' />
<exec_method
type='method'
name='stop'
exec=':kill'
timeout_seconds='60' />
<exec_method
type='method'
name='restart'
exec=':kill'
timeout_seconds='60' />
<exec_method
type='method'
name='refresh'
exec=':kill'
timeout_seconds='60' />
<template>
<common_name>
<loctext xml:lang='C'>
Smokeping latency graph
</loctext>
</common_name>
<description>
<loctext xml:lang='C'>
Provides information about upstream connection latency.
</loctext>
</description>
</template>
</service>
</service_bundle>
Now for the script itself:
#!/bin/sh
#
# Copyright (c) 2017, James C. McPherson. All rights reserved.
#
. /lib/svc/share/smf_include.sh
SMOKEPING=/opt/smokeping/2.6.11/bin/smokeping
PIDFILE=/var/smokeping/var/smokeping.pid
case "$1" in
'start')
# check to see if we're still running
if [ -f $PIDFILE ]; then
ps -fp `cat $PIDFILE`;
if [ $? -eq 0 ]; then
# still running, exit
exit 0
fi
fi
rm -f $PIDFILE
$SMOKEPING
;;
'restart')
$SMOKEPING --restart
;;
'refresh')
$SMOKEPING --reload
;;
'stop')
pkill smokeping
rm -f $PIDFILE
;;
'*')
echo "what do you want to do?"
exit 99
;;
esac
You can download the manifest and method script directly if desired. For
use, place the manifest in /lib/svc/manifest/site
and svcadm restart
manifest-import
. Place the script in /lib/svc/method
. Enjoy!