オープンソース

サーバー構築のデージーネットTOP > OSS情報 > デージーネットのOSS > SyLAS

next up previous contents
Next: 4. 使い方 Up: SyLAS Previous: 2. 準備


3. インストール

SyLASのインストールは以下の手順で行います。

  • 設定ファイルの編集
  • MySQLのデータベース作成
  • rsyslogの設定

3.1 SyLASの入手と展開

SyLASは、SyLASプロジェクトのダウンロードページから入手することができます。

http://osdn.jp/projects/sylas/

以下のファイルをダウンロードしてください。

sylas-VERSION.tar.gz

SyLASは、postLDAPadminのフレームワークを使用して動作します。
SyLASをインストールする前に、postLDAPadminのインストールが必要です。
postLDAPadminは、postLDAPadminプロジェクトのダウンロードページから入手することができます。

http://osdn.jp/projects/postldapadmin/

以下のファイルをダウンロードしてください。
postLDAPadmin_frame-VERSION.tar.gz
postLDAPadmin_admin-VERSION.tar.gz
postLDAPadmin_lib-VERSION.tar.gz

postLDAPadminのインストール実行例

# tar xzf postLDAPadmin_frame-*.tar.gz -C /usr/local
# tar xzf postLDAPadmin_admin-*.tar.gz -C /usr/local/postldapadmin/htdocs/admin
# tar xzf postLDAPadmin_lib-*.tar.gz -C /usr/local/postldapadmin/lib

SyLASを展開するディレクトリはWebサーバから参照可能である必要があります。
以下がインストール実行例です。

インストール実行例
# tar xzf sylas-*.tar.gz -C /usr/local/postldapadmin

上記のように展開した場合、展開後のディレクトリ構成は表のようになります。
本マニュアルでは、これを前提に解説を進めます。

SyLASのディレクトリ構成
ディレクトリ/ファイル名 解説
/usr/local/postldapadmin/htdocs/admin/sylas/ SyLASを格納するディレクトリ
/usr/local/postldapadmin/lib/dglibsylas SyLAS専用ライブラリ
/usr/local/postldapadmin/tmpl/ SyLAS用テンプレート (SyLAS用のテンプレートが追加されています)
/usr/local/postldapadmin/etc/msg_file.SyLASsample SyLAS用メッセージファイル

3.2 SyLASの環境設定

SyLASをpostLDAPadminで利用できるようにするには、postLDAPadminの設定ファイルを編集します。 設定ファイルの配置については、postLDAPadmin 3.4.1 設定ファイルの配置を参照してください。

  • web.confの編集
  • タブファイル(tab.conf)の編集

3.2.1 web.confの編集

管理する仮想ドメインのweb.conf内の[sylas]セクションを追加します。

web.confの設定例(RHEL6以前の場合)
[sylas]
DBServer=127.0.0.1
DBServerPort=3306
DBUser=syslog
DBPassword=password
DataName=Syslog
DefaultSearchTable=SystemEvents
LogType=dhcp:mail:general
DisplayLines=10
RsyslogConfDir=/etc/rsyslog.sylas.d/
RsyslogRestartCmd=sudo /etc/init.d/rsyslog restart
MaxSearchCount=1000
SearchType=mysql
ElasticSearchServers=127.0.0.1:9200

web.confの設定例(RHEL7の場合)
[sylas]
DBServer=127.0.0.1
DBServerPort=3306
DBUser=syslog
DBPassword=password
DataName=Syslog
DefaultSearchTable=SystemEvents
LogType=dhcp:mail:general
DisplayLines=10
RsyslogConfDir=/etc/rsyslog.sylas.d/
RsyslogRestartCmd=/usr/bin/sudo /usr/bin/systemctl restart rsyslog
MaxSearchCount=1000
SearchType=mysql
ElasticSearchServers=127.0.0.1:9200

