29、构建可视化日志管理服务器

我们可以通过集中式日志服务器将多台机器的日志收集在一个日志服务器,然后通过脚本或者其他方式去分析,但是真正做过运维的小伙伴明白,日子收集在硬盘上,硬盘的空间有限且大文件分析起来IO压力超级大,分析日志需要高超的技术,一般运维人员分析起来会很困难,更无法实时的去查看某个机器的日志。这样的话我们的日志收集就变成了真正意义上的收集了,收集起来如何利用就变成了一个难题,总结一下主要的问题就是以下几点:

  • 日志文件巨大,硬盘IO压力大
  • 无法实时分析
  • 分析需要消耗很多计算机资源且困难

如何解决这个问题呢?

  • IO压力: 我们可以将日志收集在数据库中,海量的日志通过分布式存储的底层支撑加上数据库对数据的高效管理,使得数据读写变得轻松,避免了原理日志服务器的 IO 压力。
  • 无法实时分析:可以部署一个 日志分析系统来辅助分析,苦难的分析工作瞬间变得简单。
  • 分析需要消耗很多计算机资源: 分布式处理分担处理压力

高性能的日志收集、存储、分析架构,同时也是一个可以使用 web 页面查看日志的可视化架构:
rsyslog + mariadb + loganalyzer

一、 server 端的环境准备 和 设置

1.1、安装软件包

bash 复制代码
[root@long90 ~]# dnf install mariadb mariadb-server rsyslog-mysql-8.2102.0-5.el8.x86_64 -y

1.2、配置 mariadb 服务

bash 复制代码
[root@long90 ~]# systemctl restart mariadb.service
[root@long90 ~]# systemctl status mariadb.service
● mariadb.service - MariaDB 10.3 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2022-11-28 19:47:31 CST; 21s ago

设置 mysql root 密码

bash 复制代码
[root@long90 ~]# mysqladmin -u root password Tangyulong90?
[root@long90 ~]# cd /usr/share/doc/rsyslog/

测试 mariadb

bash 复制代码
[root@long90 rsyslog]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.3.28-MariaDB MariaDB Server
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.001 sec)

导入 日志数据库架构 Syslog

bash 复制代码
[root@long90 rsyslog]# mysql -u root -p < mysql-createDB.sql
Enter password:
[root@long90 rsyslog]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 10.3.28-MariaDB MariaDB Server
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| Syslog             |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.001 sec)

配置用户跟权限

bash 复制代码
MariaDB [(none)]> create user 'syslogroot'@'%';
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]> grant all on Syslog.* to 'syslogroot'@'127.0.0.1' identified by 'syslogpasswd';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> grant all on Syslog.* to 'syslogroot'@'192.168.8.86' identified by 'syslogpasswd';
Query OK, 0 rows affected (0.000 sec)
MariaDB [none]> grant all on Syslog.* to 'syslogroot'@'192.168.8.8' identified by 'syslogpasswd';
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]> grant all on Syslog.* to 'syslogroot'@'192.168.8.1' identified by 'syslogpasswd';
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> quit;

物理机 win11 ip 192.168.8.1

1.3、 修改 rsyslog 服务的配置文件

服务器端:192.168.8.8

bash 复制代码
[root@long90 rsyslog]# vim /etc/rsyslog.conf
22 # Provides TCP syslog reception
23 # for parameters see http://www.rsyslog.com/doc/imtcp.html
24 module(load="imtcp") # needs to be done just once
25 input(type="imtcp" port="514")
26 module(load="ommysql")

66
67 # 使用 ommysql 模块,将日志信息发送到日志服务192.168.8.8中的 Syslog 数据库
68 *.*     :ommysql:192.168.8.8,Syslog,syslogroot,syslogpasswd

[root@long90 rsyslog]# systemctl restart rsyslog.service

二、测试

2.1、测试数据能否记录到数据库中

bash 复制代码
[root@long90 ~]# logger "this is a test from 192.168.8.8."

MariaDB [Syslog]> select * from SystemEvents\G
*************************** 1. row ***************************
                ID: 1
        CustomerID: NULL
        ReceivedAt: 2022-11-28 20:48:11
DeviceReportedTime: 2022-11-28 20:48:11
          Facility: 1
          Priority: 5
          FromHost: long90
           Message: this is  a test 192.168.8.8; # 看到之前使用 logger 产生的日志信息及代表 rsyslog 可以将日志信息存入数据库中
        NTSeverity: NULL

2.2、设置 客户端 192.168.8.86

bash 复制代码
[root@rhel8 ~]# yum install rsyslog-mysql.x86_64 -y
[root@rhel8 ~]# vim /etc/rsyslog.conf
22 # Provides TCP syslog reception
23 # for parameters see http://www.rsyslog.com/doc/imtcp.html
24 module(load="imtcp") # needs to be done just once
25 input(type="imtcp" port="514")
26 module(load="ommysql")

local7.*                                                /var/log/boot.log
*.*     @192.168.8.8
#*.*    @@192.168.8.8
*.*     :ommysql:192.168.8.8,Syslog,syslogroot,syslogpasswd
[root@rhel8 ~]# systemctl restart rsyslog.service

2.3、在服务端 192.168.8.8 查看数据是否保存到数据库 Syslog 中

bash 复制代码
MariaDB [Syslog]> select * from SystemEvents\G
...
          FromHost: rhel8
           Message: hello this is a test from 192.168.8.86.
        NTSeverity: NULL
...

三、sever (192.168.8.8)端 安装支持 web 页面查看日志的工具 loganalyzer

3.1、下载 loganalyzer-4.1.8.tar.gz

3.2、搭建 LAMP

bash 复制代码
dnf install httpd php php-mysqlnd php-gd -y
tar xf loganalyzer-4.1.8.tar.gz
cd loganalyzer-4.1.8/
cp -r src/* /var/www/html/
cp contrib/* /var/www/html/
cd /var/www/html/
sh configure.sh
systemctl restart httpd
# 创建 loganalyzer 数据库
mysql -u root -p
MariaDB [(none)]> create database loganalyzer;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> create user 'loganalyzer'@'%';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> grant all on loganalyzer.* to loganalyzer@'192.168.8.8' identified by 'loganalyzer';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> quit;

3.3、打开浏览器,部署 loganalyzer











相关推荐
小王C语言5 小时前
封装红黑树实现mymap和myset
linux·服务器·算法
对岸住着星星5 小时前
断电重启后自动重连WiFi并分配固定IP的Armbian脚本
服务器·网络·tcp/ip
dessler5 小时前
Elasticsearch(ES)-Logstash
linux·运维·elasticsearch
lht6319356125 小时前
Ubuntu Server系统安装谷歌浏览器
linux·运维·ubuntu
hkNaruto6 小时前
【DevOps】基于Nexus部署内网ubuntu 2204系统APT代理镜像仓库操作手册
运维·ubuntu·devops
JanelSirry6 小时前
DevOps是什么,有什么作用,一般用来干嘛
linux·运维·devops
老坛程序员6 小时前
Coze 与 n8n 深度对比:AI智能体平台与工作流自动化的核心博弈
运维·人工智能·自动化
爱上妖精的尾巴6 小时前
5-22 WPS JS宏reduce数组的归并迭代应用(实例:提取最大最小值的记录)
服务器·前端·javascript·笔记·wps·js宏
望获linux6 小时前
【实时Linux实战系列】FPGA 与实时 Linux 的协同设计
大数据·linux·服务器·网络·数据库·fpga开发·操作系统