Linux_29 时间服务(chrony/ntp)和 rsyslog日志(高级用法)

chrony

CentOS 7:同步时间使用 Chronyd(/etc/chrony.conf)服务, 而CentOS 6使用的是ntpd服务(/etc/ntp.conf)
准确的时间同步:

Chrony 是网络时间协议的(NTP)的另一种实现,与网络时间协议后台程序(ntpd)不同,它可以更快地且更准确地同步同步系统时钟,请注意:ntpd仍然包含其中以供需要运行NTP服务的客户的使用。

Chrony的优势包括:
	更快的同步只需要数分钟而非数小时时间,从而最大程度减少了时间和频率误差,这对于并非全天24小时运行的台式计算机或系统而言非常有用。
	能够更好地响应时钟频率的快速变化,这对于具备不稳定时钟的虚拟机或导致时钟频率发生变化的节能技术而言非常有用。
	在初始同步后,他不会停止时钟,以防对需要系统时间保持单调的应用程序造成影响。
	在应对临时非对称延迟时(例如,在大规模下载造成链接饱和时)提供了更好的稳定性。
	无需对服务器进行定期轮询,因此具备间歇性网络连接系统仍然可以快速同步时钟。
	
NTP:Network Time Protocol;

程序环境:
	配置文件:/etc/chrony.conf
	主程序文件:chronyd
	工具程序:chronyc
		chronyc sources
		chronyc sourcestats
	unit file:chronyd.service
	
配置文件:chrony.conf
	server:指明时间服务器地址;
	allow NETADD/NETMASK
	allow all:允许所有客户端主机
	deny NETADDR/NETMASK
	deny all:拒绝所有客户端;
	bindcmdaddress:命令管理接口监听的地址;
	local stratum 10:即使自己未能通过网络时间服务器同步到时间,也允许本地时间作为标准时间授时给其它客户端;
	
	yum install -y chrony  
	yum install -y ntpd
	
	systemctl start chronyd.service  # 监听在 udp下的323号端口
	systemctl start ntpd.service  # 监听在udp下的884端口
	
	一般不建议使用 ntpdate IP(时间同步服务器的地址)同步时间,因为会产生空白段。

rsyslog

rsyslog:
	日志:历史事件日志
		历史事件:
			时间,事件
			事件级别(日志级别):事件的关键性程度;
	事件:系统引导启动、应用程序启动、应用程序尤其是服务类应用程序运行过程中的一些事件;
		系统日志服务:
			syslog:(CentOS 5 之前使用的日志记录功能)
				syslogd:system  # 为各种应用程序记录日志的
				klogd:kernel  # 为内核记录日志的
			
			事件格式较为简单时,可统一由syslog进行记录:
				事件产生的日期时间  主机  进程 [pid]:事件内容
			
			支持C/S架构 :可通过UDP或TCP协议提供日志记录服务;
			
			rsyslog:
				rsyslogd
				
				特性:
					多线程:
					UDP,TCP,SSL,TLS,RELP;
					存储日志信息于MySQL、PGSQL、Oracle等数据管理系统;
					强大的过滤器,实现过滤日志信息中任何部分的内容;
					自定义输出格式;
					
