なんだかんだでIsilonianTechも始めて4ヶ月で第6回になりましたが、今回はIsilonとElastic Stackについてご紹介します。

通常ですと、Elastic Stackというキーワードの際は、Isilonはデータレイク基盤としてデータを貯める側になるのですが、今回はIsilonのsyslogを解析するための基盤をELK(Elasticsearch, Logstash, Kibana)で構築してみようという内容です。

(データレイクを期待されたかたは、ごめんなさい。UDS事業本部の営業/SEでご説明に伺います。。)

 

ISLN_Kibana.png

 

 

Elastic Stackについては改めてご説明することは無いと思いますが、大まかな流れとしては、LogstashでIsilonのsyslogを取り込みElasticsearchに格納してKibanaで可視化します。

今回は、テストするにあたり下記の環境を用意しました。最低限、ELK用にLinuxを1台とIsilonクラスタを準備します。Isilonはシミュレータや以前の連載でご紹介したIsilonSD Edgeでも問題ございません。

 

env.png

           Kibana、Elasticsearch、Logstashのロゴは良い感じのデザインですね(https://www.elastic.co/brand

 

 

 

 

Isilon側の設定

Isilon側の設定としてLogstashにsyslogを飛ばす設定が必要になりますので、先ずはGUIもしくは下記コマンドでconfigに関するauditとsyslogを有効にします。

sdedge-1# isi audit settings global modify --config-auditing-enabled=true

sdedge-1# isi audit settings global modify --config-syslog-enabled=true

sdedge-1# isi audit settings global view

Protocol Auditing Enabled: No

            Audited Zones: -

          CEE Server URIs: -

                 Hostname: -

  Config Auditing Enabled: Yes

    Config Syslog Enabled: Yes

 

次に、syslog.confを編集していきますが、/etc配下に存在しているsyslog.confは直接編集しないでください。Isilonはクラスタ型のストレージなので、/etc/mcp/templates/syslog.confを編集することによって自動的に各ノードの/etc/syslog.confが変更されます。なお、syslog.confは事前にバックアップを取得してから編集します。

sdedge-1# cp /etc/mcp/templates/syslog.conf /etc/mcp/templates/syslog.conf.bkup

sdedge-1# vi /etc/mcp/templates/syslog.conf

!audit_config

*.*                                             /var/log/audit_config.log

*.*                                             @cent7.isilon.local

!audit_protocol

*.*                                             /var/log/audit_protocol.log

*.*                                             @cent7.isilon.local

 

次に、syslogのポート番号を変更するために/etc/servicesを編集します。なお、/etc/servicesはmcpに存在しないため各ノードで編集しますが、こちらもバックアップしてからの編集を推奨いたします。今回、ポート番号は8514としました。

sdedge-1# vi /etc/services

~~~~

syslog          8514/udp

 

syslogdを再起動します。なお、isi_で始まるコマンドはサポート用のコマンドとなり影響範囲も大きいので、くれぐれもご利用の際はご注意ください。

sdedge-1# isi_for_array "killall -HUP syslogd"

 

以上でIsilonの設定は終了です。

 

 

 

ELK(Elasticsearch, Logstash, Kibana)の準備

続いて用意したLinuxにElasticsearch、Logstash、Kibanaをセットアップしていきます。なお、Elasticsearch、LogstashにはJava8が必要ですので予めJavaをインストールしておく必要があります。

インストールに関しては、yumリポジトリを設定されても良いですしwgetやcurl等でダウンロードしてからインストールでも構いません。

 

Elasticsearchのセットアップ

私のほうでは、下記のとおりcurlを使ってelasticsearchのrpm(現時点での最新版は6.2.2でした)をダウンロードしてインストールしました。

 

1. Elasticsearchのインストール

[root@cent7 ~]# curl -k -L -O "https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.2.rpm"

[root@cent7 ~]# rpm -i elasticsearch-6.2.2.rpm

 

2. elasticsearch.ymlの編集

/etc/elasticsearch配下のelasticsearch.ymlを編集することによって、クラスタ名、ノード名、ポート番号など変更できますが、今回の構成では、elasticsearch.ymlの編集は不要です。

 

3. Elasticsearchの起動

[root@cent7 ~]# systemctl enable elasticsearch.service

[root@cent7 ~]# systemctl start elasticsearch.service

 

 

Logstashのセットアップ

次に、Logstashのセットアップを実施します。

 

1. Logstashのインストール

[root@cent7 ~]# curl -k -L -O "https://artifacts.elastic.co/downloads/logstash/logstash-6.2.2.rpm"

[root@cent7 ~]# rpm -i logstash-6.2.2.rpm

 

2. logstash.confの作成

インストールディレクトリのconf.d配下にlogstash.confを作成します。(一般的には/etc/logstash/conf.d/logstash.confです)

Logstashはデータを整形できますが動作確認がメインですので今回はinputとoutputのみでfilterは省略します。格納先はElasticsearchを設定します。

[root@cent7 ~]# vi /etc/logstash/conf.d/logstash.conf

~~~~~~

input {

  tcp {

    port => 8514

    type => syslog

  }

  udp {

    port => 8514

    type => syslog

  }

}


output {

  elasticsearch{

    hosts => ["cent7.isilon.local:9200"]

  }

  stdout{

    codec => rubydebug

  }

}

~~~~~

 

3. Logstashの起動

[root@cent7 ~]# systemctl enable logstash.service

[root@cent7 ~]# systemctl start logstash.service

 

 

Kibanaのセットアップ

 

1. Kibanaのインストール

[root@cent7 ~]# curl -k -L -O "https://artifacts.elastic.co/downloads/kibana/kibana-6.2.2-x86_64.rpm"

[root@cent7 ~]# rpm -i kibana-6.2.2-x86_64.rpm

 

2. kibana.ymlの編集

[root@cent7 ~]# vi /etc/kibana/kibana.yml

~~~~~

elasticsearch.url: "http://cent7.isilon.local:9200"

~~~~~

 

3. Kibanaの起動

[root@cent7 ~]# systemctl enable kibana.service

[root@cent7 ~]# systemctl start kibana.service

 

 

 

Kibanaからsyslogの可視化

 

1. Kibanaへのアクセス

ブラウザでKibanaをインストールしたホスト名の5601ポートにアクセスします。(今回の例では、http://cent7.isilon.local:5601/)

Kibana_dashboard.png

 

2. インデックスパターンの作成

画面左側の「Management」タブから「Index Patterns」を選択して[Index pattern]を入力します。

Kibana_index1.png

 

[Time Filter field name]フィールドから"@timestamp"を選択して「Create index pattern」を選択します。

Kibana_index2.png

 

 

2. ログの確認

画面左側の「Discover」を選択しログが表示されているか確認します。

Kibana_discover.png

 

 

 

いざ、実行

無事にIsilonのsyslogが確認できたら、Isilonからのsyslogをタイムリーに拾えるかテストします。

 

1. Isilonからテストアラートの発行

Isilonからテストアラートを飛ばして、正常に表示されるか確認します。OneFS web administration interface(Web UI)から実行する場合は「Cluster Management」、「Events and Alerts」と辿っていき「Send Test Alert」の[Test Message:]フィールドに文字列を入力して「Send Test Alert」をクリックします。

OneFS_alert.png

 

2. Kibanaから確認

テストアラートが受け取れているかKibanaから確認します。IPアドレス部分はマスク(モザイク処理)しておりますが"host:"フィールドはIsilonクラスタのIPアドレス、"remote_addr:"フィールドは、テストアラートを実行したクライアントPC(Web UIにアクセスしているマシン)のIPアドレスが表示されます。また、"message"フィールドに、入力した文字列(下記の例では、"hoge 1"、"hoge 2"、"hoge hoge"と3回アラートを発行してみました。)が表示されることが確認できます。

Kibana_OneFS_alert.png

 

 

 

バックナンバー

IsilonianTech 第1回 Isilonとオープンソース ~REX-Ray編~

IsilonianTech 第2回 Isilonとオープンソース ~OpenStack Manila編~

IsilonianTech 第3回 Isilonとオープンソース ~Isilon Data Insights Connector~

IsilonianTech 第4回 Software Defined Storage ~IsilonSD Edge~

IsilonianTech 第5回 Isilonとオープンソース ~Isilon-POSH~

IsilonianTech 第6回 Isilonとオープンソース ~Elastic Stack編~

IsilonianTech 第7回 Isilonとデータアナリティクス ~Cloudera編~

IsilonianTech 第8回 Elastic Cloud Storage (ECS) ~ECS Community Edition~

IsilonianTech 第9回 ISILON + ECS = UNLIMITED ~Isilon CloudPools~

 

安井 謙治

Dell EMC Unstructured Data Solutions

UDS事業本部 SE