日志系统

kernel --> 物理终端(/dev/console) --> /var/log/dmesg

​ # dmesg 或 # cat /var/log/dmesg

/sbin/init

/var/log/messages:系统标准错误日志信息;非内核产生的引导信息;各子系统产生的信息

/var/log/maillog:邮件系统产生的日志信息

/var/log/secure:与安全相关的日志信息

信息详细程度:日志级别

系统日志服务:

​ syslog:centos5

​ rsyslog:centos6,是syslog的升级版

​ 特性:

​ 多线程

​ 支持UDP,TCP,SSL,TLS协议

​ 支持使用MySQL、PGSQL和Oracle实现日志存储

​ 默认没启用此功能,需要加载rsyslog支持此类存储方式的模块,并配置其可使用mysql存储日志

​ 强大的过滤器,可实现过滤系统日志信息中的任何部分

​ 自定义输出格式

elasticsearch,logstash,kibana = elk

    elasticsearch:存储,分析日志

​    logstash:日志收集工具

​    kibana:前端展示工具

syslog和rsyslog服务均有两个进程:

syslogd:系统,非内核产生的日志信息。

klogd:内核,专门负责记录内核产生的日志信息。
syslog服务的配置文件:/etc/syslog.conf

rsyslog服务的配置文件:/etc/rsyslog.conf

配置文件格式定义为: facility.priority action

​ facility可以理解为日志的来源或设备,目前常用的facility有以下几种:

        auth         #认证相关的

​        authpriv      #权限、授权相关的

​        cron         #任务计划相关的

​        daemon      #守护进程相关的

​        kern         #内核相关的

​        lpr          #打印机关的

​        mail         #邮件相关的

​        mark         #标记相关的

​        news         #新闻相关的

​        security       #安全相关的,与auth类似

​        syslog        #syslog自己的

​        user         #用户相关的

​        uucp         #unix to unix cp相关的

​        local0到local7   #用户自定义使用

​        \*             # *表示所有的facility

​    priority(log level)日志的级别,一般有以下几种级别(从低到高),级别越低,信息越详细:

​        debug         #程序或系统的调试信息

​        info           #一般信息

​        notice         #不影响正常功能,需要注意的消息

​        warning/warn  #可能影响系统功能,需要提醒用户的重要事件

​        err/error       #错误信息

​        crit           #紧急,比较严重的

​        alert           #必须马上处理的

​        emerg/panic    #会导致系统不可用的

​        \*             # *表示所有的日志级别

​        none          #跟*相反,表示啥也没有

​    action(动作)日志记录的位置:

​        系统上的绝对路径   #普通文件,如:/var/log/xxx

​        |  COMMAND     #管道,通过管道送给其他的命令处理

​        终端             #终端,如:/dev/console

​        @HOST          #远程主机(远程主机必须要监听在tcp或udp协议514端口上提供服务),如:@10.0.0.1

​        用户             #系统用户,如:root

​        \*                #登录到系统上的所有用户,一般emerg级别的日志是这样定义的

定义格式例子:

    mail.info /var/log/maillog     表示将mail相关的,级别为info及info以上级别的信息同步记录到/var/log/maillog文件中

​    mail.* -/var/log/maillog       表示将mail相关的所有日志信息异步记录到/var/log/maillog文件中,路径前的“-”表示异步模式

​    auth.=info @10.0.0.1         表示将auth相关的,级别为info的信息记录到10.0.0.1主机上去。前提是10.0.0.1要能接收其他主机发来的日志信息

​    user.!=error                 表示记录user相关的,不包括error级别的信息

​    user.!error                  与user.error相反

​    *.info                      表示记录所有的日志信息的info级别

​    mail.*                      表示记录mail相关的所有级别的信息

​    *.*                         表示 记录所有级别的所有日志信息

​    cron.info;mail.info           多个日志来源可以用分号隔开

​    cron,mail.info               与cron.info;mail.info是一个意思

​    mail.*;mail.!=info            表示记录mail相关的所有级别的信息,但是不包括info级别的

文件记录(/var/log/message)的日志的格式:

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

有些日志记录为二进制格式:/var/log/wtmp,/var/log/btmp

​ /var/log/wtmp:当前系统成功登录的日志,可使用last命令查看其内容

​ /var/log/btmp:当前系统失败的登录尝试的日志,可使用lastb命令查看其内容

​ lastlog命令:显示当前系统每一个用户最近一次的登录时间

配置rsyslog服务器:

​ 编辑配置文件(/etc/rsyslog.conf),将下列内容前面的注释去掉,然后重启rsyslog服务即可:

​ #$ModLoad imudp

​ #$UDPServerRun 514

​ #$ModLoad imtcp

​ #$InputTCPServerRun 514

配置使用基于mysql存储日志信息的rsyslog服务器:假定此处的mysql和rsyslog是两台不同的主机

​ 注意:请关闭防火墙和SELINUX

    a) 确保mysql服务正常

​    b) 在rsyslog服务器上安装rsyslog-mysql模块(yum -y install rsyslog-mysql)

​    c) 在mysql服务器上授权一个用户能够对Syslog数据库有写权限

​        GRANT ALL ON Syslog.* TO 'syslog'@'172.16.%.%' IDENTIFIED BY 'syslogpassword';

​ d) 配置mysql服务器,在主配置文件(/etc/my.cnf)中添加下面两行内容,并重启mysql服务

​ skip_name_resolve = on

​ innodb_file_per_table = on

​ e) 在rsyslog服务器上执行sql语句

​ mysql -usyslog -h172.16.100.9 -psyslogpassword < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql

​ f) 配置rsyslog服务器能使用mysql存储日志。编辑/etc/rsyslog.conf文件并重启rsyslog服务

​ 在### MODULES ###段下面添加如下内容:

​ $ModLoad ommysql

​ 在### RULES ###段下面添加如下内容:

*.info;mail.none;authpriv.none;cron.none     
:ommysql:172.16.100.9,Syslog,syslog,syslogpassword

​                ommysql:表示使用ommysql模块存储日志至mysql

​                Syslog:表示mysql中的Syslog数据库

​                syslog:表示连接mysql的用户

​                syslogpassword:表示连接mysql的密码

​ g) 配置webserver,支持php

        yum install httpd php php-mysql php-gd

​        service httpd start

​ h) 配置前端展示界面(loganalyzer软件)

        tar xf loganalyzer-3.6.5.tar.gz

​        mv loganalyzer-3.6.5/src /var/[www/html/loganalyzer](www/html/loganalyzer)

​        cp -a loganalyzer-3.6.5/contrib/*.sh /var/www/html/loganalyzer/

​        cd /var/[www/html/loganalyzer/](www/html/loganalyzer/)

​        chmod +x *.sh

​        ./configure.sh

​        ./secure.sh

​        chmod 666 config.php   #如果没有此文件则手动touch一个即可

​ 在浏览器上输入:http://IP/loganalyzer/install.php

posted @   姜翎  阅读(103)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示