1,rsyslog 系统日志服务
CentOS 6 以后版本的系统管理服务,用于管理小型服务的日志
rsyslog特性
多线程
UDP, TCP, SSL, TLS, RELP
MySQL, PGSQL, Oracle实现日志存储
强大的过滤器,可实现过滤记录日志信息中任意部分
自定义输出格式
2,rsyslog 管理
facility:设施,从功能或程序上对日志进行归类
auth, authpriv, cron, daemon,ftp,kern, lpr, mail, news, security(auth),
user, uucp, syslog
#自定议的分类
local0-local7
Priority 优先级别,从低到高排序
debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)
参看帮助: man 3 syslog,man logger
[root@centos8 ~]#yum -y install man-pages
[root@centos8 ~]#man 3 syslog
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,转发给其它命令处理
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* -/var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg :omusrmsg:*
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
4, 启用网络日志服务
启用网络日志服务功能,可以将多个远程主机的日志,发送到集中的日志服务器,方便统一管理
#开启514的监听端口
[root@centos8 ~]#vim /etc/rsyslog.conf
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")
[root@localhost ~]# systemctl restart rsyslog
#另外一端的配置
[root@localhost ~]# vim /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none @10.1.1.41
[root@localhost ~]# systemctl restart rsyslog
#测试
[root@localhost ~]# logger "this is a test log"
5,利用mysql存储日志信息
5.1目标
利用rsyslog日志服务,将收集的日志记录于MySQL中
5.2 环境准备
两台主机
一台:rsyslog日志服务器,IP:10.1.1.40
一台:mariadb数据库服务器,IP:10.1.1.41
5.3 实现步骤
5.3.1 在rsyslog服务器上安装连接mysql模块相关的程序包
[root@localhost ~]# yum install rsyslog-mysql
#查看sql脚本文件内容
[root@localhost ~]# cat /usr/share/doc/rsyslog/mysql-createDB.sql
[root@localhost ~]# scp /usr/share/doc/rsyslog/mysql-createDB.sql 10.1.1.41:
5.3.2 准备MySQL Server
[root@localhost ~]# systemctl start mariadb
[root@localhost ~]# yum install -y mariadb-server
[root@localhost ~]# mysql < mysql-createDB.sql
[root@localhost ~]# msyql
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| Syslog |
| information_schema |
| mysql |
| performance_schema |
+--------------------+
4 rows in set (0.001 sec)
MariaDB [(none)]> grant all on Syslog.* to 'rsyslog'@'10.1.1.%' identified by '123';
5.3.3 配置日志服务器将日志发送至指定数据库
[root@localhost ~]# vim /etc/rsyslog.conf
module(load="ommysql")
*.info :ommysql:10.1.1.41,Syslog,rsyslog,123
Database changed
MariaDB [Syslog]> SELECT COUNT(*) FROM SystemEvents;
+----------+
| COUNT(*) |
+----------+
| 0 |
+----------+
1 row in set (0.000 sec)
MariaDB [Syslog]> SELECT COUNT(*) FROM SystemEvents;
+----------+
| COUNT(*) |
+----------+
| 16 |
+----------+
1 row in set (0.000 sec)
6, 通过 loganalyzer 展示数据库中的日志
6.1 目标
通过 loganalyzer 展示数据库中的日志
6.2 环境准备
三台主机
一台日志服务器,利用上一个案例实现,IP:10.1.1.40,
一台数据库服务器,利用上一个案例实现,IP:10.1.1.41
一台当httpd+php 服务器,并安装loganalyzer展示web图形,IP:101.1.42
6.3 步骤
6.3.1 在10.1.1.42主机上安装php和相关软件包
[root@localhost ~]# yum -y install httpd php-fpm php-mysqlnd php-gd
[root@localhost ~]# tar xf loganalyzer-4.1.12_\(1\).tar.gz
[root@localhost ~]# ll
total 4916
-rw-------. 1 root root 1195 May 4 20:04 anaconda-ks.cfg
drwxrwxr-x 5 root root 90 Apr 29 09:38 loganalyzer-4.1.12
-rw-r--r-- 1 root root 5028816 Jun 14 08:37 'loganalyzer-4.1.12_(1).tar.gz'
[root@localhost ~]#
[root@localhost ~]# mv loganalyzer-4.1.12/src/ /var/www/html/log
[root@localhost ~]# touch /var/www/html/log/config.php
[root@localhost ~]# chmod 666 /var/www/html/log/config.php
[root@localhost ~]# systemctl restart httpd php-fpm
6.3.2 基于web页面初始化
6.3.3 安全加固
chmod 644 /var/www/html/log/config.php
#注意图中数据库ip是41图中是错误的