**很多服务都有自己的日志,比如apache,有访问日志和错误日志
很多服务都有自己的日志
有些日志由自己的服务来管理,比如apache,写在配置文件里,具体格式如何,由自己服务决定
但其他相对不是很复杂的服务,它自己独立地运行一套日志管理系统比较麻烦,所以可以采用系统自身的日志,linux里有自身操作系统的日志,也可以把相关应用程序的日志统一交给linux系统日志进行管理
**
日志远程功能,可以把日志记录在远程主机,甚至可以把日志记录到数据库里去
日志就是系统中发生的事件
假设服务器事件都一致
早期centos 用sysklogd和klogd服务来管理日志
syslogd记录应用程序发生的日志
klogd 记录内核等于操作系统本身的日志
centos6 就不用这个服务了,用rsyslog
无论centos5还是6,7 都是基于C/S结构的,可以集中管理
ELK适合大型的日志管理
日志分类
auth 实名认证
authpriv 权限
cron 计划任务
daemon 守护进程
ftp
kern 内核
lpr 打印
mail 邮件
等
这样就可以把各个应用程序纳入到里面
什么样的事情需要记录,
debug 测试(普通的事情
info 重要的事情
notic 更重要的事情(已经开始警告了
warn
emerg崩溃才记录
可以测试一下message日志文件是否能生成日志
自定义日志级别0-7
主配置文件 /etc/rsyslog.conf
i开头表示输入,o开头表示输出
rsyslog,通过tcp或udp协议和远程主机进行通讯,利用协议给远程日志服务器发送消息,而不像默认,每个电脑记录自己的,
全局配置定义了rsyslog里的相关全局配置信息
更多的是规则
规则就是定义针对什么样的事件,什么样的类别设置,针对什么样的级别的,到底往哪里记录日志
模块和全局设置
默认情况下tcp和udp协议是不启用的,如果启用就不要注释,514是端口
由于两个设置是取消的所以514端口没有打开
工作目录,子配置文件
规则,什么样的设施,什么样的级别的
所有设施,info级别(包括info级别在内以上的);
mail(另外的设施).none(邮件就不记录 了)
authpriv.none身份验证也不记录了
cron。none计划任务也不记录了
除去这些,其他的info级别的信息都往/var/logmessages写(这就是为什么messages记录最多的原因
为什么排除,是因为,有专门的文件记录日志
-**号表示异步写入,写文件先放到buffer里再写磁盘。
如果写文件直接写磁盘就是同步
同步写稳定,不丢东西,但是浪费性能
**
omusrmsg是个模块,当系统发生一些严重的故障后,所有用户将收到报警提示
只要是这两个设施发生的事情,级别是crit,就都记录、
uucp是一个unix的拷贝服务
定制的日志级别
用ssh登录,查看是否有日志
有的
为什么会有记录,ssh配置文件用了rsyslog服务
日志设置
查看日志配置文件
默认全部信息都写
现在试试定制ssh日志
现在定义local2级别,但是日志里没有指明这个日志往哪里放
先不放在主配置文件,放在子文件夹,因为有include
既然是root运行,就不用担心自己的文件没有权限使用
重启服务,生成日志文件
测试是否记录日志
有日志了
只要用户账号登录就发送消息,如何实现
当loacl2消息发生的时候,会发送给root和wang终端
收到消息了
还可以把日志发送到别的主机上
30.7作为发生日志,17作为接收日志的
远程主机现在是接收的,还需要配置,开启tcp,udp对应的模块
默认是 没有514端口的
先启用udp协议,tcp稍后再说
重启服务
端口就打开了
用ssh链接应该会有记录
在接收日志的地方还需要指定local2记录在哪里
重新尝试ssh
已经有记录了
ssh输入密码错误也会有日志信息
但是现在的514端口,好像任何人都可以通过514端口记录信息
还有个问题就是,原本的7会在本机记录这个日志吗
现在本机 测试是否记录
ssh链接本机
日志还是记录的,本机还有日志
但是和远程主机记录的也不太一样,说明记录的应该是另外一个日志的记录,比如pam模块也有相应的日志(就是其他的事件记录下来的),
那么是否可以日志记录在本机和远程主机各一份
现在这个文件不存在,测试一下
本机生成了,查看远程是否生成
远程也有,说明远程和本机都可以
现在走的是udp协议,试试tcp协议
需要开启tcp的端口,把udp注释掉
成功更换
需要把7的消息发送地址进行修改
@表示UDP,要走TCP需要再加一个@
重启服务
再去访问,查看是否有日志
这就是跨网络的日志记录
记录日志主要是靠设施名字和事务级别,而不是主机名,所以集中存放的话需要修改主机名
测试看,记录日志会不会主机名变化
没有变化
彻底改下主机名
17主机也改下
把日志服务重新启动
继续测试
成功
现在就能搞清楚到哪个机器上了
日志还可以传给管道通过命令来处理
target目标可以是用户,可以是远程主机,甚至是管道
=代表只有info级别才记录
系统中有很多系统自带的日志
记录了和安全相关的日志
授权和登录信息都会记录
买的虚拟主机要是22,很多人都会扫描
这个文件是个二进制日志的
可以用lastb命令来看
失败登录一下
专门记录失败登录
制定一个脚本排序,找到连接数最多的,最是可能黑客
每个用户的登录信息
last是成功登录的信息
记录的是每个账号最后成功登录的时间
内核在启动的时候记录的内置信息
anaconda记录的操作系统安装时候的日志
网卡的记录
安装包的记录
磁盘存储发生的日志
centos7新增的功能 journalctl
根据时间指定日志
查看最近两分钟的日志
nopager 不分页,直接显示到底
可以用json格式输出