RIGHT:[[フリーソフトウェアのコンパイル]] *syslog-ng の導入 [#r2c389ef] **ソース [#d6533106] http://www.balabit.com/ より以下のものを GET. -eventlog-0.2.7.tar.gz -syslog-ng-2.0.8.tar.gz **プラットフォーム [#p703a384] CentOS 5 on VMWare Server **eventlog のインストール [#r8f5cfbb] # 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 **syslog-ng のインストール [#f4c99f1e] # 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 **MySQL インストール [#r5e8c48f] # yum install mysql mysql-server # chkconfig mysqld on # /etc/init.d/mysqld start ***root のパスワードつけ [#hb45eec7] # /usr/bin/mysqladmin -u root password 'new-password' # /usr/bin/mysqladmin -u root@centos.example.co.jp password 'new-password' ***DB 作成 [#c67ce739] # mysqladmin -p create syslogng ***テーブル作成 [#b9926fed] # 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`) -> ); ***ユーザ作成と権限の設定 [#v2f14e21] mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON syslogng.* TO syslogng@localhost IDENTIFIED BY 'syslogng1111'; mysql> SELECT host,usre,password FROM mysql.user; <- 確認 **設定 [#x53c5659] syslog-ng の RPM パッケージをインストールした時点で syslog は無効になり,syslog-ng が有効となる. ただし,syslog-ng の設定はほとんどなされていない状態なので, /etc/syslog-ng/syslog-ng.conf を編集する必要がある. とりあえず,以前の syslog と同じような出力にするために, コメントアウトされている設定部分をすべてアンコメントする. で,次の修正もしておく.(修正しなくても動くようだけど) #unix-dgram("/dev/log"); unix-stream("/dev/log"); ***Avast-ng へログを転送する場合 [#b4e92316] 以下を追加 # 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);}; ***名前つきパイプの作成と,MySQL にログを挿入するスクリプトの作成 [#z369dbf4] # 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 に入っているかの確認 [#c4319e55] # mysql --user=syslogng --password=XXXXX syslogng mysql> SELECT * FROM logs LIMIT 10; -------------------------------------------------------- *php-syslog-ng [#j61827ef] **ソース [#sfd5fc25] http://code.google.com/p/php-syslog-ng/ から -SqueezeDB-v1.0.php -php-syslog-ng-2.9.6.tgz を GET する. **インストール [#q5f7fbb5] php-syslog-ng は 2.9.4 から,ちょっと仕様が変わった. というか,syslog-ng と MySQL とのやり取りを socket ファイルを 使わずにやるようになった. だから,添付されているインストール手順(html/INSTALL-STEPS)は ちょっと現状にあっていない部分がある. ***STEP1 [#u1eb2ae1] php-syslog-ng の DocumentRoot ディレクトリを作成する. ここでは,RedHat の ServerRoot 以下に作成する. # mkdir /var/www/php-syslog-ng # cd /var/www/php-syslog-ng ***STEP2 [#xad54558] Skip ***STEP3 [#w724299e] ソースを展開する. # tar xvzf HOGE/php-syslog-ng-2.9.6.tgz ***STEP4 [#y4029cca] 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 ***STEP5 [#paaecb81] Skip ***STEP6 [#o5498de5] Apache 再起動 /etc/init.d/httpd restart ***STEP7 [#r5bc793c] http://サーバアドレス/php-syslog-ng/install/ にアクセスする. で,表示されている項目がすべて「緑」になっているか確認する. 「赤」になっている部分は, -足らないものをインストールしたり # yum install php-mysql php-gd -php.ini を調整したり /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 を再起動して,再度チェック. ***STEP8 [#k9014eea] 「Next」ボタンを押し, ライセンスに同意のチェックをいれ「Next」をクリック. ***STEP9 [#ua0ebe64] MySQL の各種設定をする. -HostName: localhost -MySQL User Name: root -MySQL Password: XXXXXX -MySQL Database Name: syslog -MySQL Port: 3306 -MySQL Talbe Prefix: 空白のまま -Syslog User Name: sysloguser -Syslog User Password: XXXXXX -Syslog Admin Name: syslogadmin -Syslog Admin Password: XXXXXX -Drop Existing Tables: チェックしない -Backup Old Talbes: チェックしない -Install Sample Data: チェックをはずす -Install CEMDB Data: チェックをいれる で「Next」をクリック.->「OK」 ***STEP10 [#a28bb34a] サイト名を入力する -Site name: NaraEDU TEST で「Next」をクリック. ***STEP11 [#w799e11f] サイトの URL等,Web サイトの設定 -URL: デフォルトのまま -Install Path: デフォルトのまま -Site URL: /php-syslog-ng/ -Your E-mail: 管理者のメールアドレス -Admin password: デフォルトのものを記録してもいいし, 新たにつけてもいい. パーミションに関するチェックはデフォルトのまま(Dont...) で「Next」をクリック. 次の画面では,ディレクトリを消すときの管理者のユーザ名, パスワードが表示されるので記録しておく -Username: admin -Password: r7n で「Install CEMDB」をクリック. ここで進まなくなった. が,強引に進めるぞ. ***STEP12 [#c57ec6a0] http://サーバアドレス/php-syslog-ng/ にアクセスして,admin でログイン. ***STEP13 [#pab5bb93] スクリプトのあるディレクトリへ移動 # cd /var/www/php-syslog-ng/scripts ***STEP14 [#red4478d] perl -i -pe 's/\/www\/php-syslog-ng/\/var\/www\/php-syslog-ng/g' * ***STEP15 [#bd3bf4ec] cron の登録 # EDITOR=vi crontab -e /var/www/php-syslog-ng/scripts/crontab の内容を 書き入れる. # mkdir /var/log/php-syslog-ng ***STEP16 [#qc27ebd3] /var/www/php-syslog-ng/scripts/logrotate.d ファイルを /etc/logrotate.d/php-syslog-ng としてコピー # cp logrotate.d /etc/logrotate.d/php-syslog-ng ***STEP17 [#v9dda8a8] 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)); }; ***STEP18 [#keb31046] Skip ***STEP19 [#u6ebbaf8] syslog-ng を再起動 ***最後にグラフ表示の不具合修正 [#of558f5a] /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 でも検索もうまく条件指定できなかったりする. ***修正した [#zc9e3321] 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 -------------------------------------------------------- *Avast-ng [#be42eaa1] **テーブルの追加 [#zbef9d67] 抽出条件を保存するテーブル # 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%'"); **ソース [#j9ce7375] http://devel.thcnet.net/trac/avast-ng/ から -avast-ng-1.0.2.tar.gz を GET する. # wget http://devel.thcnet.net/files/avast-ng/avast-ng-1.0.2.tar.gz **インストール [#ra2914d0] ソースを Apache のドキュメントルートに展開する. # cd /var/www/html # tar xvzf $SRC/avast-ng-1.0.2.tar.gz # ln -s avast-ng-1.0.2 avast-ng **設定 [#kceb15b2] MySQL にあうように設定を行う. # cd avast-ng # vi conf.php # chown apache conf.php **アクセス [#p4c3c6ad] http://サーバ名/avast-ng/ へアクセス うーん,これもあまり便利ではないなぁ. 使い方がイマイチわからないのと,Live でのフィルタリングしか できないようなので,過去のログから何かを探そうというのには 使えない. そりゃぁそうか, 「Avast-ng: A Versatile Ajax Syslog Tailer for syslog-ng」 だからな. ----------------------------------------------------- *Splunk はどうだ [#t8dae743] **ソース [#l5d2522f] http://www.splunk.com/download?ac=productpage から対応版を Get する. 今回は,Linux 2.6+kernel Linux distributions/x86 splunk-3.2-33572-i386.rpm を Get. と思ったらユーザアカウントを作らないといけないのね. **インストール [#e33bfd47] # 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 ---------------------------------------------------------------------- **起動 [#md3d7b58] # /opt/splunk/bin/splunk start 最初の起動時は, ライセンスへの同意を聞かれるので y で答える. すると, -ポート8000 で Web インタフェイスが -ポート8089 で管理インタフェイスが LISTEN される. **アクセス [#ff42fba4] http://splunk.example.jp:8000/ へアクセスする. Free 版は認証などはないみたいなので, アドレスによるアクセス制限などを行っておく. Help には動画による説明もあるので,なんとなく設定できる. まずは,admin のページで Indexing の設定をする.