Linux之日志管理

深度剖析 logrotate 之 postrotate:运维的日志管理利器 postrotate作为logrotate工具中的重要组成部分,为运维人员提供了丰富的日志管理后处理手段。通过合理利用postrotate,可以实现服务配置的动态更新、高效的日志备份与传输、定制化的日志预处理以及与监控系统的无缝集成。然而,在使用过程中需要注意权限管理、错误处理、脚本调试和性能优化等方面的问题,以确保日志管理工作的稳定、高效运行。掌握postrotate的应用技巧,将显著提升运维工作中的日志管理水平,为企业级系统的稳定运行和高效运维提供有力支持。 阅读详情

日志管理

Rsyslog日志管理

采集-------->分析

一、处理日志的进程

日志分类:系统日志,进程日志,应用程序(httpd,nginx,mysql 等是以自己的方式记录日志)

记录日志的用处: 排错,追溯事件,统计流量,审计安全行为

rsyslogd:绝大部分日志记录,和系统操作有关,安全,认证,计划任务…

rsyslogd只是负责记录日志,并不负责处理日志

处理分析日志:

1.少量日志使用vim cat tail less more grep awk这些文档处理程序查看和检索

2.大量日志可以用splunk、logstash、elk

日志存放位置:/var/log
日志服务启动:systemctl start rsyslog
日志配置文件:/etc/rsyslog.conf
[root@ever ~]# ps aux |grep rsyslogd |grep -v grep
root 686 0.0 0.0 219752 8436 ? Ssl 16:35 0:00 /usr/sbin/rsyslogd -n

日志可以存放在本地

日志可以存放在远程服务器,但远程服务器必须打开接收

二、常见的日志文件(系统、进程、应用程序)

ls /var/log/

tail /var/log/messages //系统主日志文件

tail -20 /var/log/messages

tail -f /var/log/messages //动态查看日志文件的尾部

tail -f /var/log/secure //认证、安全

tail /var/log/maillog //跟邮件(postfix)相关

tail /var/log/cron //crond、at进程产生的日志

tail /var/log/dmesg //和系统启动相关,开机后不再记录

grep -i fs /var/log/dmesg //只反映出开机过程的信息,开机成功后不会再改变

dmesg //查看系统开机后的信息

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

tail /var/log/yum.log //yum

进程以自己的方式去记录日志

tail /var/log/mysqld.log //MySQL进程自己记录的日志

tail /var/log/httpd/access_log //Apache自己记录的日志

tail /var/log/xferlog //和访问FTP服务器相关

二进制日志:

w //当前登录的用户即: /var/log/wtmp日志

last //最近登录的用户 /var/log/btmp,清空日志用

history -c

lastlog //所有用户的登录情况 /var/log/lastlog

常见的日志文件名:

目录/var/log

messages 系统消息日志文件

bootlog 系统引导和启动的日志

cron 周期性计划任务的日志

secure 安全日志,跟用户账号、登录相关的信息

maillog 邮件日志

btmp 错误(bad)登录的日志,用lastb命令查

wtmp 所有用户的登录、注销信息,用last命令查

案例1:

统计登录失败top 2

grep 'Fail' /var/log/secure |awk '{print $11}' |sort |uniq -c|sort -k1 -n -r |head -2

366 140.205.225.186
140/214
335 140.205.201.44

案例2:

统计登录成功

grep 'Accepted' /var/log/secure*

案例3:

查看网卡是否已被驱动

grep -i eth /var/log/dmesg

r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded
r8169 0000:01:00.0: eth0: RTL8168e/8111e at 0xffffc900058b0000, f4:6d:04:77:17:e9, XID
0c200000 IRQ 27
r8169 0000:01:00.0: eth0: jumbo features [frames: 9200 bytes, tx checksumming: ko]

三、rsyslogd子系统

注:rsyslogd是和大多的日志工作相关的一个进程,有自己的配置文件

rpm -qc rsyslog
/etc/logrotate.d/syslog //和日志的轮转(切割)相关
/etc/rsyslog.conf //rsyslogd的主配置文件
/etc/sysconfig/rsyslog //rsyslogd相关文件
man 3 syslog
vim /etc/rsyslog.conf
配置文件中记录了哪个设备(facility),关于哪个级别的信息,以及如何处理,不同的应用程序会选择不同的
设备进行日志记录

