日志系统
kernel --> 物理终端(/dev/console) --> /var/log/dmesg
# dmesg 或 # cat /var/log/dmesg
/sbin/init
/var/log/messages:系统标准错误日志信息;非内核产生的引导信息;各子系统产生的信息
/var/log/maillog:邮件系统产生的日志信息
/var/log/secure:与安全相关的日志信息
信息详细程度:日志级别
系统日志服务:
syslog:centos5
rsyslog:centos6,是syslog的升级版
特性:
多线程
支持UDP,TCP,SSL,TLS协议
支持使用MySQL、PGSQL和Oracle实现日志存储
默认没启用此功能,需要加载rsyslog支持此类存储方式的模块,并配置其可使用mysql存储日志
强大的过滤器,可实现过滤系统日志信息中的任何部分
自定义输出格式
elasticsearch,logstash,kibana = elk
elasticsearch:存储,分析日志
logstash:日志收集工具
kibana:前端展示工具
syslog和rsyslog服务均有两个进程:
syslogd:系统,非内核产生的日志信息。
klogd:内核,专门负责记录内核产生的日志信息。
syslog服务的配置文件:/etc/syslog.conf
rsyslog服务的配置文件:/etc/rsyslog.conf
配置文件格式定义为: facility.priority action
facility可以理解为日志的来源或设备,目前常用的facility有以下几种:
auth #认证相关的
authpriv #权限、授权相关的
cron #任务计划相关的
daemon #守护进程相关的
kern #内核相关的
lpr #打印机关的
mail #邮件相关的
mark #标记相关的
news #新闻相关的
security #安全相关的,与auth类似
syslog #syslog自己的
user #用户相关的
uucp #unix to unix cp相关的
local0到local7 #用户自定义使用
\* # *表示所有的facility
priority(log level)日志的级别,一般有以下几种级别(从低到高),级别越低,信息越详细:
debug #程序或系统的调试信息
info #一般信息
notice #不影响正常功能,需要注意的消息
warning/warn #可能影响系统功能,需要提醒用户的重要事件
err/error #错误信息
crit #紧急,比较严重的
alert #必须马上处理的
emerg/panic #会导致系统不可用的
\* # *表示所有的日志级别
none #跟*相反,表示啥也没有
action(动作)日志记录的位置:
系统上的绝对路径 #普通文件,如:/var/log/xxx
| COMMAND #管道,通过管道送给其他的命令处理
终端 #终端,如:/dev/console
@HOST #远程主机(远程主机必须要监听在tcp或udp协议514端口上提供服务),如:@10.0.0.1
用户 #系统用户,如:root
\* #登录到系统上的所有用户,一般emerg级别的日志是这样定义的
定义格式例子:
mail.info /var/log/maillog 表示将mail相关的,级别为info及info以上级别的信息同步记录到/var/log/maillog文件中
mail.* -/var/log/maillog 表示将mail相关的所有日志信息异步记录到/var/log/maillog文件中,路径前的“-”表示异步模式
auth.=info @10.0.0.1 表示将auth相关的,级别为info的信息记录到10.0.0.1主机上去。前提是10.0.0.1要能接收其他主机发来的日志信息
user.!=error 表示记录user相关的,不包括error级别的信息
user.!error 与user.error相反
*.info 表示记录所有的日志信息的info级别
mail.* 表示记录mail相关的所有级别的信息
*.* 表示 记录所有级别的所有日志信息
cron.info;mail.info 多个日志来源可以用分号隔开
cron,mail.info 与cron.info;mail.info是一个意思
mail.*;mail.!=info 表示记录mail相关的所有级别的信息,但是不包括info级别的
文件记录(/var/log/message)的日志的格式:
事件产生的日期时间 主机 进程(pid): 事件内容
有些日志记录为二进制格式:/var/log/wtmp,/var/log/btmp
/var/log/wtmp:当前系统成功登录的日志,可使用last命令查看其内容
/var/log/btmp:当前系统失败的登录尝试的日志,可使用lastb命令查看其内容
lastlog命令:显示当前系统每一个用户最近一次的登录时间
配置rsyslog服务器:
编辑配置文件(/etc/rsyslog.conf),将下列内容前面的注释去掉,然后重启rsyslog服务即可:
#$ModLoad imudp
#$UDPServerRun 514
#$ModLoad imtcp
#$InputTCPServerRun 514
配置使用基于mysql存储日志信息的rsyslog服务器:假定此处的mysql和rsyslog是两台不同的主机
注意:请关闭防火墙和SELINUX
a) 确保mysql服务正常
b) 在rsyslog服务器上安装rsyslog-mysql模块(yum -y install rsyslog-mysql)
c) 在mysql服务器上授权一个用户能够对Syslog数据库有写权限
GRANT ALL ON Syslog.* TO 'syslog'@'172.16.%.%' IDENTIFIED BY 'syslogpassword';
d) 配置mysql服务器,在主配置文件(/etc/my.cnf)中添加下面两行内容,并重启mysql服务
skip_name_resolve = on
innodb_file_per_table = on
e) 在rsyslog服务器上执行sql语句
mysql -usyslog -h172.16.100.9 -psyslogpassword < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql
f) 配置rsyslog服务器能使用mysql存储日志。编辑/etc/rsyslog.conf文件并重启rsyslog服务
在### MODULES ###段下面添加如下内容:
$ModLoad ommysql
在### RULES ###段下面添加如下内容:
*.info;mail.none;authpriv.none;cron.none
:ommysql:172.16.100.9,Syslog,syslog,syslogpassword
ommysql:表示使用ommysql模块存储日志至mysql
Syslog:表示mysql中的Syslog数据库
syslog:表示连接mysql的用户
syslogpassword:表示连接mysql的密码
g) 配置webserver,支持php
yum install httpd php php-mysql php-gd
service httpd start
h) 配置前端展示界面(loganalyzer软件)
tar xf loganalyzer-3.6.5.tar.gz
mv loganalyzer-3.6.5/src /var/[www/html/loganalyzer](www/html/loganalyzer)
cp -a loganalyzer-3.6.5/contrib/*.sh /var/www/html/loganalyzer/
cd /var/[www/html/loganalyzer/](www/html/loganalyzer/)
chmod +x *.sh
./configure.sh
./secure.sh
chmod 666 config.php #如果没有此文件则手动touch一个即可
在浏览器上输入:http://IP/loganalyzer/install.php
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!