日志管理

日志管理

日志文件:系统中各个运行消息的文件,不同的日志文件记录了不同类型的信息,如内核消息、错误消息等

syslog服务:
syslogd: 系统,非内核产生的信息
klogd:内核,专门负责记录内核产生的日志信息

一.分析日志文件

通过浏览日志查找关键信息,对系统服务进行调试
判断故障发生的原因

1. 分类
1)内核及系统日志:数据由系统服务rsyslog统一管理可以根据主配文件/etc/rsyslog.conf中的设置决定内核消息及其各种系统消息的记录位置

2)用户日志:数据用于记录系统用户登录及其退出系统的相关信息,包括用户名、登录终端、登录时间、来源、使用的进程等等

3)程序日志:应用程序自己独立管理的一个日志,记录程序本身运行过程中的各种事件信息

2. 内核和系统日志
/etc/rsyslog.conf 日志服务配置文件

主配文件使用(举例):
mail.notice
服务  级别

在这里插入图片描述
/var/log/messages 内核和大多数系统消息日志位置
每一行的消息内容:

时间:消息发出的时间和日期
主机名:生成消息的计算机的名称
子系统的名称:发出消息的应用程序的名称
消息内容:消息的具体内容

3. 用户日志和程序日志
查询当前登录的用户情况:users,who,w
查询用户登录的历史记录:last,lastb
查看安全日志文件:/var/log/secure

程序日志:
如:httpd 服务的日志文件access_logerror_log分别记录客户访问事件和错误信息

4. 常见日志文件
/var/log/boot.log:记录了系统在引导过程中发生的事件,就是Linux系统开机自检过程显示的信息
/var/log/messages :记录Linux操作系统常见的系统和服务错误信息
/var/log/cron crond 计划任务产生的事件信息
/var/log/dmesg 引导过程中产生的信息
/var/log/maillog 记录电子邮件活动信息
/var/log/lastlog 记录最后一次用户成功登陆的时间、登陆IP等信息
/var/log/secure Linux系统安全日志,记录用户和工作组变化情况、用户登陆认证情况
/var/log/syslog:只记录警告信息,常常是系统出问题的信息,使用lastlog查看
/var/log/wtmp 记录用户登录、注销、系统启动、关键等信息,使用last命令
查看
/var/log/btmp 记录失败或者是错误的登录信息和验证 lastb命令查看
/var/run/utmp: 该日志文件记录有关当前登录的每个用户的信息。如 who、w、users、finger等就需要访问这个文件

5. 日志消息的级别

0 emerg(panic) 会导致主机系统不可用的情况
1 alert 必须马上采取措施解决的问题
2 crit(critical) 比较严重的情况
3 err(error) 运行出现问题
4 warning(warn) 可能影响系统功能,需要提醒用户的重要事件
5 notice 不会影响正常功能,但是需要注意的事件
6 info 一般信息
7 debug 程序或系统调试信息等
8 none 不记录任何日志

6. 服务名称

auth             # 认证相关的
authpriv         # 权限,授权相关的
cron             # 任务计划相关的
daemon           # 守护进程相关的
kern             # 内核相关的
lpr              # 打印相关的
mail             # 邮件相关的
mark             # 标记相关的
news             # 新闻相关的
security         # 安全相关的,与auth 类似
syslog           # syslogd进程相关的
user             # 用户相关的
uucp             # unix to unix cp 相关的
local0 到 local7 # 用户自定义使用
*                # *表示所有的facility

7. action(动作)日志记录的位置

系统上的绝对路径 # 普通文件 如: /var/log/xxx
|              # 管道 通过管道送给其他的命令处理
终端           # 终端 如:/dev/console
@HOST         # 远程主机 如: @10.0.0.1
用户           # 系统用户 如: root
*             # 登录到系统上的所有用户,一般emerg级别的日志是这样定义的

服务名称.日志等级的表示
.       mail.warning 表示记录mail服务,warning及其以上级别的日志
.=      mail.=warning 表示记录mail服务warning级别日志
.!      mail.!warning 表示除了warning级别以外的,其他级别的所有日志都记录
.none   表示不记录
*       表示所有
*.      表示所有服务
.*      表示所有日志级别
*.*     所有服务的所有级别的日志

定义格式例子:
mail.info /var/log/mail.log #表示将mail相关的,级别为info及info以上级别的信息记录到/var/log/mail.log文件中
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级别

8. 修改本地日志
例:vim /etc/rsyslog.conf
在这里插入图片描述
在这里插入图片描述
注意:
1)书写错误
2)修改完成后需要重启服务
3)selinux必须要关闭的或者是permissive模式,否则无法自动生成你配置的日志文件

修改权限可以防止别人修改我的日志,如:chattr +a /var/log/secure

