zoukankan      html  css  js  c++  java
  • 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 SystemEventsG #被记录到表中了。。。。。
    
    

    图1:

    图2:

    图3:

    图4:

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

  • 相关阅读:
    深入理解Java并发之synchronized实现原理
    Untracked Files Prevent Checkout move or commit them before checkout
    java代码在开始事务后,先做了一个查询,再insert,此时会报: java.sql.SQLException: could not retrieve transation read-only status server
    Java 实例
    java队列——queue详细分析
    Jquery 获取table当前行内容
    Java list 分页(多种方式)
    获取当天的开始时间、结束时间等等的一个工具类
    java list按照元素对象的指定多个字段属性进行排序
    [译] OpenStack Kilo 版本中 Neutron 的新变化
  • 原文地址:https://www.cnblogs.com/zhangchaocoming/p/14980039.html
Copyright © 2011-2022 走看看