==产生日志的对象

man 3 syslog

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

==日志级别level syslogd

遇到何种情况(正常、错误)才会记录日志

LOG_EMERG 紧急,致命,服务无法继续运行,如配置文件丢失
LOG_ALERT 报警,需要立即处理,如磁盘空使用95%
LOG_CRIT 致命行为
LOG_ERR 错误行为
LOG_WARNING 警告信息
LOG_NOTICE 普通
LOG_INFO 标准信息
LOG_DEBUG 调试信息,排错所需,一般不建议使用

注释:

八种级别是从上到下依次降低的,也就是说越来越不紧急的,级别不区分大小写。设备如果有级

别,那么写日志的时候必须要使用比他级别高的才可以写进去,否则写不进去。

练习1:

将authpriv设备日志记录到/var/log/auth.log,日志文件由触发产生

例题1:修改安全认证的日志记录文件
[root@ever ~]# vim /etc/rsyslog.conf
authpriv.* /var/log/secure 将secure改成anquan.log
[root@ever ~]# service rsyslog restart
[root@ever ~]# ssh 172.16.100.134
The authenticity of host '172.16.100.134 (172.16.100.134)' can't be established.
RSA key fingerprint is c5:f0:d9:21:04:fb:1e:bf:0a:22:2f:9e:02:02:4c:6c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.100.134' (RSA) to the list of known hosts.
root@172.16.100.134's password:
Last login: Tue Aug 18 15:15:23 2015 from 172.16.100.40
[root@ever ~]# tail /var/log/anquan.log
Aug 20 18:00:19 xiaochen sshd[17606]: Accepted password for root from 172.16.100.134 port
35142 ssh2
Aug 20 18:00:19 xiaochen sshd[17606]: pam_unix(sshd:session): session opened for user root by
(uid=0)

练习2:

改变应用程序sshd的日志设备为local5, 并定义local5设备日志记录到/var/log/local5.local

例题2:将sshd服务的日志设备为local5
一般情况下什么什么服务使用什么日志设备都已经在配置文件中规定好了,如果想要修改就需要在主配置
文件中进行修改,修改成自定义的local0-7的设备
[root@ever ~]# vim /etc/rsyslog.conf
local5.* /var/log/local5.log
[root@ever ~]# service rsyslog restart
[root@ever ~]# vim /etc/ssh/sshd_config
SyslogFacility AUTHPRIV 将AUTHPRIV改成LOCAL5设备,必须是大写,语法规定的
[root@ever ~]# service sshd restart
[root@ever ~]# ssh 172.16.100.134
root@172.16.100.134's password:
Last login: Thu Aug 20 18:00:20 2015 from 172.16.100.134
[root@ever ~]# cat /var/log/local5.log
Aug 20 18:10:17 xiaochen sshd[17811]: Server listening on 0.0.0.0 port 22.
Aug 20 18:10:17 xiaochen sshd[17811]: Server listening on :: port 22.
Aug 20 18:11:00 xiaochen sshd[17826]: Accepted password for root from 172.16.100.134 port
35143 ssh2
用处:测试某个服务的时候,想要将这个服务的所有的日志全部都放到同一个文件中,避免和其他的日志
混合在一起,最后想要用的时候还要从大量的日志中截取

练习3:

使用logger程序写日志到所有终端上

例题3:
[root@localhost ~]# logger -p emerg yyy

练习4:

使用logger程序写日志到指定的设备及级别

