Linux之Rsyslog服务

Rsyslog服务简介

Rsyslog是syslog的升级版本, 其在RHEL5的版本中, 名称为syslog.在RHEL6/7其升级为Rsyslog. Rsyslog是一个日志管理系统,记录过去某个时间发生的事件,及事件级别进行定义并记录到指定位置. 其支持C/S架构,可通过UDP/TCP协议提供日志记录服务.Rsyslog日志格式较为简单.

Rsyslog的服务进程

  • syslogd : 系统日志(用户空间的各应用程序相关的日志)
  • Klogd : 内核日志(kernel相关的日志),在RHEL6中, Klogd由syslog代为管理.

Rsyslog的特性:

  • 多线程的服务,并发性能好
  • 可以使用udp,tcp,ssl,tls,relp等协议完成信息收集
  • 将日志可存储在mysql,pgsql,oracle等数据库管理系统中
  • 强大的自定义过滤器,实现过滤日志信息中任何部分内容
  • 自定义输出格式

Rsyslog的相关文件

  • /etc/rsyslog.conf : 主配置文件
  • /etc/rsyslog.d/*.conf : 辅助配置文件
  • /lib64/rsyslog/*.so : rsyslog的功能扩展模块位置,I开始的文件表示,从那收集, O开始的文件表示,将日志记录到那

Rsyslog的重要术语

  • facility(产生日志的设施,从功能和程序上对日志收集进行分类)
    • auth : 身份认证
    • aupriv : 授权
    • cron : 计划任务
    • daemon
    • kern : 内核
    • lpr : 打印
    • mail : 邮件
    • mark : 防火墙
    • news : 新闻
    • security : 安全
    • user : 用户
    • uucp
    • syslog : 系统日志
    • local0-local7 : 用户自定义级别
  • priority (日志级别)
    • debug : 调度信息

    • info : 基本信息

    • notice : 提醒

    • warn : warning, 警告

    • err : critical, 危险的

    • alert : 橙色警告

    • emerg : 红色警告

    • 指定级别:

      • * : 所有级别
      • none : 没有级别,不记录
      • PRIORITY : 此级别以及高于此级别的所有级别
      • =PRIORITY : 仅此级别

/etc/rsyslog.conf的组成部分

  • 加载的模块

    • $ModLoad ommysql
  • 全局配置指令

  • 日志记录规则

    • facility.priority target
    ####记录系统所有的info及以上的日志,但不包含mail,authpriv,cron的日志
    *.info;mail.none;authpriv.none;cron.none /var/log/message 
    
    ####记录任务计划的所有日志
    cron.* /var/log/cron
    
    ####记录所有的emerg级别日志,通过模块输出给所有用户一则消息
    *.emerg :omusrmsg:* 
    
    ####将指定的日志发送给指定的日志服务器
    cron.*      @172.16.36.70
    
    • target
      • 文件: 记录日志事件于指定的文件中,通常应用位于/var/log目录下,文件路径之前的"-"表示异步写入
      • 用户: 将日志事件通知给指定的用户, 是通过将信息发送给登陆到系统上的用户的终端上
      • 日志服务器: 使用@host,把日志送往指定的服务器主机
        • Host : 即日志服务器地址,监听在tcp/udp的514端口
      • 管道: |COMMAND
注意: 在日志文件中, 填写的指令必须在相应的段出来,例如:不能将加载的模块配置信息填写到rules(日志记录规则)处

/etc/rsyslog.conf的日志的配置格式

事件产生的时间及日期  主机      进程[PID]:事件信息本身

利用rsyslog服务输出到数据库中,并且由loganalyzer展示

  • 安装rsyslog连接数据库的驱动

    • yum install rsyslog-mysql : 生成ommysql.so模块,和createdb.sql数据脚本(用于创建所需的数据库)
  • 连接数据库,并且为此创建用户及建立所需数据库

    • mysql < /usr/share/doc/rsyslog-mysql-7.4.7/createdb.sql
    • source /usr/share/doc/rsyslog-mysql-7.4.7/createdb.sql (两个方法使用其中一个即可)
  • 配置rsyslog.conf文件

    • 模块位置定义
      • $ModLoad ommysql
    • rules定义位置
      • cron.* :ommysql:172.16.36.70,DATABASE,USER,PASSWORD
  • 重启rsyslog服务

  • 安装loganalyzer

    • 准备lamp环境

      • yum install httpd php php-mysql php-gd
    • 下载loganalyzer软件包

      • tar xf loganalyer-3.6.5.tar.gz
      • cp -r loganalyer-3.6.5.tar.gz/src/var/www/html/loganalyzer
      • cp -r loganalyzer-3.6.5/contrib/*sh /var/www/html/loganalyzer
      • cd /var/www/html/loganalyzer/
      • chmod +x *.sh
      • ./configure.sh
      • ./secure.sh
      • chmod 666 config.php
    • 通过URL访问并配置

last命令

查看当前系统成功登录系统的日志,日志位置/var/log/wtmp

lastb命令

当前系统尝试登录失败的日志,日志位置/var/log/btmp

dmesg

内核完成自身初始化过程中, 探测的各种硬件的日志信息,日志位置/var/logdmesg.

lastlog

显示当前系统上所有用户的最近一次登陆时间

Linux强大的日志收集及展示平台

  • elk stack : elasticsearch ,强大的分布式日志收集引擎
  • logstash : 从各主机收集日志, 导入elk stack的工具
  • kibana : 极为美观的展示日志结果的界面工具

推荐阅读更多精彩内容