一:日志的重要性
日志分类:系统日志,进程日志,应用程序日志
记录日志的用处: 排错,追溯事件,统计流量,审计安全行为
rsyslogd:只负责绝大部分日志记录,和系统操作有关,安全,认证,计划任务...
处理分析日志:
1.少量日志使用vim cat tail grep awk这些文档处理程序查看和检索
2.大量日志可以用splunk、elk
日志存放位置: 存放本地 /var/log
日志服务启动:systemctl start rsyslog
日志配置文件:/etc/rsyslog.conf
[root@newrain ~]# ps aux |grep rsyslogd |grep -v grep root
686 0.0 0.0 219752 8436 ? Ssl 16:35 0:00 /usr/sbin/rsyslogd -n
二:rsyslog日志管理
常见的日志文件(系统、进程、应用程序)
# ls /var/log/
# tail /var/log/messages //系统主日志文件
# tail -f /var/log/messages //动态查看日志文件的尾部
# tail -f /var/log/secure //认证、安全
# tail /var/log/cron //crond、at进程产生的日志
# tail /var/log/yum.log //yum
二进制日志:
# w //当前登录的用户即: /var/log/wtmp日志
# last //最近登录的用户 /var/log/btmp
# lastlog //所有用户的登录情况 /var/log/lastlog
进程以自己的方式去记录日志
# tail /var/log/mysqld.log //MySQL进程自己记录的日志
# tail /var/log/httpd/access_log //Apache自己记录的日志
# tail /var/log/xferlog //和访问FTP服务器相关
案例1: 统计登录失败top 2
# grep 'Fail' /var/log/secure |awk '{print $11}' |sort |uniq -c|sort -n -r |head -2
366 140.205.225.186
335 140.205.201.44
案例2: 统计登录成功
# grep 'Accepted' /var/log/secure*
三: mysql存放rsyslog日志
yum install -y mariadb mariadb-server
yum install -y rsyslog-mysql # 安装驱动
rpm -ql rsyslog-mysql # 找到sql文件
# 将sql文件导入到数据库中
mysql> GRANT ALL ON Syslog.* TO 'rsyslog'@'127.0.0.1' IDENTIFIED BY 'rsyspass';
mysql> GRANT ALL ON Syslog.* TO 'rsyslog'@'localhost' IDENTIFIED BY 'rsyspass';
mysql> FLUSH PRICVILEGES
# 配置rsyslog加载ommysql模块
#### MODULES ####
$ModLoad ommysql
# 配置RULES,将所期望的日志信息记录于mysql中
# 格式为
facility.priority :ommysql:DBHOST,DB,DBUSER,DBUSERPASS
*.*:ommysql:127.0.0.1,Syslog,rsyslog,rsyspass
systemctl restart mariadb
systemctl restart rsyslog
四:集中式日志管理
自定义日志
自己定义日志的名字和位置
查看日志文件是否起来:systemctl status rsyslog
#vim /etc/rsyslog.conf -----> 日志的主配置文件 include 包含
*.info;mail.none;authpriv.none;cron.none /var/log/messages 日志定义
.之前叫做日志对象,要给谁记录日志
.之后日志级别:级别越低,信息越多
日志文件:存储日志的文件
日志级别
lpr: 打印相关的日志
auth:认证相关的日志
user:用户相关的日志
cron:计划任务相关的日志
kern:内核相关的日志
mail:邮件相关的日志
mark:标记相关的日志
news:新闻相关的日志
uucp:文件copy相关的日志
daemon:系统服务相关的日志
authpri: 授权相关的日志
security:安全相关的日志
前的级别低,越详细,低的包含高的日志级别
debug:最低的,一般不用
info:安装信息,警告信息,错误信息
notice:相当与提示
warn/warning:警告,错误
error/err:错误,严重错误
alert:告警,表示已经出现问题
emerg:恐慌级别
eg:将内核日志文件自定义到/var/log/kern.log
touch /var/log/kern.log
vim /etc/rsyslog.conf ---->kern.info /var/log/kern.log
查看都有哪些日志对象和日志级别
#man 5 rsyslog.conf
local0 through local7:自己定义的日志文件
======================================
例:
*.* /var/log/mylog
kern.err /var/log/kernel.log
*.info;mail.none /var/log/big.log
mail.info /var/log/mail.log
cron.info;cron.!err /var/log/newcron
======================================
local0-local7日志设备的使用: ssh的配置文件:/etc/ssh/sshd_config
例:定义sshd日志:
1.修改sshd服务主配置文件:
将/etc/ssh/sshd_config 的#SyslogFacility AUTHPRIV改为 SyslogFacility local2
SyslogFacility local5 //设置ssh的日志定义由local5设备来记录
2.在rsyslog的主配置文件里加上
local5.info /var/log/ssh
3.重启服务
五:ELK stack 分析rsyslog系统日志
安装: 略
rsyslog 配置文件
logstash 配置文件
第一种写法
input {
tcp{
port => 1023
type => syslog
}
udp{
port => 1023
type => syslog
}
}
output {
stdout {
codec=> rubydebug
}
elasticsearch {
hosts => ["172.17.209.157:9200"]
}
}
第二种写法
input {
syslog{
port => 5514
type => syslog
}
}
output {
stdout {
codec=> rubydebug
}
elasticsearch {
hosts => ["172.17.209.157:9200"]
}
}