注意seinux
[root@ever ~]# vim /etc/rsyslog.conf
local6.* /var/back/back.log
[root@ever ~]# mkdir /var/back
[root@ever ~]# service rsyslog restart
[root@ever ~]# cd /var/back/
[root@ever back]# ls
back.log
[root@ever back]# vim back.sh
!/bin/bash
tar czf /var/back/back_etc_`date +%m-%d`.tar.gz /etc &>/dev/null
find /var/back -mtime +1 -delete
logger -p local6.info -t "backup" "success"
[root@ever back]# /var/back/back.sh
[root@ever back]# ls
back_etc_08-20.tar.gz back.log back.sh
[root@ever back]# cat back.log
Aug 20 18:24:23 xiaochen backup: success
[root@ever ~]# crontab -e
crontab: installing new crontab
[root@ever ~]# crontab -l
00 04 * * * /var/back/back.sh
[root@ever back]# date 082103592015.50
2015年 08月 21日 星期五 03:59:50 CST
[root@ever back]# ls
back_etc_08-20.tar.gz back_etc_08-21.tar.gz back.log back.sh
[root@xever back]# tail /var/log/cron
Aug 20 18:01:01 ever run-parts(/etc/cron.hourly)[17647]: finished 0anacron
Aug 20 18:10:02 ever CROND[17791]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Aug 20 18:20:01 ever CROND[17997]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Aug 20 18:28:36 ever crontab[18134]: (root) BEGIN EDIT (root)
Aug 20 18:28:50 ever crontab[18134]: (root) REPLACE (root)
Aug 20 18:28:50 ever crontab[18134]: (root) END EDIT (root)
Aug 20 18:28:52 ever crontab[18145]: (root) LIST (root)
Aug 20 18:29:01 ever crond[9300]: (root) RELOAD (/var/spool/cron/root)
Aug 21 04:00:47 ever CROND[18170]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Aug 21 04:00:47 ever CROND[18171]: (root) CMD (/var/back/back.sh)

四、集中式日志管理(推送日志)

注意selinux和iptables

==日志服务器(开启接收功能)

[root@ever ~]# vim /etc/rsyslog.conf

Provides UDP syslog reception

$ModLoad imudp
$UDPServerRun 514
local3.* /var/log/local3.log 在下面添加一行日志的存放位置
[root@ever ~]# service rsyslog restart
[root@ever ~]# netstat -tunlp |grep :514
udp 0 0 0.0.0.0:514 0.0.0.0:* 13096/rsyslogd
udp 0 0 :::514 :::* 13096/rsyslogd
[root@ever ~]# tail /var/log/local3.log

==日志客户端

[root@ever ~]# vim /etc/rsyslog.conf
local3.* @172.16.130.1
[root@ever ~]# service rsyslog restart
[root@ever ~]# logger -p local3.info -t "heihei" "wawa"

实验要求:

1、将老师的服务作为日志的服务器端,使用自己的真机向老师的服务器端推送日志
2、将自己的真机作为日志的服务器端,使用自己的虚拟机作为日志的客户端,虚拟机产生的日志需要推送
到自己的真机上面
3、实现虚拟机将日志推送到自己的真机上面,真机再将虚拟机推到真机上的日志推送到老师的服务器上

注意selinux和iptables

真机:

[root@gaozuo ~]# ip a show br0
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether 44:37:e6:78:2b:3c brd ff:ff:ff:ff:ff:ff
inet 125.222.236.149/24 brd 125.222.236.255 scope global br0
[root@gaozuo ~]# vim /etc/rsyslog.conf
$ModLoad imudp
$UDPServerRun 514
local3.* @125.222.236.120
local3.* /var/log/local3.log
[root@gaozuo ~]# /etc/init.d/rsyslog restart

虚拟机

[root@client ~]# vim /etc/rsyslog.conf
local3.* @125.222.236.149
[root@client ~]# /etc/init.d/rsyslog restart
[root@client ~]# logger -p "local3.info" -t "qianfeng" "fengfeng"

现象:

[root@gaozuo ~]# tail -f /var/log/local3.log
Oct 21 23:04:43 gaozuo fengfeng: fengfeng
[root@xiaochen ~]# tail -f /var/log/local3.log
Oct 21 23:04:43 gaozuo fengfeng: fengfeng

logrotate日志轮转

注:针对任何日志文件

防止单个日志文件容量过大。实现将日志文件定期或按一定大小切割成多个日志文件。定期删除过期的日志文件。

查软件是否已安装:rpm -q logrotate

查文件名列表:rpm -ql logrotate

查配置文件列表:rpm -qc logrotate