LogTypeの値は「:」で区切って記載します。
DBUser、DBPasswordは後で作成するデータベース操作用ユーザのユーザ名、パスワードを記載します。
RsyslogConfDirはrsyslogの設定ファイルを配置するディレクトリを記載します。
RsyslogRestartCmdはrsyslogの再起動を行うコマンドを記載します。
MaxSearchCountは、解析ログ対象件数の最大数を記載します。
SearchTypeはログの保存先を記載します。mysqlとelasticsearchのどちらかを選択できます。デフォルト値はmysqlです。
ElasticSearchServersはログの保存先のelasticsearchサーバとポートを「:」で区切って記載します。
elasticsearchサーバがクラスタ構成で複数台ある場合、「,」で区切って複数台記載することができます。

3.2.2 tab.confの編集

postLDAPadminの管理画面に、SyLASの簡易ログ検索、ログ設定タブが表示されるように管理者用タブファイルを編集します。 管理する仮想ドメインのtab.confに以下のように項目を追加してください。

tab.confの設定例
sylas/easylogsearch:簡易ログ検索
sylas/dhcplogsearch:DHCPログ検索
sylas/maillogsearch:メールログ検索
sylas/logsetting:ログ設定
sylas/logsetting/hostlist:ホスト一覧
sylas/logsetting/logsearchlist:検索ログ
sylas/logsetting/loggrouplist:ロググループ一覧
sylas/rule:ログ監視

3.2.3 msg_fileの作成

msg_fileの作成例

# cd /usr/local/postldapadmin/etc/[ドメイン名]
# cat ../msg_file.sample ../msg_file.SyLASsample > msg_file

3.3 MySQLを保存先とする場合の設定

3.3.1 MySQLが扱う文字コードの設定

SyLASのバックエンドとして、MySQLを利用する場合、本手順を行ってください。

ログの保存先にMySQLを利用する場合、MySQLの文字コード設定の変更を行います。
以下の例は、SyLASのインストールディレクトリ配下に設定ファイルを配置する場合のものです。

ファイル配置ディレクトリを作成します。
# mkdir /usr/local/postldapadmin/etc/charsets

必要なファイルをコピーします。

# cd /usr/share/mysql/charsets/
# cp Index.xml latin1.xml /usr/local/postldapadmin/etc/charsets/

Index.xmlに、照合順序(latin1_ip_mac_ci)を追加します。<charset name="latin1">の内側に、以下のように記載します。

<charset name="latin1">
...
<collation name="latin1_ip_mac_ci" id="1000"/>
</charset>

latin1.xmlに、照合順序のソート順序を宣言します。同ファイル内のlatin1_swedish_ciと同一ですので、コピーして使えます。
<charset>の内側に以下を記載します。

<collation name="latin1_ip_mac_ci">
<map>
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
60 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
50 51 52 53 54 55 56 57 58 59 5A 7B 7C 7D 7E 7F
80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F
90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF
B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF
41 41 41 41 5C 5B 5C 43 45 45 45 45 49 49 49 49
44 4E 4F 4F 4F 4F 5D D7 D8 55 55 55 59 59 DE DF
41 41 41 41 5C 5B 5C 43 45 45 45 45 49 49 49 49
44 4E 4F 4F 4F 4F 5D F7 D8 55 55 55 59 59 DE FF
</map>
</collation>

latin1.xmlで、ctype配列を変更します。0x2Eと、0x3Aに相当する場所の変更が必要です。行列内、4行目の最後から2番めの要素と、5行目の最後から6番目の要素です。
"10" と記載されている箇所を、"01" と変更します。

<ctype>
<map>
00
20 20 20 20 20 20 20 20 20 28 28 28 28 28 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
48 10 10 10 10 10 10 10 10 10 10 10 10 10 01 10
84 84 84 84 84 84 84 84 84 84 01 10 10 10 10 10
10 81 81 81 81 81 81 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 01 01 01 01 01 10 10 10 10 10
10 82 82 82 82 82 82 02 02 02 02 02 02 02 02 02
02 02 02 02 02 02 02 02 02 02 02 10 10 10 10 20
10 00 10 02 10 10 10 10 10 10 01 10 01 00 01 00
00 10 10 10 10 10 10 10 10 10 02 10 02 00 02 01
48 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
01 01 01 01 01 01 01 10 01 01 01 01 01 01 01 02
02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02
02 02 02 02 02 02 02 10 02 02 02 02 02 02 02 02
</map>
</ctype>

