第十一章 日志管理

第十一章 日志管理

1日志进程rsyslog

任务一 rsyslog 系统日志管理

​ 关心问题 哪些程序产生的什么日志放到什么地方

任务一详解

1处理日志的进程
第一类

rsyslog 系统专职日志程序

处理绝大部分日志记录

系统操作有关的信息 如登录信息 程序启动关闭信息 错误喜喜

第二类

httpd nginx mysql 各类应用程序 可以已自己的方式记录日志 讲解对应程序时会桌布介绍

观察rsyslog程序

d 守护程序

ps aux | grep rsyslogd

root       1161  0.0  0.2 216400  4412 ?        Ssl  11:58   0:00 /usr/sbin/rsyslogd -n
root      94994  0.0  0.0 112828   980 pts/2    S+   14:43   0:00 grep --color=auto rsyslogd

2常见的日志文件(系统,进程,应用程序)
系统主日志文件
[root@localhost ~]# tail /var/log/messages 
Nov  5 14:43:18 localhost systemd: Started Session 31 of user root.
Nov  5 14:43:18 localhost systemd-logind: New session 31 of user root.
Nov  5 14:43:32 localhost journal: failed to call gs_plugin_refresh on odrs: [*/*/*/source/odrs/*] failed to download https://odrs.gnome.org/1.0/reviews/api/ratings: SSL handshake failed
Nov  5 14:44:43 localhost dbus[707]: [system] Activating via systemd: service name='net.reactivated.Fprint' unit='fprintd.service'
Nov  5 14:44:43 localhost systemd: Starting Fingerprint Authentication Daemon...
Nov  5 14:44:43 localhost dbus[707]: [system] Successfully activated service 'net.reactivated.Fprint'
Nov  5 14:44:43 localhost systemd: Started Fingerprint Authentication Daemon.
Nov  5 14:44:56 localhost chronyd[780]: Selected source 202.118.1.81
Nov  5 14:45:59 localhost chronyd[780]: Selected source 116.203.151.74
Nov  5 14:46:24 localhost chronyd[780]: Source 202.118.1.81 replaced with 144.76.76.107
动态查看日志文件的尾部
[root@localhost ~]# tail -f /var/log/messages 
Nov  5 14:43:18 localhost systemd: Started Session 31 of user root.
Nov  5 14:43:18 localhost systemd-logind: New session 31 of user root.
Nov  5 14:43:32 localhost journal: failed to call gs_plugin_refresh on odrs: [*/*/*/source/odrs/*] failed to download https://odrs.gnome.org/1.0/reviews/api/ratings: SSL handshake failed
Nov  5 14:44:43 localhost dbus[707]: [system] Activating via systemd: service name='net.reactivated.Fprint' unit='fprintd.service'
Nov  5 14:44:43 localhost systemd: Starting Fingerprint Authentication Daemon...
Nov  5 14:44:43 localhost dbus[707]: [system] Successfully activated service 'net.reactivated.Fprint'
Nov  5 14:44:43 localhost systemd: Started Fingerprint Authentication Daemon.
Nov  5 14:44:56 localhost chronyd[780]: Selected source 202.118.1.81
Nov  5 14:45:59 localhost chronyd[780]: Selected source 116.203.151.74
Nov  5 14:46:24 localhost chronyd[780]: Source 202.118.1.81 replaced with 144.76.76.107
认证 安全
[root@localhost ~]# tail /var/log/secure 
Nov  4 21:03:49 localhost sshd[25642]: pam_unix(sshd:session): session opened for user root by (uid=0)
Nov  4 21:03:59 localhost sshd[25686]: Accepted password for root from 192.168.120.1 port 62934 ssh2
Nov  4 21:03:59 localhost sshd[25686]: pam_unix(sshd:session): session opened for user root by (uid=0)
Nov  4 21:06:00 localhost atd[28831]: pam_unix(atd:session): session opened for user root by (uid=0)
Nov  4 21:06:01 localhost useradd[28835]: new group: name=uuuu, GID=1002
Nov  4 21:06:01 localhost useradd[28835]: new user: name=uuuu, UID=1002, GID=1002, home=/home/uuuu, shell=/bin/bash
Nov  5 14:43:07 localhost sshd[94778]: Accepted password for root from 192.168.120.1 port 63203 ssh2
Nov  5 14:43:07 localhost sshd[94778]: pam_unix(sshd:session): session opened for user root by (uid=0)
Nov  5 14:43:18 localhost sshd[94823]: Accepted password for root from 192.168.120.1 port 63247 ssh2
Nov  5 14:43:18 localhost sshd[94823]: pam_unix(sshd:session): session opened for user root by (uid=0)

yum
[root@localhost ~]# tail /var/log/yum.log 
Nov 04 17:40:26 Installed: wget-1.14-18.el7_6.1.x86_64
Nov 04 17:56:30 Installed: libsepol-devel-2.5-10.el7.x86_64
Nov 04 17:56:30 Installed: libcom_err-devel-1.42.9-19.el7.x86_64
Nov 04 17:56:30 Installed: pcre-devel-8.32-17.el7.x86_64
Nov 04 17:56:31 Installed: libselinux-devel-2.5-15.el7.x86_64
Nov 04 17:56:31 Installed: zlib-devel-1.2.7-18.el7.x86_64
Nov 04 17:56:31 Installed: libverto-devel-0.2.5-4.el7.x86_64
Nov 04 17:56:31 Installed: keyutils-libs-devel-1.5.8-3.el7.x86_64
Nov 04 17:56:31 Installed: krb5-devel-1.15.1-50.el7.x86_64
Nov 04 17:56:31 Installed: 1:openssl-devel-1.0.2k-19.el7.x86_64

跟邮箱postfix相关
[root@localhost ~]# tail /var/log/maillog 
Nov  4 15:49:58 localhost postfix/postfix-script[1643]: starting the Postfix mail system
Nov  4 15:49:58 localhost postfix/master[1649]: daemon started -- version 2.10.1, configuration /etc/postfix
Nov  4 16:32:47 localhost postfix/postfix-script[1517]: starting the Postfix mail system
Nov  4 16:32:48 localhost postfix/master[1530]: daemon started -- version 2.10.1, configuration /etc/postfix

//crond at进程产生的日志
[root@localhost ~]# tail /var/log/cron 
Nov  4 21:00:01 localhost CROND[25592]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Nov  4 21:01:01 localhost CROND[25606]: (root) CMD (run-parts /etc/cron.hourly)
Nov  4 21:01:01 localhost run-parts(/etc/cron.hourly)[25606]: starting 0anacron
Nov  4 21:01:01 localhost run-parts(/etc/cron.hourly)[25615]: finished 0anacron
Nov  4 21:10:01 localhost CROND[34450]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Nov  4 21:20:01 localhost CROND[48408]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Nov  4 21:30:01 localhost CROND[62414]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Nov  4 21:40:01 localhost CROND[76342]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Nov  4 21:50:01 localhost CROND[90286]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Nov  5 14:50:01 localho
和系统启动相关
[root@localhost ~]# tail /var/log/dmesg
[    3.528944] alg: No test for __generic-gcm-aes-aesni (__driver-generic-gcm-aes-aesni)
[    3.581744] XFS (sda1): Ending clean mount
[    6.178595] floppy0: no floppy controllers found
[    6.178639] work still pending
[    6.307438] type=1305 audit(1699086765.055:4): audit_pid=679 old=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:auditd_t:s0 res=1
[    6.315217] RPC: Registered named UNIX socket transport module.
[    6.315219] RPC: Registered udp transport module.
[    6.315220] RPC: Registered tcp transport module.
[    6.315220] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    6.737697] NET: Registered protocol family 40

了解

tail /var/log/audit/audit.log 系统审计日志

tail /var/log/mysq.log mysql

tail /var/log/xferfog 和访问FIP服务器相关

tail /var/log/wtmp 当前登录的用户 命令 w

tail /var/log/btmp 醉经登录的用户 命令last

tail /var/log/lastlog 所有用户的登录清空 命令lastlog

3rsyslogd配置
1处理日志的进程

第一类

rsyslogd  系统专职日志程序

处理绝大部分日志记录

系统操作有关的信息 如登录信息 程序启动关闭信息 错误信息

第二类

光差rsyslogd程序

2常见的日志文件 如系统 进程 应用程序
3rsyslogd配置

1.相关程序

yum install rsyslog logrotate

默认已安装

2启动程序

systemctl start rsyslog.service

3相关文件

观察日志程序的配置文件

rpm -qc rsyslog

/etc/rsyslog.conf
rsyslogd的主配置文件 关键 

/etc/sysconfig/rsyslog
rsyslogd相关文件 第一级别 了解

/etc/logrotate.d/syslog
和日志办轮转切割相关任务二
4 主配置文件

告诉rsyslogd进程什么日志应该存到哪里

vim /etc/rsyslog.conf

RULES  即规则 时一套生成日志 以及储存日志的策略

规则有设备+级别6存放位置组成

RULES由ACILITY+LEVEL+FILE组成

authpriv.*   /var/log/secure  ssh信息

mail.*    -/var/log/maillog  发邮件

cron.*   /var/log/cron  创建任务
FACILITU & LEBEL  
facility设备 
facility

设备类型
LOG_AUTH
LOG_AUTHPRIV   安全认证
LOG_CRON  clock daemon (cron and at)
LOG_DAEMON  后台进程
LOG_FTP  ftp daemon
LOG_KERN  kernel messages
LOG_LOCAL0 through LOG_LOCAL7   用户自定义设备
LOG_LPR  printer subsystem
LOG_MAIL  邮件系统mail subsystem
LOG_NEWS  news subsystem
LOG_SYSLOG  syslogd自身产生的日志 
LOG_USER (default)


程序类型示例
关于车徐和设备的联系问题 程序自身会决定将日志交给那类设备 与ssh 成安全了i设备 这一点由开发者定义
[root@localhost ~]# grep Facility /etc/ssh/sshd_config
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
 
SyslogFacility AUTHPRIY
请问这个程序时属于哪个设备呢


level级别
LOG_EMERG  紧急,致命,服务无法继续运行,如配置文件丢失
LOG_ALERT  报警,需要立即处理,如磁盘空使用95%
LOG_CRIT  致命行为
LOG_ERR  错误行为
LOG_WARNING   警告信息
LOG_NOTICE  普通,重要的标准信息
LOG_INFO  标准信息
LOG_DEBUG  调试信息,排错所需,一般不建议使用
 从下到上,级别从低到高,记录的信息越来越少



规则示意图
4主配置文件

2日志轮转logrotate

任务二 日志轮转logrotate

​ 将大量的日志 分割管理 删除旧日志

任务二详解

logrotate日志轮转
简介
日志记录了程序运行时各种信息

通过日志可以分析用户行为 记录运行轨迹 查找程序问题

可惜磁盘的空间是有限的

日志轮转就向飞机里的黑匣子 记录的信息在重要也只能纪录最好一段时间发生的事情

为了节省空间和整理方便 日志文件经常需要按 时间或 大小等维度分成多分,删除时间久远的日志
工作原理

按照配置经行轮转

配置文件种类

主文件 /etc/logrotate.conf (决定每个日志文件如何轮转)

子文件夹 /etc/logrotate.d/* 自定义配置 便于管理

[root@localhost ~]# ls /etc/yum.conf  /etc/yum.repos.d/
/etc/yum.conf

/etc/yum.repos.d/:
dvd.repo

观察主文件和子文件

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

/etc/logrotate.d/:

主配置文件介绍

ls /etc/logrotate.con

查看logrotate.conf配置:


weekly //默认每一周执行一次rotate轮转工作
rotate 4 //保留多少个日志文件(轮转几次).默认保留四个.就是指定日志文件删除之前轮转的次数,0 指没有备份
create //自动创建新的日志文件,新的日志文件具有和原来的文件相同的权限;因为日志被改名,因此要创建一个新的来继续存储之前的日志
dateext //这个参数很重要!就是切割后的日志文件以当前日期为格式结尾,如xxx.log-20131216这样,如果注释掉,切割出来是按数字递增,即前面说的 xxx.log-1这种格式
compress //是否通过gzip压缩转储以后的日志文件,如xxx.log-20131216.gz ;如果不需要压缩,注释掉就行
include /etc/logrotate.d //导入/etc/logrotate.d/ 目录中的各个应用配置
/var/log/wtmp { //仅针对 /var/log/wtmp 所设定的参数
monthly //每月一次切割,取代默认的一周
minsize 1M //文件大小超过 1M 后才会切割
create 0664 root utmp //指定新建的日志文件权限以及所属用户和组
rotate 1 //只保留一个日志.
}
#这个 wtmp 可记录用户登录系统及系统重启的时间
#因为有 minsize 的参数,因此不见得每个月一定会执行一次喔.要看文件大小。
Logrotate中其他可配置参数,具体如下:

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
yum日志轮转实例

轮转的目标文件/var/log/yum.log

配置轮转规则

配置	说明
daily	轮转周期,每天轮转
weekly	轮转周期,一周轮转
monthly	轮转周期,每月轮转
yearly	轮转周期,一年轮转
rotate 数字	保留的日志文件的个数,0 指没有备份
create	轮转后创建新文件,旧文件改名
dateext	以时间作为文件扩展名(date 时间、extend 扩展)
compress	日志轮替时,压缩旧的日志
include /etc/logrotate.d	包含该目录下的子配置文件
maxsize 1M	达到1M才轮转(date跟max 是或的关系)
minsize 30k	最小达到30k轮转(date跟mix 同时满足才轮转)
size 大小	日志只有大于指定大小才进行日志轮替,而不是按照时间轮替
create 0600 root utmp
create mode owner group	轮转后创建新日志,并设置权限。
权限、属主、属组
missingok	丢失不提示
notifempty	空文件不轮转
missingok	如果日志不存在,则忽略该日志的警告信息
mail address	当日志轮替时,输出内容通过邮件发送到指定的邮件地址
sharedscripts	在此关键字之后的脚本只执行一次
prerotate/endscript	在日志轮替之前执行脚本命令,endscript 标识 prerotate 脚本结束
postrotate/endscript	在日志轮替之后执行脚本命令,endscrip i标识 postrotate 脚本结束

子配置文件 只要创建就会被系统读取

vim /etc/logrotate.d/yum

系统有的 
/var/log/yum.log {
    missingok  //丢失不执行
    notifempty  // 空文件不轮转
    maxsize 30k   // 达到30k轮转 daily or size
    yearly   // 或者一年一轮转
    create 0600 root root
}


daily  //缩小周期到1天
rotate  // 轮转保留3次

测试

示例 
/var/log/yum.log {
    missingok
  # notifempty
  # maxsize 30k
  # yearly
    daily
    rotate 3
    create 0777 root root
}

错误示范

多次执行日期不会变 只会有一个

/usr/sbin/logrotate /etc/logrotate.conf // 手动轮转

[root@localhost ~]# ls /var/log/yum*
/var/log/yum.log  /var/log/yum.log-20231106

正确示范

date 月日时分 每个两位

[root@localhost ~]# date
2023年 11月 06日 星期一 16:13:40 CST

[root@localhost ~]# date 11070100
2023年 11月 07日 星期二 01:00:00 CST
[root@localhost ~]# /usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status  /etc/logrotate.conf


[root@localhost ~]# ls /var/log/yum*
/var/log/yum.log  /var/log/yum.log-20231106  /var/log/yum.log-20231107

关于

// 记录所有日志文件最近轮转的时间

[root@localhost ~]# grep 'yum' /var/lib/logrotate//logrotate.status 
"/var/log/yum.log" 2023-11-7-1:2:9

总结

1处理日志程序

a rsyslog

b 不同的应用(将来安装的)

2常见的日志文件

/var/log/messages

/var/log/maillog

/var/log/authprove

/var/log/cron

3rsyylog程序介绍

ryslog产生并指定规则
yum install
systemctl start
rpm -qc

4 rsyslog.conf主配置文件介绍

规则(设备,级别 文件位置)

日志管理

1什么时日志为什么要管理日志

程序产生的文字类和数字类信息

为了统计信息,为了排查错误

2,日志从哪里来?哪里程序产生了日志

Linux系统中rsyslog程序

未来安装的大型程序 如http程序

/var/log/httpd/accwss.log

3rsyylog是一个程序 是一个进程 有配置文件

yum install -y ysyslog

systemctl start rsyslog

/etc/rayslog.conf

4rsyylog 配置文件规则

规则 设备+级别+文件

折百 同种应用程序,设计程序是已经指定

级别  纪录星系的类型

文件  储存星系的位置

你可能感兴趣的:(linux,网络,学习)