Rsyslog to Php-Syslog-NG DB
.K.T. | 2010 年 03 月 02 日 | 下午 5:55之前因為公司有 Log Server 的需求
而又沒有經費商用的設備或軟體
所以就試著用免費的 phpLogCon
把公司要用的 Log Server 架了起來
為了怕我之後忘記怎麼做
就來這邊留個紀錄
之後有需要就能來這裡參考了
我的做法是
做一個 Syslog Server 收各設備的 Log
並將所收得的 Log 丟入資料庫中
利用 phpLogCon 的網頁介面進行管理及查詢
而我所用的伺服器作業系統為 CentOS
預設的 Log Service 好像是 syslogd(這點不是很確定)
無法直接將 syslog 丟到資料庫內
加上之前用習慣 Fedora
所以也習慣用 Rsyslog 做為 Log Service
因此
我就把 CentOS 預設的 Log Service 改為 Rsyslog
因為伺服器上的作業系統才新裝好
什麼軟體都還沒裝
所以要先安裝必要的東西
yum install php mysql-server phpmyadmin php-mcrypt php-mbstring php-gd rsyslog rsyslog-mysql
其中的 phpMyAdmin 雖不必要
但為了管理方便
我通常都會裝起來
接著確認相關服務會隨系統開機而啟動
並把 syslogd 改為 Rsyslog
chkconfig httpd on;
chkconfig mysqld on;
chkconfig syslog off;
chkconfig rsyslog on;
完成後開始修改 Rsyslog 的設定
vim /etc/rsyslog.conf
在開頭插入
$ModLoad ommysql.so
這樣 Rsyslog 才會載入 MySQL Module
才能直接將 Log 丟入資料庫
然後做一個名為 SyslogInsert 的範本
$template SyslogInsert,"insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values ('%msg
%', %syslogfacility%, '%FROMHOST%', %syslogpriority%, '%timereported:::date-mysql%', '%timegenerated:::date-mysql%', %iut%, '%syslogtag%')", SQL
寫好 Log Insert 進資料庫的指令
然後在最後加上
*.* : ommysql : localhost,Syslog,"使用者名稱","密碼";SyslogInsert
以將所有的 Log 均用 SyslogInsert 這個範本塞入資料庫中
(這邊的"使用者名稱"及"密碼"記得要改喔!)
為了讓 phpLogCon 能正常顯示中文
要再修改 phpLogCon 的 functions_common.php
vim ./include/functions_common.php
約在第 1007 行處(依 phpLogCon 版本不同可能有異)
將
return htmlentities($myStr);
改成
return htmlspecialchars($myStr);
這樣應該就行了
至於 phpLogCon 的安裝
及 MySQL 的設定
因為之前沒有記錄下來
所以
下次有機會再說吧