9. 远程日志
可以做日志的备份,也可以做日志的集中管理
集中管理日志的软件:splunk ELK

环境:
192.168.48.130 远程服务器
192.168.48.129 本机

本机配置:
在这里插入图片描述
远程服务器开启接收远程日志的功能
在这里插入图片描述
远程服务器关闭防火墙

本地和远程服务器重启服务

验证
本地创建账户:useradd test1
在这里插入图片描述
远程服务器查看日志
在这里插入图片描述
注意:
1)重启服务
2)关闭本地selinux
3)关闭远程主机防火墙
4)尽量不要互传日志

日志切割

日志切割:logrotate

logrotate [OPTION...] <configfile>
-d, --debug :debug模式,测试配置文件是否有错误。
-f, --force :强制转储文件。
-m, --mail=command :压缩日志后,发送日志到指定邮箱。
-s, --state=statefile :使用指定的状态文件。
-v, --verbose :显示转储过程。

为什么要切割?
1)防止日志文件过大
2)定期清除日志

logrotate的配置文件

[root@localhost ~]# vim /etc/logrotate.conf 

# see "man logrotate" for details
# rotate log files weekly
weekly    #切割的周期,一周一切割,默认每一周执行一次rotate切割工作

# keep 4 weeks worth of backlogs
rotate 4    #保留多少个日志文件(切割几次).默认保留四个.就是指定日志文件删除之前切割的次数,0指没有备份

# create new (empty) log files after rotating old ones
create    #旧日志切割后是否创建新的空白日志

# use date as a suffix of the rotated file
dateext    #切割后的日志文件以当前日期为格式结尾,如xxx.log-20210410这样,如果注释掉,切割出来是按数字递增,即 xxx.log-1这种格式

# uncomment this if you want your log files compressed
#compress    #是否通过gzip压缩转储以后的日志文件,如xxx.log-20210410.gz ;如果不需要压缩,注释掉就行

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d    #包含该路径下的所有配置文件

# system-specific logs may be also be configured here.
/var/log/wtmp {             #仅针对 /var/log/wtmp 所设定的参数
    missingok               #丢了也没关系
    monthly                 #切割周期,一个月
    create 0664 root utmp   #创建新的日志文件 权限664 所有者root 所属组utmp
    minsize 1M              #文件大小超过1M后才会切割
    rotate 1
}

也可以在如下位置进行配置
在这里插入图片描述
在这里插入图片描述

其他重要参数说明
compress                 通过gzip 压缩转储以后的日志
nocompress               不做gzip压缩处理
copytruncate             用于还在打开中的日志文件,把当前日志备份并截断;是先拷贝再清空的方式,拷贝和清空之间有一个时间差,可能会丢失部分日志数据。
nocopytruncate           备份日志文件不过不截断
create mode owner group  轮转时指定创建新文件的属性,如create 0777 nobody nobody
nocreate                 不建立新的日志文件
delaycompress            和compress一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress          覆盖delaycompress选项,转储同时压缩。
missingok                如果日志丢失,不报错继续滚动下一个日志
errors address           转储时的错误信息发送到指定的Email 地址
ifempty                  即使日志文件为空文件也做轮转,这个是logrotate的缺省选项。
notifempty               当日志文件为空时,不进行轮转
mail address             把转储的日志文件发送到指定的E-mail地址
nomail                   转储时不发送日志文件
olddir directory         转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir                 转储后的日志文件和当前日志文件放在同一个目录下
sharedscripts            运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置这个,那么每个日志轮转后都会执行一次脚本
prerotate                在logrotate转储之前需要执行的指令,例如修改文件的属性等动作;必须独立成行
postrotate               在logrotate转储之后需要执行的指令,例如重新启动 (kill-HUP) 某个服务!必须独立成行daily指定转储周期为每天
weekly                   指定转储周期为每周
monthly                  指定转储周期为每月
rotate count             指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5个备份
dateext                  使用当期日期作为命名格式
dateformat.%s            配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %s 这四个参数
size(或minsize) log-size  当日志文件到达指定的大小时才转储,log-size能指定bytes(缺省)及KB (sizek)或MB(sizem).
当日志文件 >= log-size 的时候就转储。 以下为合法格式:
    size = 5 或 size 5 (>= 5 个字节就转储)
    size = 100k 或 size 100k
    size = 100M 或 size 100M

查看某个服务的日志是否切割

[root@localhost ~]# vim /etc/logrotate.d/syslog 

/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
    missingok
    sharedscripts       #与endscript中间夹的是需要执行的操作
    postrotate          #切割后执行的命令
        /usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true
    endscript
}

/dev/null:空,不管你向它扔什么,都是空
2> :标准错误输出重定向
2>> :标准错误输出追加重定向

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值