系统日志服务介绍
1.sysklogd 系统日志服务
syslogd: system application 记录应用日志
klogd: linux kernel 记录内核日志
事件记录格式:
日期时间 主机 进程 : 事件内容
C/S架构:通过TCP或UDP协议的服务完成日志传送,可以实现将不同主机的日志进行集中管理
2.rsyslog 系统日志服务
提供高性能,出色的安全性和模块化设计,可以接收来自各种来源的输入并将其转换,输出到不同的目的地
rsyslog特性:
- 多线程
- UDP,TCP,SSL,TLS,RELP
- MySQL,PGSQL,Oracle实现日志存储
- 强大的过滤器,可以过滤日志信息中的任意部分
- 自定义输出格式
- 适用于企业级中继
3.ELK:
由Elasticsearch, Logstash, Kibana三个软件组成
- 非关系型分布式数据库基于apache软件基金会jakarta项目组的项目lucene
- Elasticsearch是个开源分布式搜索引擎,可以处理大规模日志数据,比如:Nginx、Tomcat、系统日志等功能
- Logstash对日志进行收集、分析,过滤,并将其存储供以后使用
- Kibana 可以提供的日志分析友好的 Web 界面
日志优先级:
rsyslog配置文件
/etc/rsyslog.conf配置文件组成部分:vim /etc/rsyslog.conf
- MODULES:相关模块配置
- GLOBAL DIRECTIVES:全局配置
- RULES:日志记录相关的规则配置
日志文件的格式:
日期时间 主机 进程 : 事件内容
相关命令:tail /var/log/messages
实际操作,将ssh服务的日志单独设置
1.查看ssh服务的日志位置:tail -f /var/log/secure
2.修改ssh配置文件:vim /etc/ssh/sshd_config
修改内容:
32 #SyslogFacility AUTHPRIV
33 SyslogFacility LOCAL6
local 0-7(可修改的范围为0-7)
3.修改rsyslog.conf文件:vim /etc/rsyslog.conf
修改内容:
添加自己的文件位置
local6.* /var/log/ssh.log
4.修改配置文件后需重启该服务:
systemctl restart rsyslog
systemctl restart ssh
开启日志的远程传输功能
1.修改rsyslog.conf文件:vim /etc/rsyslog.conf
修改内容:
打开514端口
19 #$ModLoad imtcp
20 #$InputTCPServerRun 514
将“#”号删除即可
2.修改配置文件后需重启该服务:systemctl restart rsyslog.service
3.查看514端口是否打开:ss -ntap |grep 514
4.设置发送到主机
@主机IP地址(UDP协议传输)
@@主机地址(TCP协议传输)
5.重启服务:
systemctl restart rsyslog.service
6.关闭防火墙
systemctl stop firewalld.service
7.测试
日志文件
- /var/log/secure:系统安全日志,文本格式,应周期性分析
- /var/log/btmp:当前系统上,用户的失败尝试登录相关的日志信息,二进制格式,lastb命令进行查看
- /var/log/wtmp:当前系统上,用户正常登录系统的相关日志信息,二进制格式,last命令可以查看
- /var/log/lastlog:每一个用户最近一次的登录信息,二进制格式,lastlog命令可以查看
- /var/log/dmesg:CentOS7 之前版本系统引导过程中的日志信息,文本格式,开机后的硬件变化将不再记录专用命令dmesg查看,可持续记录硬件变化的情况
- /var/log/boot.log 系统服务启动的相关信息,文本格式
- /var/log/messages :系统中大部分的信息
- /var/log/anaconda : anaconda的日志
示例:
失败登录信息:
每一个用户最近一次的登录信息:
日志管理工具journalctl
1、查看所有日志(默认情况下 ,只保存本次启动的日志)
journalctl
2、查看内核日志(不显示应用日志)
journalctl -k
3、查看系统本次启动的日志
journalctl -b
0
4、查看上一次启动的日志(需更改设置)
1
5、查看指定时间的日志
"2017-10-30 18:10:30"
"20 min ago"
journalctl --since yesterday
journalctl --since "2017-01-10" --until "2017-01-11 03:00"
journalctl --since 09:00 --until "1 hour ago"
6、显示尾部的最新10行日志
journalctl -n
7、显示尾部指定行数的日志
20
8、实时滚动显示最新日志
journalctl -f
9、查看指定服务的日志
journalctl /usr/lib/systemd/systemd
10、查看指定进程的日志
1
11、查看某个路径的脚本的日志
bin/bash
12、查看指定用户的日志
33 --since today
13、查看某个 Unit 的日志
journalctl -u nginx.service
journalctl -u nginx.service --since today
14、实时滚动显示某个 Unit 的最新日志
journalctl -u nginx.service -f
15、合并显示多个 Unit 的日志
journalctl -u nginx.service -u php-fpm.service --since today
16、以 JSON 格式(单行)输出
journalctl -b -u nginx.service -o json
17、以 JSON 格式(多行)输出,可读性更好
journalctl -b -u nginx.serviceqq -o json-pretty
18、显示日志占据的硬盘空间
journalctl --disk-usage
19、指定日志文件占据的最大空间
journalctl --vacuum-size=1G
20、指定日志文件保存多久
journalctl --vacuum-time=1years
21、日志默认分页输出,--no-pager 改为正常的标准输出
journalctl -b -u nginx.service --no-pager