開発者ドキュメント

Ubuntu18.04にElasticsearchをインストールして設定する方法

この記事の以前のバージョンはによって書かれました トリ.

序章

Elasticsearch は、データをリアルタイムで分散検索および分析するためのプラットフォームです。 使いやすさ、強力な機能、拡張性により、人気のある選択肢です。

この記事では、Elasticsearchのインストール、ユースケースに合わせた構成、インストールの保護、Elasticsearchサーバーの操作の開始について説明します。

前提条件

このチュートリアルを実行する前に、次のものが必要です。

このチュートリアルでは、Elasticsearchの実行に必要な最小限のCPUとRAMを使用します。 Elasticsearchサーバーに必要なCPU、RAM、およびストレージの量は、予想されるログの量によって異なることに注意してください。

ステップ1—Elasticsearchをインストールする

Elasticsearchコンポーネントは、Ubuntuのデフォルトのパッケージリポジトリでは利用できません。 ただし、Elasticのパッケージソースリストを追加した後、APTを使用してインストールできます。

システムをパッケージのなりすましから保護するために、すべてのパッケージはElasticsearch署名キーで署名されています。 キーを使用して認証されたパッケージは、パッケージマネージャーによって信頼されていると見なされます。 このステップでは、Elasticsearchをインストールするために、Elasticsearchの公開GPGキーをインポートし、Elasticパッケージのソースリストを追加します。

まず、URLを使用してデータを転送するためのコマンドラインツールであるcURLを使用して、Elasticsearchの公開GPGキーをAPTにインポートします。 引数-fsSLを使用して、すべての進行状況と発生する可能性のあるエラー(サーバー障害を除く)をサイレントにし、リダイレクトされた場合にcURLが新しい場所でリクエストを行えるようにしていることに注意してください。 cURLコマンドの出力をapt-keyプログラムにパイプします。これにより、パブリックGPGキーがAPTに追加されます。

  1. curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

次に、Elasticソースリストをsources.list.dディレクトリに追加します。ここで、APTは新しいソースを探します。

  1. echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

次に、パッケージリストを更新して、APTが新しいElasticソースを読み取るようにします。

  1. sudo apt update

次に、次のコマンドを使用してElasticsearchをインストールします。

  1. sudo apt install elasticsearch

これでElasticsearchがインストールされ、構成する準備が整いました。

ステップ2—Elasticsearchを設定する

Elasticsearchを構成するには、ほとんどの構成オプションが保存されているメイン構成ファイルelasticsearch.ymlを編集します。 このファイルは/etc/elasticsearchディレクトリにあります。

お好みのテキストエディタを使用して、Elasticsearchの設定ファイルを編集します。 ここでは、nanoを使用します。

  1. sudo nano /etc/elasticsearch/elasticsearch.yml

注: Elasticsearchの構成ファイルはYAML形式です。つまり、インデント形式を維持する必要があります。 このファイルを編集するときは、余分なスペースを追加しないでください。

elasticsearch.ymlファイルは、クラスター、ノード、パス、メモリ、ネットワーク、検出、およびゲートウェイの構成オプションを提供します。 これらのオプションのほとんどはファイルで事前構成されていますが、必要に応じて変更できます。 単一サーバー構成のデモンストレーションの目的で、ネットワークホストの設定のみを調整します。

