茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1675595 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
PIMG_00071.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

小企鵝開談 : [轉貼]syslog-ng log server安裝說明

發表者 討論內容
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]syslog-ng log server安裝說明
syslog-ng log server安裝說明

一、syslog-ng的特異功能
經常check system event一直是系統管理上很容易被忽略的重要細節,原因在於大部分的system logs傳達的資訊是不重要的,以至於將重要的警訊淹沒。
如同syslog-ng的名稱,它是用以取代syslogd的next generation版本,原來的syslog是只能夠依priority及facility作分類,syslog-ng可以根據log的內容,以regular expression自訂分類及log的處理方式,並且支援以tcp/udp將log送到遠端的server,或是即時通知在線上的系統管理者,甚至能將log值當成某個program的標準輸入字串,直接將log作加工及分析。

二、安裝syslog-ng
請至
http://www.balabit.hu/en/downloads/syslog-ng/downloads/
下載syslog-ng及libol,版本有分1.4.x的stable version及1.5.x的development version,如果有打算將log直接輸入資料庫者,必須選擇1.5.x的版本。(p.s:syslog-ng的contrib裡針對不同的OS有不同的conf檔,我是用Red Hat 8.0)
(1)首先,請先關掉syslog避免他再重新開機時自動啟動造成衝突。
chkconfig --level 2345 syslog off
(2)安裝libol,依序下configure、make、make install指令
(3)解壓縮、安裝syslog-ng,依序下configure、make、make install指令
(4)安裝config scripts及設定系統
cp contrib/init.d.RedHat7.3 /etc/rc.d/init.d/syslog-ng
還有修改INIT_PROG = “/usr/local/sbin/syslog-ng”

然後執行以下指令(先在/usr/local/etc/下建一目錄syslog-ng)
cp contrib/syslog-ng.conf.RedHat /usr/local/etc/syslog-ng/syslog-ng.conf
chkconfig --level 2345 syslog-ng on
(5)最後測試看看
/etc/rc.d/init.d/syslog-ng start
(6)檢驗看看有沒有run
chkconfig –list
看看有沒有syslog-ng,且level 2,3,4,5是否標示為開啟
ps aux | grep syslog-ng
看看有沒有syslog-ng的deamon

