まえがきでは、ログデータの収集・可視化プラットフォームであるElasticスタックについて簡単に紹介しました。今回からは、Elasticスタックを用いてホームゲートウェイのログを可視化するための、具体的な手順について説明していきます。

まずは、Elasticスタックのインストールから始めましょう。すでにまえがきで説明しましたが、Elasticスタックは以下の4つのソフトウェアにより構成されます。さらに、Logstash, Elasticsearch, およびKibanaの三者には、セキュリティ、アラート通知、モニタリングといった機能を追加する”X-Pack”という拡張パッケージがそれぞれ用意されています。

X-Packを使用するためには、ユーザ登録を行なってライセンスの発行を受ける必要があります。ちなみに、最も安価なBasicライセンスは無料なのでご安心ください。ライセンスの種類によって使用できるX-Packの機能は異なりますので、詳しくは以下のURLを参照願います。

今回、最も使いたいX-Packの機能は、Elasticスタックの各コンポーネントをモニタする機能です。本機能については、Basicライセンスで使用できる範囲に含まれますので、後ほどライセンスを取得することにしてX-Packもインストールしておきたいと思います。

Elasticスタックのインストールとその後の可視化システム構築は、以下のような流れで進めます。(下図)

  1. Elasticsearch, Elasticsearch X-Packのインストール(本記事)
  2. Kibana, Kibana X-Packのインストール、Basicライセンスの取得と投入
  3. Logstash, Logstash X-Packのインストール
  4. Beats (Filebeat)のインストール
  5. Logstashのログ処理ルールの作成とテストデータでの動作確認
  6. Filebeat→Logstash→Elasticsearchでの運用開始
  7. Kibanaでの検索、ダッシュボードの作成

Elasticスタックを用いたHGWログ可視化 - 構築の流れ - ESインストール

では、1番めのElasticsearchとElasticsearch X-Packのインストールからスタートです。インストールにあたり、Elasticsearch社の公式ガイド(以下の二つの記事)を参考にします。

また、Elasticスタックのインストール全体をとおして、FreeBSDにおけるElasticスタックのインストール手順が詳しく説明されている、以下の二つの記事も参考にしながら進めます。

さて、インストールの前に一点準備をしておきましょう。

必要なファイルシステムのマウント

ElasticsearchはJavaで書かれたプログラムです。Javaプログラムが動作するために、FreeBSDの側で少し設定が必要です。具体的には、プロセスファイルシステムとファイルディスクリプタファイルシステムがマウントされている必要があります。

以下の2行を/etc/fstabに追加してください。(もしなければ)

その後、以下のコマンドを実行、あるいはFreeBSDマシンを再起動して、上記の各ファイルシステムをマウントします。

mount fdesc
mount proc

以上で準備は完了です。

Elasticsearchのインストール

ようやく、Elasticsearchのインストールまでこぎつけました。インストールは非常にかんたんで、以下のコマンドを実行すればOKです。

pkg install elasticsearch6

Elasticsearch X-Packのインストール

Elasticsearchがインストールできたら、次にX-Packをインストールします。以下のコマンドを実行してください。途中で2か所、処理を進めてよいか確認を求められますので、yを入力します。

# /usr/local/lib/elasticsearch/bin/elasticsearch-plugin install x-pack
-> Downloading x-pack from elastic
[=================================================] 100%?? 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     WARNING: plugin requires additional permissions     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.io.FilePermission \\.\pipe\* read,write
* java.lang.RuntimePermission accessClassInPackage.com.sun.activation.registries
* java.lang.RuntimePermission getClassLoader
* java.lang.RuntimePermission setContextClassLoader
* java.lang.RuntimePermission setFactory
* java.net.SocketPermission * connect,accept,resolve
* java.security.SecurityPermission createPolicy.JavaPolicy
* java.security.SecurityPermission getPolicy
* java.security.SecurityPermission putProviderProperty.BC
* java.security.SecurityPermission setPolicy
* java.util.PropertyPermission * read,write
See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.

Continue with installation? [y/N]y                                                    # ←yを入力
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@        WARNING: plugin forks a native controller        @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
This plugin launches a native controller that is not subject to the Java
security manager nor to system call filters.

Continue with installation? [y/N]y                                                    # ←yを入力
Elasticsearch keystore is required by plugin [x-pack-security], creating...
-> Installed x-pack with: x-pack-logstash,x-pack-ml,x-pack-graph,x-pack-core,x-pack-deprecation,x-pack-monitoring,x-pack-security,x-pack-upgrade,x-pack-watcher

