Aix-Apache-syslog客户端配置

偶然间遇到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
需要注意的是在AIX系统中使用TAB进行分割!

修改完以后,保存退出。还需要重启syslog服务,以应用新配置 在aix系统中使用的是子系统的概念,而非服务。所以什么systemctl,service之类的命令都是没有的。

1
2
stopsrc -s syslogd
startsrc -s syslogd
重启服务后可以在远端服务器上抓包看一看有没有日志过来,一般来说我们syslog配置的是采集所有日志,所以肯定会有日志过来的。
在远端接受日志的服务器上使用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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ logger System Rebooted #往系统日志例程中写入“System Rebooted”可在/var/log/syslog中查看
写入到指定的log文件中。

$ vim /etc/rsyslog.conf #在最后一行加入local3.* /var/log/my_test.log 意思是来自local3的所有消息都记录到/var/log/my_test.log中。

$ service rsyslog restart #重启rsyslog服务

$ logger -i -t "my_test" -p local3.notice "test_info"

$ cat /var/log/my_test.log
May 5 21:27:37 gino-virtual-machine my_test[3651]: test_info

-i 在每行都记录进程ID
-t my_test每行记录都加上“my_test”这个标签
-p local3.notice 设置记录的设备和级别
"test_info" 输出信息

4.apache日志接入

接入apache日志时,最好还是设置apache单个日志文件,这样要简单很多,否则的话就需要用我写的shell脚本了...

单日志

一句话就可以搞定:
1
nohup tail -f apache日志路径 | logger -t apache -p local4.info&

如果是单日志的下面的就可以不用看了……

多日志:每天都会按日期生成日志

在日志目录下执行:vi apache_sys.sh
内容如下

1
2
3
4
5
6
7
8
9
10
.~/.profile
#!/bin/ksh
proc=$(ps -ef | grep "logger -p" | grep -v grep | awk '{print $2}')
echo $proc
kill -9 ${proc}
echo "kill success"
echo "start new proc"
filename=/ptc/Apache/logs/access_log_$(date +%Y-%m-%d)_00_00_00
nohup tail -f $filename | logger -p local4.info&

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下的与用户名同名文件中查看错误信息