LInux基础命令(九)系统日志和时间服务器
一、问题引入
(1)每天产生无数多的日志信息,但是日志是如何存放的?换句话说谁在管理这些日志?如何管理?
引申出:采集服务日志信息的服务==>rsyslog
特点:此服务只是用来采集系统日志信息,不产生日志信息,起到一个信息采集的作用!
白话:就是一个搬运工,将采集到的信息分门别类的保存到指定路径!
日志的作用:进程和操作系统内核需要能够为发生的事件记录日志 , 这些日志可用于系统审核和后续的故障排错 !
二、了解一下/var/log 目录中存储系统日志信息的文件
分门别类
日志文件 用途
/var/log/messages 大多数系统日志信息记录在此处
/var/log/secure 安全和身份认证相关的消息和错误的日志文件(系统登陆的日志信息,需要用户名和密码的-->ssh等)
/var/log/maillog 与邮件服务器相关的日志文件
/var/log/cron 与定时任务相关的日志文件
/var/log/boot.log 与系统启动有关的日志文件
测试
(1)清空client的messages的信息,logger产生日志,观察messages文件内容
(2)清空server的secure的信息,client启动ssh,观察server的secure文件的内容
三、了解rsyslog服务
1)rsyslog 服务的主配置文件为 /etc/rsyslog.conf
图片:
2)日志的类型和级别
rsyslog的日志级别
7 debug 调试信息的日志,日志信息最多
6 info 一般信息的日志,最常用
5 notice 最具有重要性的普通条件的信息
4 warning 警告级别
3 error 错误级别,阻止某个功能或者模块不能正常工作的信息
2 crit 严重级别,阻止整个系统或者整个软件不能正常工作的信息
1 alert 需要立刻修改的信息
0 emerg 内核崩溃等严重信息
特点:从上到下级别越来越高,但是信息记录越来越少!
rsyslog的日志类型
auth pam产生的日志
authpriv ssh,ftp等登录信息的验证信息
cron 时间计划任务相关
kerl 内核
lpr 打印
mail 邮件
mark(syslog) rsyslog服务内部信息,时间标识
news 新闻组
user 用户程序产生的相关信息
uucp Unix主机之间相关的通信(了解)
local 1-7 自定义的日志设备
备注:uucp-->unix to unix copy
需求1:在日志采集的过程中保存一份信息到指定的文件中
问题引入
通常一个人要管理多台主机,每台主机都会产生无数的信息,我们总不至于登陆到每台主机上查看,引出了日志同步的问题!
需求2:日志信息的远程同步
实际:其实备份日志信息到指定的远程主机中,方便统一管理!
查看文档
man 5 rsyslog.conf -->/machine-->定位到我们需要的UDP相应的文档说明!
1)客户端的设置
2)日志服务器的设置
核心步骤:设置加载模块和监听端口,以及关闭防火墙
相应配置文件的说明
客户端命令行的设置
服务器端命令行的设置
引申出:远程主机不能同步日志信息怎么排错?
排错思路:(1)服务是否开启-->(2)端口是否开启-->(3)防火墙是否关闭
需求:我们发现远程同步过来的信息有许多,一但出现错误,我怎么能准确定位到这一台主机呢?
思路:设置不同的主机名,但是如果主机名一样呢?
解决方案:用ip来标示发送日志信息的每一台主机!
具体:在服务器端配置设置自定义日志的规则,客户端发送过来日志信息就会作相应的转换!
客户端测试
logger Java编程!
日志服务器测试
vim /etc/rsyslog.conf
systemctl restart rsyslog.service
> messages
cat messages
#展示信息:Apr 4 08:56:44 172.25.2.100 root: Java编程!
注意:如果在客户端设置日志格式,则服务器端口始终显示的IP是回环地址!
后续:将每天的日志打包然后同步到日志服务器的指定的目录下,更方便查看!
进一步需求:
有多台使用tomcat搭建的web服务器,需要将日志集中管理!
初步方案:采用rsyslog远程同步到日志服务器上,由于tomcat的日志属于非syslog,所以需要"使用模块添加日志文件"
补充:可以全局同步
#默认保存日志信息的文件所使用的日志格式
$ActionFileDefaultTemplate SYSLOG
具体:将自定义的日志信息格式赋值给$ActionFileDefaultTemplate即可
####################################
四、netstat命令
特点:是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络端口设备的状态信息!
参数说明
-a 显示所有选项,默认不显示LISTEN相关
-n 拒绝显示别名,能显示数字的全部转化成数字,以网络ip代替名称,显示网络连接情形
-t 仅显示tcp相关选项
-u 仅显示udp相关选项
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关连接的程序名和PID
-e 显示以太网统计。此选项可以与 -s 选项结合使用
-r 显示路由信息,路由表
-s 显示每个协议的统计
常用的组合: antlupe
五、时间服务器 (NTP)
解释:NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议!
时间服务器作用
大数据产生与处理系统是各种计算设备集群的,计算设备将统一、同步的标准时间用于记录各种事件发生时序,
如E-MAIL信息、文件创建和访问时间、数据库处理时间等。
大数据系统内不同计算设备之间控制、计算、处理、应用等数据或操作都具有时序性,
若计算机时间不同步,这些应用或操作或将无法正常进行,
大数据系统是对时间敏感的计算处理系统,时间同步是大数据能够得到正确处理的基础保障,是大数据得以发挥作用的技术支撑。
大数据时代,整个处理计算系统内的大数据通信都是通过网络进行。
时间同步也是如此,利用大数据的互联网络传送标准时间信息,实现大数据系统内时间同步。
网络时间同步协议(NTP)是时间同步的技术基础
场景:淘宝的时间同步问题!
思路:某一台主机把时间共享出来,其它主机都同步它的时间!
服务端设置:编辑 /etc/chrony.conf配置文件
客户端设置:编辑 /etc/chrony.conf配置文件
-->查看:chronyc
服务器端操作
客户端测试
说明:date 11112111-->直接通过配置文件的形式修改日期的!
问题:双系统经常会发生时间错乱的问题!
解决方案:将local时间记录给BIOS中,而不是utc(伦敦本初子午线时间)中的!
timedatectrl命令的参数说明:
timedatectl status --显示当前的状态信息
set-time --设置当前时间(修改配置文件形式)
set-timezone --更改时区(东八区-->中国:Asia/Shanghai)
set -local-rtc 0|1 --1表示采用local同步BIOS的时间!
list-timezone --查看是否支持所有的时区
六、日志分析命令
journal
journalctl ## 日志查看工具
-n 5 ## 查看最近生成的 5 条日志
-p err ## 查看系统报错
--since --until ## 查看某个"时间段"生成的日志
-o verbose ## 查看日志能够使用的条件参数
需求1:某个服务重启了,但是想查看此PID和COMM的信息!
需求2:查看某个时间段的日志信息!
扩展:如何使用systemd-journal保存系统日志
默认:systemd 日志保存在 /run/log/journal/机器码/system.journal 中 , 这意味着系统重启时会被清除!
mkdir /var/log/journal ## 创建一个保此"内存"日志信息的目录
chgrp systemed-journal /var/log/journal ## 改变用户组
chmod g+s /var/log/journal ## 设置特殊权限关键之前保存内存信息!
killall -1 systemd-journald ## 重启服务
ps aux|grep journal ## 查看此systemd-journald服务
ls /var/log/journal ## 目录名是每一个机器的机器码!
bootctl ## 查看机器的机器码!
细节:设置相应的选项后,第一次保留的是reload到reboot之间的信息,下次就是全部的信息!
好处:启动后就可以利用历史数据 , 形成永久日志!
注意:没有特殊需要的话,不建议此设置,时间长了容易磁盘爆满!