Elasticsearchは、ポート9200であらゆる場所からのトラフィックをリッスンします。 Elasticsearchインスタンスへの外部アクセスを制限して、部外者がデータを読み取ったり、[REST API]( https://en.wikipedia.org/wiki/Representational_state_transfer )を介してElasticsearchクラスターをシャットダウンしたりしないようにする必要があります。 )。 アクセスを制限してセキュリティを強化するには、network.hostを指定する行を見つけてコメントを外し、その値をlocalhostに置き換えて次のようにします。

/etc/elasticsearch/elasticsearch.yml
. . .
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: localhost
. . .

ElasticsearchがすべてのインターフェースとバインドされたIPでリッスンするようにlocalhostを指定しました。 特定のインターフェースでのみリッスンする場合は、localhostの代わりにIPを指定できます。 elasticsearch.ymlを保存して閉じます。 nanoを使用している場合は、CTRL+XYENTERの順に押すと使用できます。

これらは、Elasticsearchを使用するために開始できる最小設定です。 これで、Elasticsearchを初めて起動できます。

systemctlでElasticsearchサービスを開始します。 Elasticsearchを起動するまでしばらくお待ちください。 そうしないと、接続できないというエラーが発生する可能性があります。

  1. sudo systemctl start elasticsearch

次に、次のコマンドを実行して、サーバーが起動するたびにElasticsearchを起動できるようにします。

  1. sudo systemctl enable elasticsearch

起動時にElasticsearchを有効にして、セキュリティについて説明する次のステップに進みましょう。

ステップ3—Elasticsearchの保護

デフォルトでは、ElasticsearchはHTTPAPIにアクセスできるすべての人が制御できます。 Elasticsearchはローカルでのみアクセスできるループバックインターフェイス(つまり、127.0.0.1)でのみリッスンするため、これは必ずしもセキュリティリスクではありません。 したがって、パブリックアクセスは不可能であり、すべてのサーバーユーザーが信頼されている限り、セキュリティは大きな問題にはなりません。

HTTP APIへのリモートアクセスを許可する必要がある場合は、UbuntuのデフォルトファイアウォールであるUFWを使用してネットワークの露出を制限できます。 前提条件のUbuntu18.04 チュートリアルによるサーバーの初期設定の手順に従った場合、このファイアウォールはすでに有効になっているはずです。

次に、信頼できるリモートホスト(通常は198.51.100.0などの単一サーバー設定で使用しているサーバー)のデフォルトのElasticsearch HTTP APIポート(TCP 9200)へのアクセスを許可するようにファイアウォールを構成します。 アクセスを許可するには、次のコマンドを入力します。

  1. sudo ufw allow from 198.51.100.0 to any port 9200

それが完了したら、次のコマンドでUFWを有効にできます。

  1. sudo ufw enable

最後に、次のコマンドを使用してUFWのステータスを確認します。

  1. sudo ufw status

ルールを正しく指定した場合、出力は次のようになります。

Output
Status: active To Action From -- ------ ---- 9200 ALLOW 198.51.100.0 22 ALLOW Anywhere 22 (v6) ALLOW Anywhere (v6)

これで、UFWを有効にして、Elasticsearchポート9200を保護するように設定する必要があります。

追加の保護に投資したい場合、Elasticsearchは市販のシールドプラグインを購入できます。

ステップ4—Elasticsearchのテスト

これで、Elasticsearchはポート9200で実行されているはずです。 cURLとGETリクエストでテストできます。

  1. curl -X GET 'http://localhost:9200'

次の応答が表示されます。

Output
{ "node.name" : "My First Node", "cluster.name" : "mycluster1", "version" : { "number" : "2.3.1", "build_hash" : "bd980929010aef404e7cb0843e61d0665269fc39", "build_timestamp" : "2020-04-04T12:25:05Z", "build_snapshot" : false, "lucene_version" : "5.5.0" }, "tagline" : "You Know, for Search" }

上記のような応答が表示された場合、Elasticsearchは正常に機能しています。 そうでない場合は、インストール手順に正しく従っていて、Elasticsearchが完全に起動するまでしばらく待っていることを確認してください。

Elasticsearchのより徹底的なチェックを実行するには、次のコマンドを実行します。

  1. curl -XGET 'http://localhost:9200/_nodes?pretty'

上記のコマンドの出力では、ノード、クラスター、アプリケーションパス、モジュールなどの現在のすべての設定を確認できます。

ステップ5—Elasticsearchを使用する

Elasticsearchの使用を開始するには、最初にいくつかのデータを追加しましょう。 ElasticsearchはRESTfulAPIを使用します。これは、通常のCRUDコマンド c reate、 r ead、 u pdate、および deleteに応答します。 。 これを操作するには、cURLコマンドを再度使用します。

次のように最初のエントリを追加できます。

  1. curl -XPOST -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

次の応答が返されます。

Output
{"_index":"tutorial","_type":"helloworld","_id":"1","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}

cURLを使用して、ElasticsearchサーバーにHTTPPOSTリクエストを送信しました。 リクエストのURIは/tutorial/helloworld/1で、いくつかのパラメーターがあります。

この最初のエントリは、HTTPGETリクエストを使用して取得できます。

  1. curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

これは、結果の出力になります。

Output
{"_index":"tutorial","_type":"helloworld","_id":"1","_version":1,"found":true,"_source":{ "message": "Hello, World!" }}

既存のエントリを変更するには、HTTPPUTリクエストを使用できます。

  1. curl -X PUT -H "Content-Type: application/json" 'localhost:9200/tutorial/helloworld/1?pretty' -d
  2. '
  3. {
  4. "message": "Hello, People!"
  5. }'

Elasticsearchは、次のような変更が成功したことを確認する必要があります。

Output
{ "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "created" : false }

上記の例では、最初のエントリのmessageを「Hello、People!」に変更しました。 これにより、バージョン番号は自動的に2に増加しました。

上記のリクエストで余分な引数prettyに気づいたかもしれません。 人間が読める形式を有効にして、各データフィールドを新しい行に書き込むことができるようにします。 次のコマンドを入力して、データを取得するときに結果を「プリティファイ」して、より読みやすい出力を取得することもできます。

  1. curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1?pretty'

これで、応答は人間が解析できるようにフォーマットされます。

Output
{ "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "found" : true, "_source" : { "message" : "Hello, People!" } }

Elasticsearchにデータを追加してクエリしました。 その他の操作については、APIドキュメントを確認してください。

結論

これで、Elasticsearchがインストール、構成され、使用が開始されました。 Elasticsearchの最初のリリース以降、Elasticは、Elastic Stackの一部としてElasticsearchと組み合わせて使用する、Logstash、Kabana、Beatsの3つの追加ツールを開発しました。 これらのツールを一緒に使用すると、集中ログと呼ばれる方法で、任意のソースから任意の形式で生成されたログを検索、分析、および視覚化できます。 Ubuntu18.04でElasticStackの使用を開始するには、ガイド Ubuntu 18.04 にElasticsearch、Logstash、およびKibana(Elastic Stack)をインストールする方法を参照してください。

モバイルバージョンを終了