【转】redhat使用rsyslog替换系统…

WEB服务器多的时候检查日志是一件痛苦的事情,用 perl 脚本登录到服务器上grep一些错误信息两次之后就觉得是纯体力活,想办法偷懒。

准备弄一台统一的日志服务器,将登录认证,系统日志等全部发送到这台日志服务器上,可以做监控分析,也能即时获取最新日志。

系统自带的 syslogd 能实现远程日志服务,只要在 /etc/syslogconfig/syslog 文件中 SYSLOGD_OPTIONS参数中加上 -r 选项后就可以接受远程机器发过来的日志,比较省事。就这样用了几天,发现每天的日志量都比较大,grep 日志文件也是件痛苦的事情。

于是寻找系统自带 syslog 的替代品,发现 rsyslog 和 syslog-ng 都还不错,也有很多人使用。在 http://www.rsyslog.com/doc-rsyslog_ng_comparison.html 这个地方的对比之后决定选择 rsyslog ,在找资料的同时发现 fedra 已经正式将rsyslog替换掉系统自带的syslog (http://fedoraproject.org/wiki/Releases/FeatureRsyslog) 。

简单说我选择 rsyslog 的理由如下:
引用内容:

1. 后端存查日志支持的客户端多,当然 MySQL是我的首选。
2. 在同一台机器上支持多直rsyslogd进程,可以监听在不同端口。
3. 直接兼容系统自带的syslog.conf 配置文件。
4. 可将消息过滤后再次转发。
5. 配置文件中可以写简单的逻辑判断
    6. 有现成的前端web展示程序

当然这里面说的功能syslog-ng也都差不多有,但syslog-ng的免费版本是closed source的。

下面是安装rsyslog的简单记录
引用内容:

操作系统为 RHEL 5.2 x64

1. 安装 MySQL 
a. ./configure --prefix=/usr/local/mysql  --with-charset=utf8
b. make install
2. 配置 MySQL,增加一个只写的账号和一个只读的账号,只写的账号是给rsyslog往mysql里面写日志,只读的账号是前端web页面用的

GRANT INSERT ON Syslog.* TO 'rsyslog_write'@'localhost' IDENTIFIED BY 'password_123456';
GRANT SELECT ON Syslog.* TO 'rsyslog_read'@'localhost' IDENTIFIED BY 'password_234567';

3. 安装 rsyslog
a. http://www.rsyslog.com/ 上下载最新版本
b. PATH=$ PATH:/usr/local/mysql/bin  # 因为MySQL手工安装,不在环境变量中,而rsyslog的configure会从环境变量中找MySQL的lib
c. ./configure --prefix=/usr/local/rsyslog --enable-mysql  # 打开MySQL支持,将日志写到MySQL中可以在前端web上直接展示,报表
d. Make install
e. Mysql -u root -p < ./plugins/ommysql/createDB.sql      # 导入db结构
f. Cp rsyslog.conf /etc/                                                              # 默配置文件
g. ln -s /usr/local/rsyslog/sbin/rsyslogd /sbin/rsyslogd      # 这一步可用可不用

4. 配置rsyslog
a. 在/etc/rsyslog.conf最上面加上 $ ModLoad ommysql 载入mysql支持的模块
b. 去掉/etc/rsyslog.conf内以下两行前的#号,打开udp监听端口
$ ModLoad imudp.so  # provides UDP syslog reception
$ UDPServerRun 514  # start a UDP syslog server at standard port 514
c. 增加/etc/rsyslog.conf下面两行,将local7和user的日志写到mysql中
local7.*  :ommysql:127.0.0.1,Syslog,rsyslog_write,password_123456
user.*    :ommysql:127.0.0.1,Syslog,rsyslog_write,password_123456
d. 去掉链接错的日志示例
:msg, contains, "error: connect"  ~

5. 替换 syslog 为rsyslog
a. 由于rsyslog没有附带启动脚本,我做了如下修改
b. Cp /etc/init.d/syslog /etc/init.d/syslogd  #保留老的的syslog启动文件,以备要恢复时使用
c. 编辑 /etc/init.d/syslog 将里面路径有关的全改成/usr/local/rsyslog/sbin/rsyslogd 如果你上面3.g这一步做了链接,就可以只把syslog改为rsyslogd
d. 这样修改完后就是先停掉老的syslog,再启用新的rsyslog了
e. /etc/init.d/syslogd  stop;  # 停掉系统自带的
f. /etc/init.d/syslog start      # 启用新的 rsyslog

6. 修改 iptables ,增加udp54端口出入,防止被人强x
a. Iptables -A RH-Firewall-1-INPUT -s 1.2.0.0/255.255.0.0 -p udp -m udp --dport 514 -j ACCEPT
b. Iptables -A RH-Firewall-1-INPUT -s 3.4.0.0/255.255.0.0 -p udp -m udp --dport 514 -j ACCEPT

7. 安装phplogcon
a. http://www.phplogcon.org/ 上下载最新版本
b. 解压到某个目录,并配置好apache的vhost,这些步骤就不写了,比较平常的操作
c. 访问 http://127.0.0.1/install.php 安装,填上 mysql的账号和密码就行了,其他选项都默认。
8. 配置日志客户端
a. 在web服务器上echo 'kern.*;user.*  @1.2.3.4' >> /etc/syslog.conf
b. /etc/init.d/syslog reload #重启syslogd
 
原文地址:https://www.cnblogs.com/qmsu/p/3832491.html