# `alarm_handler` [🔗](https://github.com/kikofernandez/otp/blob/kiko/otp/release-gh-action-backup-continuation/OTP-20040/lib/sasl/src/alarm_handler.erl#L22) An Alarm Handling Process The alarm handler process is a `m:gen_event` event manager process that receives alarms in the system. This process is not intended to be a complete alarm handler. It defines a place to which alarms can be sent. One simple event handler is installed in the alarm handler at startup, but users are encouraged to write and install their own handlers. The simple event handler sends all alarms as info reports to the error logger, and saves all in a list. This list can be passed to a user-defined event handler, which can be installed later. The list can grow large if many alarms are generated. This is a good reason to install a better user-defined handler. Functions are provided to set and clear alarms. The alarm format is defined by the user. For example, an event handler for SNMP can be defined, together with an alarm Management Information Base (MIB). The alarm handler is part of the SASL application. When writing new event handlers for the alarm handler, the following events must be handled: - **`{set_alarm, {AlarmId, AlarmDescr}}`** - This event is generated by [`alarm_handler:set_alarm({AlarmId, AlarmDecsr})`](`alarm_handler:set_alarm/1`). - **`{clear_alarm, AlarmId}`** - This event is generated by [`alarm_handler:clear_alarm(AlarmId)`](`alarm_handler:clear_alarm/1`). The default simple handler is called `alarm_handler` and it can be exchanged by calling `gen_event:swap_handler/3` as [`gen_event:swap_handler(alarm_handler, {alarm_handler, swap}, {NewHandler, Args})`](`gen_event:swap_handler/3`). `NewHandler:init({Args, {alarm_handler, Alarms}})` is called. For more details, see `m:gen_event` in STDLIB. ### See Also `m:error_logger`, `m:gen_event` # `alarm` *not exported* ```elixir -type alarm() :: {alarm_id(), AlarmDescription :: term()}. ``` # `alarm_id` *not exported* ```elixir -type alarm_id() :: term(). ``` # `clear_alarm` ```elixir -spec clear_alarm(alarm_id()) -> term(). ``` Sends event `clear_alarm` to all event handlers. When receiving this event, the default simple handler clears the latest received alarm with id `AlarmId`. # `get_alarms` ```elixir -spec get_alarms() -> [alarm()]. ``` Returns a list of all active alarms. This function can only be used when the simple handler is installed. # `set_alarm` ```elixir -spec set_alarm(alarm()) -> term(). ``` Sends event `set_alarm` to all event handlers. When receiving this event, the default simple handler stores the alarm. `AlarmId` identifies the alarm and is used when the alarm is cleared. --- *Consult [api-reference.md](api-reference.md) for complete listing*