Solaris предоставляет богатый набор возможностей для управления службами. Одно из замечательных средств – внутренний механизм отслеживания состояния служб. В других ОС приходится ставить ПО наподобии monit или писать вручную скрипты, а в Solaris это уже продумано.
Тестовый стенд: Solaris11.
Данная статья является вольным переводом соответствующего раздела раздела официальной документации.
Для управления уведомлениями используется команда svccfg setnotify. Её синтаксис таков:
# /usr/sbin/svccfg setnotify {[-g] tset | class} notification_parameters
-g = значит глобально
tset = состояние служб или событий (может быть maintenance, degraded, offline, and online, all, а так же наборы с приставками to/from: to-online, from-offline)
class = события (problem-repaired, problem-diagnosed, problem-updated, problem-resolved)
notification_parameters = параметры уведомления (mailto, snmp, syslog)
Следующая команда создаст уведомление, когда какая-то из служб перейдёт в состояние maintenance:
# /usr/sbin/svccfg setnotify -g maintenance mailto:sysadmins@example.com
Или для отдельного сервиса:
# /usr/sbin/svccfg -s svc:/system/name-service/switch:default setnotify maintenance mailto:sysadmins@example.com
Так же можно использовать вместо maintenance такие ключевые слова degraded, offline, and online, all (или несколько, перечисленные через запятую без пробела).
Ещё приятным моментом будет узнать то, что можно отслеживать не только изменения, а и переходы с одного состояния в другое или просто переход в состояние. Для этого используются ключевые слова to-* и from-* :
# /usr/sbin/svccfg -s svc:/system/name-service/switch:default setnotify to-online mailto:sysadmins@example.com
А так же можно ещё к этому всему отправлять сообщения в snmp traps:
# /usr/sbin/svccfg setnotify problem-repaired snmp:SNMP-TRAP
Вместо problem-repaired можно использовать problem-diagnosed, problem-updated, problem-resolved (или несколько, перечисленные через запятую без пробела)
А вот пример удаление уведоммления:
# /usr/sbin/svccfg -s svc:/system/name-service/switch:default delnotify to-online
Для просмотра установленный уведомлений используем такую команду:
# /usr/sbin/svccfg listnotify problem-diagnosed Event: problem-diagnosed (source: svc:/system/fm/notify-params:default) Notification Type: smtp Active: true reply-to: root@localhost to: root@localhost Notification Type: snmp Active: true Notification Type: syslog Active: true