関連ファイルのグループ変更

以上でインストールは終了ですが、一部、関連ファイルのオーナーグループに不備があるのでこれを修正します。

cd /usr/local/etc/elasticsearch
chgrp -R elasticsearch elasticsearch.keystore x-pack

設定ファイルの編集

次に設定ファイルを編集します。設定ファイルは/usr/local/etc/elasticsearch/elasticsearch.ymlです。ファイルの内容を以下に示します。(コメント部分は除いています。)

自動起動の設定

FreeBSDの起動時に、Elasticsearchが自動的に起動されるよう設定しておきましょう。

sysrc elasticsearch_enable=YES

設定ができたら、以下のコマンドを実行、あるいはFreeBSDマシンを再起動してElasticsearchを起動します。

service elasticsearch start

Elasticsearchの動作確認

Elasticsearchが起動しましたので、ここで一度動作確認を行なっておきましょう。curlコマンドを用いて以下のURLにアクセスします。

$ curl -X GET 'http://localhost:9200/?pretty'
{
  "error" : {
    "root_cause" : [
      {
        "type" : "security_exception",
        "reason" : "missing authentication token for REST request [/?pretty]",
        "header" : {
          "WWW-Authenticate" : "Basic realm=\"security\" charset=\"UTF-8\""
        }
      }
    ],
    "type" : "security_exception",
    "reason" : "missing authentication token for REST request [/?pretty]",
    "header" : {
      "WWW-Authenticate" : "Basic realm=\"security\" charset=\"UTF-8\""
    }
  },
  "status" : 401
}

認証に失敗してエラーになっていますね。次は、Elasticsearchのユーザとパスワードの設定を行ないます。

Elasticsearchのパスワード設定(elastic, kibana, logstash_systemユーザ)

以下のコマンドを実行します。elastic, kibana, およびlogstash_systemユーザのパスワードを設定するよう求められますので、それぞれのパスワードを入力してください。パスワードを手動で設定する代わりにランダムなパスワードを自動生成させたい場合は、コマンドライン末尾のinteractiveautoに変更します。

# bash /usr/local/lib/elasticsearch/bin/x-pack/setup-passwords interactive
Initiating the setup of passwords for reserved users elastic,kibana,logstash_system.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y    # ←yを入力


Enter password for [elastic]:                            # ←パスワードを設定
Reenter password for [elastic]:                          # ←パスワードを再入力
Enter password for [kibana]:                             # ←パスワードを設定
Reenter password for [kibana]:                           # ←パスワードを再入力
Enter password for [logstash_system]:                    # ←パスワードを設定
Reenter password for [logstash_system]:                  # ←パスワードを再入力
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [elastic]

Elasticsearchの動作確認(再)

認証情報を設定したら、再度動作確認を行ないます。今度は、ユーザelasticとパスワードを指定してアクセスしてみましょう。

$ curl -u elastic:<elasticユーザのパスワード> -X GET 'http://localhost:9200/?pretty'
{
  "name" : "<ノード名>",
  "cluster_name" : "<クラスタ名>",
  "cluster_uuid" : "xxxxxxxxxxxxxxxxxxxxxx",
  "version" : {
    "number" : "6.2.3",
    "build_hash" : "c59ff00",
    "build_date" : "2018-03-13T10:06:29.741383Z",
    "build_snapshot" : false,
    "lucene_version" : "7.2.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

Elasticsearchのノード名、クラスタ名、バージョン情報などの基本情報が表示されました。認証成功です。

以上で、Elasticsearchのインストールと設定は完了です。次回の記事では、Kibanaのインストールと設定を行ないます。

参考文献

  1. The Open Source Elastic Stack, https://www.elastic.co/products
  2. Subscriptions that Go to Work for You, https://www.elastic.co/subscriptions
  3. Install Elasticsearch with .zip or .tar.gz, https://www.elastic.co/guide/en/elasticsearch/reference/6.2/zip-targz.html
  4. Installing X-Pack in Elasticsearch, https://www.elastic.co/guide/en/elasticsearch/reference/6.2/installing-xpack-es.html
  5. ELK Stackのインストール, https://gato.intaa.net/archives/11302
  6. Elastic Stackでシステム監視 FreeBSDのportsで6.2.3に更新, https://gato.intaa.net/archives/12499