一、logrotate (轮转,日志切割)

  1. 如果没有日志轮转,日志文件会越来越大,最后导致日志打不开或者是打开时间过长

  2. 将丢弃系统中最旧的日志文件,以节省空间

  3. logrotate本身不是系统进程,即日志的轮转不会自动执行,它是通过写到相应的配置文件中使用计划任
    务crond每天执行

  4. 对日志的切割,你只需要给他定义一个规则
    [root@kvm1 ~]# rpm -qa |grep logrotate
    logrotate-3.7.8-16.el6.x86_64
    [root@kvm1 ~]# rpm -qc logrotate
    /etc/cron.daily/logrotate
    /etc/logrotate.conf
    /etc/rwtab.d/logrotate
    /var/lib/logrotate/logrotate.status
    [root@localhost ~]# ls /etc/cron.daily/
    cups makewhatis.cron prelink rhsmd
    logrotate mlocate.cron readahead.cron tmpwatch
    [root@kvm1 ~]# cat /etc/cron.daily/logrotate //计划任务

       !/bin/sh
       /usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1 //按照文件规则来轮转日志
       EXITVALUE=$?
       if [ $EXITVALUE != 0 ]; then
       /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
       fi
       exit 0
    

    logrotate 配置文件:
    /etc/logrotate.conf (决定每个日志文件如何轮转)
    /etc/logrotate.d/*
    [root@tianyun ~]# ls /etc/logrotate.conf /etc/logrotate.d/
    /etc/logrotate.conf //决定每个日志如何轮转
    /etc/logrotate.d/:
    acpid cups iscsiuiolog ppp rpm subscription-manager up2date wpa_supplicant
    conman httpd mgetty psacct setroubleshoot syslog vsftpd.log yum
    主配置文件
    [root@tianyun ~]# vim /etc/logrotate.conf
    =全局设置==
    weekly //轮转的周期,一周轮转
    rotate 4 //保留4份
    create //轮转后创建新文件
    dateext //使用日期作为后缀

    compress //是否压缩
    
    RPM packages drop log rotation information into this directory
    
    rpm安装的程序,按照下面目录规则进行轮转
    
    include /etc/logrotate.d //包含该目录下的文件
    
    no packages own wtmp and btmp -- we'll rotate them here
    
    对于wtmp和btmp这样无主的日志,按照下面配置进行轮转
    
    /var/log/wtmp { //对该日志文件设置轮转的方法
    monthly //一月轮转一次
    minsize 1M //最小达到1M才轮转,即到了规定的时间未达到大小不会轮转
    create 0664 root utmp //轮转后创建新文件,并设置权限属主和属组
    rotate 1 //保留一份
    }
    /var/log/btmp {
    missingok //丢失不提示
    monthly //每月轮转一次
    create 0600 root utmp //轮转后创建新文件,并设置权限
    rotate 1 //保留一份
    }
    [root@kvm1 ~]# vim /etc/logrotate.d/yum //原有的设置,没有说保存几份,看上面的全局设置
    /var/log/yum.log { //yum日志文件
    missingok //丢失不提示
    notifempty //如果为空,不轮转
    size 30k //达到30k就轮转
    yearly //达到一年就轮转一次,两者满足一个就轮转
    create 0600 root root //创建新文件
    }
    [root@kvm1 ~]# ls /etc/logrotate.d/
    chrony ppp wpa_supplicant syslog yum
    日志的轮转规则文件是在安装rpm包时就自动提供的,无需人为手动编写
    只有自己创建的日志文件才需要自己编写日志轮转规则文件
    [root@kvm1 ~]# yum -y install httpd
    [root@physical ~]# ls /etc/logrotate.d/
    chrony ppp wpa_supplicant syslog yum httpd
    [root@kvm1 logrotate.d]# yum -y install vsftpd
    [root@kvm1 logrotate.d]# ls
    chrony httpd ppp syslog vsftpd wpa_supplicant yum
    

    例1:
    验证missingok和nomissingok
    missingok
    [root@kvm1 ~]# cp /etc/logrotate.d/yum /tmp
    [root@kvm1 ~]# vim /etc/logrotate.d/yum
    /var/log/yum.log {
    missingok
    notifempty
    size 30k
    daily
    create 0600 root root
    }
    测试:
    [root@kvm1 logrotate.d]# mv /var/log/yum.log /tmp/
    [root@kvm1 ~]# logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
    nomissingok
    [root@kvm1 ~]# vim /etc/logrotate.d/yum
    /var/log/yum.log {
    notifempty
    size 30k
    daily
    create 0600 root root
    }
    [root@kvm1 ~]# logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
    error: stat of /var/log/yum.log failed: No such file or directory
    [root@kvm1 ~]# mv /tmp/yum.log /var/log/
    例2:
    验证notifempty和ifempty
    [root@kvm1 ~]# grep yum /var/lib/logrotate.status
    “/var/log/yum.log” 2018-8-09-16:14:1
    [root@kvm1 logrotate.d]# logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
    notifempty
    [root@kvm1 logrotate.d]# ll -h /var/log/yum.log*
    -rw------- 1 root root 0 Aug 13 16:33 /var/log/yum.log
    147/214
    -rw-------. 1 root root 8.9K Aug 13 16:22 /var/log/yum.log-20180813
    [root@kvm1 logrotate.d]# date 081417002018
    Tue Aug 14 17:00:00 CST 2018
    测试:
    [root@kvm1 logrotate.d]# logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
    [root@kvm1 logrotate.d]# ll -h /var/log/yum.log*
    -rw------- 1 root root 0 Aug 13 16:33 /var/log/yum.log
    -rw-------. 1 root root 8.9K Aug 13 16:22 /var/log/yum.log-20180813
    ifempty
    [root@kvm1 ~]# vim /etc/logrotate.d/yum
    /var/log/yum.log {
    ifempty
    size 30k
    daily
    create 0600 root root
    }
    测试:
    [root@kvm1 logrotate.d]# logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
    [root@kvm1 logrotate.d]# ll -h /var/log/yum.log*
    -rw------- 1 root root 0 Aug 14 17:00 /var/log/yum.log
    -rw-------. 1 root root 8.9K Aug 13 16:22 /var/log/yum.log-20180813
    -rw------- 1 root root 0 Aug 13 16:33 /var/log/yum.log-20180814
    例3:
    验证create perm owner group
    [root@kvm1 ~]# vim /etc/logrotate.d/yum
    /var/log/yum.log {
    ifempty
    size 30k
    daily
    create 0644 alice alice
    }
    [root@kvm1 logrotate.d]# id alice
    uid=1002(alice) gid=1002(alice) groups=1002(alice)
    测试:
    [root@kvm1 logrotate.d]# date 081517002018
    Wed Aug 15 17:00:00 CST 2018
    [root@kvm1 logrotate.d]# logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
    [root@kvm1 logrotate.d]# ll -h /var/log/yum.log*
    -rw-r–r-- 1 alice alice 0 Aug 15 17:00 /var/log/yum.log
    -rw-------. 1 root root 8.9K Aug 13 16:22 /var/log/yum.log-20180813
    -rw------- 1 root root 0 Aug 13 16:33 /var/log/yum.log-20180814
    -rw------- 1 root root 0 Aug 14 17:00 /var/log/yum.log-20180815
    例4:
    验证rotate
    [root@kvm1 ~]# vim /etc/logrotate.d/yum
    /var/log/yum.log {
    ifempty
    size 30k
    daily
    create 0644 alice alice
    rotate 2
    }
    148/214
    测试:
    [root@kvm1 logrotate.d]# date 081617002018
    Thu Aug 16 17:00:00 CST 2018
    [root@kvm1 logrotate.d]# logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
    [root@kvm1 logrotate.d]# logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
    [root@kvm1 logrotate.d]# ll -h /var/log/yum.log*
    -rw-r–r-- 1 alice alice 0 Aug 16 17:00 /var/log/yum.log
    -rw------- 1 root root 0 Aug 14 17:00 /var/log/yum.log-20180815
    -rw-r–r-- 1 alice alice 0 Aug 15 17:00 /var/log/yum.log-20180816
    例5:
    验证关于应用程序的日志轮转规则生效后需要重新加载配置/etc/logrotate.d/httpd
    [root@kvm1 logrotate.d]# systemctl start httpd
    [root@kvm1 logrotate.d]# ll /var/log/httpd/
    total 12
    -rw-r–r-- 1 root root 7352 Aug 16 17:07 access_log
    [root@kvm1 ~]# vim /etc/logrotate.d/httpd
    /var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    rotate 2

    postrotate
    
    /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
    
    endscript
    
    }
    

    如果不想要修改时间可以通过强制切割的方式来实现实验效果
    [root@kvm1 logrotate.d]# logrotate -f /etc/logrotate.d/httpd
    [root@kvm1 logrotate.d]# ll /var/log/httpd/
    total 12
    -rw-r–r-- 1 root root 7352 Aug 16 17:07 access_log.1
    继续访问网站,观察日志文件…
    [root@kvm1 logrotate.d]# ll /var/log/httpd/
    total 16
    -rw-r–r-- 1 root root 9116 Aug 16 17:08 access_log.1
    [root@kvm1 logrotate.d]# ll /var/log/httpd/
    total 16
    -rw-r–r-- 1 root root 10880 Aug 16 17:08 access_log.1
    [root@kvm1 ~]# ll /proc/6416/fd
    total 0
    lr-x------ 1 root root 64 Apr 7 10:02 0 -> /dev/null
    lrwx------ 1 root root 64 Apr 7 10:02 1 -> socket:[76246]
    l-wx------ 1 root root 64 Apr 7 10:02 2 -> /var/log/httpd/error_log-20170407
    lrwx------ 1 root root 64 Apr 7 10:02 3 -> socket:[76890]
    lrwx------ 1 root root 64 Apr 7 10:02 4 -> socket:[76891]
    lr-x------ 1 root root 64 Apr 7 10:02 5 -> pipe:[76906]
    l-wx------ 1 root root 64 Apr 7 10:02 6 -> pipe:[76906]
    l-wx------ 1 root root 64 Apr 7 10:02 7 -> /var/log/httpd/access_log-20170407
    [root@kvm1 ~]# systemctl reload httpd
    [root@kvm1 ~]# ll /proc/6416/fd
    total 0
    lr-x------ 1 root root 64 Apr 7 10:02 0 -> /dev/null
    lrwx------ 1 root root 64 Apr 7 10:02 1 -> socket:[76246]
    l-wx------ 1 root root 64 Apr 7 10:02 2 -> /var/log/httpd/error_log
    lrwx------ 1 root root 64 Apr 7 10:02 3 -> socket:[76890]
    lrwx------ 1 root root 64 Apr 7 10:02 4 -> socket:[76891]
    lr-x------ 1 root root 64 Apr 7 10:02 5 -> pipe:[96182]
    l-wx------ 1 root root 64 Apr 7 10:02 6 -> pipe:[96182]
    l-wx------ 1 root root 64 Apr 7 10:02 7 -> /var/log/httpd/access_log
    继续访问网站,观察日志文件…
    [root@kvm1 ~]# vim /etc/logrotate.d/httpd
    /var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    postrotate
    /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
    endscript
    }
    [root@kvm1 ~]# logrotate -f /etc/logrotate.conf
    [root@kvm1 logrotate.d]# ll /var/log/httpd/
    total 32
    -rw-r–r-- 1 root root 0 Aug 16 17:10 access_log
    -rw-r–r-- 1 root root 5588 Aug 16 17:09 access_log.1
    -rw-r–r-- 1 root root 10880 Aug 16 17:08 access_log.2
    继续访问网站,观察日志文件…
    [root@kvm1 logrotate.d]# ll /var/log/httpd/
    total 36
    -rw-r–r-- 1 root root 1764 Aug 16 17:10 access_log
    -rw-r–r-- 1 root root 5588 Aug 16 17:09 access_log.1
    -rw-r–r-- 1 root root 10880 Aug 16 17:08 access_log.2

    说明:
    当切割之后创建新文件,新文件有新的inode number
    如果希望进程如rsyslog、nginx进程会把新的日志写入新日志文件中,应该在日志切割后,
    告诉一下rsyslog、nginx进程 reload 或 信号(1 or HUP)
    

    例6:
    验证关于prerotate/endscript和postrotate/endscript
    [root@kvm1 logrotate.d]# cat yum
    /var/log/yum.log {
    prerotate
    chattr -a /var/log/yum.log
    endscript
    ifempty
    size 30k
    daily
    create 0644 alice alice
    rotate 2
    postrotate
    chattr +a /var/log/yum.log
    endscript
    }
    [root@kvm1 logrotate.d]# logrotate -f /etc/logrotate.d/yum
    [root@kvm1 logrotate.d]# ll /var/log/yum.log*
    -rw-r–r-- 1 alice alice 0 Aug 16 17:13 /var/log/yum.log
    -rw-r–r-- 1 alice alice 54 Aug 16 17:03 /var/log/yum.log.1
    [root@kvm1 logrotate.d]# lsattr /var/log/yum.log
    -----a---------- /var/log/yum.log

Linux日志管理 Linux日志管理主要包括集中收集、分类存储、定期清理与快速查询。关键日志存储在/var/log/目录下,如messages(系统日志)、secure(认证日志)等。主要工具有传统syslog(通过rsyslog.conf配置)、现代journald(使用journalctl命令查询)以及grep/awk等文本分析工具。日志可配置为集中管理,服务端启用TCP监听接收多客户端日志。systemd-journald服务支持持久化存储,通过journald.conf配置Storage参数(persistent/v 阅读详情

相关推荐

Linux 日志管理

Linux日志管理是系统运维的关键技能,涉及系统、应用、安全等多类日志。日志存储在/var/log目录下,常用查看工具有cat、less、tail、grep等,systemd系统推荐使用journalctl。日志配置需平衡详细程度与存储空间,通过rsyslog管理传统日志,logrotate实现日志轮转。实战案例展示了如何通过日志排查Web服务502错误、系统启动故障和SSH暴力破解。最佳实践包括日志集中存储、加密备份、保留策略设置等。掌握日志管理能有效提升故障排查效率和系统安全性。

zjw541806的博客 788

Linux logrotate 命令教程日志分割

Linux logrotate 命令教程日志分割

ratel的博客 3552

ArcGIS小白必看:5分钟搞定面要素转点要素+自动计算经纬度坐标(附常见报错解决方案)

本文为ArcGIS新手详细解析了面要素转点要素并自动计算经纬度坐标的完整流程。核心在于正确理解和使用坐标系,并掌握ArcToolbox中的“要素转点”等工具。文章深入剖析了常见报错(如坐标系未定义、字段计算失败)的根源,提供了从基础操作到Python脚本自动化的实战解决方案,确保数据转换的准确与高效。

weixin_29284885的博客 575

Centos7配置logrotate日志轮转

简介 当服务器系统在持续运行时,服务器中部署的各种服务就会产生日志,长此以往服务器中保存的日志文件会越来越大,一个日志文件可能占用数百G的磁盘容量,难以保存,也难以通过查看日志文件进行排错。因此,我们需要对日志进行轮转操作,只需要保留近期的日志信息,对比较久远的日志信息进行压缩并转存到日志服务器,这样做可以让大大降低日志占用的磁盘空间,同时保证我们可以在服务出现问题的时候通过日志信息进行排错和解决 工具 logrotate日志轮转工具可以很轻松的管理系统所产生的日志,它提供自动压缩、删除、分割日志文件的功能

xixixilalalahaha的博客 2686

房产平台系统小程序源码

🏠 一键解锁购房新体验 🔓房产小程序 实现前端 发布二手房 租房 商品 求租 求购等信息;后台发布 新房,二手房租房 商品 写字楼 求租求购等房源信息;功能完善的一块房产小程序。

2401_84413757的博客 796

CentOS系统MySQL安装与配置全攻略

关系型数据库是数据存储和管理的核心技术,MySQL作为其中最流行的开源数据库,采用客户端-服务器架构实现数据的高效组织与访问。其核心原理基于SQL语言和ACID事务特性,支持多种存储引擎满足不同场景需求。在Linux环境下,通过yum/dnf包管理器可以快速部署MySQL服务,同时支持源码编译实现深度定制。数据库安装后的安全加固和性能调优尤为关键,包括设置复杂密码、配置防火墙规则、调整内存参数等。本文以CentOS 7/8系统为例,详细讲解从基础安装到生产环境优化的全流程,特别针对国内用户遇到的网络问题和依

weixin_32667955的博客 293

Linux 日志定时轮询流程详解

来源:cooffeelis www.jianshu.com/p/ea7c2363639c logrotate介绍 对于Linux系统安全来说,日志文件是极其重要的工具。日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到。当日志文件不断增长的时候,就需要定时切割,否则,写日志的速度和性能也会下降,更不便于我们归档,查询。 所以便有了使用logrotate的时候 ,...

qq_40907977的博客 425

安卓模拟器绕过检测全解析:雷电、MuMu、蓝叠、逍遥、夜神与WSA完整指南

随着手机游戏和应用的普及,越来越多的用户选择在PC上通过模拟器来运行安卓应用。然而,许多应用和游戏为了防止作弊或出于安全考虑,会检测是否运行在模拟器环境中。本文将详细介绍各大主流模拟器的检测绕过方法,帮助用户在电脑上流畅体验各类安卓应用。1. 获取模拟器系统镜像2. 使用ROM厨房工具修改系统文件3. 替换模拟器的系统镜像雷电模拟器:适合游戏,推荐使用MAGISK + EdXposed方案MuMu模拟器:适合中度游戏,推荐太极框架蓝叠模拟器:适合国际应用,推荐MAGISK方案逍遥模拟器。

专注技术分享 3万+

Linux学习笔记(二十)

认识与分析登录文件 网络老手也常常告诉新手要多查看登录文件。当您启动一个事件的时候,或者是有人登录您的Linux主机的时候,主机会生成一些认证程序或重要信息,由于这些信息很重要,所以自认需要保留下来,以备将来不时之需,这些消息会记录在某些文件上,这些文件就称为登录文件咯。登录者的信息记录在哪里呢?信息量有多大?可以每天查看吗?如果能用Shell脚本来分析的话,不是更快!! 什么是登录文件 “

csy463168656的专栏 1370

SolidWorks2020详细步骤安装教程

1、在安装软件前请断开网络连接,需要安装.NETFramework3.5和4.0,最后还要确保把之前安装的旧版本完全卸载,以管理员身份运行SolidWorks_Flexnet_Server\server_remove.bat,然后等到服务“SolidWorksFlexnet服务器”将被删除。12、先不要运行软件,找到_SolidSQUAD_文件夹,将文件夹“ProgramFiles\SOLIDWORKSCorp”中的所有破解文件复制替到“ProgramFiles\SOLIDWORKSCorp”目录下;

qq_53545309的博客 1万+

实现画布拖拽算子排布,通过flink实现算子编排计算,如何实现?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1072

Linux-日志管理

本章主要讲解linux日志管理的基础篇,分为管理简介、rsyslog服务及日志轮替三个小节,其中会讲解日志的排序格式,以及怎么去看懂其中的各个字段它们的含义。

记录所思、所学、所感,分享每一份收获。 5186

Lion优化器试验笔记

Lion优化器试验笔记

jacke121的专栏 850

Linux【实操篇】—— 日志管理

Linux 操作系统日志管理含实操案例。

商务合作 | 共同学习 | 携手共进 9万+

【29】软考软件设计师——SQL语句编写与优化深度精讲|数据库大题延伸满分攻略

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第29篇,承接第28篇ER图转关系模式核心内容,作为**下午第2题数据库大题核心延伸必考模块**,单模块累计占分5~8分,是数据库板块性价比极高的提分重点。全文超4000字深度拆解软考全部SQL高频考点:全覆盖多表连接底层逻辑、嵌套子查询分类实操、GROUP BY分组聚合硬核规则、索引全品类设计原理、联合索引最左匹配底层机制,搭配海量可直接复刻的考场SQL模板、历年真题完整改写案例、索引失效场景实操复盘、慢查询优化落地技巧。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 528

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Linux日志管理详解

日志是Linux系统运维中的重要组成部分,它记录了系统、服务以及应用程序的运行状态和行为。通过日志,管理员可以排查故障、监控系统状态、分析性能以及优化配置。本文将从Linux日志的种类、管理工具、常用命令以及日志轮转等方面进行详细讲解。

1263

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

小白带你一起学Linux之Linux日志管理

系统状态监控故障排查定位安全审计分析性能优化依据合规性要求满足。

KellenKellenHao的博客 886

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

linux学习之日志管理

当第二次进行日志轮替时,“sucure.1”会自动改名为“secure.2”,当前的“secure”日志会自动改名为“sucure.1”,然后也会新建“secure”日志,用来保存新的日志,以此类推。在Linux系统里日志是有级别的,也就是说事件的关键程度,比如说有些事件只是警告,需要我们注意,起个提醒我们的目的,可以后面去处理,也可以不处理,但是有些事件比较紧急,它不仅仅只是提示我们的作用,很有可能这一秒发生了这样的事件,下一秒Linux系统就挂了,所以在Linux系统里事件的关键性程度非常重要。

YU__MU__的博客 712
上一篇: Linux之文件进阶管理
下一篇: Linux之存储管理
Ever_Linux
博客等级 码龄8年 0粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值