最後に、MySQLの設定変更を行います。/etc/my.cnf.d ディレクトリ配下に、sylas.cnfを作成します。

/etc/my.cnf.d/sylas.cnf の記述例
[mysqld]
character-sets-dir=/usr/local/postldapadmin/etc/charsets
ft_min_word_len=1

*以上の設定は、全文検索にてドット(0x2E)とコロン(0x3A)を検索対象に含めるために必要となります。 「ft_min_word_len」は、単語の最小長の設定です。

設定後、MySQLを再起動し設定を反映してください。

[RHEL6以前の場合]

# service mysqld restart

[RHEL7の場合]

# systemctl restart mariadb

3.3.2 MySQLデータベース/テーブル作成

MySQLにデータベースを作成します。
rsyslog-mysqlが必要とするテーブルを作成します。 rsyslog-mysql-7.4.7がインストールされている場合の例です。
まず、/usr/share/doc/rsyslog-7.4.7/mysql-createDB.sql をもとに、テーブル設定を修正してください。

mysql-createDB.sqlの修正例
CREATE TABLE SystemEvents
(
...
        Message text CHARACTER SET latin1 COLLATE latin1_ip_mac_ci,
...
        FULLTEXT INDEX(`Message`)
) ENGINE=MyISAM;

修正したファイルをもとに、データベースの作成を行います。

$ mysql -u syslog -p < [修正後のmysql-createDB.sqlファイルパス]
Enter password:******** ← 作成したユーザのパスワードを入力して[Enter]を押す

3.4 ElasticSearchを保存先とする場合の設定

3.4.1 インデックステンプレートの作成

3.1節の方法でインストールした場合、ElasticSearchのインデックステンプレート(sylas.json)が/usr/local/postldapadmin/dbにインストールされます。
以下のコマンドを実行してください。 なおElasticSearchのIPアドレスとポートは実際の環境に読み替えて実行してください。

$ curl -XPUT 'http://localhost:9200/_template/sylas_template' -d @/usr/local/postldapadmin/db/sylas.json
{"acknowledged":true}

3.4.2 MySQLデータベース/テーブル作成

MySQLにSyLASの設定保存用のデータベースを作成します。

$ mysql -u root -p 
Enter password:******** ←rootのパスワードを入力して[Enter]を押す
> create database Syslog;

3.5 MySQL/ElasticSearch共通設定

3.5.1 データベース操作用ユーザ作成

本手順は、ElasticSearchを利用する場合にも作業が必要です。

以下のコマンドを実行し、データベース操作用のユーザを作成してください。

# mysql -u root -p
Enter password:******** ← rootのパスワードを入力して[Enter]を押す
> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON Syslog.* TO 
  syslog@localhost IDENTIFIED BY 'password';
> FLUSH PRIVILEGES;

'password'には作成するユーザのパスワードを入力してください。

作成したユーザのユーザ名、パスワードを使用してデータベースを操作します。
web.confのDBUserには作成したユーザ名を、DBPasswordにはユーザ作成時に指定したパスワードを記載してください。

3.1節の方法でインストールした場合、SyLAS連携用のテーブルの作成を行うためのファイル(sylas.sql)が/usr/local/postldapadmin/dbにインストールされます。
以下のコマンドを実行してください。

$ mysql -u syslog -p Syslog < /usr/local/postldapadmin/db/sylas.sql
Enter password:******** ← 作成したユーザのパスワードを入力して[Enter]を押す

3.6 rsyslogの設定

3.6.1 ログ検索用rsyslog設定

3.6.1.1 ログ検索にMySQLを利用する場合

