偶然间遇到IBM的AIX系统,需要将Apache的日志进行转发到远端服务器上,网上都没有找到相关的资料,把自己解决问题的方法记录下来。吐槽一句:IBM的AIX系统果然是名不虚传的难用!!
1.syslog简介
在Unix类操作系统上,syslog广泛应用于系统日志。syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器。接收syslog的服务器可以对多个设备的syslog消息进行统一的存储,或者解析其中的内容做相应的处理。常见的应用场景是网络管理工具、安全管理系统、日志审计系统。
详细介绍可以看看这个:Syslog详解
2.syslog配置
AIX系统使用的是syslog而非rsyslog,所以配置文件也变成了/etc/syslog.conf。
首先使用vi编辑器对syslog.conf文件进行编辑
编辑并启用以下部分配置内容:
1
*.emerg;*.alert;*.crit;*.err;*.warning;*.notice;*.info;*.debug <tab-separation>@IP
修改完以后,保存退出。还需要重启syslog服务,以应用新配置
在aix系统中使用的是子系统的概念,而非服务。所以什么systemctl,service之类的命令都是没有的。
1
2stopsrc -s syslogd
startsrc -s syslogd
在远端接受日志的服务器上使用tcpdump进行抓包:
1
tcpdump -i eth0 port 514 and src 发送端IP
eth0是你接受日志的那张网卡,514端口是syslog的服务端端口,src制定发送端的IP,就可以看到收到的日志了,如果想要存储下来可以使用-w参数进行存储,命令使用如下:
1
tcpdump -w 文件名 -i eth0 port 514 and src 发送端IP
3.logger简介
logger是一个shell命令接口,可以通过该接口使用Syslog的系统日志模块,还可以从命令行直接向系统日志文件写入一行信息。
实例:
1 | $ logger System Rebooted #往系统日志例程中写入“System Rebooted”可在/var/log/syslog中查看 |
4.apache日志接入
接入apache日志时,最好还是设置apache单个日志文件,这样要简单很多,否则的话就需要用我写的shell脚本了...单日志
一句话就可以搞定:1 | nohup tail -f apache日志路径 | logger -t apache -p local4.info& |
如果是单日志的下面的就可以不用看了……
多日志:每天都会按日期生成日志
在日志目录下执行:vi apache_sys.sh
内容如下
1 | .~/.profile |
aix默认使用的是KornShell(KSH)所以改为了/bin/ksh。其次,第一行加了一个.~/.profile是因为在AIX中如果要使用crontab定时执行脚本需要在脚本中加入这一句。
脚本写好以后,就可以设置定时启动脚本了
5.设置定时任务
设置定时任务是为apache日志按天生成而写的脚本服务的。 1.编辑定时任务 crontab -e 此时会进入一个编辑页面,语法就是vi编辑器的语法。2.定时任务设置:
添加一句:
01 00 * * * sh /xx/xx/apache_syslog.sh
–每天一点定时执行脚本
3.查看是否设置成功
crontab -l
4.查看标准输出和错误信息:
cat /var/spool/mail下的与用户名同名文件中查看错误信息