Было найдено тут.
Немного копипасты:
http://www.voip-info.org/wiki/view/Asterisk+n-way+call+HOWTO
Надо просто немного подправить скрипт..
теперь инициатор собирает конференцию (и не вываливается!!!), все кто есть в конференции тоже могут приглашать народ, если остается один человек - ему играется музыка ождания и он может начать приглашать людей!
в extensions.conf
[default]
exten => _XXX,1,Set(DYNAMIC_FEATURES=nway-start)
exten => _XXX,n,Dial(SIP/${EXTEN})
[dynamic-nway]
exten => _XXX,1,Answer
exten => _XXX,n,Set(CONFNO=${EXTEN})
exten => _XXX,n,Set(MEETME_EXIT_CONTEXT=dynamic-nway-invite)
exten => _XXX,n,Set(DYNAMIC_FEATURES=)
exten => _XXX,n,MeetMe(${CONFNO},pdMX)
exten => _XXX,n,Hangup
[dynamic-nway-invite]
exten => 0,1,Read(DEST,dial,,i)
exten => 0,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => 0,n,Dial(Local/${DEST}@dynamic-nway-dest,,g)
exten => 0,n,Set(DYNAMIC_FEATURES=)
exten => 0,n,Goto(dynamic-nway,${CONFNO},1)
exten => i,1,Goto(dynamic-nway,${CONFNO},1)
[dynamic-nway-dest]
exten => _XXX,1,Dial(SIP/${EXTEN})
[macro-nway-start]
exten => s,1,Set(CONFNO=${FindFreeConf()})
exten => s,n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)
exten => s,n,Read(DEST,dial,,i)
exten => s,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => s,n,Dial(Local/${DEST}@dynamic-nway-dest) #УБИРАЕМ ОПЦИЮ "g"!!!!
#exten => s,n,Set(DYNAMIC_FEATURES=) #коментим, ибо не работает
#exten => s,n,Goto(dynamic-nway,${CONFNO},1) #коментим, ибо не работает
[macro-nway-ok]
exten => s,1,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)
exten => s,2,Set(DYNAMIC_FEATURES=) # добавляем
exten => s,3,Goto(dynamic-nway,${CONFNO},1) # добавляем
[macro-nway-notok]
exten => s,1,SoftHangup(${BRIDGEPEER})
exten => s,2,Set(DYNAMIC_FEATURES=) # добавляем
exten => s,3,Goto(dynamic-nway,${CONFNO},1) # добавляем
ну и в features.conf все, как в ссылке:
[applicationmap]
nway-start => *0,caller,Macro,nway-start
nway-inv => **,caller,Macro,nway-ok
nway-noinv => *#,caller,Macro,nway-notok
Tuesday, March 1, 2011
Мониторинг хостов/Asterisk с помощью Nagios/SSH
Возник вопрос - а как же держать ту кучу серверов, что я обслуживаю под контролем. При чем больше всего на них меня волнует вопрос дискового пространства и загрузки процессора. Астериск, также мониторится c помощью плагина Nagisk. Доступ на сервера есть только через SSH.
Использованная литература:
1. http://www.daemony.ru/?p=673
2. Документация по Nagios
Итак... Традиционно для Debian Lenny, уже 6.0
apt-get install nagios3 nagios-plugins apache2
В процессе установки попросит ввести пароль для nagiosadmin
После этого по адресу http://servip/nagios3 после ввода имени nagiosadmin и пароля, который задали при установке, попадаете на основную страничку Nagios.
Теперь небольшая копипаста:
Нам необходимо:
сгенерировать пару RSA ключей на сервере и открытый ключ скопировать на клиент
завести на клиенте пользователя nagios
скопировать на клиента папку с плагинами нагиоса
описать в конфиге нагиоса соответствующие команды и сервисы
Случилось так, что системный пользователь nagios не имеет возможности залогиниться в систему. Но эту неприятность мы переживем :) Домашняя его директория находится в /var/spool/nagios/. Итак, логинимся в систему пользователем nagios и генерируем RSA ключи:
Тут мы получаем общий ключ id_rsa.pub, который будем использовать далее.
Теперь несколько скриптов для упрощения жизни:
runnonhost.sh
#! /bin/sh
adduser nagios
mkdir -p /home/nagios
mkdir -p /home/nagios/.ssh
mkdir -p /home/nagios/plugins
echo "nagios ALL=NOPASSWD: /usr/sbin/asterisk" >> /etc/sudoers
mkdir -p /usr/share/terminfo/u
cp /usr/share/terminfo/l/linux /usr/share/terminfo/u/unknown
mv /home/user/id_rsa.pub /home/nagios/.ssh/authorized_keys
chown -R nagios:nagios /home/nagios/*
chown -R nagios:nagios /home/nagios
chmod 700 /home/nagios/.ssh
chmod 600 /home/nagios/.ssh/authorized_keys
Это скрипт, который запускается на самом сервере, который будем мониторить. Для этого в папке пользователя user должен лежать id_rsa.pub, который мы получили ранее. Для этого проще всего воспользоваться sftp или чем-то подобным.
6я строчка - для возможности получения пользователем nagios доступа к консоли Asterisk.
7я и 8я зависят от дистрибутива и его версии. Дело в том, что nagisk не может выполняться на dumb терминале. Выполняется он на unknown, для чего мы его и подсовываем.
Также для CentOS необходимо в sudoers добавить строчку
Defaults:nagios !requiretty
Скрипт номер 2:
#! /bin/sh
HOST="$1"
PORT="$2"
NAME="$3"
sudo -u nagios /bin/bash -c "scp -P $PORT /usr/lib/nagios/plugins/* $HOST:~/plugins && exit"
echo >> /etc/nagios3/conf.d/host-clients.cfg
echo "define host {" >> /etc/nagios3/conf.d/host-clients.cfg
echo "host_name $NAME" >> /etc/nagios3/conf.d/host-clients.cfg
echo "alias $NAME" >> /etc/nagios3/conf.d/host-clients.cfg
echo "address $HOST" >> /etc/nagios3/conf.d/host-clients.cfg
echo "_PORT $PORT" >> /etc/nagios3/conf.d/host-clients.cfg
echo "_WARNCHAN 10" >> /etc/nagios3/conf.d/host-clients.cfg
echo "use generic-host" >> /etc/nagios3/conf.d/host-clients.cfg
echo "}" >> /etc/nagios3/conf.d/host-clients.cfg
Скрипт, который запускается на хостовой машине с Nagios. Принимает 3 параметра. Собственно, хост, порт для ssh, и имя, которое используется в Nagios. Конфиг хоста записывает в host-client.cfg. После этого руками надо добавить его в какую-либо хостгруппу в файле
Теперь файлы самого Nagios:
define service {
use generic-service
hostgroup_name AAA,BBB
service_description Asterisk Version
check_command check_ssh_asterisk_version!$_HOSTPORT$
notifications_enabled 1
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description Asterisk Channels
check_command check_ssh_asterisk_channels!$_HOSTPORT$!$_HOSTWARNCHAN$
notifications_enabled 1
}
define host {
host_name HOSTNAME
alias HOSTNAME
address IPaddress
_PORT PORT
_WARNCHAN 60
use generic-host
}
После этого перезапускаем Nagios и любуемся.
Использованная литература:
1. http://www.daemony.ru/?p=673
2. Документация по Nagios
Итак... Традиционно для Debian Lenny, уже 6.0
apt-get install nagios3 nagios-plugins apache2
В процессе установки попросит ввести пароль для nagiosadmin
После этого по адресу http://servip/nagios3 после ввода имени nagiosadmin и пароля, который задали при установке, попадаете на основную страничку Nagios.
Теперь небольшая копипаста:
Нам необходимо:
Случилось так, что системный пользователь nagios не имеет возможности залогиниться в систему. Но эту неприятность мы переживем :) Домашняя его директория находится в /var/spool/nagios/. Итак, логинимся в систему пользователем nagios и генерируем RSA ключи:
sudo -u nagios /bin/bash
cd ~
mkdir .ssh
chmod 700 .ssh
ssh-keygen -t rsa
cd ~
mkdir .ssh
chmod 700 .ssh
ssh-keygen -t rsa
Тут мы получаем общий ключ id_rsa.pub, который будем использовать далее.
Теперь несколько скриптов для упрощения жизни:
runnonhost.sh
adduser nagios
mkdir -p /home/nagios
mkdir -p /home/nagios/.ssh
mkdir -p /home/nagios/plugins
echo "nagios ALL=NOPASSWD: /usr/sbin/asterisk" >> /etc/sudoers
mkdir -p /usr/share/terminfo/u
cp /usr/share/terminfo/l/linux /usr/share/terminfo/u/unknown
mv /home/user/id_rsa.pub /home/nagios/.ssh/authorized_keys
chown -R nagios:nagios /home/nagios/*
chown -R nagios:nagios /home/nagios
chmod 700 /home/nagios/.ssh
chmod 600 /home/nagios/.ssh/authorized_keys
Это скрипт, который запускается на самом сервере, который будем мониторить. Для этого в папке пользователя user должен лежать id_rsa.pub, который мы получили ранее. Для этого проще всего воспользоваться sftp или чем-то подобным.
6я строчка - для возможности получения пользователем nagios доступа к консоли Asterisk.
7я и 8я зависят от дистрибутива и его версии. Дело в том, что nagisk не может выполняться на dumb терминале. Выполняется он на unknown, для чего мы его и подсовываем.
Также для CentOS необходимо в sudoers добавить строчку
Defaults:nagios !requiretty
Скрипт номер 2:
addhost.sh
#! /bin/sh
HOST="$1"
PORT="$2"
NAME="$3"
sudo -u nagios /bin/bash -c "scp -P $PORT /usr/lib/nagios/plugins/* $HOST:~/plugins && exit"
echo >> /etc/nagios3/conf.d/host-clients.cfg
echo "define host {" >> /etc/nagios3/conf.d/host-clients.cfg
echo "host_name $NAME" >> /etc/nagios3/conf.d/host-clients.cfg
echo "alias $NAME" >> /etc/nagios3/conf.d/host-clients.cfg
echo "address $HOST" >> /etc/nagios3/conf.d/host-clients.cfg
echo "_PORT $PORT" >> /etc/nagios3/conf.d/host-clients.cfg
echo "_WARNCHAN 10" >> /etc/nagios3/conf.d/host-clients.cfg
echo "use generic-host" >> /etc/nagios3/conf.d/host-clients.cfg
echo "}" >> /etc/nagios3/conf.d/host-clients.cfg
Скрипт, который запускается на хостовой машине с Nagios. Принимает 3 параметра. Собственно, хост, порт для ssh, и имя, которое используется в Nagios. Конфиг хоста записывает в host-client.cfg. После этого руками надо добавить его в какую-либо хостгруппу в файле
/etc/nagios3/conf.d/hostgroups_nagios2.cfg
Теперь файлы самого Nagios:
/etc/nagios3/commands.cfg
define command {
command_name check_ssh_disk
command_line $USER1$/check_by_ssh -p $ARG4$ -H $HOSTADDRESS$ -C "~/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$"
}
define command {
command_name check_ssh_CPU
command_line $USER1$/check_by_ssh -p $ARG7$ -H $HOSTADDRESS$ -C "~/plugins/check_load -w $ARG1$,$ARG2$,$ARG3$ -c $ARG4$,$ARG5$,$ARG6$"
}
define command {
command_name check_ssh_asterisk_version
command_line $USER1$/check_by_ssh -p $ARG1$ -H $HOSTADDRESS$ -C "~/plugins/nagisk.pl -c version 2>>/dev/null"
}
define command {
command_name check_ssh_asterisk_channels
command_line $USER1$/check_by_ssh -p $ARG1$ -H $HOSTADDRESS$ -C "~/plugins/nagisk.pl -c channels -w $ARG2$ 2>>/dev/null"
}
define command {
command_name check_ssh_asterisk_peers
command_line $USER1$/check_by_ssh -p $ARG1$ -H $HOSTADDRESS$ -C "~/plugins/nagisk.pl -c peers 2>>/dev/null"
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description Root Partition
check_command check_ssh_disk!10%!5%!/!$_HOSTPORT$
notifications_enabled 1
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description Home Partition
check_command check_ssh_disk!10%!5%!/home!$_HOSTPORT$
notifications_enabled 1
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description CPU Load
check_command check_ssh_CPU!5.0!4.0!3.0!10.0!6.0!4.0!$_HOSTPORT$
notifications_enabled 1
}
command_name check_ssh_disk
command_line $USER1$/check_by_ssh -p $ARG4$ -H $HOSTADDRESS$ -C "~/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$"
}
define command {
command_name check_ssh_CPU
command_line $USER1$/check_by_ssh -p $ARG7$ -H $HOSTADDRESS$ -C "~/plugins/check_load -w $ARG1$,$ARG2$,$ARG3$ -c $ARG4$,$ARG5$,$ARG6$"
}
define command {
command_name check_ssh_asterisk_version
command_line $USER1$/check_by_ssh -p $ARG1$ -H $HOSTADDRESS$ -C "~/plugins/nagisk.pl -c version 2>>/dev/null"
}
define command {
command_name check_ssh_asterisk_channels
command_line $USER1$/check_by_ssh -p $ARG1$ -H $HOSTADDRESS$ -C "~/plugins/nagisk.pl -c channels -w $ARG2$ 2>>/dev/null"
}
define command {
command_name check_ssh_asterisk_peers
command_line $USER1$/check_by_ssh -p $ARG1$ -H $HOSTADDRESS$ -C "~/plugins/nagisk.pl -c peers 2>>/dev/null"
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description Root Partition
check_command check_ssh_disk!10%!5%!/!$_HOSTPORT$
notifications_enabled 1
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description Home Partition
check_command check_ssh_disk!10%!5%!/home!$_HOSTPORT$
notifications_enabled 1
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description CPU Load
check_command check_ssh_CPU!5.0!4.0!3.0!10.0!6.0!4.0!$_HOSTPORT$
notifications_enabled 1
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description Asterisk Version
check_command check_ssh_asterisk_version!$_HOSTPORT$
notifications_enabled 1
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description Asterisk Channels
check_command check_ssh_asterisk_channels!$_HOSTPORT$!$_HOSTWARNCHAN$
notifications_enabled 1
}
/etc/nagios3/conf.d/host-clients.cfg
define host {
host_name HOSTNAME
alias HOSTNAME
address IPaddress
_PORT PORT
_WARNCHAN 60
use generic-host
}
/etc/nagios3/conf.d/hostgroups_nagios2.cfg
define hostgroup {
hostgroup_name AAA
alias Client Servers
members HOSTNAME1, HOSTNAME2, HOSTNAME3
hostgroup_name AAA
alias Client Servers
members HOSTNAME1, HOSTNAME2, HOSTNAME3
}
После этого перезапускаем Nagios и любуемся.
Subscribe to:
Posts (Atom)