SyLASでMySQLを使い、ログを検索できるようにするためには、MySQLとrsyslogを連携させる必要があります。
検索対象にしたいログがMySQLに出力されるようrsyslog.confの設定を変更します。
次は、ローカルサーバ(192.168.x.1)と、リモートサーバ(192.168.x.2)の、全てのファシリティのwarningレベル以上のログを、MySQLに出力するよう設定したときの例です。
この例では、UDPで転送されたログも、TCPで転送されたログも保存することができる設定になっています。
ファシリティ、ログレベルはSyLASで検索したいログに応じて設定してください。

クライアント側の/etc/rsyslog.confの設定例
*.warn @@192.168.x.1:514

サーバ側の/etc/rsyslog.confの設定例
$ModLoad imudp
$UDPServerRun 514
$AllowedSender UDP, 127.0.0.1, 192.168.x.0/24

$ModLoad imtcp
$InputTCPServerRun 514
$AllowedSender TCP, 127.0.0.1, 192.168.x.0/24

$ModLoad ommysql
*.warn :ommysql:127.0.0.1,Syslog,syslog,password

設定後、rsyslogをサーバとクライアントそれぞれで再起動し設定を反映してください。

[RHEL6以前の場合]

# service rsyslog restart

[RHEL7の場合]

# systemctl restart rsyslog

3.6.1.2 ログ検索にelasticsearchを利用する場合

SyLASでelasticsearchを使い、ログを検索できるようにするためには、elasticsearchとrsyslogを連携させる必要があります。
検索対象にしたいログがMySQLに出力されるようrsyslog.confの設定を変更します。
次は、ローカルサーバ(192.168.x.1)と、リモートサーバ(192.168.x.2)の、全てのファシリティのwarningレベル以上のログを、MySQLに出力するよう設定したときの例です。
この例では、UDPで転送されたログも、TCPで転送されたログも保存することができる設定になっています。
ファシリティ、ログレベルはSyLASで検索したいログに応じて設定してください。

クライアント側の/etc/rsyslog.confの設定例
*.warn @@192.168.x.1:514

サーバ側の/etc/rsyslog.confの設定例
$ModLoad imudp
$UDPServerRun 514
$AllowedSender UDP, 127.0.0.1, 192.168.x.0/24

$ModLoad imtcp
$InputTCPServerRun 514
$AllowedSender TCP, 127.0.0.1, 192.168.x.0/24

サーバ側の/etc/rsyslog.d/elasticsearch.confの設定例
$ModLoad /usr/lib64/rsyslog/omelasticsearch.so

$template customSchema, "{ \
   \"message\":\"%msg:::json%\", \
   \"host\":\"%HOSTNAME:::json%\", \
   \"facility\":\"%syslogfacility-text%\", \
   \"priority\":\"%syslogpriority%\", \
   \"date\":\"%timereported:1:19:date-rfc3339%.%timereported:1:3:date-subseconds%\", \
   \"tag\":\"%syslogtag:::json%\" \
}"

$template srchidx,"syslog-%timereported:1:10:date-rfc3339%"

*.*     action(type="omelasticsearch"
               template="customSchema"
               searchIndex="srchidx"
               dynSearchIndex="on"
               server="127.0.0.1"
               bulkmode="on"
               queue.type="linkedlist"
               queue.size="5000"
               queue.dequeuebatchsize="300"
               action.resumeretrycount="-1"
              )
上記のように設定した場合、ログデータは、indexに日付、_sourceフィールドにmessage/host/facility/priority/date/tagの構成でelasticsearchに保存されます。 詳細な設定内容については、omelasticsearchのマニュアルを参照してください。

設定後、rsyslogをサーバとクライアントそれぞれで再起動し設定を反映してください。

[RHEL6以前の場合]

# service rsyslog restart

[RHEL7の場合]

# systemctl restart rsyslog

3.6.2 ログ監視用rsyslog設定

SyLASでログ監視をするためには、SyLASが作成するファイルをrsyslogの設定として読み込む必要があります。
ログ監視の設定(*.conf)をインクルードするようrsyslog.confの設定を変更します。

