OpenEuler部署LoganaLyzer
一 概述
LogAnalyzer工具提供了一个易于使用,功能强大的前端,用于搜索,查看和分析网络活动数据,包括系统日志,事件日志和其他许多日志源。由于它只是将数据展示到我们用户的面前,所以数据本身需要由另一个程序收集,比如syslogd,rsyslog(现在是发行版的默认的syslogd),WinSyslog或MonitorWare代理。LogAnalyzer同样适用于Linux和Windows。它主要是用PHP编写的自由软件,基于GPL的开源应用程序。数据可以从数据库,也可以从纯文本文件而获得。
二 基础环境
[root@localhost ~]# hostnamectlStatic hostname: (unset)
Transient hostname: localhostIcon name: computer-vmChassis: vm 🖴Machine ID: 73f9288b2d7349989b9b794dc27a5f70Boot ID: fc9a0f209e594fa8aea1ca00c5d34093Virtualization: vmwareOperating System: openEuler 24.03 (LTS-SP1)Kernel: Linux 6.6.0-72.0.0.76.oe2403sp1.x86_64Architecture: x86-64Hardware Vendor: VMware, Inc.Hardware Model: VMware20,1Firmware Version: VMW201.00V.20192059.B64.2207280713Firmware Date: Thu 2022-07-28Firmware Age: 3y 4w 1d[root@localhost ~]# dnf update -y关闭防火墙&&添加防火墙规则
systemctl stop firewalldsudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# 如果需要从其他服务器接收日志,添加 rsyslog 服务
sudo firewall-cmd --permanent --add-service=rsyslog
sudo firewall-cmd --reload
三 安装部署
3.1 MariaDB安装及配置
[root@localhost ~]#dnf install mariadb-server mariadb -y[root@localhost ~]#systemctl enable --now mariadb#运行 MariaDB 安全初始化脚本:
mysql_secure_installation--导入数据表MariaDB [Syslog]> source /usr/share/doc/rsyslog/mysql-createDB.sql;MariaDB [Syslog]> show tables;
+------------------------+
| Tables_in_Syslog |
+------------------------+
| SystemEvents |
| SystemEventsProperties |
+------------------------+
2 rows in set (0.001 sec)MariaDB [Syslog]> grant all privileges on Syslog.* to 'rsyslog'@'localhost' identified by 'you_pasword';
Query OK, 0 rows affected (0.001 sec)MariaDB [Syslog]> grant all privileges on Syslog.* to 'rsyslog'@'%' identified by 'you_pasword';
Query OK, 0 rows affected (0.001 sec)MariaDB [Syslog]> flush privileges;
Query OK, 0 rows affected (0.001 sec)MariaDB [Syslog]> SELECT * FROM SystemEvents;如果web页面登陆之后出现空白页面,查看 SystemEvents 表的结构,
DESC SystemEvents;添加缺失的 processid 字段
-- 根据 LogAnalyzer 代码的要求,添加 VARCHAR 类型的 processid 字段
ALTER TABLE SystemEvents ADD COLUMN processid VARCHAR(60) DEFAULT NULL AFTER FromHost;--核对表结构数据:(完整的结构)
MariaDB [Syslog]> SHOW COLUMNS FROM SystemEvents;
+--------------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+------------------+------+-----+---------+----------------+
| ID | int(10) unsigned | NO | PRI | NULL | auto_increment |
| CustomerID | bigint(20) | YES | | NULL | |
| ReceivedAt | datetime | YES | | NULL | |
| DeviceReportedTime | datetime | YES | | NULL | |
| Facility | smallint(6) | YES | | NULL | |
| Priority | smallint(6) | YES | | NULL | |
| FromHost | varchar(63) | YES | | NULL | |
| Message | text | YES | | NULL | |
| NTSeverity | int(11) | YES | | NULL | |
| Importance | int(11) | YES | | NULL | |
| EventSource | varchar(60) | YES | | NULL | |
| EventUser | varchar(60) | YES | | NULL | |
| EventCategory | int(11) | YES | | NULL | |
| EventID | int(11) | YES | | NULL | |
| EventBinaryData | text | YES | | NULL | |
| MaxAvailable | int(11) | YES | | NULL | |
| CurrUsage | int(11) | YES | | NULL | |
| MinUsage | int(11) | YES | | NULL | |
| MaxUsage | int(11) | YES | | NULL | |
| InfoUnitID | int(11) | YES | | NULL | |
| SysLogTag | varchar(60) | YES | | NULL | |
| EventLogType | varchar(60) | YES | | NULL | |
| GenericFileName | varchar(60) | YES | | NULL | |
| SystemID | int(11) | YES | | NULL | |
| processid | varchar(60) | NO | | | |
| checksum | int(11) unsigned | NO | | 0 | |
+--------------------+------------------+------+-----+---------+----------------+
26 rows in set (0.002 sec)
3.2 Rsyslog-mysql安装及配置
[root@localhost ~]#dnf install rsyslog-mysql -y[root@localhost ~]#systemctl enable --now rsyslog[root@localhost /var/www/html]#vim /etc/rsyslog.conf#### MODULES ####在Modules模块下写入以下配置$ModLoad ommysql
*.* :ommysql:localhost,Syslog,rsyslog,you_password
$ModLoad immark # immark为模块名,支持日志标记
$ModLoad imudp # imudp 为模块名,支持udp协议
$UDPServerRun 514 # 允许514端口接收使用UDP协议转发过来的日志
$ModLoad imtcp # imudp 为模块名,支持tcp协议
$InputTCPServerRun 514 # 允许514端口接收使用TCP协议转发过来的日志另一种格式,取消注释imklog,immark
module(load="imklog") # reads kernel messages (the same are read from journald)
module(load="immark") # provides --MARK-- message capabilitymodule(load="imudp") # needs to be done just once
input(type="imudp" port="514")module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")module(load="ommysql")
*.* action(type="ommysql" server="localhost" db="Syslog" uid="rsyslog" pwd="Huawei@123")[root@localhost ~]#systemctl restart rsyslog && systemctl status rsyslog.service
3.3 httpd服务安装及配置及安装 PHP 及必要扩展
[root@localhost ~]# dnf install httpd -y[root@localhost ~]# systemctl enable --now httpd[root@localhost ~]# vim /etc/httpd/conf/httpd.confDirectoryIndex index.php index.html [root@localhost ~]# systemctl restart httpd && systemctl status httpd[root@localhost ~]# ss -tnl[root@localhost ~]# dnf install php php-fpm php-cli php-common php-mysqlnd php-gd php-mbstring php-xml php-json php-opcache php-curl -y[root@localhost ~]# systemctl enable --now php-fpm.service在OpenEuler系统中默认使用高性能但不兼容的 event MPM,LogAnalyzer 依赖 mod_php,因此在 OpenEuler 的默认 Apache 配置下无法运行。在 OpenEuler 上,手动修改 Apache 配置,停用 mpm_event 并启用 mpm_prefork。vim /etc/httpd/conf.modules.d/00-mpm.conf取消此项注释:
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so将此项添加注释:
LoadModule mpm_event_module modules/mod_mpm_event.so重启服务:
[root@localhost ~]#systemctl restart httpd
3.3.1
拓展
1. 理解 MPM (Multi-Processing Module)
MPM 决定了 Apache 如何处理并发请求。主流的 MPM 有:
prefork
: 一个非线程型的、预派生的 MPM。
- 工作方式: 主进程预先启动一批子进程,每个子进程在同一时间只处理一个请求。
- 关键特点: 每个进程只使用一个线程。这是最古老、最稳定的模式,兼容性最好,尤其是对于那些不是线程安全的库(如旧版的
mod_php
)。event
: 一个现代化的、基于worker
MPM 的变体。
- 工作方式: 使用多个子进程,每个子进程又包含多个工作线程,同时还有一个单独的监听线程来管理Keep-Alive连接。
- 关键特点: 高性能,能更好地处理大量并发连接。它是许多现代Linux发行版的默认MPM。
worker
:event
MPM 的前身,现在已较少使用。2. 关键依赖:
mod_php
与 MPM 的兼容性
mod_php
是一个 Apache 模块,它将 PHP 解释器直接集成到 Apache 进程中。- 很多传统的 PHP 应用(包括 LogAnalyzer 以及更著名的 phpMyAdmin)在部署文档中都会建议使用
prefork
MPM。- 原因:
mod_php
本身不是线程安全的(Thread-Safe)。它被设计为运行在prefork
这种多进程、单线程的环境中。如果强行将它加载到event
或worker
这种多线程的 MPM 中,同一个进程内的多个线程可能会同时调用mod_php
的非线程安全代码,从而导致段错误(Segmentation Fault)、数据损坏或各种诡异的不可预测行为。
3.4下载和安装 LogAnalyzer
[root@localhost ~]# cd /var/www/html
[root@localhost /var/www/html]# wget https://download.adiscon.com/loganalyzer/loganalyzer-4.1.13.tar.gz[root@localhost /var/www/html]# tar -xf loganalyzer-4.1.13.tar.gz[root@localhost /var/www/html]# mkdir /var/www/html/loganalyzer[root@localhost /var/www/html]# rsync -a loganalyzer-4.1.13/src/* /var/www/html/loganalyzer
[root@localhost /var/www/html]# rsync -a loganalyzer-4.1.13/contrib/* /var/www/html/loganalyzer[root@localhost /var/www/html]# chown +x loganalyzer/*.sh
[root@localhost /var/www/html]# ./configure.sh
四 web页面配置
访问http://IP/loganalyzer
4.1 Step 1-先决条件
此步骤如果有报错
,检查/var/www/html/srv
下的config.php
权限是不是666
4.2 Step 2-验证文件权限
4.3 Step 3-基础设置
4.4 Step 4-创建表
4.5 Step 5-检查SQL结果
4.6 Step 6-创建用户
4.7 Step 7-创建系统日志源
4.8 Step 8-完成
五 汉化
/var/www/html/loganalyzer/lang在此目录下上传汉语言包并解压重启httpd服务即可
刷新web页面,在页面右上角Select Language选择Chinaese