三、syslog-ng的應用與範例
Syslog-ng的message path全部在syslog-ng.conf作編輯。在syslog-ng的message path中,可以包括多個sources、多個filter rules及多個destinations的同步多工處理。一般來說,採用syslog-ng最大的用途除了運用它分類的功能外,就是運用它的網路功能。如前所提,syslog-ng可以透過tcp或是udp的協定將log送到遠端的server作集中式的監控。
現在我們先假設一個情境,我們希望將幾台提供網路服務的server的log集中到一台server作管理,我們希望能夠將log值中含有特定facility code或特定priority的log儲存在本地端,並且將所有收集到的log值全部送到log server作分類以及儲存。原來的syslog做不到這麼多點,所以我們必須在每一台server安裝syslog-ng,各透過tcp送到log server,log server的syslog-ng.conf依server.conf的範例設定。詳細的syslog-ng config參數當然不只這些,實際設計系統時最好直接看看官方網站的reference manual (
http://www.balabit.hu/static/syslog-ng/ ... book1.html ) 。


server.conf

#設定options,語法為options { S1 ; S2 ; S3…};
#options主要是對整個configuration的共通設定

options { use_fqdn(yes); keep_hostname(yes); use_dns(yes); long_hostnames(off); sync(3); log_fifo_size(300); };

#設定input來源,語法為source source_ name {S1 ; S2 ; …};
#internal()表所有本機產生的log
# unix-stream("/dev/log")表來自本機的log檔,本機是Linux,若為BSD則需用
#unix-dgram,這是開啟一個AF_UNIX socket聽取目的檔案的message.
#收集本地端以及來自192.168.0.100 port 514這台server送來的log值,
#keep-alive(yes/no)決定是否保持連線直到收到sighup訊號

source src { unix-stream("/dev/log"); internal(); };
source remote { tcp(ip("127.0.0.100") port(514) keep-alive(yes)); };

#設定output目的地,語法為destination destination_ name {S1 ; S2 ; …};
#file(“path”):以檔案的方式存在local端
#usertty(“user_name”):即時通知特定的線上的使用者


destination lpr { file("/var/log/lpr.log"); };
destination mail { file("/var/log/mail.log"); };
destination messages { file("/var/log/messages"); };
destination console { usertty("root"); };

#設定filter條件,filter filter_name{expresson;}; expression為各條件以and or not
#連結
#facility(string1,string2):篩選出包含string1或string2其中之一個字串的log.
#level(S1..S2..S3) or priority(S1..S2..S3),篩選出包含其中之一level的log

filter f_lpr { facility(lpr); };
filter f_mail { facility(mail); };
filter f_messages { level(info..emerg) and not facility(mail,lpr); };
filter f_emergency { level(emerg); };

###############################################################
# 將設定好的source,filter,destination依需求作組合

log { source(src); filter(f_lpr); destination(lpr); };
log { source(src); filter(f_mail); destination(mail); };
log { source(src); filter(f_messages); destination(messages); };

log { source(src); filter(f_emergency); destination(console); };

###############################################################
#將收到的所有log依host分資料夾,再依該log的facility code分別儲存,
#並設定owner, group, permission, directory permission

destination hosts { file("/var/log/HOSTS/$HOST/$FACILITY" owner(root) group(root) perm(0600) dir_perm(0700) create_dirs(yes)); };

log { source(remote); destination(hosts); };
###############################################################
另外,我們必須將/etc/logrotate.d/syslog置換成以下syslog-ng:

/var/log/lpr.log {
postrotate
/bin/kill -HUP `cat /var/run/syslogd-ng.pid 2> /dev/null` 2> /dev/null ||
true
endscript
}

/var/log/mail.log {
postrotate
/bin/kill -HUP `cat /var/run/syslogd-ng.pid 2> /dev/null` 2> /dev/null ||
true
endscript
}

/var/log/messages {
postrotate

/bin/kill -HUP `cat /var/run/syslogd-ng.pid 2> /dev/null` 2> /dev/null ||
true
endscript
}

/var/log/lastlog {
postrotate
/bin/kill -HUP `cat /var/run/syslogd-ng.pid 2> /dev/null` 2> /dev/null ||
true
endscript
}
最後啟動syslog-ng!
#/etc/rc.d/init.d/syslog-ng start

四、結合database
(1)如果我們希望將log值存進資料庫的話,我們必須將先將database server建起來(這裡我們選擇mysql),我們必須產生一個syslog.sql以建立資料庫及資料表:
CREATE DATABASE syslog;

USE syslog;

CREATE TABLE logs (
host varchar(32) default NULL,
facility varchar(10) default NULL,
priority varchar(10) default NULL,
level varchar(10) default NULL,
tag varchar(10) default NULL,
date date default NULL,
time time default NULL,

program varchar(15) default NULL,
msg text,
seq int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (seq),
KEY host (host),
KEY seq (seq),
KEY program (program),
KEY time (time),
KEY date (date),
KEY priority (priority),
KEY facility (facility)
) TYPE=MyISAM;
然後執行mysql -u root -p < syslog.sql。
(1) 執行mkfifo /tmp/mysql.pipe
(2) 執行mysql -u root --password=passwd syslog < /tmp/mysql.pipe
(3) 最後,我們必須在syslog-ng.conf增加一條command:
destination d_mysql {
pipe("/tmp/mysql.pipe"

template("INSERT INTO logs (host, facility, priority, level, tag, date, time, program, msg) VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG', '$YEAR-$MONTH-$DAY', '$HOUR:$MIN:$SEC', '$PROGRAM', '$MSG' );\n") template-escape(yes));
};
log { source(net); destination(d_mysql);};
(4) 重開syslog-ng
/etc/init.d/syslog-ng stop # Stop syslog-ng
/etc/ini.d/syslog-ng start # Start syslog-ng

原文出處:資安論壇 • 檢視主題 - syslog-ng log server安裝說明
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]系統記錄工具 - Log + syslog-ng + mysql + php-syslog-ng

系統記錄工具 - Log + syslog-ng + mysql + php-syslog-ng

作者: cross  日期: 2006-11-14 16:28

1. install syslog-ng

 

2. vi syslog-ng.sql

#
# Table structure for table `logs`
#
CREATE DATABASE syslog;
USE syslog;
CREATE TABLE logs (
host varchar(32) default NULL,
facility varchar(10) default NULL,
priority varchar(10) default NULL,
level varchar(10) default NULL,
tag varchar(10) default NULL,
date date default NULL,
time time default NULL,
program varchar(15) default NULL,
msg text,
seq int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (seq),
KEY host (host),
KEY seq (seq),
KEY program (program),
KEY time (time),
KEY date (date),
KEY priority (priority),
KEY facility (facility)
) TYPE=MyISAM;

匯入資料庫

mysql -u root --password=syslog < syslog-ng.sql


 

使用pipe驅動器將訊息寫入/tmp/mysql.pipe

mkfifo /tmp/mysql.pipe       

 

3. 編輯加入

vi /etc/syslog-ng/syslog-ng.conf

