Go to main content

Developing System Services in Oracle® Solaris 11.4

Exit Print View

Updated: November 2020
 
 

Creating a Goal Service

Most services that cannot reach the online state remain silently in the offline state. A goal service transitions to the maintenance state if its dependencies cannot be satisfied without administrative intervention. Transitioning to the maintenance state enables the administrator to be notified through the usual SMF fault notification mechanisms. For example, SNMP traps are sent on maintenance transitions. Using a goal service, you can specify a set of services that must be running, and if those services are not running, you are notified and do not need to separately check the state of each service in the set. You can also specify a goal service as a dependency of another service as a more compact way to specify do not start this service until all of these other services are ready. A goal service provides a single point to report failure of any of the specified dependency services.

The svc:/milestone/goals:default service is a goal service instance that indicates whether a system has booted according to your criteria. The default dependency of the milestone/goals service is svc:/milestone/multi-user-server:default. The dependencies of milestone/goals should be the mission critical services for the system. Then you will be notified if any of these services cannot come online at system startup without administrative intervention.

To specify services that are critical to your systems at startup as dependencies of a goal service, use one of the following methods:

  • Add dependencies to svc:/milestone/goals:default. Use the svcadm goals command as described in Changing the Goals of a Goal Service in Managing System Services in Oracle Solaris 11.4 to add dependencies to the milestone/goals instance or to another goal service instance.

  • Create your own custom goal service. For example, if you want NFS, NTP, and Apache all running at system startup, create a goal service that specifies NFS, NTP, and Apache services as dependencies of the goal service. On another system, you might want a goal service that specifies database services as dependencies.

Goal services that are in the maintenance state automatically leave that state once their dependencies are satisfiable.

You can modify and extend notification configuration as described in Configuring Notification of State Transition and FMA Events in Managing System Services in Oracle Solaris 11.4.

To define a service to be a goal service, set the goal-service boolean property in the general property group to true:

general/goal-service=true

To determine whether a service is a goal service, use the svccfg listprop command to show the value of the general/goal-service property.