Install Perl and the modules that Mon requires
- DBI
- DBD::mysql
- Time::Period
- Time::HiRes
- Convert::BER
- Mon::Client
Time::Period / Time::HiRes / Convert::BER 설치
DBI , DBD 는 yum으로 설치
[root@mojily ~]# yum install *DBD*
[root@mojily ~]# yum install *DBI*
디비 인증을 위한 모니터링용 계정 / 패스워드 / 테이블 생성
mysql> GRANT ALL PRIVILEGES ON test.* TO
'monitoring_user'@'%' IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;
mysql> CREATE DATABASE test
mysql> ues test;
mysql> CREATE TABLE example ( id INT, data VARCHAR(100));
mon.cf 파일설정
cfbasedir = /etc/mon
alertdir = /usr/local/src/mon-1.2.0/alert.d
mondir = /usr/local/src/mon-1.2.0/mon.d
maxprocs = 20
histlength = 100
randstart = 30s
authtype = getpwnam
hostgroup node2 218.xxx.115.xxx
watch node2
service mysql
interval 5s
monitor mysql.monitor
period wd {Sun-Sat}
alert echo.alert "node2 server is down!!"
upalert echo.alert "node2 server is live!!"
mysql.monitor 아이디 / 패스워드 인증을 위한 파일수정
[root@mojily ~]# cd /usr/local/src/mon-1.2.0/mon.d
[root@mojily ~]# cp msql-monitor mysql.monitor
### mysql.monitor 중간 주석부분에 생성해준 아이디 / 패스워드 / 디비 설정 ###
$options{username} ||= "monitoring_user"; # 주석해제
$options{password} ||= "password"; # 주석해제
$options{database} ||= "test"; # 모니터링 데이타베이스 라인추가
혹은... mon.cf 파일에 접근계정을 넣어주면 된다.
패스워드가 다른 여러대의 디비서버를 모니터링하기에는 mysql.monitor 파일을 수정하기 보다는 mon.cf 파일에 접근계정을 넣어주면 관리하기에 편하다.
watch node2
service mysql
interval 5s
monitor mysql.monitor --mode=mysql --username=root --password=xxxxxx --database=mysql
period wd {Sun-Sat}
alert echo.alert "node2 server is down!!"
upalert echo.alert "node2 server is live!!"
※ 아이디. 패스워드를 수정하면서 보면 바로바로 down 으로 체크되었음이 확인된다.
로그메세지
Tue Mar 16 11:19:48 KST 2010-s mysql -g node2 -h 218.xxx.115.xxx -t 1268705988 node2 server is down!!
Tue Mar 16 11:19:53 KST 2010-s mysql -g node2 -h 218.xxx.115.xxx -t 1268705993 node2 server is down!!
Tue Mar 16 11:19:58 KST 2010-s mysql -g node2 -h 218.xxx.115.xxx -t 1268705998 -u node2 server is live!!
로컬디비를 모니터링하려면..... 루프백 주소를 이용하면된다...
authtype = getpwnam
hostgroup node1 127.0.0.1
watch node1
service mysql
interval 5s
monitor mysql.monitor --mode=mysql --username=root --password=xxxxx --database=mysql
period wd {Sun-Sat}
alert echo.alert "localhost server is down!!"
upalert echo.alert "localhost server is live!!"
※ hostgroup 에 호스트명 뒤에 공인아이피를 사용하게 되면...모니터링이 안된다...
이유는 모르겠음..!!