サーバ側の/etc/rsyslog.confの設定例
$IncludeConfig /etc/rsyslog.sylas.d/*.conf

ログ監視の設定ファイルは/etc/rsyslog.sylas.d/配下に作成されるので、あらかじめrsyslog.sylas.dのディレクトリを作成する必要があります。
また、webインタフェースから設定ファイルを作成できるようApacheの権限を与えます。

# cd /etc/
# mkdir rsyslog.sylas.d
# chmod 775 rsyslog.sylas.d
# chown root:apache rsyslog.sylas.d

SyLASは1つの監視に対して1つのファイルを作成します。
全ての監視で共通となる項目はbaseファイルで設定します。
baseファイルは以下のように設定します。

サーバ側の/etc/rsyslog.sylas.d/baseの設定例
#### MODULES ####
$ModLoad ommail

#### From ####
$ActionMailFrom syslog@example.com

#### Subject(DEFAULT) ####
$template default_mail_subject,"Syslog Warning"
$ActionMailSubject default_mail_subject

#### Body(DEFAULT) ####
$template default_mail_body,"[Host] %fromhost%rnrn[Message]rn%msg%"

各項目の説明は以下のとおりです。
デフォルトのFrom、Subject、Bodyは適宜変更してください。

項目名 解説 設定する内容 設定例
$ModLoad 指定されたモジュールをロードするための設定 メールを送信するためのモジュール ommail
※変更しないでください
$ActionMailFrom メール送信元アドレスの設定 メールの送信元アドレス syslog@example.com
$template default_mail_subject メール件名のテンプレートを設定 メールの件名 "Syslog Warning"
$ActionMailSubject メール件名のテンプレートを定義 メール件名のテンプレート名 default_mail_subject
※変更しないでください
$template
default_mail_body
メール本文のテンプレートを設定 メールの本文 "[Host] %fromhost%rnrn[Message]rn%msg%"
%fromhost%はメッセージの送信元ホスト名、
%msg%はログに出されたメッセージに置換されます
改行はrnで記述します

設定後、rsyslogを再起動し設定を反映してください。

[RHEL6以前の場合]

# service rsyslog restart

[RHEL7の場合]

# systemctl restart rsyslog

3.7 sudoの設定

SyLASでログ監視を行うためには、apacheユーザ権限でrsyslogを再起動できるよう許可する必要があります。
そのためにsudoの設定を追加します。
visudoというコマンドを実行し、以下のように設定を追加してください。

# visudo

sudoの設定例(RHEL6以前の場合)
# Defaults requiretty  ←コメントに変更 

apache ALL=(ALL) NOPASSWD: /etc/init.d/rsyslog restart  ←追加

sudoの設定例(RHEL7の場合)
# Defaults requiretty  ←コメントに変更

apache ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart rsyslog ←追加

3.8 php.iniの設定

メールログ検索画面では、検索結果の保持をSESSIONで行っています。
値保持のため、SESSIONの保存ディレクトリの設定を環境に合わせて変更してください。
また、大量ログ検索時の処理でメモリを大量に使用するため、PHPのメモリ使用設定を環境に合わせて変更してください。

/etc/php.iniの設定例(コメント行を除く)
session.save_path = "/usr/local/postldapadmin/htdocs/admin/sylas/tmp" SESSION値を保存ディレクトリ設定
memory_limit = 256M PHPのメモリ使用設定
date.timezone = Asia/Tokyo デフォルトタイムゾーンの設定

3.9 ウェブサーバの設定

SyLASのウェブインタフェースを使用するための設定を行います。

Apache設定ファイル /etc/httpd/conf.d/sylas.conf の設定例
Alias /sylas/ /usr/local/postldapadmin/htdocs/

SetEnv LOGNAME sylas
SetEnv DOMAIN sylas

<Directory "/usr/local/postldapadmin/htdocs">
    DirectoryIndex index.php
    require all granted
    PHP_value include_path ".:/usr/local/postldapadmin/"
</Directory>

設定後、Apacheを再起動し設定を反映してください。

[RHEL6以前の場合]

# service httpd restart

[RHEL7の場合]

# systemctl restart httpd

next up previous contents
Next: 4. 使い方 Up: SyLAS Previous: 2. 準備
2017年07月27日