#author("2020-07-11T12:39:10+09:00","default:tanak0to","tanak0to")
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: TEST Site
で「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 の設定をする.