架構概覽
- rsyslog:高效能 syslog 守護進程,支援模組化輸出(MySQL、Elasticsearch、Kafka 等)。
- LogAnalyzer:PHP Web 前端,解析資料庫日誌,提供儀表板、過濾、圖表、告警。
- MySQL:日誌存儲後端。
- Apache + PHP:Web 運行環境。
一鍵部署腳本(CentOS 6/7 適用,已修正語法與路徑)
#!/bin/bash
# rsyslog_loganalyzer_install.sh
# 執行前請確保:root 權限、網路通暢、關閉防火牆或開放 80/514/3306
set -euo pipefail
MYSQL_ROOT_PWD="StrongRootPwd123!"
RSYSLOG_DB_USER="rsyslog"
RSYSLOG_DB_PWD="RsyslogPwd456!"
LOGANLZR_DIR="/var/www/html/loganalyzer"
# 1. 安裝基礎套件
yum -y install epel-release
yum -y install mysql-server mysql-devel rsyslog rsyslog-mysql \
httpd php php-mysql php-gd php-common php-pdo \
gcc gcc-c++ make automake libtool zlib-devel
# 2. 啟動並安全初始化 MySQL
systemctl enable --now mysqld
mysqladmin -u root password "$MYSQL_ROOT_PWD"
# 3. 建立資料庫與表
mysql -uroot -p"$MYSQL_ROOT_PWD" < /etc/rsyslog.d/mysql.conf </dev/null || true
systemctl enable --now rsyslog
# 6. 部署 LogAnalyzer
cd /tmp
wget -q https://download.adiscon.com/loganalyzer/loganalyzer-4.1.12.tar.gz
tar xzf loganalyzer-4.1.12.tar.gz
mkdir -p "$LOGANLZR_DIR"
cp -r loganalyzer-4.1.12/src/* "$LOGANLZR_DIR"
cp -r loganalyzer-4.1.12/contrib/* "$LOGANLZR_DIR"
chown -R apache:apache "$LOGANLZR_DIR"
chmod -R 755 "$LOGANLZR_DIR"
# 7. 執行 Web 安裝向導(自動化部分需手動完成或用 Selenium)
systemctl enable --now httpd
echo "請瀏覽 https:///loganalyzer 完成 Web 安裝向導"
echo "資料庫設定:localhost / Syslog / $RSYSLOG_DB_USER / $RSYSLOG_DB_PWD"
read -p "Web 安裝完成後按 Enter 繼續..."
# 8. 降低資料庫權限(僅保留運行必需)
mysql -uroot -p"$MYSQL_ROOT_PWD" </loganalyzer 登入查看日誌。"
客戶端配置(發送日誌至中央伺服器)
# /etc/rsyslog.d/remote.conf
*.* @192.168.1.100:514 # UDP
# *.* @@192.168.1.100:514 # TCP(更可靠)
# 載入 imuxsock、imklog 等模組通常預設已啟用
systemctl restart rsyslog
常見問題與優化
| 問題 | 解決方案 |
| 終端不斷彈出日誌訊息 | 在 /etc/rsyslog.conf 註釋 *.emerg *,重啟 rsyslog |
| 大量日誌寫入 MySQL 慢 | 啟用 ommysql 批次插入:\$ActionQueueType LinkedList \$ActionQueueFileName rsyslog_queue \$ActionResumeRetryCount -1 \$ActionQueueSaveOnShutdown on |
| LogAnalyzer 顯示亂碼 | 確保資料庫、表、連接均為 utf8mb4;PHP htmlentities 指定 UTF-8 |
| 日誌保留策略 | 配合 partition 表或定期 DELETE / TRUNCATE 舊分區 |
生產環境建議升級
- 資料庫改用 ClickHouse / Elasticsearch 提升查詢效能與壓縮比。
- 前端遷移至 Grafana Loki / Kibana / Graylog。
- 傳輸層強制 TLS(
gtls 模組)保障日誌機密性。
- 採用 systemd-journald + rsyslog imjournal 統一收集容器/系統日誌。
總結
本腳本實現了 rsyslog + MySQL + LogAnalyzer 的全自動化部署,適合中小規模環境快速建立可視化中央日誌平台。大規模生產建議採用 ELK/EFK/Loki 等現代可觀測性棧。