1、日志服务含义
日志:某个程序记录所有发生的事情到一个文件里,这个文件里的信息是日志
价值:
1、方便查询以前的事情,可以审计
2、记录出错的信息方便故障排查
3、大数据分析
2、相关命令
rsyslog:
rsyslog是linux系统中用来实现日志功能的服务。默认已经安装,并且自动启用
承接相关服务的日志功能,存放到/var/log下
主要用来采集日志,不产生日志:
支持输出日志到各种数据库,如 MySQL,PostgreSQL,MongoDB ElasticSearch,等等;
通过 RELP + TCP 实现数据的可靠传输(基于此结合丰富的过滤条件可以建立一种 可靠的数据传输通道供其他应用来使用);
精细的输出格式控制以及对消息的强大 过滤能力;
高精度时间戳;队列操作(内存,磁盘以及混合模式等); 支持数据的加密和压缩传输等。
日志级别(越大越高级就越严重):
0 debug 包含详细的开发情报的信息,通常只在调试一个程序时使用。
1 info 通用性信息,一般用来提供有用信息,
2 notice 正常信息,但是较为重要,可能需要处理
3 warning 警告信息
4 error/err 错误信息,某个功能或者模块不能正常工作的信息
5 crit 严重级别,系统或整个软件不能正常工作的信息,例如硬盘错误
6 alert 需要立刻修改的信息,如系统数据库被破坏,ISP连接丢失。
7 emerg 紧急情况,内核奔溃等重要信息
none 什么也不记录
添加RULE
[root@daily_use ssh]# vim /etc/rsyslog.conf
local1.* /var/log/sc.log
修改ssh配置文件
[root@daily_use ssh]# vim /etc/ssh/sshd_config
SyslogFacility local1
刷新服务
[root@daily_use ssh]# service rsyslog restart
Redirecting to /bin/systemctl restart rsyslog.service
[root@daily_use ssh]# service sshd restart
Redirecting to /bin/systemctl restart sshd.service
[root@daily_use ssh]# cat /var/log/sc.log
May 30 21:34:27 daily_use sshd[2755]: Received signal 15; terminating.
May 30 21:34:27 daily_use sshd[2808]: Server listening on 0.0.0.0 port 22.
May 30 21:34:27 daily_use sshd[2808]: Server listening on :: port 22.
logrotate
logrotate命令用于对系统日志进行轮转、压缩和删除,也可以将日志发送到指定邮箱
日志轮转:
作用–》防止一个日志文件过大,需要对文件进行切割
策略–》根据日期、根据文件大小
文件过大坏处–》不方便网络传输,异地备份、读取不方便需要消耗大量磁盘io和内存
工具logrotate:帮助我们进行日志轮转,是一个程序不是一个服务
主配置文件:/etc/logrotate.conf
次要配置文件:/etc/logrotate.d
[root@daily_use log]# date
2023年 06月 04日 星期日 14:00:45 CST
[root@daily_use log]# cd /etc/logrotate.d
[root@daily_use logrotate.d]# ls
bootlog chrony cronlog firewalld syslog wpa_supplicant yum
[root@daily_use logrotate.d]# vim cronlog
[root@daily_use logrotate.d]# cat cronlog
/var/log/cron
{
missingok
dateext
weekly
copytruncate
rotate 7
compress
minsize 10M
notifempty
}
强制轮转
[root@daily_use log]# logrotate -f /etc/logrotate.d/cronlog
[root@daily_use log]# ls
anaconda cron maillog secure-20230530 vmware-network.log
audit cron-20230506 maillog-20230506 spooler vmware-vgauthsvc.log.0
boot.log cron-20230530 maillog-20230530 spooler-20230506 vmware-vmsvc-root.log
boot.log-20230502 cron-20230603.gz messages spooler-20230530 vmware-vmtoolsd-root.log
boot.log-20230506 cron-20230604.gz messages-20230506 tallylog wtmp
boot.log-20230530 dmesg messages-20230530 tuned yum.log
boot.log-20230603 dmesg.old rhsm vmware-network.1.log
btmp firewalld sc.log vmware-network.2.log
btmp-20230603 grubby_prune_debug secure vmware-network.3.log
chrony lastlog secure-20230506 vmware-network.4.log
可以查看对那些进行了日志轮转:
[root@daily_use logs]# cat /var/lib/logrotate/logrotate.status
logrotate state -- version 2
"/var/log/yum.log" 2023-4-29-18:0:0
"/usr/local/nginx99/logs/access.log" 2023-6-4-15:28:42
"/var/log/firewalld" 2023-4-29-18:0:0
"/var/log/boot.log" 2023-6-3-10:10:1
"/var/log/chrony/*.log" 2023-4-29-18:0:0
"/var/log/wtmp" 2023-4-29-18:0:0
"/var/log/spooler" 2023-6-4-14:23:1
"/var/log/btmp" 2023-6-3-10:10:1
"/usr/local/nginx99/logs/error.log" 2023-6-4-15:20:37
"/var/log/maillog" 2023-6-4-14:23:1
"/var/log/wpa_supplicant.log" 2023-4-29-18:0:0
"/var/log/secure" 2023-6-4-14:23:1
"/usr/local/nginx99/logs/*.log" 2023-6-4-15:0:0
"/var/log/messages" 2023-6-4-14:23:1
"/var/log/cron" 2023-6-4-14:0:36
logger
-d, --udp
使用数据报(UDP)而不是使用默认的流连接(TCP)
-i, --id
逐行记录每一次logger的进程ID
-f, --file file_name
记录特定的文件
-h, --help
显示帮助文本并退出
-n, --server
写入指定的远程syslog服务器,使用UDP代替内装式syslog的例程
-P, --port port_num
使用指定的UDP端口。默认的端口号是514
-p, --priority priority_level
指定输入消息的优先级,优先级可以是数字或者指定为 " facility.level" 的格式。比如:" -p local3.info " local3 这个设备的消息级别为 info。默认级别是 “user.notice”
-s, --stderr
输出标准错误到系统日志。
-t, --tag tag
指定标记记录
-u, --socket socket
写入指定的socket,而不是到内置系统日志例程。
[root@daily_use log]# logger -p local1.info -t mytest "this is a test@@@@@"
[root@daily_use log]# logger -p local1.info -t mytest "this is a test@@@@@"
[root@daily_use log]# logger -p local1.info -t mytest -i "this is a test@@@@@"
[root@daily_use shell]# tail -f /var/log/messages
Jun 4 14:07:46 daily_use mytest: this is a test@@@@@
Jun 4 14:08:17 daily_use mytest: this is a test@@@@@
Jun 4 14:08:38 daily_use mytest[4358]: this is a test@@@@@
3、对nginx日志进行轮转
1、进入/etc/logrotate.d配置nginx日志的专用文件
[root@daily_use log]# cd /etc/logrotate.d
[root@daily_use logrotate.d]# ls
bootlog chrony cronlog firewalld syslog wpa_supplicant yum
[root@daily_use logrotate.d]# vim nginx
[root@daily_use logrotate.d]# cat nginx
/usr/local/nginx99/logs/*.log {
daily
missingok
rotate 31
dateext
compress
notifempty
minsize 100M
sharedscripts
postrotate
if [ -f /usr/local/nginx99/logs/nginx.pid];then
kill -USR1 `cat /usr/local/nginx99/logs/nginx.pid`
fi
endscript
}
2、对nginx日志文件进行强制轮转
[root@daily_use logs]# pwd
/usr/local/nginx99/logs
[root@daily_use logs]# ls
access.log error.log nginx.pid
[root@daily_use logs]# logrotate -f /etc/logrotate.d/nginx
[root@daily_use logs]# ls
access.log access.log-20230604.gz error.log error.log-20230604.gz nginx.pid
4、ELK
ELK:三个软件的简称
Elasticsearch:存储日志软件(kafka有同等作用)
Logstash:采集日志软件(filebeat有同等作用)
Kibana:出图日志软件