20171012 日志管理

作者: 哈喽别样 | 来源:发表于2017-10-16 23:08 被阅读7次
    • 日志介绍
    • rsyslog
    • 日志管理journalctl
    • MySQL管理日志

    一、日志介绍

    (一)日志的基本概念

    • 日志:将事件发生的时间、地点、人物、事件等信息保存记录
    • 日志级别:根据事件的关键程度对日志的分级
    • 事件记录格式:一般包含日期时间、主机、进程[pid]、事件内容
    • 基于C/S架构的日志系统:通过TCP或UDP协议的服务完成日志记录传送,将分布在不同主机的日志实现集中管理

    (二)日志系统的发展

    • sysklogd: CentOS5之前的系统日志服务

      • syslogd: 记录应用日志
      • klogd:记录内核日志
    • rsyslog: CentOS6, 7使用的系统日志服务

      • 支持TCP, UDP
      • 支持日志转储于数据库MySQL, Oracle
      • 强大的过滤器
      • 自定义输出格式
    • ELK:elasticsearch, logstash, kibana

      • 非关系型分布式数据库
      • 专业的日志管理平台

    (三)rsyslog的关键概念

    • facility:设施,从功能或程序上对日志进行归类
      auth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security(auth), user, uucp, local0-local7(预留自定义), syslog

    • priority:优先级别,从低到高排序
      debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)

    二、rsyslog

    (一)rsyslog相关文件路径

    • 主程序:/usr/sbin/rsyslogd
    • CentOS 6服务管理:service rsyslog {start|stop|restart|status}
    • CentOS 7服务管理:systemctl {start|stop|restart|status} rsyslog.service
    • 配置文件:/etc/rsyslog.conf,/etc/rsyslog.d/*.conf
    • 库文件:/lib64/rsyslog/*.so

    (二)rsyslog配置文件格式

    (1)总体分为三部分
    • MODULES:相关模块配置
    • GLOBAL DIRECTIVES:全局配置
    • RULES:日志记录相关的规则配置
    (2)RULES配置格式
    • 格式:facility.priority;facility.priority… target

    • facility

      • *:所有的facility
      • facility1,facility2,facility3,...:指定的facility列表
    • priority

      • *:所有级别
      • none:没有级别,即不记录
      • PRIORITY:指定级别(含)以上的所有级别
      • =PRIORITY:仅记录指定级别的日志信息
    • target

      • 文件路径:通常在/var/log/,文件路径前的-表示异步写入
      • 用户:将日志事件通知给指定的用户,*表示登录的所有用户
      • 日志服务器:@host,把日志送往至指定的远程服务器记录
      • 管道:| COMMAND,转发给其它命令处理

    (三)rsyslog的网络日志服务

    (1)配置网络日志服务:修改配置文件,当UDP和TDP服务模块开启
    vim /etc/rsyslog.conf
    #### MODULES ####
    # Provides UDP syslog reception
    $ModLoadimudp             //取消行前的注释符
    $UDPServerRun514          //取消行前的注释符
    # Provides TCP syslog reception
    $ModLoadimtcp             //取消行前的注释符
    $InputTCPServerRun514     //取消行前的注释符
    
    (2)实验:配置rsyslog网络日志服务
    • 主机配置:两台主机
      日志服务器:负责接收客户端通过UDP或TCP发来的日志信息(IP:192.168.136.230)
      日志客户端:负责发出写入日志请求

    • 实验1:通过UDP使客户端的事件记录在日志服务器的/var/log/messages中

    // 修改服务器配置文件module部分,开启UDP通信模块
    vim /etc/rsyslog.conf
    $ModLoad imudp        //删除行前注释符
    $UDPServerRun 514     //删除行前注释符
    systemctl restart rsyslog
    
    // 修改客户端配置文件rules部分
    vim /etc/rsyslog.conf
    *.info;mail.none;authpriv.none;cron.none      @192.168.136.230     //修改target
    systemctl restart rsyslog
    
    //客户端测试
    logger -p syslog.info "this is 1st message"
    
    //服务器查看日志记录
    tail /var/log/messages
    
    • 实验2:通过TCP使客户端的事件记录显示在日志服务器的所有登录用户终端上
    // 修改服务器配置文件module和rules部分,开启TCP通信模块
    vim /etc/rsyslog.conf
    $ModLoad imtcp             //删除行前注释符
    $InputTCPServerRun 514     //删除行前注释符
    local2.*      *
    systemctl restart rsyslog
    
    // 修改客户端配置文件rules部分
    vim /etc/rsyslog.conf
    *.info;mail.none;authpriv.none;cron.none    /var/log/messages     //恢复上个实验的修改
    local2.*      @@192.168.136.230     //TCP使用两个@
    systemctl restart rsyslog
    
    //客户端测试
    logger -p local2.info "this is 2nd message"
    

    (四)其他日志

    • /var/log/secure:系统安全日志,文本格式,应周期性分析

    • /var/log/btmp:当前系统上,用户的失败尝试登录相关的日志信息,二进制格式,lastb命令进行查看

    • /var/log/wtmp:当前系统上,用户正常登录系统的相关日志信息,二进制格式,last命令可以查看

    • /var/log/lastlog:每一个用户最近一次的登录信息,二进制格式,lastlog命令可以查看

    • /var/log/dmesg:系统引导过程中的日志信息,文本格式,可用文本查看工具查看,也可以专用命令dmesg查看

    • /var/log/messages :系统中大部分的信息

    • /var/log/anaconda : anaconda的日志

    三、日志管理journalctl

    • systemd的日志管理工具,可以查看所有内核日志和应用日志

    • 配置文件:/etc/systemd/journald.conf

    (一)journalctl查看日志

    • 查看所有日志(默认情况下,只保存本次启动的日志)
      journalctl

    • 查看内核日志(不显示应用日志)
      journalctl -k

    • 查看系统本次启动的日志
      journalctl -b
      journalctl -b -0

    • 查看上一次启动的日志(需更改设置)
      journalctl -b -1

    • 查看指定时间的日志
      journalctl --since="2012-10-30 18:17:16"
      journalctl --since "20 min ago"
      journalctl --since yesterday
      journalctl --since "2015-01-10" --until "2015-01-11 03:00"
      journalctl --since 09:00 --until "1 hour ago"

    • 显示尾部的最新10行日志
      journalctl -n

    • 显示尾部指定行数的日志
      journalctl -n 20

    • 实时滚动显示最新日志
      journalctl -f

    • 查看指定服务的日志
      journalctl /usr/lib/systemd/systemd

    • 查看指定进程的日志
      journalctl _PID=1

    • 查看某个路径的脚本的日志
      journalctl /usr/bin/bash

    • 查看指定用户的日志
      journalctl _UID=33 --since today

    • 查看某个Unit的日志
      journalctl -u nginx.service
      journalctl -u nginx.service --since today

    • 实时滚动显示某个Unit的最新日志
      journalctl -u nginx.service -f

    • 合并显示多个Unit的日志
      journalctl -u nginx.service -u php-fpm.service --since today

    (二)journalctl查看指定优先级(及其以上级别)的日志,共有8级

    0: emerg
    1: alert
    2: crit
    3: err
    4: warning
    5: notice
    6: info
    7: debug
    journalctl -p err -b
    

    (三)输出格式和其他日志设置

    • 日志默认分页输出,--no-pager 改为正常的标准输出
      journalctl --no-pager

    • 以JSON 格式(单行)输出
      journalctl -b -u nginx.service -o json

    • 以JSON 格式(多行)输出,可读性更好
      journalctl -b -u nginx.service -o json-pretty

    • 显示日志占据的硬盘空间
      journalctl --disk-usage

    • 指定日志文件占据的最大空间
      journalctl --vacuum-size=1G

    • 指定日志文件保存多久
      journalctl --vacuum-time=1years

    四、MySQL管理日志

    (一)实验1:rsyslog将日志记录于MySQL中

    • 实现此功能需要两台主机
      主机1:rsyslog服务器(IP: 192.168.136.230)
      主机2:mysql数据库(IP: 192.168.136.130)
    (1)主机1安装mysql与rsyslog的接口
    • 安装rsyslog-mysql
      yum install rsyslog-mysql

    • 查看安装文件路径,其中的SQL脚本文件用于生成数据库,直接传送至主机2

    rpm -ql rsyslog-mysql
    scp /usr/share/doc/rsyslog-7.4.7/mysql-createDB.sql 192.168.136.130:/root
    
    (2)主机2安装并配置数据库
    • 安装mariadb
    yum  install mariadb-server
    systemctl start mariadb.service
    mysql_secure_installation
    
    • 用传送来的SQL脚本生成数据库
      mysql -u root -pmagedu < mysql-createDB.sql
    • 创建管理用户并授权
      MariaDB [(none)]> grant all on Syslog.* to loguser@'%' identified by 'centos';
    (3)主机1配置rsyslog
    • 编辑/etc/rsyslog.conf文件
    vim /etc/rsyslog.conf 
    $ModLoad ommysql     //载入模块
    local2.*      :ommysql:192.168.136.130,Syslog,loguser,centos      //设置rules
    
    • 重启rsyslog服务并测试
    systemctl restart rsyslog.service
    logger -p local2.info "this is the message for rsyslog-mysql"
    
    (4)主机2查看数据库
    mysql -u loguser -pcentos
    MariaDB [(none)]> use Syslog;
    MariaDB [Syslog]> show tables;
    MariaDB [Syslog]> select *  from SystemEvents\G;
    

    (二)实验2:通过loganalyzer展示数据库中的日志

    • 本实验环境承接实验1,并且需要添加主机3用于通过web界面展示数据库的日志

    • 主机分工:
      主机1:rsyslog服务器(IP: 192.168.136.230)
      主机2:mysql数据库(IP: 192.168.136.130)
      主机3:apache httpd服务器,php,loganalyzer(IP: 192.168.136.229)

    (1)主机3安装apache httpd, php
    yum install httpd php php-mysql php-gd
    service httpd start
    
    (2)主机3测试是否成功连接到数据库
    vim /var/www/html/index.php
    <?php
    $mysqli=new mysqli("192.168.136.130","loguser","centos");
    if(mysqli_connect_errno()){
    echo "连接数据库失败!";
    $mysqli=null;
    exit;
    }
    echo "连接数据库成功!";
    $mysqli->close();
    phpinfo();
    ?>
    

    浏览器登录http://192.168.136.229/,测试连接数据库成功

    (3)主机3编译安装loganalyzer
    tar xvf loganalyzer-4.1.5.tar.gz
    cd loganalyzer-4.1.5
    cp -r src/ /var/www/html/log     //只复制src子目录的文件至网页存放目录
    cd /var/www/html/log/
    touch config.php                 //准备安装配置文件
    chmod 666 config.php 
    
    (4)配置loganalyzer
    • 浏览器登录http://192.168.136.229/log/,出现提示如下图
    • 点击here,进入安装过程。依次点击继续,在step 7时,填写mysql数据库的关键信息

    红框中的信息按照创建数据库的相关信息填写

    Source Type: MYSQL Native
    Database Host: 192.168.136.130
    Database Name: Syslog
    Database Tablename: SystemEvents
    Database User: loguser
    Database Password: centos
    
    • 安装成功,显示界面如下,可以看到日志信息

    相关文章

      网友评论

        本文标题:20171012 日志管理

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