美文网首页
rsyslog日志管理

rsyslog日志管理

作者: 胖虎喜欢小红 | 来源:发表于2020-02-27 21:24 被阅读0次

    一:日志的重要性

    日志分类:系统日志,进程日志,应用程序日志
    记录日志的用处:排错,追溯事件,统计流量,审计安全行为
    rsyslogd:只负责绝大部分日志记录,和系统操作有关,安全,认证,计划任务等。
    处理分析日志:

    1.少量日志使用vim cat tail grep awk这些文档处理程序查看和检索

    2.大量日志可以用splunk、elk

    二、常见的日志文件(系统、进程、应用程序)

    日志存放位置: 存放本地 /var/log
    日志服务启动: systemctl start rsyslog
    日志配置文件: /etc/rsyslog.conf

    tail -f /var/log/messages               #动态查看日志文件的尾部,系统主日志文件
    tail -f /var/log/secure                 #认证、安全
    tail /var/log/maillog                   #跟邮件postfix相关
    tail /var/log/cron                      #crond、at进程产生的日志
    tail /var/log/dmesg                     #和系统启动相关
    tail /var/log/yum.log                   #yum的日志
    tail -f /var/log/mysqld.log             #MySQL日志
    tail /var/log/xferlog                   #和访问FTP服务器相关
    /var/log/boot.log                       #系统启动过程日志记录存放
    
    二进制日志:
    w                   #当前登录的用户 /var/log/wtmp
    last                #最近登录的用户 /var/log/btmp
    lastlog             #所有用户的登录情况 /var/log/lastlog
    
    案例1: 统计登录失败top 2 
    # grep 'Fail' /var/log/secure |awk '{print $11}' |sort |uniq -c|sort -n -r |head -2
        366 140.205.225.186
        335 140.205.201.44
    
    案例2: 统计登录成功 
    # grep 'Accepted' /var/log/secure*
    

    三、rsyslog配置文件

    /etc/rsyslog.conf

    [root@biudefor ~]# cat /etc/rsyslog.conf | grep '####'
    #### MODULES ####
    #### GLOBAL DIRECTIVES ####
    #### RULES ####
    
    rsysctl的配置文件分为三大板块:
    MODULES: 模块
    GLOBAL DIRECTIVES: 全局设置
    RULES: 规则
    

    配置文件用于设置

    (1)什么服务 (2)什么级别的信息 (3)需要被记录在哪里(设备或文件)

    比如:

    cron.*        /var/log/cron
    表示 关于计划任务的所有级别的信息,都记录到 /var/log/cron 文件中

    *.info;mail.none;authpriv.none;cron.none  /var/log/messages
    表示所有服务端 info 级别的信息,邮件的 none 级别的信息,登录认证的 none 基本的信息和计划任务的 none 基本的信息都记录到 /var/log/messages 文件中。

    Linux 核心的 syslog 认识的服务类型主要有下面这些:

    相对序号 服务类别 说明
    0 kern(kernel) 就是核心(kernel)产生的讯息,大部分都是硬件侦测以及核心功能的启用
    1 user 在使用者层级产生的信息,例如后续会介绍到的logger指令来记录登录文件的功能
    2 mail 只要与邮件收发有关的讯息记录都属于这个
    3 daemon 主要是系统的服务产生的信息,例如systemd就是这个有关的讯息
    4 auth 主要与认证/授权有关的机制,例如login,ssh,su等需要账号/密码的东东
    5 syslog 就是由syslog相关协定产生的信息,其实就是rsyslogd这个程序本身产生的信息
    6 lpr 打印相关的讯息
    7 news 与新闻群组服务器有关的东西
    8 uucp 全名为 Unix to Unix Copy Protocol,早期用于Unix系统间的程序数据交换
    9 cron 就是例行工作调度cron/at等产生信息的记录
    10 authpriv 与auth类似,但是记录较多账号私人的信息,包括pam模块的运行等
    11 ftp 与FTP通讯协议有关的信息输出
    16~23 local0~local7 留给本机用户使用的一些登录文件信息,较常与终端机互动

    Linux 核心的 syslog 定义的日志级别:

    级别低,越详细,低的包含高的日志级别

    等级数值 等级名称 说明
    7 debug 用来debug(调试)时产生的数据信息
    6 info 仅是一些基本的信息说明
    5 notice 虽然是正常信息,但是比info还是有一些需要被注意到的信息内容
    4 warning 警告的信息,可能有问题,但是还不至于影响到某个daemon的运行
    3 err(error) 一些重大的错误信息,例如配置文件的某些设置造成改服务无法正常启动的信息说明,通常借由err的错误告知
    2 crit 比error还要严重的错误信息,这个crit就是临界点(critical)的缩写,这个错误已经很严重了
    1 alert 比crit更加严重,系统已经开始告警
    0 emerg(panic) 灾难级,表示系统几乎已经快要死机的状态!通常大概只有硬件出了问题,导致整个核心无法顺利运行,才会出现这样等级的信息吧

    四、logger

    通过logger命令记录日志

    • logger是一个shell命令接口,可以通过该接口使用Syslog的系统日志模块,还可以从命令行直接向系统日志文件写入一行信息。
    • logger 以0退出表示成功,大于0表示失败。

    语法:

    logger [options] [messages]

    options (选项):

        -d, --udp  
            使用数据报(UDP)而不是使用默认的流连接(TCP)
        -i, --id   
            逐行记录每一次logger的进程ID
        -f, --file file_name
            记录特定的文件
        -h, --help 
            显示帮助文本并退出
        -n, --server 
            写入指定的远程syslog服务器,使用UDP代替内装式syslog的例程
        -P, --port port_num
            使用指定的UDP端口。默认的端口号是514
        -p, --priority priority_level
            指定输入消息的优先级,优先级可以是数字或者指定为 "facility.level" 的格式。比如:"-p local3.info " local3 这个设备的消息级别为info。默认级别是 "user.notice"
        -s, --stderr
            输出标准错误到系统日志。
        -t, --tag tag
            指定标记记录
        -u, --socket socket
            写入指定的socket,而不是到内置系统日志例程。
        -V, --version
            现实版本信息并退出
    

    示例:

    [root@biudefor ~]# logger system -p local7.info hello 
    [root@biudefor ~]# tail -1 /var/log/boot.log    //rsyslog配置文件中已经将所有local7的日志全部记录到/var/log/boot.log
    Feb 29 15:56:16 biudefor root: system hello
    
    [root@biudefor ~]# vim /etc/rsyslog.conf
    #### RULES ####
    local3.*     /var/log/biudefor.log
    #意思是来自local3的所有消息都记录到/var/log/biudefor.log中。
    [root@biudefor ~]# systemctl restart rsyslog
    [root@biudefor ~]# logger -i -t "biudefor" -p local3.info "wuhan jiayou."
    [root@biudefor ~]# cat /var/log/biudefor.log 
    Feb 29 16:15:21 biudefor biudefor[20364]: wuhan jiayou.
    
    记录脚本:
    [root@biudefor ~]# vim ip.sh
    #!/usr/bin/bash
    ping -c1 192.168.1.11 &>/dev/null
    if [ $? -eq 0 ];then
        logger -p local3.info "ok."
    else
        logger -p local3.error "error."
    fi
    [root@biudefor ~]# bash ip.sh 
    [root@biudefor ~]# cat /var/log/biudefor.log 
    Feb 29 16:15:21 biudefor biudefor[20364]: wuhan jiayou.
    Feb 29 16:16:32 biudefor root: error.
    
    sar 查看/var/log/sa

    这个目录下的数据会保存一个月,记录系统中所有的负载信息,网络,内存,磁盘,CPU

    [root@biudefor log]# sar -f /var/log/sa/sa23
    

    五、mysql存放rsyslog日志

    1、安装数据库

    [root@biudefor ~]# yum -y install mariadb mariadb-server
    [root@biudefor ~]# yum install -y rsyslog-mysql  # 安装驱动
    [root@biudefor ~]# rpm -ql rsyslog-mysql | grep sql$   # 找到sql文件
    /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
    [root@biudefor ~]# systemctl start mariadb
    [root@biudefor ~]# systemctl enable mariadb
    [root@biudefor ~]# mysql < /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
    MariaDB [(none)]> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | Syslog             |
    | mysql              |
    | performance_schema |
    | test               |
    +--------------------+
    MariaDB [(none)]> GRANT ALL ON Syslog.* TO 'rsyslog'@'127.0.0.1' IDENTIFIED BY 'rsyspass';
    MariaDB [(none)]> GRANT ALL ON Syslog.* TO 'rsyslog'@'localhost' IDENTIFIED BY 'rsyspass';
    MariaDB [(none)]> FLUSH PRICVILEGES;
    

    2、配置rsyslog加载ommysql模块

    [root@biudefor ~]# vim /etc/rsyslog.conf
    #### MODULES ####
    $ModLoad ommysql
    
    #### RULES ####
    
    #格式为:facility.priority :ommysql:DBHOST,DB,DBUSER,DBUSERPASS
    *.*:ommysql:127.0.0.1,Syslog,rsyslog,rsyspass
    

    3、重启服务

    [root@biudefor ~]# systemctl restart rsyslog
    [root@biudefor ~]# systemctl restart mariadb
    [root@biudefor ~]# mysql
    MariaDB [Syslog]> use Syslog
    MariaDB [Syslog]> select * from SystemEvents;
    

    六、ELK stack 分析rsyslog系统日志

    rsyslog 配置文件:

    image-20200225215813384.png image.png

    logstash 配置文件:

    input {
       syslog{
        port => 5514
        type => syslog
      }
    }
    output {
      stdout {
        codec=> rubydebug
      }
      elasticsearch {
        hosts => ["172.17.209.157:9200"]
        index => 'rsyslog_log-%{+YYYY-MM-dd}'
      }
    }
    
    image-20200225214410857.png

    相关文章

      网友评论

          本文标题:rsyslog日志管理

          本文链接:https://www.haomeiwen.com/subject/eflfhhtx.html