Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions checks/asterisk/agent/asterisk_stats
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,11 @@ echo "sip peers $(asterisk -rx 'sip show peers' | \
-e "s:\]$::")"
echo "sip users $(( $(asterisk -rx 'sip show users' | wc -l) - 1 ))"
REGS="$(asterisk -rx 'sip show registry' | wc -l)"
echo "sip registry $(asterisk -rx 'sip show registry' | \
tail -n$(($REGS - 1)) | \
head -n$(( $REGS - 2)) | \
sed -e "s:\s\+:\ :g" )"
asterisk -rx 'sip show registry' | \
tail -n$(($REGS - 1)) | \
head -n$(( $REGS - 2)) | \
sed -e "s:\s\+:\ :g" | \
awk '$0="sip registry "$0'
echo "sip channels $(asterisk -rx 'sip show channels' | tail -n1)"
echo "sip channelstats $(asterisk -rx 'sip show channelstats' | tail -n1)"
echo "sip calls $(asterisk -rx 'core show calls' | grep active\ call | cut -d' ' -f1)"
44 changes: 39 additions & 5 deletions checks/asterisk/checks/asterisk_stats
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
factory_settings["asterisk_peers_default_params"] = {
"crit_if_offline_peers" : False,
}

def format_sip_trunk_name(line):
return "SIP trunk %s@%s"%(line[4],line[2])

def inventory_asterisk_stats_sip_peers(checkname, info):
inventory = []
for line in info:
if ( line[0], line[1] ) == ( "sip", "peers" ):
inventory.append ( ( "SIP peers", "", None) )
return inventory
yield "SIP peers", {}

def inventory_asterisk_stats_sip_users(checkname, info):
inventory = []
Expand All @@ -12,6 +17,11 @@ def inventory_asterisk_stats_sip_users(checkname, info):
inventory.append ( ( "SIP users", "", None) )
return inventory

def inventory_asterisk_stats_sip_trunks(checkname, info):
for line in info:
if ( line[0], line[1] ) == ( "sip", "registry" ):
yield format_sip_trunk_name(line), {}

def inventory_asterisk_stats_sip_channels(checkname, info):
inventory = []
for line in info:
Expand Down Expand Up @@ -50,7 +60,7 @@ def check_asterisk_stats_sip_peers(item, params, info):
offline_monitored = int(line[8])
online_unmonitored = int(line[11])
offline_unmonitored = int(line[13])
if offline_monitored > 0:
if offline_monitored > 0 and params["crit_if_offline_peers"]:
return (2,"CRITICAL - %i peer(s) are offline" % (offline_monitored))
if online_unmonitored + offline_unmonitored == 0:
return (0,"OK - %i all, %i online, %i offline" % ( overall_peers, online_monitored, offline_monitored ), [("online_monitored", online_monitored), ("offline_monitored", offline_monitored)])
Expand All @@ -66,6 +76,17 @@ def check_asterisk_stats_sip_users(item, params, info):
else:
return (1,"WARNING - %i users" % ( overall_users ), [('sip_users', overall_users)] )

def check_asterisk_stats_sip_trunks(item, params, info):
for line in info:
if ( line[0], line[1] ) == ( "sip", "registry" ):
trunk_name = format_sip_trunk_name(line)
trunk_status = line[6]
if trunk_name == item:
if trunk_status == "Registered":
return 0, "Registered"
else:
return 2, "%s" % ' '.join(line[6:])

def check_asterisk_stats_sip_channels(item, params, info):
for line in info:
if ( line[0], line[1] ) == ( "sip", "channels" ):
Expand All @@ -84,8 +105,21 @@ def check_asterisk_stats_sip_calls(item, params, info):
overall_calls = int(line[2])
return (0,"OK - %i simultaneous calls" % ( overall_calls ), [("active_calls", overall_calls)] )

check_info['asterisk_stats.sip_peers'] = (check_asterisk_stats_sip_peers, "Asterisk" , 1 , inventory_asterisk_stats_sip_peers)
check_info['asterisk_stats.sip_peers'] = {
"check_function" : check_asterisk_stats_sip_peers,
"inventory_function" : inventory_asterisk_stats_sip_peers,
"service_description" : "Asterisk %s",
"has_perfdata" : True,
"default_levels_variable" : "asterisk_peers_default_params",
"group" : "asterisk_sip_peers",
}
check_info['asterisk_stats.sip_users'] = (check_asterisk_stats_sip_users, "Asterisk" , 1 , inventory_asterisk_stats_sip_users)
check_info['asterisk_stats.sip_channels'] = (check_asterisk_stats_sip_channels, "Asterisk" , 1 , inventory_asterisk_stats_sip_channels)
check_info['asterisk_stats.sip_channelstats'] = (check_asterisk_stats_sip_channelstats, "Asterisk" , 1 , inventory_asterisk_stats_sip_channelstats)
check_info['asterisk_stats.sip_calls'] = (check_asterisk_stats_sip_calls, "Asterisk" , 1 , inventory_asterisk_stats_sip_calls)
check_info['asterisk_stats.sip_trunk'] = {
"check_function" : check_asterisk_stats_sip_trunks,
"inventory_function" : inventory_asterisk_stats_sip_trunks,
"service_description" : "Asterisk %s",
"has_perfdata" : False,
}
25 changes: 25 additions & 0 deletions checks/asterisk/wato/check_parameters_asterisk_stats.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Put this into /omd/sites/<sitename>/local/share/check_mk/web/plugins/wato/
# to be able to create WATO rules under Parameters for discovered services/Applications, Processes & Services/Asterisk stats check parameters

register_check_parameters(
subgroup_applications,
"asterisk_sip_peers",
_("Asterisk stats check parameters"),
Dictionary(
elements = [
( "crit_if_offline_peers",
Checkbox(
title = _("Change state to CRIT if there are offline peers"),
label = _("Enable"),
default_value = False,
),
),
],
optional_keys = False,
),
TextAscii(
title = _("Description (should always be empty)"),
allow_empty = True
),
match_type = 'dict',
)