http://www.balabit.com/ より以下のものを GET.
CentOS 5 on VMWare Server
# cp eventlog-0.2.7.tar.gz /usr/src/redhat/SOURCES/eventlog_0.2.7.tar.gz # tar xvzf eventlog-0.2.7.tar.gz # cp eventlog-0.2.7/eventlog.spec.bb /usr/src/redhat/SPECS # cd /usr/src/redhat/SPECS # rpmbuild -bb eventlog.spec.bb # cd /usr/src/redhat/RPMS/i386 # rpm -ivh libevtlog-dev-0.2.7-1.i386.rpm libevtlog0-0.2.7-1.i386.rpm
# cp syslog-ng-2.0.8.tar.gz /usr/src/redhat/SOURCES/syslog-ng_2.0.8.tar.gz # tar xvzf syslog-ng-2.0.8.tar.gz # cp cp syslog-ng-2.0.8/syslog-ng.spec.bb /usr/src/redhat/SPECS # cd /usr/src/redhat/SPECS # rpmbuild -bb syslog-ng.spec.bb # cd /usr/src/redhat/RPMS/i386 # rpm -ivh syslog-ng-2.0.8-1.i386.rpm
# yum install mysql mysql-server # chkconfig mysqld on # /etc/init.d/mysqld start
# /usr/bin/mysqladmin -u root password 'new-password' # /usr/bin/mysqladmin -u root@centos.example.co.jp password 'new-password'
# mysqladmin -p create syslogng
# mysql -p syslogng mysql> 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_time` datetime NOT NULL, -> `program` varchar(32) 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 `priority` (`priority`), -> KEY `facility` (`facility`) -> );
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON syslogng.* TO syslogng@localhost IDENTIFIED BY 'syslogng1111'; mysql> SELECT host,usre,password FROM mysql.user; <- 確認
syslog-ng の RPM パッケージをインストールした時点で syslog は無効になり,syslog-ng が有効となる.
ただし,syslog-ng の設定はほとんどなされていない状態なので, /etc/syslog-ng/syslog-ng.conf を編集する必要がある.
とりあえず,以前の syslog と同じような出力にするために, コメントアウトされている設定部分をすべてアンコメントする.
で,次の修正もしておく.(修正しなくても動くようだけど)
#unix-dgram("/dev/log"); unix-stream("/dev/log");
以下を追加
# For Avast-ng template t_sql { 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); }; destination d_mysql { pipe("/var/log/mysql.pipe" template(t_sql)); }; log { source(s_local); source(s_remote); destination(d_mysql);};
# mkfifo /var/log/mysql.pipe # vi /usr/local/sbin/syslog2mysql.sh #!/bin/sh # Get MySQL PID get_mysql_option(){ result=`/usr/bin/my_print_defaults "$1" | sed -n "s/^--$2=//p" | tail -n 1` if [ -z "$result" ]; then result="$3" fi } get_mysql_option mysql_safe pid-file "/var/run/mysqld/mysqld.pid" mypidfile="$result" MYSQLPID=`cat "$mypidfile" 2>/dev/null ` # Only Run during MySQL is running if [ -n "$MYSQLPID" ]; then # IS there mysql.pipe if [ -e /var/log/mysql.pipe ]; then while [ -e /var/log/mysql.pipe ] do /usr/bin/mysql --user=syslogng --password=syslogng1111 \ syslogng < /var/log/mysql.pipe sleep 5 done else mkfifo /var/log/mysql.pipe fi fi # chmod 700 /usr/local/sbin/syslog2mysql.sh # /usr/local/sbin/syslog2mysql.sh &
このコマンドは MySQL が起動してから実行する
# mysql --user=syslogng --password=XXXXX syslogng mysql> SELECT * FROM logs LIMIT 10;
http://code.google.com/p/php-syslog-ng/ から
を GET する.
php-syslog-ng は 2.9.4 から,ちょっと仕様が変わった. というか,syslog-ng と MySQL とのやり取りを socket ファイルを 使わずにやるようになった. だから,添付されているインストール手順(html/INSTALL-STEPS)は ちょっと現状にあっていない部分がある.
php-syslog-ng の DocumentRoot ディレクトリを作成する. ここでは,RedHat の ServerRoot 以下に作成する.
# mkdir /var/www/php-syslog-ng # cd /var/www/php-syslog-ng
Skip
ソースを展開する.
# tar xvzf HOGE/php-syslog-ng-2.9.6.tgz
Apache のバーチャルホストエントリを追加する. って,インストール手順には書いてあるけれど, 想定しているのは「ログサーバ」なので, Apache を php-syslog-ng 以外では利用しない.
なので,ドキュメントのエイリアスで対応しよう. また,ログファイルをおくディレクトリを掘っているが, これも行わない.
script/apache.vhost を参考に次のようなファイルを /etc/httpd/conf.d/syslog-ng.conf として作成する.
# PHP-SYSLOG-NG # DocumentRoot /www/php-syslog-ng/html # <Directory /> # Options FollowSymLinks # AllowOverride All # </Directory> Alias /php-syslog-ng /var/www/php-syslog-ng/html <Location /usage> Order deny,allow Deny from all Allow from 127.0.0.1 Allow from ::1 # Allow from .example.com </Location> <Directory /var/www/php-syslog-ng/html> # pcw No directory listings # Options Indexes FollowSymLinks MultiViews Options -Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all #Order deny,allow #Deny from all #Allow from 127.0.0.1 #Allow from ::1 # Allow from .example.com </Directory> # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn
Skip
Apache 再起動
/etc/init.d/httpd restart
http://サーバアドレス/php-syslog-ng/install/
にアクセスする.
で,表示されている項目がすべて「緑」になっているか確認する.
「赤」になっている部分は,
# yum install php-mysql php-gd
/etc/php.ini max_execution_time = 60 <-- 30 memory_limit = 128M <-- 60Mその他の「赤」はセキュリティ上仕方ないので不具合がなければそのままに しておこう.
# chown -R apache /var/www/php-syslog-ng/html/config # chown -R apache /var/www/php-syslog-ng/html/jpcache
調整ができたら,Apache を再起動して,再度チェック.
「Next」ボタンを押し, ライセンスに同意のチェックをいれ「Next」をクリック.
MySQL の各種設定をする.
で「Next」をクリック.->「OK」
サイト名を入力する
で「Next」をクリック.
サイトの URL等,Web サイトの設定
新たにつけてもいい.
パーミションに関するチェックはデフォルトのまま(Dont...)
で「Next」をクリック.
次の画面では,ディレクトリを消すときの管理者のユーザ名, パスワードが表示されるので記録しておく
で「Install CEMDB」をクリック.
ここで進まなくなった.
が,強引に進めるぞ.
http://サーバアドレス/php-syslog-ng/ にアクセスして,admin でログイン.
スクリプトのあるディレクトリへ移動
# cd /var/www/php-syslog-ng/scripts
perl -i -pe 's/\/www\/php-syslog-ng/\/var\/www\/php-syslog-ng/g' *
cron の登録
# EDITOR=vi crontab -e
/var/www/php-syslog-ng/scripts/crontab の内容を 書き入れる.
# mkdir /var/log/php-syslog-ng
/var/www/php-syslog-ng/scripts/logrotate.d ファイルを /etc/logrotate.d/php-syslog-ng としてコピー
# cp logrotate.d /etc/logrotate.d/php-syslog-ng
syslog-ng.conf を調整する.
これは script ディレクトリにある,syslog-ng.conf を参考にすること.
# For php-syslog-ng # log { source(s_local); source(s_remote); destination(d_mysql);}; destination d_mysql { program("/usr/bin/mysql -usyslogadmin -prootlogin syslog" template("INSERT INTO logs (host, facility, priority, level, tag, datetime, program, msg) VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG', '$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC', '$PROGRAM', '$MSG' );\n") template-escape(yes)); };
Skip
syslog-ng を再起動
/var/www/php-syslog-ng/html/includes/graphit.php を編集し,
$graph->legend->SetFont(FF_VERDANA,FS_NORMAL, 8);
の部分を
$graph->legend->SetFont(FF_FONT1,FS_NORMAL, 8);
へと変更
ただ,これ以外にも,Search での動きがおかしい. プログラム名で検索ができなかったり, facility でも検索もうまく条件指定できなかったりする.
1)プログラムミス php-syslog-ng/html/includes/search.php の
diff search.php.org search.php 327c327 < <input name="excludeFacility" id="excludeFacility_0" value="0" type="radio"> --- > <input name="excludePriority" id="excludePriority_0" value="0" type="radio">
2)config 自動生成のバグ? php-syslog-ng/html/config/config.php 以下の事項以外にもあるかも.
# diff config.php config.php.old 40,41c40 < // "orderby"=>"/^seq$|^host$|^facility$|^priority$|^datetime$/i", < "orderby"=>"/^seq$|^host$|^program$|^facility$|^priority$|^datetime$/i", --- > "orderby"=>"/^seq$|^host$|^facility$|^priority$|^datetime$/i", 48d46 < "program"=>"(^([\w/_.%-]+[,;]\s*)*[\w/_.%-]+$)",
それと,特に操作性がいいとは思えないなぁ.
http://php-syslog-ng.gdd.net/INSTALL-STEPS
抽出条件を保存するテーブル
# mysql -p syslogng mysql> CREATE TABLE `filters` ( `name` varchar(32) default NULL, `rule` text, `seq` int(10) unsigned NOT NULL auto_increment, PRIMARY KEY (`seq`), KEY `host` (`name`), KEY `seq` (`seq`) );
デフォルトで使用される条件
mysql> INSERT INTO `filters` (name, rule) VALUES ("default","facility = 'local7'"), ("default","msg not like '%Autosaving system configuration to NVRAM%'"), ("default","msg not like '%link down/up%'"), ("default","msg not like '%SSH%'");
http://devel.thcnet.net/trac/avast-ng/ から
# wget http://devel.thcnet.net/files/avast-ng/avast-ng-1.0.2.tar.gz
ソースを Apache のドキュメントルートに展開する.
# cd /var/www/html # tar xvzf $SRC/avast-ng-1.0.2.tar.gz # ln -s avast-ng-1.0.2 avast-ng
MySQL にあうように設定を行う.
# cd avast-ng # vi conf.php # chown apache conf.php
http://サーバ名/avast-ng/ へアクセス
うーん,これもあまり便利ではないなぁ. 使い方がイマイチわからないのと,Live でのフィルタリングしか できないようなので,過去のログから何かを探そうというのには 使えない. そりゃぁそうか, 「Avast-ng: A Versatile Ajax Syslog Tailer for syslog-ng」 だからな.
http://www.splunk.com/download?ac=productpage から対応版を Get する.
今回は,Linux 2.6+kernel Linux distributions/x86 splunk-3.2-33572-i386.rpm を Get. と思ったらユーザアカウントを作らないといけないのね.
# rpm -ivh splunk-3.2-33572.i386.rpm ... 1:splunk ########################################### [100%] ---------------------------------------------------------------------- The Splunk Server has been installed in: /opt/splunk To start the Splunk Server, run the command: /opt/splunk/bin/splunk start To use Splunk's web interface, point your browser at: http://centos5.example.co.jp:8000 Complete documentation is at http://www.splunk.com/r/docs ----------------------------------------------------------------------
# /opt/splunk/bin/splunk start
最初の起動時は, ライセンスへの同意を聞かれるので y で答える.
すると,
LISTEN される.
http://splunk.example.jp:8000/ へアクセスする.
Free 版は認証などはないみたいなので, アドレスによるアクセス制限などを行っておく.
Help には動画による説明もあるので,なんとなく設定できる. まずは,admin のページで Indexing の設定をする.