Linux-日志系统与日志分割

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Linux-日志系统与日志分割

一,了解日志:

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


日志的类型:


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


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


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


常见的日志文件:

/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等就需要访问这个文件

日志级别:

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

二,rsyslog.conf文件分析

rsyslog服务的配置文件:

[root@localhost ~]# cat /etc/rsyslog.conf | grep -v "^$" | grep -v  "^#"
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
$WorkDirectory /var/lib/rsyslog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
$OmitLocalLogging on
$IMJournalStateFile imjournal.state
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
authpriv.*                                              /var/log/secure
mail.*                                                  -/var/log/maillog
cron.*                                                  /var/log/cron
*.emerg                                                 :omusrmsg:*
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log

加载模块,转发端口等基本配置

$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
$WorkDirectory /var/lib/rsyslog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
$OmitLocalLogging on
$IMJournalStateFile imjournal.state

服务名称

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

配合日志级别举例:

1、//mail的info级别以上的信息,记录的位置
mail.info /var/log/mail
2、//只记录info这一个级别。
auth.=info
3、//user的相关信息但不包括error,取反。
user.!=error
4、//所有日志的info以上的信息
*.info
5、//mail的所有级别
mail.*
6、//所有服务的所有级别
*.*
7、//合并日志,写到一块
cron.info;mail.info

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

-   //延迟写入,系统不繁忙的时候才写入。
发送邮件,通过什么协议
@@192.168.1.1 TCP
@192.168.1.1 UDP
*号表示所有在线用户
~ 忽略日志
^号后跟可执行脚本或程序的绝对路径
案例:更改系统安全日志secure的记录位置
将secure的位置更改为/usr/local/secure
authpriv.*  /usr/local/secure
systemctl restart rsyslog
chattr +a /usr/local/secure

三,日志的采集

       虽然以后,我们接触到很多相关日志采集的服务和应用,气死系统本身也 是支持日志采集功能的,使用系统的rsyslog服务即可。

实验需求

image.png

企业环境可以使用ELK,但rsyslog也可以实现日志收集功能

案例环境:将node01的日志发送到node02

node01:
vim /etc/rsyslog.conf
15 $ModLoad imudp 
16 $UDPServerRun 514 
18 # Provides TCP syslog reception 
19 $ModLoad imtcp 
20 $InputTCPServerRun 514 
//文件最后添加 
92 *.* @192.168.8.20
systemctl restart rsyslog
node02:
vim /etc/rsyslog.conf
15 $ModLoad imudp 
16 $UDPServerRun 514 
18 # Provides TCP syslog reception 
19 $ModLoad imtcp 
20 $InputTCPServerRun 514 
systemctl restart rsyslog
tailf /var/log/messages 

案例2:把nginx的日志发送给node02

node01:
vim /etc/rsyslog.conf
$ModLoad imfile 
$InputFilePollInterval 1 
$InputFileName /var/log/nginx/access.log 
$InputFileTag nginx-info-access;
$InputFilestateFile state-nginx-info-accesslog 
$InputRunFileMonitor 
$InputFileName /var/log/nginx/error.log 
$InputFileTag nginx-info-error; 
$InputFilestateFile state-nginx-info-errorlog 
$InputRunFileMonitor 
$InputFilePollInterval 10 
if $programname == 'nginx-info-access' then @192.168.8.20:514 
if $programname == 'nginx-info-access' then ~ 
if $programname == 'nginx-info-error' then @192.168.8.20:514 
if $programname == 'nginx-info-error' then ~
参数解释:
//间隔多久采集1次。默认单位是秒
$InputFilePollInterval 1
//采集的日志的名称
$InputFileName /usr/local/nginx/logs/access.log
//给对应的日志打一个标签
$InputFileTag nginx-info-access;
//给这个日志命名
$InputFilestateFile state-nginx-info-accesslog
//启动监控
$InputRunFileMonitor

四,日志分割

1)为甚么要做日志的切割那?


因为日志会越来越大,我们做的实验这才仅仅只是一台主机的日志,如果 是一个集群,像百度这样的大型网站,到时候访问量很大的情况之下,我 们就的日志就会变的很大


2)为了防止日志文件过大,所以我们要做到日志定期的切割和清理。


3)怎么做那? 我们的系统有自带的日志轮滚的功能,需要调试。配置文件 在/etc/logrotate.conf


可能有人就会有疑问,我们可以直接用命令cp、另一份,然后保存一下就 可以了,但大家忘了一点了,日志有可能是时时刻刻都在更新,这就有可 能在你CP的时候,数据就会不完整。


//查看/etc/logrotate.conf相关配置信息。

[root@localhost ~]# cat /etc/logrotate.conf | grep -v "^$" | grep -v "^#"
weekly        #分割周期
rotate 4      #保留多少日志
create        #旧日志分割后,源文件是否生成新的日志
dateext       #分割后日志的文件类型,默认是以日期来分割
include /etc/logrotate.d    #还需要读取这个地方,目录里都是其他地方的日志
/var/log/wtmp {        #特指某个文件的分割方式
    monthly            #每月分割
    create 0664 root utmp    #分割后这个文件的权限,以及属主和属组
        minsize 1M           #文件超过1M之后才分割
    rotate 1                 #保留1个
}
/var/log/btmp {
    missingok                #丢了也没关系,热日志会出现中断
    monthly
    create 0600 root utmp
    rotate 1
}

