实验
如何将某个服务重新定义日志
- 环境
将ssh服务从新定义日志文件和日志级别
实验
1.首先在rsyslog服务的配置文件定义一个符合自己日志类别
[root@centos7 ~]# vim /etc/rsyslog.conf #rsyslog的主配置文件
# Save boot messages also to boot.log
local7.* /var/log/boot.log
local0.* /var/log/sshd.log # 添加一行这个local0-7没有用的数字,local0.这个里如果写*则表示任何信息的记录,当然也可以选择记录那个级别的
- 修改sshd服务的配置文件
[root@centos7 ~]# vim /etc/ssh/sshd_config
# Logging
#SyslogFacility AUTH
SyslogFacility local0 # 这里修改成刚刚在rsyslog配置文件中定义的名字
#LogLevel INFO # 这个是日志级别默认是没有启用的
- 修改好配置文件后重启这两个服务
systemctl restart sshd
systemctl restart rsyslog
- 测试
[root@centos7 ~]# cat /var/log/sshd.log
Feb 3 15:07:18 centos7 sshd[6206]: Server listening on 0.0.0.0 port 22.
Feb 3 15:07:18 centos7 sshd[6206]: Server listening on :: port 22.
Feb 3 15:07:38 centos7 sshd[6221]: Accepted password for root from 192.168.27.1 port 49380 ssh2
- 用logger这个命令来测试local0是否能记录
[root@centos7 ~]# logger -p local0.info "this is a test log" # 用-p选项
[root@centos7 ~]# cat /var/log/sshd.log
Feb 3 15:07:18 centos7 sshd[6206]: Server listening on 0.0.0.0 port 22.
Feb 3 15:07:18 centos7 sshd[6206]: Server listening on :: port 22.
Feb 3 15:07:38 centos7 sshd[6221]: Accepted password for root from 192.168.27.1 port 49380 ssh2
Feb 3 15:28:02 centos7 root: this is a test log
当日志发生时用广播的方式通知特定的用户
- 修改rsyslog的配置文件
# Save boot messages also to boot.log
local7.* /var/log/boot.log
local0.* /var/log/sshd.log
local1.* guo,root #可以通知多个用户,如果是通知多个用户就写*
- 重启服务
systemctl restart rsyslog
- 测试
[root@centos7 ~]# logger -p local1.info 'this is test'
[root@centos7 ~]# root:this is test # 这个可以的
- 注意用su切换的用户是收不到广播通知,需要登录才可以
实现将日志存放到日志服务器中
- 将centos7上的日志存放到centos6的主机中进行管理
操作
- 在centos6中在rsyslog配置文件在启用日志端口监听模块
# Provides UDP syslog reception
$ModLoad imudp # 加载模块
$UDPServerRun 514 # 监听udp的514端口,因为udp不是安全的传输,所以我们使用tcp
# Provides TCP syslog reception
$ModLoad imtcp # 加载模块
$InputTCPServerRun 514 # 监听tcp的514端口
- 重启服务并且查看端口是否处于监听状态
[root@centos6 ~]# service rsyslog restart
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
[root@centos6 ~]# ss -ntlu |grep 514
udp UNCONN 0 0 *:514 *:*
udp UNCONN 0 0 :::514 :::*
tcp LISTEN 0 25 :::514 :::*
tcp LISTEN 0 25 *:514 *:*
- 配置centos7的rsyslog配置文件文件
[root@centos7 ~]# vim /etc/rsyslog.conf
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
#*.info;mail.none;authpriv.none;cron.none /var/log/messages # 当开启将日志转发给日志服务器时,本地默认是不会存日志的,所有也可以把这一行注释去掉,这样本地也会存放日志
*.info;mail.none;authpriv.none;cron.none @@192.168.27.128 # 如果只是用udp的话只用一个@符号就可以
- 重启服务
systemctl restart rsyslog
- 测试
[root@centos7 ~]# logger "this is test 2th"
[root@centos7 ~]# logger "this is test 2th"
[root@centos6 ~]# tailf /var/log/messages
Feb 3 16:34:37 centos7 root: this is test 2=th
Feb 3 16:34:38 centos7 root: this is test 2=th
将日志存放到数据库中
- 环境
- 一台centos6的主机,和一台有mariadb的centos7的主机
- 将centos6上的日志存放到centos7中
操作
- 用yum或者编译,二进制安装mariadb数据库
[root@centos7 ~]# yum install mariadb-server.x86_64 1:5.5.56-2.el7
[root@centos7 ~]# systemctl enable mariadb
[root@centos7 ~]# systemctl start mariadb
- 在centos6中安装mysql的模块
[root@centos6 ~]# rpm -ql rsyslog-mysql.x86_64 0:5.8.10-10.el6_6
/lib64/rsyslog/ommysql.so
/usr/share/doc/rsyslog-mysql-5.8.10
/usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql # 这是一个mariadb脚本,这里会创建表等内容。
package 0:5.8.10-10.el6_6 is not installed
- 因为这个脚本在centos6中,所以我们将这个脚本复制掉7中
[root@centos6 ~]# scp /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql 192.168.27.129:
- 将这个脚本导入到mariadb中
MariaDB [(none)]> source createDB.sql
Query OK, 1 row affected (0.00 sec)
Database changed
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.00 sec)
MariaDB [Syslog]>
# 查看是否生成数据库和表
ariaDB [Syslog]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| Syslog | # 这个就是生成的数据库
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
MariaDB [Syslog]>
- 创建一个mysql用户并且授权有Syslog数据库的管理权限
MariaDB [Syslog]> flush privileges; # 因为刚刚对数据库做了增的操作,所有要刷新一下
MariaDB [Syslog]> grant all on Syslog.* to syslog@'192.168.27.128' identified by 'guo123456';
Query OK, 0 rows affected (0.00 sec)
- 测试一下用这个用户是否可以连接数据库
[root@centos6 ~]# mysql -usyslog -pguo123456 -h192.168.27.129
Welcome to the MySQL monitor. Commands end with ; or \g.
- 修改centos6上的rsyslog配置文件
#### MODULES ####
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
#$ModLoad immark # provides --MARK-- message capability
$ModLoad ommysql # 加载这个模块,就是刚刚用yum安装的
#### RULES ####
*.info;mail.none;authpriv.none;cron.none :ommysql:192.168.27.129,Syslog,syslog,guo123456 #:模块:数据库主机IP,数据库文件,用户名,密码
- 重启rsyslog服务
[root@centos6 ~]# service rsyslog restart
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
- 测试
MariaDB [Syslog]> select * from SystemEvents\G ;
*************************** 183. row ***************************
ID: 183
CustomerID: NULL
ReceivedAt: 2017-11-11 04:13:15
DeviceReportedTime: 2017-11-11 04:13:15
Facility: 1
Priority: 5
FromHost: centos6
Message: test
NTSeverity: NULL
Importance: NULL
EventSource: NULL
EventUser: NULL
EventCategory: NULL
EventID: NULL
EventBinaryData: NULL
MaxAvailable: NULL
CurrUsage: NULL
MinUsage: NULL
MaxUsage: NULL
InfoUnitID: 1
SysLogTag: root:
EventLogType: NULL
GenericFileName: NULL
SystemID: NULL
183 rows in set (0.00 sec)
- 当然这样看非常不方便,我们可以让它在web页面显示,
- 这里我们还需要一台当web服务器的机器,安装httpd,php等安装包
- web服务器的配置,为了省事这里都是以yum安装的,当然如果要定制就要用编译安装这些
yum install -y httpd php-gd php php-mysql
- 测试一下http是否可以连接到数据,当然还需要在数据库中创建一个账号,因为syslog这个账号只能192.168.27.128能连接
MariaDB [(none)]> grant all on Syslog.* to log@'192.168.27.%' identified by 'guo123456';
Query OK, 0 rows affected (0.00 sec)
[root@localhost html]# vim /var/www/html/info.php
<?php
$mysqli=new mysqli("192.168.27.129","log","guo123456");
if(mysqli_connect_errno()){
echo "Failure";
$mysqli=null;
exit;
}
echo "OK";
$mysqli->close();
?>
# 启动服务
[root@localhost html]# systemctl start httpd
- 测试一下
- 可以正常连接数据库
- 下载loganalyzer这是一个php写的程序用来展示数据库中的日志
tar xvf loganalyzer-4.1.6.tar.gz
cd loganalyzer-4.1.6
cp -r src /var/www/html/log # 因为解压出来很多文件,我们只需要src的目录的文件
touch /var/www/html/log/config.php # 创建这个文件这是向导是要写的配置
chmod 666 /var/www/html/log/config.php # 改权限
- 现在打开浏览器进行向导
- 这里一定要注意,数据库需要到mysql查一下表
- 这样就完成
- 这里一定要注意,数据库需要到mysql查一下表
- 将刚刚的配置文件权限修改一下
chmod 644 /var/www/html/log/config.php