• 【转】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
     
  • 相关阅读:
    Agc011_C Squared Graph
    银河战舰
    项链
    无旋Treap
    [PHP] 生成二维码(两种方法)
    [XML] XML格式【有道翻译】API 的数据转化输出
    [YII2] COOKIE的操作使用
    [Laravel框架学习一]:Laravel框架的安装以及 Composer的安装
    [YII2] 修改默认控制器Controller以及默认方法Action
    [YII2] 3步发送邮件,有图有真相!
  • 原文地址:https://www.cnblogs.com/qmsu/p/3832491.html
Copyright © 2020-2023  润新知