#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 の設定をする.

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS