首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

rsyslog + LogAnalyzer + EvtSys 搭建 Windows/Linux 集中式日誌監控系統全記錄

     編輯:PHP 綜合知識

架構總覽

┌─────────────┐     UDP:514      ┌──────────────┐     MySQL      ┌────────────────┐
│ Linux/Win   │ ──────────────▶  │  rsyslog     │ ─────────────▶  │  LogAnalyzer   │
│ 客戶端      │   Syslog 消息    │  服務端      │   寫入數據庫    │  Web 界面查看  │
└─────────────┘                  └──────────────┘                 └────────────────┘
       ▲                              ▲
       │ EvtSys (Windows)             │ ommysql 模塊
       └──────────────────────────────┘

第一階段:服務端部署

1. 環境準備

# CentOS 7 示例
yum install -y epel-release
yum install -y rsyslog rsyslog-mysql mariadb-server mariadb php php-mysql php-gd httpd

2. 數據庫初始化

systemctl start mariadb
mysql_secure_installation

# 導入 rsyslog 表結構
mysql -u root -p < /usr/share/doc/rsyslog-*/mysql-create-db.sql

# 創建專用用戶
mysql -u root -p -e "
CREATE DATABASE Syslog;
GRANT ALL ON Syslog.* TO 'logger'@'localhost' IDENTIFIED BY 'logger123';
FLUSH PRIVILEGES;
"

3. rsyslog.conf 核心配置

# /etc/rsyslog.conf
# 載入 MySQL 輸出模塊
module(load="ommysql")

# 模板:標準格式寫入數據庫
template(name="StdSQLFormat" type="list" option.sql="on") {
    constant(value="INSERT INTO SystemEvents (Message, Facility, Priority, FromHost, DeviceReportedTime, ReceivedAt) VALUES (")
    property(name="msg" format="json")
    constant(value=",")
    property(name="syslogfacility")
    constant(value=",")
    property(name="syslogpriority")
    constant(value=",")
    property(name="fromhost")
    constant(value=",")
    property(name="timereported" dateformat="mysql")
    constant(value=",")
    property(name="timegenerated" dateformat="mysql")
    constant(value=")")
}

# 所有日誌寫入 MySQL
*.* action(type="ommysql" server="127.0.0.1" db="Syslog" uid="logger" pwd="logger123" template="StdSQLFormat")

# 接收網絡日誌
module(load="imudp")
input(type="imudp" port="514" ruleset="remote")

ruleset(name="remote") {
    *.* action(type="ommysql" server="127.0.0.1" db="Syslog" uid="logger" pwd="logger123" template="StdSQLFormat")
}

# 本地日誌保留寫文件
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg :omusrmsg:*
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log

4. 啟動服務

systemctl enable --now rsyslog mariadb httpd
firewall-cmd --permanent --add-port=514/udp
firewall-cmd --permanent --add-service=http
firewall-cmd --reload

第二階段:LogAnalyzer Web 界面安裝

# 下載安裝
cd /var/www/html
wget https://download.adiscon.com/loganalyzer/loganalyzer-4.1.12.tar.gz
tar xzf loganalyzer-*.tar.gz
mv loganalyzer-*/src loganalyzer
touch loganalyzer/config.php
chmod 666 loganalyzer/config.php
chown -R apache:apache loganalyzer

# 瀏覽器訪問 https://server-ip/loganalyzer 按向導完成安裝
# 步驟:語言 → 數據庫配置 → 管理員賬號 → 完成

第三階段:Windows 客戶端部署

1. 下載 EvtSys

# 官方:https://www.evtsys.com/
# 解壓到 C:\EvtSys

2. 安裝為服務並配置轉發

C:\EvtSys> evtsys -i -h 192.168.1.100 -p 514
# -i 安裝服務
# -h rsyslog 服務端 IP
# -p 端口(默認 514)

net start evtsys

3. 驗證日誌流向

# 服務端查看數據庫
mysql -u logger -p Syslog -e "SELECT * FROM SystemEvents ORDER BY ID DESC LIMIT 5;"

# LogAnalyzer 界面應實時顯示 Windows 事件日誌

常見問題排查

現象排查方向
數據庫無數據1) rsyslog 錯誤日誌 /var/log/messages 2) ommysql 模塊是否加載 3) 防火牆 514/udp 4) MySQL 用戶權限
LogAnalyzer 顯示亂碼數據庫/表/連接字符集統一 utf8mb4,PHP mysqli 設置 charset
Windows 日誌不全EvtSys 配置 -f 參數指定要轉發的日誌類型
高並發寫入慢啟用 rsyslog action.queue.type="LinkedList" 異步隊列

生產環境優化建議

  1. 異步寫入隊列:防止數據庫阻塞導致日誌丟失
  2. 分表/分區:按月分區 SystemEvents 表,定期歸檔
  3. 索引優化:FromHost, DeviceReportedTime, Facility 建立聯合索引
  4. 日誌保留策略:配合 PARTITION BY RANGE 自動清理舊數據
  5. 告警集成:LogAnalyzer 內置郵件告警,或對接 Prometheus + Alertmanager

這套方案成熟穩定,支援 Linux/Windows/網絡設備全平台日誌聚合,是中小企業日誌中心的首選開源方案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved