Linux日志管理实验

实验

如何将某个服务重新定义日志

  • 环境
    将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.这个里如果写*则表示任何信息的记录,当然也可以选择记录那个级别的
  1. 修改sshd服务的配置文件
[root@centos7 ~]# vim /etc/ssh/sshd_config 
# Logging
#SyslogFacility AUTH
SyslogFacility local0   # 这里修改成刚刚在rsyslog配置文件中定义的名字
#LogLevel INFO    # 这个是日志级别默认是没有启用的
  1. 修改好配置文件后重启这两个服务
systemctl restart sshd
systemctl restart rsyslog
  1. 测试
[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
  1. 用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

当日志发生时用广播的方式通知特定的用户

  1. 修改rsyslog的配置文件
# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log
local0.*                                                /var/log/sshd.log
local1.*                                                guo,root    #可以通知多个用户,如果是通知多个用户就写*
  1. 重启服务
systemctl  restart rsyslog
  1. 测试
[root@centos7 ~]# logger -p local1.info 'this is test' 
[root@centos7 ~]#  root:this is test    # 这个可以的
  1. 注意用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端口
  1. 重启服务并且查看端口是否处于监听状态
[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                   *:*    
  1. 配置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的话只用一个@符号就可以
  1. 重启服务
systemctl restart rsyslog
  1. 测试
[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

将日志存放到数据库中

  • 环境
    1. 一台centos6的主机,和一台有mariadb的centos7的主机
    2. 将centos6上的日志存放到centos7中
操作
  1. 用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
  1. 在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
  1. 因为这个脚本在centos6中,所以我们将这个脚本复制掉7中
[root@centos6 ~]# scp /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql 192.168.27.129:
  1. 将这个脚本导入到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]> 
  1. 创建一个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)
  1. 测试一下用这个用户是否可以连接数据库
[root@centos6 ~]# mysql -usyslog -pguo123456 -h192.168.27.129    
Welcome to the MySQL monitor.  Commands end with ; or \g.
  1. 修改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,数据库文件,用户名,密码
  1. 重启rsyslog服务
[root@centos6 ~]# service rsyslog restart
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]
  1. 测试
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
  1. 测试一下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      
 $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
  1. 测试一下

    • 可以正常连接数据库
  2. 下载loganalyzer这是一个php写的程序用来展示数据库中的日志
    • http://loganalyzer.adiscon.com/downloads/
 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  # 改权限
  1. 现在打开浏览器进行向导





    • 这里一定要注意,数据库需要到mysql查一下表
    • 这样就完成
  2. 将刚刚的配置文件权限修改一下
chmod 644 /var/www/html/log/config.php

你可能感兴趣的:(linux,日志)