asterisk有乙個很好的東東,就是event,會主動通知客戶端伺服器發生了什麼……不過前提是你得先連上伺服器。
好,不廢話了,下面開工。
首先宣告下環境:centos 6
一、安裝並配置asterisk
wget
2、解壓並安裝
tar zxvf asterisk-1.8.7.1.tar.gz
cd asterisk-1.8.7.1
./configure && make && make install && make samples
涉及的命令:
yum install libxml2-devel
yum install ncurses-devel
3、開啟ami管理
編輯manager.conf檔案,將general中的enabled置為yes
新增管理員:
二、編寫asterisk事件監控程式
原理:通過login action連上asterisk的5038埠,監聽此埠並把訊息輸出。
下面是c++實現的**:
1/*2三、進行事件監控file : asteriskeventcat.cpp
3author : mike
4e-mail : [email protected]*/
67 #include
8 #include
9 #include
10 #include
11#define block_size 10*1024
1213
using
namespace std;
14using
namespace boost::asio;
1516
string strlogin(string username,string pswwd)
17 25
26int main()
27
42else
43
4647
string msg="";
4849
string username,password;
50 cout<
user :
";51 cin>>username;
52 cout<
password :
";53 cin>>password;
5455 msg += strlogin(username.c_str(),password.c_str());
56//
msg += strlogin("admin","admin");
57 size_t len = s.write_some(buffer(msg.c_str()), ec);
58if(len <= 0)
59
6364 std::ofstream fout("
eventcat.txt
");65
while(true)
66 ;
68 len=s.read_some(buffer(buf), ec);
69if(len<=0)
70break;
71 cout.write(buf, len);
72 fout<73 fout.flush();
74 }
7576
return
0;77 }
首先要保證你的防火牆讓你過5038埠,嫌配置麻煩的話把防火牆關閉就行了,下面是執行效果:
我這人比較懶,雖是所謂的c/c++
程式設計師,可是總嫌c++寫的**多,經常用python做模型,
python**:
'''現在在學習go語言,捎帶下,也方便我以後ctrl + c:file : asteriskeventcat.py
author : mike
e-mail : [email protected]
'''import socket
buflen = 1024 * 10
defstrlogin(username,passwd):
msg =
'action: login
\r\n
'msg +=
'username: '
+username+
'\r\n
'msg +=
'secret: '
+passwd+
'\r\n
'msg +=
'\r\n
'return
msgdefmain():
s = socket.socket(socket.af_inet, socket.sock_stream)
s.connect((
raw_input
("input ip : "
), 5038
))if
not
s :print
"connect fail!"
return
s.send(strlogin(
raw_input
("input user name :"
),raw_input
("input password :"
)))while
true
:data = s.recv(buflen)
if
len(data) <=0:
continue
data
if__name__ == '__main__':
main()
raw_input
("press enter to continue"
)
/*好,就這些了,希望對你有幫助。file : asteriskeventcat.go
author : mike
e-mail : [email protected]
*/packagemain
import(
"net"
"bufio"
"os"
)varbuflen = 1024 * 10
varlinelen = 2
// windows : "\r\n" 2 ; linux : "\n" 1
funcmain()
conn.write(
byte
("action: login
\r\n
username: "
+string
(usrname[0:
len
(usrname)-linelen])+
"\r\n
secret: "
+string
(pwd[0:
len
(pwd)-linelen])+
"\r\n\r\n"))
for
}
使用Zabbix監控Asterisk
asterisk部署完成後,可以使用zabbix對其進行監控。1 在asterisk所在的伺服器上部署zabbix的agent,並編寫配置檔案zabbix agentd.conf asterisk userparameter iax.status,sudo usr sbin asterisk rvv...
mysql 監控事件 Mysql事件監控日誌
建立監控表 create table t event history id int unsigned not null primary key auto increment,dbname varchar 128 not null default cat eventname varchar 128 n...
事件監控器
建立事件 db2 create event monitor dlmon for tables,deadlocks with details write to file c dlmon mkdir c dlmon 啟用事件 db2 set event monitor dlmon state 1 刪除事...