一、系统日志介绍
在现实生活中,记录日志非常重要﹐比如:银行转账时会有转账记录﹔飞机飞行过程中的黑盒子(飞行数据记录器)记录着飞机的飞行过程. 那么将系统和应用发生的事件记录至日志中,也很意义,常可以助于排错和分析使用 日志记录的内容包括: 历史事件:时间,地点,人物,事件 日志级别:事件的关键性程度,Loglevel(1)sysklogd系统日志服务
CentOS 5 之前版本采用的日志管理系统服务 klogd: linux kernel 记录内核日志 syslogd: system application 记录应用日志 事件记录格式: 日期时间 主机 进程[pid]: 事件内容 C/S架构:通过TCP或UDP协议的服务完成日志记录传送,将分布在不同主机的日志实现集中管理(2)rsyslog系统日志服务
rsyslog是CentOS 6 以后版本的系统管理服务.它提供了高性能,出色的安全性和模块化设计。 尽管 rsyslog最初是常规的syslogd,但已发展成为一种瑞士军刀式的记录工具,能够接受来自各种来源的输 入,并将其转换,然后输出到不同的目的地。 当应用有限的处理时,RSYSLOG每秒可以将超过一百万的消息传递到本地目的地。 即使在远程的目的地 和更精细的处理中,性能通常也被认为是“惊人的”。 官方网站:https://www.rsyslog.com/rsyslog 特性 多线程 UDP, TCP, SSL, TLS, RELP MySQL, PGSQL, Oracle实现日志存储 强大的过滤器,可实现过滤记录日志信息中任意部分 自定义输出格式 适用于企业级中继链
(3) ELK
ELK:由Elasticsearch, Logstash, Kibana三个软件组成 非关系型分布式数据库 基于Apache软件基金会jakarta项目组的项目lucene Elasticsearch是个开源分布式搜索引擎,可以处理大规模日志数据,比如:Nginx、Tomcat、系统日志等功能 Logstash对日志进行收集、分析,过滤,并将其存储供以后使用 Kibana 可以提供的日志分析友好的 Web 界面二、Rsyslog管理
1、系统日志术语
facility:设施,从功能或程序上对日志进行归类#内置分类 auth, authpriv, cron, daemon,ftp,kern, lpr, mail, news, security(auth), user(default), uucp, syslog #自定义的分类 local0-local7参看帮助: man 3 syslog,man logger
[root@centos8 ~]#yum -y install man-pages [root@centos8 ~]#man 3 syslog
2、rsyslog相关文件
程序包:rsyslog 主程序:/usr/sbin/rsyslogd Ubuntu: /usr/lib/systemd/system/rsyslog.service CentOS 6:/etc/rc.d/init.d/rsyslog {start|stop|restart|status} CentOS 7,8:/usr/lib/systemd/system/rsyslog.service 配置文件:/etc/rsyslog.conf,/etc/rsyslog.d/*.conf 库文件: /lib64/rsyslog/*.so 3、rsyslog配置文件 /etc/rsyslog.conf 配置文件格式:由三部分组成 MODULES:相关模块配置 GLOBAL DIRECTIVES:全局配置 RULES:日志记录相关的规则配置 RULES配置格式:facility.priority; facility.priority… targetfacility格式:
* #所有的facility facility1,facility2,facility3,... #指定的facility列表priority格式:
*: 所有级别 none:没有级别,即不记录 PRIORITY:指定级别(含)以上的所有级别 =PRIORITY:仅记录指定级别的日志信息target格式:
文件路径:通常在/var/log/,文件路径前的-表示异步写入 用户:将日志事件通知给指定的用户,* 表示登录的所有用户 日志服务器:@host,把日志送往至指定的远程UDP日志服务器 @@host 将日志发送到远程TCP日志服务器 管道: | COMMAND,转发给其它命令处理通常的日志文件的格式: 日志文件有很多,如: /var/log/messages,cron,secure等,基本格式都是类似的。格式如下 事件产生的日期时间 主机 进程(pid):事件内容
4、启用网络日志服务
启用网络日志服务功能,可以将多个远程主机的日志,发送到集中的日志服务器,方便统一管理。[root@centos8 ~]#vim /etc/rsyslog.conf ## MODULES #### ...省略... # Provides UDP syslog reception # for parameters see http://www.rsyslog.com/doc/imudp.html module(load="imudp") # needs to be done just once input(type="imudp" port="514") # Provides TCP syslog reception # for parameters see http://www.rsyslog.com/doc/imtcp.htmlmodule(load="imtcp") # needs to be done just once input(type="imtcp" port="514") #在客户端指定将日志发送到远程的TCP、UDP的日志服务器 [root@centos7 ~]#vim /etc/rsyslog.conf
5、常见日志文件
/var/log/secure,/var/log/auth.log:系统安全日志,文本格式,应周期性分析 /var/log/btmp:当前系统上,用户的失败尝试登录相关的日志信息,二进制格式,lastb命令进行查看 /var/log/wtmp:当前系统上,用户正常登录系统的相关日志信息,二进制格式,last命令可以查看#显示系统关机项和运行级别更改 last -x, --system/var/log/lastlog:每一个用户最近一次的登录信息,二进制格式,lastlog命令可以查看 /var/log/dmesg:CentOS7 之前版本系统引导过程中的日志信息,文本格式,开机后的硬件变化 将不再记录,也可以通过专用命令 dmesg查看,可持续记录硬件变化的情况 /var/log/boot.log 系统服务启动的相关信息,文本格式,Ubuntu无此文件 /var/log/messages(红帽系统),/var/log/syslog (Ubuntu) :系统中大部分的信息 /var/log/anaconda : anaconda的日志,Ubuntu无此文件
三、日志管理工具 journalctl
CentOS 7 以后版,利用Systemd 统一管理所有 Unit 的启动日志。带来的好处就是,可以只用 journalctl一个命令,查看所有日志(内核日志和应用日志)。 日志的配置文件:/etc/systemd/journald.confjournalctl命令格式
journalctl [OPTIONS...] [MATCHES...]选项说明:
四、利用 MySQL 存储日志信息
1、目前和环境 利用rsyslog日志服务,将收集的日志记录于MySQL中 两台主机 一台:rsyslog日志服务器,IP:10.0.0.8 一台:mariadb数据库服务器,IP:10.0.0.18 2、在rsyslog服务器上安装连接mysql模块相关的程序包[root@centos8 ~]#yum -y install rsyslog-mysql [root@ubuntu2004 ~]#apt -y install rsyslog-mysql [root@centos8 ~]#rpm -ql rsyslog-mysql#查看sql脚本文件内容 [root@ubuntu2204 ~]#cat /usr/share/dbconfig-common/data/rsyslog mysql/install/mysql [root@ubuntu2004 ~]#cat /usr/share/dbconfig-common/data/rsyslog mysql/install/mysql [root@centos8 ~]#cat /usr/share/doc/rsyslog/mysql-createDB.sql #方法1:事先执行2.3.2步骤再执行下面指令 [root@ubuntu2204 ~]#mysql -ursyslog -p123456 -h10.0.0.202 Syslog < /usr/share/dbconfig-common/data/rsyslog-ysql/install/mysql [root@ubuntu2204 ~]#mysql -ursyslog -p123456 -h10.0.0.202 Syslog -e "source /usr/share/dbconfig-common/data/rsyslog-ysql/install/mysql" #方法2 #将sql脚本复制到数据库服库上 [root@centos8 ~]#scp /usr/share/doc/rsyslog/mysql-createDB.sql 10.0.0.18:/data
3、准备 MySQL
[root@centos8 ~]#yum install mysql-server #在MySQL数据库服务器上创建相关数据库和表,并授权rsyslog能连接至当前服务器 [root@centos8 ~]#mysql -u mysql>source /data/mysql-createDB.sql mysql>CREATE USER 'rsyslog'@'10.0.0.%' IDENTIFIED BY '123456'; mysql>GRANT ALL ON Syslog.* TO 'rsyslog'@'10.0.0.%' ;
4、配置日志服务器将日志发送至指定数据库
五、 Logrotate 日志转储
1、Logrotate 介绍 logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,称为日志转 储或滚动。可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行2、Logrotate 配置
软件包:logrotate 相关文件 计划任务:/etc/cron.daily/logrotate,/lib/systemd/system/logrotate.service,/lib/systemd/system/logrotate.timer 程序文件:/usr/sbin/logrotate 配置文件: /etc/logrotate.conf 日志文件:/var/lib/logrotate/logrotate.status 配置文件主要参数如下:3、 Logroate 配置范例
标签:服务,log,rsyslog,mysql,var,第二十八,日志,root From: https://www.cnblogs.com/dujy/p/18047662