1.rsyslog
1.1rsyslog介绍
Rsyslog的全称是 rocket-fast system for log,它提供了高性能,高安全功能和模块化设计。rsyslog能够接受从各种各样的来源,将其输入,输出的结果到不同的目的地。rsyslog可以提供超过每秒一百万条消息给目标文件。
特点:
多线程
可以通过许多协议进行传输UDP,TCP,SSL,TLS,RELP;
直接将日志写入到数据库;
支持加密协议:ssl,tls,relp
强大的过滤器,实现过滤日志信息中任何部分的内容
自定义输出格式;
1.2.常见的日志文件
1.3.使用rsyslog实现日志转发
客户端:192.18.75.130
服务端:192.168.75.137
服务端配置
vim /etc/rsyslog.conf
# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514
$template myformat,"%msg%\n"
#$template myformat,"%$NOW% %TIMESTAMP:8:15% %hostname%
%syslogtag% %msg%\n"
$ActionFileDefaultTemplate myformat
$template IpTemplate,"/var/log/%FROMHOST-IP%.log"
*.* ?IpTemplate
修改后,重启服务:systemctl restart rsyslog
客户端配置
发送日志的配置很简单,只需要配置要发送的地址就 ok。
如果出于某种原因,你需 要更为可靠的协议,如TCP,而rsyslog服务器也被配置为监听TCP连接,你必须在远 程主机的IP地址前添加一个额外的@字符
*.* @@192.168.75.137:514 # tcp 协议
local7.info @192.168.75.137:514 # udp 协议,只发送用户的 info 级别日志
修改后再次进行重启:systemctl restart rsyslog
测试
logger的使用
logger 是一个shell 命令接口,可以通过该接口使用Syslog的系统日志模块,还可以 从命令行直接向系统日志文件写入一行信息。
-i 在每行都记录进程ID
-t 日志中的每一行都加一个error标签
-p 指定自定义的日志设备,和配置文件的 local5.*对应,配置文件里没有.info。
示例:logger -it error local7.info "hello"
在客户端操作
[root@group7 backup]# logger -it error -p local7.info "nihao"
[root@group7 backup]# logger -it error -p local7.info "hello"
服务端查看
[root@mini7 log]# cd /var/log
[root@mini7 log]# ls
127.0.0.1.log cron-20221012 maillog-20221125 secure-20221125
192.168.75.130.log cron-20221109 messages[root@mini7 log]# cat 192.168.75.130.log
nihao
hello
日志轮转
日志轮转的原因因为日志后期所占存储空间较大且占用硬盘的读写速度 为了便于管理所以给日志添加一个轮转规则
日志轮转的两个重要文件:
/etc/logrotate.conf #日志轮转规则
/etc/logrotate.d/* #文件夹下都是对单独的程序设置的规则
当主配置文件和文件夹都设置了规则时,以文件夹的内容为准
举例:配置yum日志轮转
/var/log/yum.log {
missingok
notifempty
maxsize 30k
yearly
create 0600 root root
}
missingok #如果日志不存在,则忽略警告信息
notifempty #如果日志为空文件,则不进行轮转
maxsize 30k #日志到达30K时,立刻进行轮转
yearly #日志每月轮转一次
create 0600 root root #创建文件权限为777,属主为root,属组为root
日志轮转测试
手动执行日志滚动
logrotate -f /etc/logrotate.d/yum