rsyslog日志收集器重要术语:
	facility:设施,从功能或程序上对日志收集进行分类;
		auth(认证),authpriv(认证授权),cron(周期性任务),kern(内核),daemon(各种守护进程),lpr(打印系统),mail,mark(防火墙标记),news(新闻组),security,user(用户自己在终端上产生的日志),uucp,local0-local7(自定义的),syslog(syslog自己)
	priority:优先级,日志级别
		debug,info,notice,warn(warning),err(error),crit(critical),alert,energ(panic)
		
		指定级别:
			*:所有级别;
			none:没有级别
			priority:此级别以以高于此级别的所有级别
			=priority:仅此级别; 
	
	程序环境:
		主程序:rsyslogd
		主配置文件:/etc/rsyslog.conf,/etc/rsyslog/*.conf
		服务脚本(cnetos6):/etc/rc.d/init.d/rsyslog
		Unit File(CentOS7):/usr/lib/systemd/system/rsyslog.service
	
	配置文件格式rsyslog.conf
		主要由三部分组成:
			MODULES
			GLOBAL DRICTIVES
			RULES
		
		RULES:
			facility.priority	target
			
			target:
				文件:记录日志事件于指定的文件中;通常应该位于/var/log目录下;文件路径之前的"-"表示异步写入;
				用户:将日志事件通知给指定的用户;是通过将信息发送给登录到系统上的用户的终端进行的;
				日志服务器:@host,八日至送往指定的服务器主机;
					host:即日志服务器地址,监听在tcp或udp协议的514端口以提供服务;
				管道: | COMMAND
		
		其它日志文件:
			/var/log/wtmp:当前系统成功登录系统的日志;
				需要使用last命令查看
			/var/log/btmp:当前系统尝试登录系统失败相关的日志;
				需要使用lastb命令查看
				
				lastlog:显示当前系统上的所有用户最近一次登录系统的时间;
				
			/var/log/dmesg:系统引导过程中的日志信息;
				也可以使用dmesg命令进行查看;
	
	rsyslog服务器: # 取消注释,重启rsyslog服务,使其监听在514端口
		# Provides UDP syslog reception
		$ModLoad imudp
		$UDPServerRun 514
		
		# Provides TCP syslog reception
		$ModLoad imtcp
		$InputTCPServerRun 514
		
	记录日志于mysql中:
		(1)于MySQL服务器:准备好MySQL服务器,创建用户,授权对Syslog数据库拥有全部访问权限;
		(2)于rsyslog主机:安装rsyslog-mysql程序包;
		(3)于rsyslog主机:通过导入createDB.sql脚本创建依赖到的数据库及表;
			msyql -uUSER -hHOST -pPASSWORD < /usr/share/doc/rsyslog-mysql-VERSION/createDB.sql
		(4)配置rsyslog使用ommysql模块
			### MODULES ####
			$ModLoad ommysql  # 日志信息输出的模块
            
            #### RULES ####
            facility.priority	:ommysql:DBHOST,DB,DBUSER,DBUSERPASS
            
            注意:重启rsyslog服务;
		(5)web展示接口:loganalyzer # 读取数据库信息,并以图形化的方式显示
			(a)配置lamp组合
				httpd,php,php-mysql,php-gd
			(b)安装loganalyzer
				地址:https://loganalyzer.adiscon.com/downloads/loganalyzer-v4-1-5-v4-stable/?utm_source=rss&utm_medium=rss&utm_campaign=loganalyzer-v4-1-5-v4-stable
				# tar xf loganalyzer-3.6.5.tar.gz
				# cp -r loganalyzer-3.6.5.tar.gz/src /var/www/html/loganalyzer
				# cp -r loganalyzer-3.6.5/contrib/*.sh /var/www/html/loganalyzer
				# cd /var/www/html/loganalyzer
				# chmod +x *.sh
				# ./configure.sh
				# ./secure.sh
				# chmod 666 config.php
			
			通过URL访问
				http://HOST/loganalyzer

记录日志到另一台主机

记录日志到另外一台主机:
			现有两台主机,192.168.0.10和192.168.0.11,让192.168.0.11机器上产生的日志记录到192.168.0.10机器上:
				在192.168.0.10机器上,修改/etc/rsyslog.conf配置文件,让其监听在udp和tcp的某个端口之上,
					  # Provides UDP syslog reception
                        $ModLoad imudp
                        $UDPServerRun 514
                        # Provides TCP syslog reception
                        $ModLoad imtcp
                        $InputTCPServerRun 514
				重启rsyslogd:
					systemctl restart rsyslog
				
				在192.168.0.11机器上,修改/etc/rsyslog.conf配置文件,让其产生的日志发送到192.168.0.10机器上:
                    #*.info;mail.none;authpriv.none;cron.none                /var/log/messages
                    *.info;mail.none;authpriv.none;cron.none                @192.168.0.10
				重启rsyslogd:
					systemctl restart rsyslogd
				在在192.168.0.11机器上使用yum安装软件包automake,并查看两台机器上/var/log/messages文件中的日志:
				发现日志已经被发送到192.168.0.10机器上了,192.168.0.10机器上并未保存; # 如下图1

日志信息都是同步写入的,尤其是当一个应用程序挂掉时,程序日志同步写入到磁盘,是判断一个程序挂掉的重要凭据,而配置文件(/etc/rsyslog.conf)中指定日志位置的文件前加"-",表示异步写入磁盘,即使不慎丢弃一些也不影响。比如邮件相关的日志:-/var/log/maillog

图1:

记录日志到mysql中

(1)在192.168.0.10机器上:

yum list all | grep rsyslog  # 查看rsyslog日志相关的模块,如图1,可以将日志记录到mysql,pgsql,kibana,es中
yum install rsyslog-mysql -y
rpm -ql rsyslog-mysql
	/usr/lib64/rsyslog/ommysql.so  # 日志信息输出的模块
    /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql # sql脚本,用于帮助生成mysql中的要记录日志信息的表和表结构
systemctl start mariadb
vim /etc/my.cnf.d/server.cnf
	[mysqld]  # 添加以下两项
    skip_name_resolve=ON #这个参数是禁止域名解析
    innodb_file_per_table=ON
systemctl restart mariadb
# 将mysql-createDB.sql脚本导入,生成所需要的数据库
mysql < /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
mysql
show databases;
	Syslog # sql脚本导入生成的数据库
show tables;
	SystemEvents           
	SystemEventsProperties
	
# 授权一个用户可以将日志写入到mysql中的Syslog数据库中所有表中
GRANT ALL ON Syslog.* TO 'rsyslog'@'192.168.0.%' IDENTIFIED BY 'rsyslog'; 
FLUSH PRIVILEGES;
vim /etc/rsyslog.conf
	# 加载ommysql模块
	$ModLoad ommysql
	
	### RULES ####
	# 添加记录日志的规则   如图3
	*.info;mail.none;authpriv.none;cron.none      :ommysql:192.168.0.10,Syslog,rsyslog,rsyslog
	systemctl start/restart rsyslog
	
(2)在192.168.0.11机器上:
	/etc/rsyslog.conf的配置和 记录日志到另一台主机 的配置保持一样
	测试:
		yum remove -y socat
(3)在192.168.0.10机器上查看yum卸载socat的日志是否写入到mysql数据库中:# 如图4
	mysql
	use Syslog;
	show tables;
	select * from SystemEvents\G #被记录到表中了。。。。。

图1:

图2:

图3:

图4:

centos7+rsyslog+loganalyzer+mysql 搭建rsyslog日志服务器:https://www.cnblogs.com/zhangxingeng/p/10451828.html

posted on 2021-07-07 09:30  jueyuanfengsheng  阅读(1765)  评论(0编辑  收藏  举报