第二十八:日志服务管理

一、系统日志介绍

  在现实生活中,记录日志非常重要﹐比如:银行转账时会有转账记录﹔飞机飞行过程中的黑盒子(飞行数据记录器)记录着飞机的飞行过程. 那么将系统和应用发生的事件记录至日志中,也很意义,常可以助于排错和分析使用
日志记录的内容包括:
  历史事件:时间,地点,人物,事件
  日志级别:事件的关键性程度,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… target
facility格式:
*     #所有的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.html
module(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.conf
journalctl命令格式 
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 配置范例

 

posted @ 2024-03-01 21:31  djyhello  阅读(25)  评论(0编辑  收藏  举报