除了这些之外,还有其他的一些单词

 

compress //压缩,gzip
delaycompress //延迟压缩
nocompress //不压缩
copytruncate //先拷贝,再清空。
errors Email
ifemty //即使日志文件为空,到日期也切割
notifempty //为空者不切割
mail Email //切割后的日志文件,不在本地保存,发送邮件到其他地
方。
nomail //生成的日志不发送,在本地使用
olddir Directory //另存为的地址,如果不写则默认是在同一个目录下
边。
noolddir //转存文件都保存在本地。
sharedscripts //运行脚本,为什么会执行脚本那?还记忆的我们给脚
本添加的a权限么?需要暂时调整权限
postrotate //切割之后,执行脚本
prefotate //切割之前,执行脚本
时间参数
daily //每天
weekly //每周
mounthly //每月
yearly //每年
rotate count //保存几份。
dateext //使用当前日期。
size(minisize) //达到多少才切割,默认单位是M,sizeksizem默认单
位是kb。
size = 5

实例:

//切割安全日志secure

[root@localhost ~]# cd /etc/logrotate.d/
[root@localhost logrotate.d]# vi secure
/var/log/secure {
        missingok
        notifempty
        daily
        create
        rotate 4
        compress
}

//添加用户,切换用户触发日志

[root@localhost logrotate.d]# useradd bdqn
[root@localhost logrotate.d]# echo "1"  | passwd --stdin bdqn
更改用户 bdqn 的密码 。
passwd:所有的身份验证令牌已经成功更新。

//手动分割日志

[root@localhost logrotate.d]# logrotate -vf /etc/logrotate.d/secure

//查看源文件已被分割

1. [root@localhost logrotate.d]# ls /var/log/ | grep "secure"
2. secure
3. secure.1.gz

//如果有特殊权限,而每次切割完成之后,都需要重新启动一下我们 rsyslog服务,所以这个时候就需要我们自己来写脚本支持。

/var/log/secure {
    sharedscripts
    prerotate
    /usr/bin/chattr -a /var/log/secure
    endscript
    missingok
    notifempty
    daily
    create
    rotate 4
    compress
    sharedscripts
    postrotate
    /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null
    /usr/bin/chattr +a /var/log/secure
    endscript
}

PS: 在做切割之前将刚才做的切割文件删除,否者会报错,说一天之内切割 次数过多

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
80 3
|
1月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
74 2
|
5天前
|
存储 缓存 监控
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
116 78
|
9天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
39 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
1月前
|
缓存 Java Linux
如何解决 Linux 系统中内存使用量耗尽的问题?
如何解决 Linux 系统中内存使用量耗尽的问题?
125 48
|
5天前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
45 13
|
20天前
|
存储 监控 安全
什么是事件日志管理系统?事件日志管理系统有哪些用处?
事件日志管理系统是IT安全的重要工具,用于集中收集、分析和解释来自组织IT基础设施各组件的事件日志,如防火墙、路由器、交换机等,帮助提升网络安全、实现主动威胁检测和促进合规性。系统支持多种日志类型,包括Windows事件日志、Syslog日志和应用程序日志,通过实时监测、告警及可视化分析,为企业提供强大的安全保障。然而,实施过程中也面临数据量大、日志管理和分析复杂等挑战。EventLog Analyzer作为一款高效工具,不仅提供实时监测与告警、可视化分析和报告功能,还支持多种合规性报告,帮助企业克服挑战,提升网络安全水平。
|
29天前
|
Ubuntu Linux 网络安全
linux系统ubuntu中在命令行中打开图形界面的文件夹
在Ubuntu系统中,通过命令行打开图形界面的文件夹是一个高效且实用的操作。无论是使用Nautilus、Dolphin还是Thunar,都可以根据具体桌面环境选择合适的文件管理器。通过上述命令和方法,可以简化日常工作,提高效率。同时,解决权限问题和图形界面问题也能确保操作的顺利进行。掌握这些技巧,可以使Linux操作更加便捷和灵活。
20 3
|
5天前
|
Ubuntu Linux C++
Win10系统上直接使用linux子系统教程(仅需五步!超简单,快速上手)
本文介绍了如何在Windows 10上安装并使用Linux子系统。首先,通过应用商店安装Windows Terminal和Linux系统(如Ubuntu)。接着,在控制面板中启用“适用于Linux的Windows子系统”并重启电脑。最后,在Windows Terminal中选择安装的Linux系统即可开始使用。文中还提供了注意事项和进一步配置的链接。
21 0
|
1月前
|
存储 运维 Linux
如何在 Linux 系统中使用 envsubst 命令替换环境变量?
`envsubst` 是 Linux 系统中用于替换文本中环境变量值的实用工具。本文分三部分介绍其工作原理、使用方法及实际应用,包括配置文件替换、脚本执行中环境变量替换和动态生成文件等场景,帮助用户高效利用 `envsubst` 进行开发和运维工作。
52 4