1.mysclog介绍
此脚本主要是用来扫描我们的一些应用的log,比如说oracle的alert log,mysql的error log,通过我们定义关键字,如果log里出现相应关键字,此脚本扫描到后,会记录下相应的信息,然后以邮件或者短信的信息进行通知(这个自己可以修改)。
采用perl脚本定制开发,可任意部署于任何一台可连接至集群的机器(最好不要用集群中的机器做监控机),可以管理多台机器。
2.mysclog的特性
1. 只需在管理机上安装模块
2.被监控机需要一个统一用户和统一目录
3.增加机器只需增加一行配置
4.详细的日志输出
3.mysclog所需条件
1.SSH公钥验证
mysclog管理节点通过ssh连接服务器,进行验证和一些管理操作。为了使这些过程自动化,推荐使用SSH公钥验证密码(也可以使用密码模式进行)。
2.操作系统
目前只测试过Linux系统
3.依赖模块
Net::OpenSSH
Log::Dispatch
Parallel::ForkManager
4.mysclog构建步骤
以如下结构作为说明:
192.168.0.1 mysclog Manager 节点
192.168.0.23 被监控节点
192.168.0.53 被监控节点
192.168.0.55 被监控节点
4.1 第一步:监控机安装模块
Parallel::ForkManager
IO-Tty-1.10.tar.gz
Test-Simple-0.98_05.tar.gz
Net-OpenSSH-0.61_10.tar.gz
yum install perl-Log-Dispatch
以上步骤一般都是:
perl Makefile.PL
make
make install
4.2 第二步:ssh互信(也可以选择直接password登录)
安装完成后,所有节点配置用户下 ssh 互信,注意这里不能禁止password登陆,否则会出现错误,另外按正常步骤下来如果有问题,请检查权限问题:
mkdir ~/.ssh chmod 700 ~/.ssh ssh-keygen -t rsa ssh-keygen -t dsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys ssh db-64 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ssh db-64 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys ssh db-24 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ssh db-24 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys scp ~/.ssh/authorized_keys db-64:~/.ssh/authorized_keys scp ~/.ssh/authorized_keys db-24:~/.ssh/authorized_keys
4.3 被监控节点操作
在192.168.0.23,192.168.0.53,192.168.0.55上建立用户如oracle等和一个工作目录如/home/oracle/mysclog。
必须保证该用户对所要扫描的log具有读取权限,同时对目录具有读写权限。
如果要扫描/var/log/messages的话,可以查看:
http://anonexp.blogspot.com/2013/04/acl-how-to-enable-read-permission-for.html
4.4 管理机部署脚本
新建工作目录如/home/oracle/mysclog(这个要求跟被监控节点一致)
注意:必须保证该用户对所要扫描的log具有读取权限,同时对目录具有读写权限。另外管理机和被监控节点需要的目录是相同的。
一共包括如下三个文件:
mysclog.cnf
mysclog.pl
sclog.pl
其中mysclog.cnf为配置文件
mysclog.pl为主控脚本
sclog.pl为扫描脚本
4.5 mysclog.cnf说明
mysclog.cnf的格式如下:
ip,logs,keys,skip_keys,server,from,to,phonelist
一级分割符为”,”,二级分割符为”|”,参考如下:
192.168.0.23,/data/app/diag/rdbms/teststd01/test/trace/alert_test.log|/home/oracle/mysclog/tmpalert.log,ORA-|Corrupt|Deadlock|start|logon denied,ORA-3136,mail.aaaa.com,dba@aaaa.com,dba@aaaa.com|dba@aaaa.com,13813800000|13813800000 192.168.0.53,/home/oracle/11.2.0/diag/rdbms/testadg03/test/trace/alert_test.log,ORA-|Corrupt|Deadlock|start|logon denied,ORA-3136,mail.aaaa.com,dba@aaaa.com,dba@aaaa.com|dba@aaaa.com,13813800000|13813800000 192.168.0.55,/home/oracle/11.2.0/diag/rdbms/testadg04/test/trace/alert_test.log,ORA-|Corrupt|Deadlock|start|logon denied,ORA-3136,mail.aaaa.com,dba@aaaa.com,dba@aaaa.com|dba@aaaa.com,13813800000|13813800000
拿第一条说明下:
192.168.0.23,/data/app/diag/rdbms/teststd01/test/trace/alert_test.log|/home/oracle/mysclog/tmpalert.log,ORA-|Corrupt|Deadlock|start|logon denied,ORA-3136,mail.aaaa.com,dba@aaaa.com,dba@aaaa.com|dba@aaaa.com,13813800000|13813800000
ip: 192.168.0.23
logs(有两个log要扫描,以|分割了): /data/app/diag/rdbms/teststd01/test/trace/alert_test.log|/home/oracle/mysclog/tmpalert.log
keys(有多个key要扫描,以|分割了): ORA-|Corrupt|Deadlock|start|logon denied
skip_keys:ORA-3136 (可以有多个,以|分割)
from:dba@aaaa.com
to:dba@aaaa.com|dba@aaaa.com (可以有多个,以|分割)
phonelist:13813800000|13813800000 (可以有多个,以|分割)
4.6监控
可以以crontab的形式,或者后台形式(需要稍微修改代码)运行
调试模式:
perl mysclog.pl -u oracle -p dddddddddd -c 2 -f /home/oracle/mysclog/mysclog.cnf -up 1 -l debug
其中
-c是并发度;
-up 1表示把脚本sclog.pl上传或者更新到被监控节点上,一般用默认值就行了
-l 表示日志输出等级,默认就行,调式时可以用debug
一般运行模式:
perl mysclog.pl -u oracle -p dddddddddd -c 2 -f /home/oracle/mysclog/mysclog.cnf
可通过如下命令获取帮助:
[oracle@MHA-monitor mysclog]$ perl mysclog.pl =============================================================================== Info : Created By noodba (www.noodba.com) . Usage : Command line options : -h,--help Print Help Info. -i,--interval Time(second) Interval(default 120). -d,--workdir workdir(default "/home/oracle/mysclog"). -l,--level log level(default "info"). -u,--user user name. -p,--pswd user password. -f,--conf scan host config file. -c,--concurrency Parallel process(default 5). -up,--updatepl update scan pl(default 0). Sample : shell> perl mysclog.pl -u mcheck -p 123456 ===============================================================================
5.7 第七步:错误处理
下面这个错误时因为list of known hosts里面没有,可以先手工ssh一下:
Sat Oct 12 10:49:51 2013 - [warning] ssh to 192.168.2.24 err. error_count:1 Sat Oct 12 10:49:58 2013 - [warning] ssh to 192.168.2.24 err. error_count:2 Sat Oct 12 10:50:04 2013 - [warning] ssh to 192.168.2.24 err. error_count:3 Sat Oct 12 10:50:04 2013 - [error][/home/oracle/dgha/dgha_reverse.pl, ln65] ssh check error,exit. Killed by signal 1. Killed by signal 1. [oracle@MHA-monitor dgha]$ ssh 192.168.2.24 The authenticity of host '192.168.2.24 (192.168.2.24)' can't be established. DSA key fingerprint is 0d:dd:12:8b:ed:6a:e8:26:dc:a1:00:97:de:d1:bd:98. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.2.24' (DSA) to the list of known hosts. oracle@192.168.2.24's password: Permission denied, please try again. oracle@192.168.2.24's password:
5.参考资料1 http://search.cpan.org/~salva/Net-OpenSSH-0.60/lib/Net/OpenSSH.pm
2 MHA mha4mysql-manager-0.55samplesscriptspower_manager.pl
转载请注明:爱开源 » 日志统一扫描工具:mysclog