• 系统日志管理


    1、系统日志管理

    1. 1、系统日志介绍

     将系统和应用发生的事件记录至日志中,以助于排错和分析使用

    日志记录的内容包括:
    历史事件:时间,地点,人物,事件
    日志级别:事件的关键性程度,Loglevel

    sysklogd 系统日志服务

    CentOS 5 之前版本采用的日志管理系统服务
      syslogd: system application 记录应用日志
      klogd: linux kernel 记录内核日志

    事件记录格式:

    日期时间 主机 进程[pid]: 事件内容  (参照messages里面的内容)
    C/S架构:通过TCP或UDP协议的服务完成日志记录传送,将分布在不同主机的日志实现集中管理

    rsyslog 系统日志服务
    CentOS 6 以后版本的系统管理服务
    rsyslog特性
     多线程
      UDP, TCP, SSL, TLS, RELP
      MySQL, PGSQL, Oracle实现日志存储
      强大的过滤器,可实现过滤记录日志信息中任意部分
      自定义输出格式

    ELK
    ELK:由Elasticsearch, Logstash, Kibana三个软件组成
      非关系型分布式数据库;
      基于apache软件基金会jakarta项目组的项目lucene

    Elasticsearch是个开源分布式搜索引擎,可以处理大规模日志数据,比如:Nginx、Tomcat、系
    统日志等功能;
      Logstash对日志进行收集、分析,过滤,并将其存储供以后使用;
      Kibana 可以提供的日志分析友好的 Web 界面。

      1. rsyslog 管理

    系统日志术语
    facility:设施,从功能或程序上对日志进行归类

    auth, authpriv, cron, daemon,ftp,kern, lpr, mail, news, security(auth),
    user, uucp, syslog
    #自定议的分类
    local0-local7 可以通过配置文件/etc/rsyslog.conf来读取

    Priority 优先级别,从低到高排序

    debug, info, notice, warn(warning), err(error), crit(critical), alert,
    emerg(panic)

    参看帮助: man 3 syslog,man logger

    rsyslog 相关文件
    程序包:rsyslog
    主程序:/usr/sbin/rsyslogd
    CentOS 6:/etc/rc.d/init.d/rsyslog {start|stop|restart|status}
    CentOS 7,8:/usr/lib/systemd/system/rsyslog.service
    配置文件:/etc/rsyslog.conf,/etc/rsyslog.d/*.conf
    库文件: /lib64/rsyslog/*.so

    rsyslog配置文件

    /etc/rsyslog.conf 配置文件格式:由三部分组成
    MODULES:相关模块配置
    GLOBAL DIRECTIVES:全局配置
    RULES:日志记录相关的规则配置

    RULES配置格式:

     facility.priority; facility.priority... target

    facility格式:

    priority格式:

    *: 所有级别

    none:没有级别,即不记录

    PRIORITY:指定级别(含)以上的所有级别

    =PRIORITY:仅记录指定级别的日志信息

    target格式:

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

    通常的日志文件的格式:

    日志文件有很多,如: /var/log/messages,cron,secure等,基本格式都是类似的。格式如下

    事件产生的日期时间 主机 进程(pid):事件内容

    例子:将ssh服务的日志记录至自定义的local的日志设备

    #修改sshd服务的配置
    vim /etc/ssh/sshd_config
    SyslogFacility local2
    service sshd reload
    #修改rsyslog的配置
    vim /etc/rsyslog.conf
    local2.*  /var/log/sshd.log
    systemctl restart rsyslog

      

      #测试
    ssh登录后,查看/var/log/sshd.log有记录

    #logger测试
    logger -p local2.info "hello sshd"
    tail /var/log/sshd.log有记录

    记录登陆信息lastb

    1. 实战案例

      实战案例:利用rsyslog日志服务,将收集的日志记录于MySQL中

    环境信息:

        两台主机
    一台:rsyslog日志服务器,IP:192.168.48.107
    一台:mariadb数据库服务器,IP:192.168.48.121

     操作步骤:

      在rsyslog服务器上安装连接mysql模块相关的程序包

     yum install rsyslog-mysql

    查看相关程序包

       rpm -ql rsyslog-mysql
    /usr/lib/.build-id
    /usr/lib/.build-id/d7
    /usr/lib/.build-id/d7/77fc839aa07e92f0a8858cf3f122996436c7df
    /usr/lib64/rsyslog/ommysql.so
    /usr/share/doc/rsyslog/mysql-createDB.sql

      查看脚本文件相关内容

    cat  /usr/share/doc/rsyslog/mysql-createDB.sql

     上传至mysql服务器

     scp  /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql 192.168.48.121:/data/

    mariadb数据库服务器端

    安装mysql服务

    yum install mariadb-server

    在mariadb数据库服务器上创建相关数据库和表,并授权rsyslog能连接至当前服务器

    mysql < /data/mysql-createDB.sql

    mysql -e "grant all on Syslog.* to loguser@'192.168.48.%' identified by '123456'";

       vim /etc/rsyslog.conf


    ####MODULES####
    #在 MODULES 语言下面,如果是 CentOS 8 加下面行
    module(load="ommysql")
    #在 MODULES 语言下面,如果是 CentOS 7,6 加下面行
    $ModLoad ommysql
    #在RULES语句块加下面行的格式
    #facility.priority :ommysql:DBHOST,DBNAME,DBUSER, PASSWORD
    *.info :ommysql:10.0.0.18,Syslog,loguser,123456

    修改完成以后重启生效

    systemctl  restart  rsyslog.service

    测试

    在日志服务器上生成日志

    logger "this is a test log"

    #在数据库上查询到上面的测试日志
    mysql>SELECT COUNT(*) FROM SystemEvents

    实战案例2:通过 loganalyzer 展示数据库中的日志

      loganalyzer是用 php 语言实现的日志管理系统,可将MySQL数据库的日志用丰富的WEB方式进行展示数据库中的日志
       官网:Home - Adiscon LogAnalyzer

    环境信息

      三台主机
        一台日志服务器,利用上一个案例实现,IP:192.168.48.107,
        一台数据库服务器,利用上一个案例实现,IP:192.168.48.121
       一台当httpd+php 服务器,并安装loganalyzer展示web图形,IP:192.168.48.118

    操作步骤:

    在192.168.48.118主机上安装php和相关软件包

       yum -y install httpd php-fpm php-mysqlnd php-gd

       systemctl restart httpd php-fpm

      

      在192.168.48.118上安装LogAnalyzer

        从http://loganalyzer.adiscon.com/downloads/ 下载loganalyzer-4.1.10.tar.g

      tar -xvf  loganalyzer-4.1.12.tar.gz  -C /var/www/html/log

      mv loganalyzer-4.1.12/src/  /var/www/html/logs

      touch /var/www/html/logs/config.php

      chmod 666 /var/www/html/logs/config.php

      

      基于web页面初始化

           访问http://192.168.48.118/logs 实现初始化

           选择:MySQL Native, Syslog Fields, Monitorware

    安全加强(权限回收)

       chmod 644 /var/www/html/logs/config.php

    logrotate日志转储

    logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,称为日志转储或滚动。可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行

      logrotate 配置

      软件包:logrotate
    相关文件
      计划任务:/etc/cron.daily/logrotate
      程序文件:/usr/sbin/logrotate

      配置文件: /etc/logrotate.conf
    日志文件:/var/lib/logrotate/logrotate.status

              

    设置http日志转储

    对指定日志手动执行日志转储

    #生成测试日志

    dd if=/dev/zero of=/var/log/test1.log bs=2M count=1

    dd if=/dev/zero of=/var/log/test2.log bs=2M count=1

    #针对不同的日志创建转储配置文件

    cat /etc/logrotate.d/test1

    /var/log/test1.log {
    daily
    rotate 5
    compress
    delaycompress
    missingok
    size 1M
    notifempty
    create 644 root root
    postrotate
    echo `date +%F_%T` >> /data/test1.log
    endscript
    }

    cat /etc/logrotate.d/test2

    /var/log/test2.log {
    daily
    rotate 5
    compress
    delaycompress
    missingok
    size 1M
    notifempty
    create 644 root root
    postrotate
    echo `date +%F_%T` >> /data/test2.log
    endscript

    }

    #针对一个测试日志,手动执行日志转储

    logrotate /etc/logrotate.d/test1

    ll /var/log/test*

    cat /data/test1.log

    logrotate /etc/logrotate.conf

    ll /var/log/test*

    ls /data

    cat /data/test2.log

  • 相关阅读:
    友思特应用 | 红外视角的延伸:短波红外相机的机器视觉应用
    5.盒子阴影(重点)
    博途S7-1200PLC自由口通信(Send_P2P和Receive_P2P指令编程)
    UNIAPP利用canvas绘制图片和文字,并跟随鼠标移动
    【详解+安装失败解决】Win11系统装CH340驱动方法
    【快速上手教程6】疯壳·开源编队无人机-遥控器固件烧写
    空投:实现去中心化、建立DAO的必经之路
    [Java]SPI扩展功能
    Rust 力扣 - 1456. 定长子串中元音的最大数目
    【知识串联】概率论中的值和量(随机变量/数字特征/参数估计)【考研向】【按概率论学习章节总结】(最大似然估计量和最大似然估计值的区别)
  • 原文地址:https://blog.csdn.net/y805805/article/details/126600725