## Log syslog-ng to mysql database
##
destination d_mysql {
      pipe("/tmp/mysql.pipe"
      template("INSERT INTO logs (host, facility, priority, level, tag, date,
      time, program, msg) VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG',
      '$YEAR-$MONTH-$DAY', '$HOUR:$MIN:$SEC', '$PROGRAM', '$MSG' ); ") template-escape(yes));
       };
log { source(s_sys); destination(d_mysql);
};

啟動服務

/etc/init.d/syslog-ng restart

 

4. 將記錄寫入資料庫


nohup mysql -u syslog --password=syslog syslog < /tmp/mysql.pipe &

 

5. 寫個script,開機時啟動

vi /path/syslog-ng_mysql.sh

#!/bin/bash
if [ -e /tmp/mysql.pipe ]; then
   mysql -u syslog --password=syslog syslog < /tmp/mysql.pipe
else
   mkfifo /tmp/mysql.pipe
   mysql -u syslog --password=syslog syslog < /tmp/mysql.pipe
fi

chmod u+x /path/syslog-ng_mysql.sh

 

vi /etc/rc.local

/path/syslog-ng_mysql.sh

6. 下載 php-syslog-ng.tar.gz

 

tar zxvf php-syslog-ng.tar.gz

 

vi php-syslog-ng/web/include/db_fns.php

$result = mysql_pconnect("localhost", "syslog", "syslog"); 

瀏覽 http://ip/php-syslog-ng/web

 


syslog-ng + remote

client端

vi /etc/syslog-ng/syslog-ng.conf

destination d_logserver { udp("192.168.1.100");};

# 或使用tcp port

#destination d_logserver { tcp("192.168.1.100")port(10514);};

server端

vi /etc/syslog-ng/syslog-ng.conf

source s_net {tcp(ip(0.0.0.0) port(10514); udp();};

log {source(s_sys); source(s_net); destination(d_mysql);};

ref: http://samlin2004.myweb.hinet.net/docs/log/syslog-ngInstallationGuide.htm

http://phorum.study-area.org/viewtopic.php?t=26137&highlight=syslog-ng



原文出處:系統記錄工具 - Log + syslog-ng + mysql + php-syslog-ng - Linux - 一又@CROSS [ SSORC.tw ]
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[教學]在CentOS5上無痛安裝syslog-ng
來說說冷日在CentOS 5上面安裝syslog-ng的經驗吧!

說在前面的是:
因為yum沒有syslog-ng,所以只能自己想辦法安裝!
而網路上看到一堆使用tar ball的安裝法,冷日實在是很懶得再搞tar和compile這東西。
所以後來找了一下,找到了比較簡易的安裝法,這裡和大家分享一下!

首先,先把需要的東西準備好:
1.libole2(還有libole2-devel)
2.eventlog
3.syslog-ng

前面兩個都是syslog-ng運行需要的東西,所以要先準備。
libole的話,這個可以直接用yum安裝就好了!
yum install -y libole*

eventlog比較麻煩點,因為yum也沒這東西,所以冷日去找了RPM來安裝,版本是eventlog-0.2.7-3.el5
既然有RPM,安裝就輕鬆多啦。
rpm -iUhv eventlog-0.2.7-3.el5.i386.rpm

最後就是安裝syslog-ng了,一樣的問題,yum沒有syslog-ng,那就去找RPM嘛,冷日用的版本是syslog-ng-2.1.4-1.el5
rpm -iUhv syslog-ng-2.1.4-1.el5.i386.rpm


安裝完成之後,syslog-ng的設定檔放在
/etc/syslog-ng
裡面。
設定的部份,前面的文章已經有說明了,冷日就不再重複多說,這裡提一下幾個要注意的地方!

1.syslog-ng安裝完成之後,記得要把原本系統syslog關閉!
檢查service:
chkconfig –list

關閉原本系統的syslog:
chkconfig --level 0123456 syslog off

啟動我們安裝好的syslog-ng:
chkconfig --level 0123456 syslog-ng on


2.logrotate要處理一下,冷日的作法是把原本的syslog複製成syslog-ng,然後修改內容。
所以冷日的
/etc/logrotate.d
資料夾會多一個syslog-ng檔,內容如下:
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd-ng.pid 2> /dev/null` 2> /dev/null || true
    endscript
}


到這裡為止,應該syslog-ng就已經安裝完成,不管你是要當log server還是要做log client,剩下的就看你們設定conf檔了。
可是如果身為log server卻一直好像沒收到client丟過來的資料怎麼檢查呢?
簡單阿,在你的server上執行tcpdump看丟過來的封包就知道啦(一般設備都是走udp 514,所以冷日這邊就只監看514Port了,tcpdump的詳細使用方法請自己找男人吧)!
tcpdump -vn port 514


OK!
一切順利的話,下課...有問題的大家再來討論吧!
前一個主題 | 下一個主題 | 頁首 | | |



Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|