Asterisk keepalive script

From Kolmisoft Wiki
Revision as of 14:56, 11 December 2024 by Gilbertas (talk | contribs)
Jump to navigationJump to search

Description

Keepalive script sends OPTIONS packets to Asterisk. If Asterisk does not respond to these packets, script consider that Asterisk is not functioning properly and acts according to configuration (possible actions are restart asterisk, send email, generate core dump).

Installation

X16

rm -fr /usr/src/mor && svn co http://svn.kolmisoft.com/mor/install_script/trunk/ /usr/src/mor
/usr/src/mor/x16/helpers/asterisk_keep_alive/install.sh

X17 and later versions

/usr/src/k_framework/helpers/asterisk/asterisk_keep_alive/install.sh

After installation, keepalive script will be located here:

/usr/local/mor/asterisk_keep_alive.sh

New cron will be added, which will execute script every minute:

/etc/cron.d/asterisk_keep_alive

Configuration

Before configuring script actions, we recommend to check log file /var/log/mor/mor_asterisk_keep_alive.log

tail -f /var/log/mor/mor_asterisk_keep_alive.log

If file contains lines:

[root@localhost ~]# tail -f /var/log/mor/mor_asterisk_keep_alive.log
2020-02-06 14:31:02 [NOTICE] Asterisk responded to OPTION packets sent to 127.0.0.1
2020-02-06 14:32:01 [NOTICE] Asterisk responded to OPTION packets sent to 127.0.0.1
2020-02-06 14:33:02 [NOTICE] Asterisk responded to OPTION packets sent to 127.0.0.1

It means that current script configuration is correct and you can enable actions as described bellow.

If log show actions with WARNING, it means that Asterisk does not respond to OPTION packets

2020-02-06 14:23:18 [WARNING] Ping IP is 192.168.5.5
2020-02-06 14:23:18 [WARNING] Asterisk did not respond to OPTIONS packets. Trying one more time
2020-02-06 14:23:38 [WARNING] Asterisk did not respond to OPTIONS packets second time

In MOR X16

It either means that Asterisk is down or configuration is incorrect. If Asterisk is running and you see such lines in log, do not set RESTART to 1, as in this case Asterisk will be restarted incorrectly.

You can change/enable actions in script itself. Open script /usr/local/mor/asterisk_keep_alive.sh and change options as documented in script. By default all actions are set to 0

# 1 - Restart Asterisk, 0 - do not restart Asterisk
RESTART=0

# 1 - Generate core dump, 0 - do not generate core dump
GENERATE_CORE_DUMP=0

# 1 - Send email notification, 0 - do not send email notification
# Email is sent using MOR SMPT server details from MOR GUI (if exist)
SEND_EMAIL=0

# Email address to send notification, taken into account only if SEND_EMAIL = 1
EMAIL_ADDRESS=""

# IP to send OPTION packets
# IF left empty (recommended), 127.0.0.1 will be used if binaddr 0.0.0.0, or bindarr otherwise
PING_IP=""

Text of notification email is within script file. You can alter if needed.

From MOR X17

Asterisk Keep-Alive install script adds these variables to /etc/mor/system.conf

asterisk_keepalive_active = 1
asterisk_keepalive_restart = 1
asterisk_keepalive_generate_core_dump = 0
asterisk_keepalive_send_email = 1
asterisk_keepalive_email_address = support@kolmisoft.com
asterisk_keepalive_ping_ip = default
asterisk_keepalive_ping_port = 5060
asterisk_keepalive_ping_attempts = 2
asterisk_keepalive_ping_timeout = 20

Variables can be edited and changes are reflected instantly, it does not require any reload or restart.

  • asterisk_keepalive_active - controls if the script is executed or not. If set to 0, the script simply exits. Default 1.
  • asterisk_keepalive_restart - controls if Asterisk is restarted if the script detects that Asterisk does not respond to OPTION packets. 1 - Restart, 0 - Do NOT restart. Default 1.
  • asterisk_keepalive_generate_core_dump - controls if the script generates a core dump of Asterisk. 1 - Generate, 0 - Do NOT generate. Default 0.
  • asterisk_keepalive_send_email - control if the script sends an email. 1 - Send email, 0 - Do NOT send email. Default 1.
  • asterisk_keepalive_email_address - email address to send a report. Only checked if asterisk_keepalive_send_email set to 1. Several emails can be set using semicolon, for example, asterisk_keepalive_email_address = person1@email.com;person2@email.com. Default value support@kolmisoft.com
  • asterisk_keepalive_ping_ip - IP to send OPTION packets to. Special value default means that OPTIONS packets are sent to 127.0.0.1 if bindaddr in /etc/asterisk/sip.conf is set to 0.0.0.0, and to bindaddr IP otherwise. Default is special value default.
  • asterisk_keepalive_ping_port - Port to send OPTION packets to. The default value is 5060.
  • asterisk_keepalive_ping_attempts - how many times sent OPTION packets until Asterisk is considered as non-reachable. The default value is 2.
  • asterisk_keepalive_ping_timeout - time in seconds to wait before sending OPTION packets. The default value is 20.
  • asterisk_keepalive_ping_ip_lock - if bindaddr is not 0.0.0.0, send OPTION packets only if IP is assigned to the server where the script is running. This prevents situations in floating IP environments, where the script ping IP is assigned to another server, but restarts local Asterisk. The default value is 1.

Log

Asterisk keepalive log is available here:

/var/log/mor/mor_asterisk_keep_alive.log

If Asterisk respond to OPTIONS packets, you will see entries with [NOTICE] like this.

2020-02-06 14:31:02 [NOTICE] Asterisk responded to OPTION packets sent to 127.0.0.1

If Asterisk does not respond to OPTIONS packets, you will see entries with [WARNING]

2020-02-06 14:23:18 [WARNING] Asterisk did not respond to OPTIONS packets. Trying one more time

How to disable

Remove cron:

rm -f /etc/cron.d/asterisk_keep_alive
service crond restart