オープンソース

サーバー構築のデージーネット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-VERSION.tar.gz -C /usr/local
# tar xzf postLDAPadmin_admin-VERSION.tar.gz -C /usr/local/postldapadmin/htdocs/admin
# tar xzf postLDAPadmin_lib-VERSION.tar.gz -C /usr/local/postldapadmin/lib

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

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

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

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の設定ファイルを編集します。

  • 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=syslog
DataName=Syslog
DefaultSearchTable=SystemEvents
LogType=dhcp:mail:local1
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=syslog
DataName=Syslog
DefaultSearchTable=SystemEvents
LogType=dhcp:mail:local1
DisplayLines=10
RsyslogConfDir=/etc/rsyslog.sylas.d/
RsyslogRestartCmd=/usr/bin/sudo /usr/bin/systemctl status rsyslog
MaxSearchCount=1000
SearchType=mysql
ElasticSearchServers=127.0.0.1:9200

LogTypeの値は「:」で区切って記載します。
DBUser、DBPasswordは後で作成するデータベース操作用ユーザのユーザ名、パスワードを記載します。
RsyslogConfDirはrsyslogの設定ファイルを配置するディレクトリを記載します。
RsyslogRestartCmdはrsyslogの再起動を行うコマンドを記載します。
MaxSearchCountは、解析ログ対象件数の最大数を記載します。
ログの保存先がelasticsearchの場合、elasticsearchの「index.max_result_window」の設定値よりも小さい値である必要があります。
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:ルール一覧
sylas/rule/rule_add:ルール追加
sylas/rule/rule_mod:ルール編集

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を利用する場合、MySQLの文字コード設定の変更を行います。
ログの保存先にelasticsearchを利用する場合、文字コード設定は不要です。
以下の例は、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 -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.3.3 データベース、テーブル作成

データベースを作成します。
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.1節の方法でインストールした場合、SyLAS連携用のテーブルの作成を行うためのファイル(make_DB_table)が/usr/local/postldapadmin/binにインストールされます。
以下のコマンドを実行してください。

$ mysql -u syslog -p Syslog <[tarを展開したディレクトリ]/sylas-VERSION/bin/make_DB_table
Enter password:******** ← 作成したユーザのパスワードを入力して[Enter]を押す

データベース「Syslog」には以下のテーブルが作成されます。

テーブル名 解説
SystemEvents rsyslog.confで設定したログが保存される。
loginfo 検索対象のログ情報を管理する。
hosts 検索対象のホスト情報を管理する。
loggroup ロググループの情報を管理する。
search_hosts ロググループに対応した検索対象ホスト情報を管理する。

データベースが作成された際、hostsに「全てのホスト」というホストが自動で登録されます。
検索対象ホストに指定することは可能ですが、画面から「全てのホスト」の情報を操作することはできません。

3.4 rsyslogの設定

3.4.1 ログ検索用rsyslog設定

3.4.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.4.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%\",\"severity\":
\"%syslogseverity%\",\"date\":\"%timereported:1:19:date-rfc3339%.%timereported:1:3:date-subseconds
%\",\"tag\":\"%syslogtag:::json%\"}"

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

*.*     action(type="omelasticsearch" template="customSchema" searchIndex="srchidx" dynSearchIndex=
"on" server="127.0.0.1")
上記のように設定した場合、ログデータは、indexに日付、_sourceフィールドにmessage、host、severity、date、tagの構成でelasticsearchに保存されます。

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

[RHEL6以前の場合]

# service rsyslog restart

[RHEL7の場合]

# systemctl restart rsyslog

3.4.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.5 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.6 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.7 ウェブサーバの設定

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

3.8 elasticsearchサーバの設定

elasticsearchサーバの解析ログ結果件数の最大値の設定を行います。
以下は解析ログ結果件数の最大値を100000件にする場合です。

Apache設定ファイル /etc/elasticsearch/elasticsearch.yml の設定例
index.max_result_window: 100000

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

[RHEL6以前の場合]

# /etc/init.d/elasticsearch restart

[RHEL7の場合]

# systemctl restart elasticsearch

next up previous contents
Next: 4. 使い方 Up: SyLAS Previous: 2. 準備
2016年12月14日