Elastic Stack · 3 min read · Nov 11, 2025

Ubuntu 20.04 LTSにElastic Stackをインストールする方法

Elastic Stack(以前のELK Stack)は、Elasticによって開発されたオープンソースソフトウェアのグループで、さまざまなソースからデータを収集します。これにより、中央のElastic Stackプラットフォーム上で、さまざまなソースからのデータを収集、保存、処理、分析、視覚化することができます。

Elastic Stackは、データを保存するための「Elasticsearch」、データにアクセスして視覚化するためのダッシュボード「Kibana」、任意のデータを処理するための拡張可能なプラグインを持つ動的データ収集パイプライン「Logstash」、エッジマシンからデータを送信する軽量データ輸送プラットフォーム「Beats」で構成されています。

Elastic Stackは、サーバー上のプロミスにデプロイすることも、SaaS(Software as a Service)公式Elastic Cloudを購入することもできます。

このチュートリアルでは、Ubuntu 20.04サーバーにElastic Stackをインストールする方法を示します。同じサーバーにElasticsearchとKibanaをインストールし、別のサーバーに「Filebeat」をインストールして設定し、ログを直接Elasticsearchサーバーに送信します。

要件

このチュートリアルでは、Ubuntu 20.04を実行している2つのサーバーを使用します。Elastic Stackソフトウェアは4GBのRAMを持つサーバーにインストールされ、1GBのRAMを持つ別のサーバーをFilebeatのクライアントとして使用します。

何をしますか?

  • Elastic Stackリポジトリを追加
  • Elasticsearchをインストールして設定
  • Kibanaをインストールして設定
  • KibanaのリバースプロキシとしてNginxを設定
  • Filebeatをインストールして設定
  • Kibanaユーザーの新しいロールを設定
  • Filebeatの新しいインデックスパターンを作成

ステップ1 - Elastic Stackリポジトリを追加

まず、両方のUbuntuサーバーにElastic StackソフトウェアのGPGキーとリポジトリを追加します。

さらに進む前に、HTTPSセキュア接続を介してソフトウェアインストールを保護するために「apt-transport-https」をインストールします。

sudo apt install apt-transport-https

次に、以下のコマンドを使用してElastic StackのGPGキーとリポジトリを追加します。

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -  
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

次に、Ubuntuシステム上のすべての利用可能なリポジトリを更新します。

sudo apt update

これで、両方のサーバーにElasticソフトウェアスタックをインストールする準備が整いました。

add elastic repository

ステップ2 - Elasticsearchをインストールして設定

このステップでは、内部IPアドレス「172.16.0.3」を持つ単一ノードサーバー「ELK20」にElasticsearchをインストールして設定します。

Elasticsearchをインストールする前に、vimエディタを使用して「/etc/hosts」ファイルを編集します。

vim /etc/hosts

次に、以下のように内部IPアドレスとホスト名を入力します。

172.16.0.3    ELK20

保存して閉じます。

次に、以下のaptコマンドを使用してElasticsearchパッケージをインストールします。

sudo apt install elasticsearch

すべてのインストールが完了したら、「/etc/elasticsearch」ディレクトリに移動し、設定「elasticsearch.yml」設定ファイルを編集します。

cd /etc/elasticsearch/  
vim elasticsearch.yml

「node.name」のコメントを外し、サーバーのホスト名を入力します。

node.name: ELK20

「network.host」行に、Elasticsearchサービスが実行されるサーバーのIPアドレスを入力します。内部IPアドレスのみを使用することをお勧めします。

network.host: 172.16.0.3

「http.port」行のコメントを外し、デフォルトのままにします。Elasticsearchサービスはデフォルトポート「9200」で実行されます。

http.port: 9200

「cluster.initial_master_nodes」行のコメントを外し、サーバーのホスト名を入力します。

cluster.initial_master_nodes: ["ELK20"]

最後に、以下の設定を行ってElasticsearchのセキュリティを有効にします。

xpack.security.enabled: true

保存して閉じます。

次に、systemdサービスマネージャーをリロードし、Elasticsearchサービスを開始してシステムブートに追加します。

systemctl daemon-reload  

systemctl start elasticsearch  
systemctl enable elasticsearch

ElasticsearchサービスはUbuntu 20.04サーバーで稼働しています。

install and configure elasticsearch

次に、Elasticsearchの組み込みユーザーのパスワードを生成します。

「/usr/share/elasticsearch」ディレクトリに移動し、以下のようにelasticsearchユーティリティコマンド「elasticsearch-setup-passwords」を実行します。

cd /usr/share/elasticsearch/  
bin/elasticsearch-setup-passwords auto -u "http://172.16.0.3:9200"

‘y’を入力して確認し、パスワードを生成します。

Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.  
The passwords will be randomly generated and printed to the console.  
Please confirm that you would like to continue [y/N] y

以下は得られる結果です。

Changed password for user apm_system  
PASSWORD apm_system = DP5RpFfbCyL6UpIFO8Q3  
  
Changed password for user kibana_system  
PASSWORD kibana_system = U6gDLoJCqqChqcbD1IY  
  
Changed password for user kibana  
PASSWORD kibana = U6gDLoJCqqChqcbD1IYV  
  
Changed password for user logstash_system  
PASSWORD logstash_system = KrHaGvHGfkAz12dcSeWo  
  
Changed password for user beats_system  
PASSWORD beats_system = VnUUOtShQoFAGEZ62G7m  
  
Changed password for user remote_monitoring_user  
PASSWORD remote_monitoring_user = xgaLXw6jp3Ses6CZ2hEB  
  
Changed password for user elastic  
PASSWORD elastic = elu2ZlMm4mOkM7fgCeUM

ご覧のとおり、Elasticsearchのいくつかの組み込みユーザーのパスワードが生成されました。

Gambar

Elasticsearchのインストールをテストするために、デフォルトユーザー「elastic」でcurlコマンドを実行します。

curl -X GET -u elastic "http://172.16.0.3:9200/?pretty"

elastic」ユーザーのパスワードを入力すると、以下の結果が得られます。

testing elasticsearch authentication

その結果、Elasticsearchサーバーは稼働しており、認証が有効になっています。

ステップ3 - Kibanaをインストールして設定

このステップでは、Elasticsearchと同じサーバーにKibanaをインストールして設定します。KibanaをElasticsearchサーバーに接続し、デフォルトユーザー「kibana_system」と上記で生成されたパスワードを使用します。

以下のaptコマンドを使用してKibanaをインストールします。

sudo apt install kibana

すべてのインストールが完了したら、「/etc/kibana」ディレクトリに移動し、vimエディタを使用して設定「kibana.yml」を編集します。

cd /etc/kibana/  
vim kibana.yml

以下の行のコメントを外し、自分の値に変更します。Kibanaをローカルネットワークで実行することをお勧めします。なぜなら、KibanaのリバースプロキシとしてNginxを使用するからです。

server.port: 5601  
server.host: "172.16.0.3"  
server.name: "ELK20"

その後、「elasticsearch.url」をElasticsearchのIPアドレスに変更します。

elasticsearch.url: "http://172.16.0.3:9200"

以下の「elasticsearch.username」と「elasticsearch.password」行のコメントを外し、自分のユーザーとパスワードに変更します。

elasticsearch.username: "kibana_system"  
elasticsearch.password: "N88VBkkelfSV3mBfO6Vh"

保存して閉じます。

次に、以下のコマンドを使用してsystemdマネージャーをリロードします。

systemctl daemon-reload

その後、Kibanaサービスを開始し、システムブートに追加します。

systemctl start kibana  
systemctl enable kibana

KibanaサービスはUbuntu 20.04システムで稼働しています。

install and configure kibana

次に、Kibanaダッシュボードにログインするために使用される新しいユーザーを作成します。

「hakase」という名前の新しいユーザーを作成し、パスワード「hakasepasskibana」を「kibana_admin」ロールで作成します。

curl -X POST -u elastic "http://172.16.0.3:9200/_security/user/hakase?pretty" -H 'Content-Type: application/json' -d'  
{  
  "password" : "hakasepasskibana",  
  "roles" : [ "kibana_admin" ]  
}  
'

「elastic」ユーザーのパスワードを入力すると、以下の結果が得られます。

create kibana user with kibana_admin role

その結果、新しいユーザー「hakase」が作成され、Kibanaダッシュボードにログインできるようになります。

ステップ4 - KibanaのリバースプロキシとしてNginxを設定

このステップでは、KibanaのリバースプロキシとしてNginxをインストールして設定します。

以下のaptコマンドを使用してNginxパッケージをインストールします。

sudo apt install nginx -y

すべてのインストールが完了したら、「/etc/nginx/sites-available/」ディレクトリに移動し、vimエディタを使用して新しい仮想ホストファイル「kibana」を作成します。

cd /etc/nginx/sites-available/  
vim kibana

ドメイン名と「proxy_pass」IPアドレスを自分のものに変更し、以下の内容を貼り付けます。

server {  
    listen 80;  
   
    server_name elk.hakase-labs.io;  
   
    location / {  
        proxy_pass http://172.16.0.3:5601;  
        proxy_http_version 1.1;  
        proxy_set_header Upgrade $http_upgrade;  
        proxy_set_header Connection 'upgrade';  
        proxy_set_header Host $host;  
        proxy_cache_bypass $http_upgrade;  
    }  
}

保存して閉じます。

次に、KibanaのためにNginxの仮想ホストを有効にし、Nginxの設定を確認します。

ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/  
nginx -t

エラーがないことを確認し、Nginxサービスを再起動します。

systemctl restart nginx

その結果、KibanaのリバースプロキシとしてのNginxのインストールと設定が完了しました。Kibanaダッシュボードは、ドメイン名「elk.hakase-labs.io」を介してアクセス可能です。

setup nginx as a reverse proxy for kibana

ウェブブラウザを開き、アドレスバーにKibanaインストールのドメイン名を入力します。

http://elk.hakase-labs.io/

すると、以下のようなKibanaログインページが表示されます。

kibana login page

ユーザー「hakase」とパスワード「hakasepass」を入力し、「ログイン」ボタンをクリックします。

ログインすると、サンプルデータをインポートするか、自分のデータを探索するように求められます。

kibana select option to explore data

自分のデータを探索する」ボタンをクリックします。

これで、以下のようなKibanaダッシュボードが表示されます。

Kibana Dashboard

その結果、KibanaとNginxのインストールが完了しました。

ステップ4 - Filebeatをインストールして設定

このステップでは、ホスト名「client01」とIPアドレス「xxx.xxx.xxx.xxx」を持つクライアントマシンに「Filebeat」をインストールします。Filebeatは、ログを直接Elasticsearchサーバーに送信します。

「Filebeat」をインストールする前に、Elastic Stackリポジトリがシステムに追加されていることを確認してください。

次に、以下のaptコマンドを使用してfilebeatパッケージをインストールします。

sudo apt install filebeat

すべてのインストールが完了したら、「/etc/filebeat」ディレクトリに移動し、vimエディタを使用して設定「filebeat.yml」を編集します。

cd /etc/filebeat/  
vim filebeat.yml

「filebeat.inputs」設定の上部で、「enabled: false」を「enabled: true」に変更します。

filebeat.inputs:  
- type: log  
  enabled: true  
  paths:  
    - /var/log/*.log

次に、Kibanaの設定に移動し、KibanaのIPアドレスとポートでホストを変更し、ユーザー名をデフォルトユーザー「kibana」、上で生成されたパスワードに変更します。

setup.kibana:  
  host: "172.16.0.3:5601"  
  username: "kibana"    
  password: "U6gDLoJCqqChqcbD1IYV"

その後、「output.elasticsearch」設定に移動し、自分の詳細に変更します。

output.elasticsearch:  
  hosts: ["172.16.0.3:9200"]  
  username: "elastic"  
  password: "elu2ZlMm4mOkM7fgCeUM"

保存して閉じます。

次に、systemdマネージャーをリロードし、filebeatサービスを開始してシステムブートに追加します。

systemctl daemon-reload  
  
systemctl start filebeat  
systemctl enable filebeat

Filebeatサービスは「client01」マシンで稼働しています。

Install and Configure Filebeat

次に、以下のコマンドを使用してElasticsearchサーバーにfilebeatインデックステンプレートをロードする必要があります。

filebeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["http://172.16.0.3:9200"]'

以下は得られる結果です。

その結果、filebeatインデックステンプレートがElasticsearchサーバーにロードされ、Kibanaダッシュボードで「filebeat-*」インデックスパターンとして利用可能になります。

ステップ5 - Kibanaユーザーの新しいロールを設定

このステップでは、ユーザー「hakase」がElasticsearch APIを介してElasticsearchサーバー上のすべてのインデックスにアクセスし管理できるようにする新しいElasticsearchロールを作成します。

ユーザーがElasticsearchサーバー上のインデックスを管理できるようにする「events_index」という名前の新しいロールを作成します。

curl -XPOST -u elastic 'http://172.16.0.3:9200/_security/role/events_index' -H "Content-Type: application/json" -d '{  
  "indices" : [  
    {  
      "names" : [ "*" ],  
      "privileges" : [ "all" ]  
    }  
  ]  
}'

Create new role elasticsearch

その後、以下のコマンドを使用してロール「events_index」を確認します。

curl -X GET -u elastic "http://172.16.0.3:9200/_security/role/events_index?pretty"

以下は得られる結果です。

check role elasticsearch

ご覧のとおり、ロール「events_index」はインデックスを管理する権限のみを持ちます。

次に、以下のコマンドを使用して「hakase」ユーザーに「events_index」ロールを追加します。

curl -X POST -u elastic "http://172.16.0.3:9200/_security/user/hakase?pretty" -H 'Content-Type: application/json' -d'  
{  
  "password" : "hakasepasskibana",  
  "roles" : [ "kibana_admin", "events_index" ]  
}  
'

elastic」ユーザーのパスワードを入力すると、ロール「events_index」が「hakase」ユーザーに割り当てられます。

以下のコマンドを使用して「hakase」ユーザーの下にあるすべての利用可能なロールを確認します。

curl -X GET -u elastic "http://172.16.0.3:9200/_security/user/hakase?pretty"

以下は得られる結果です。

assign role to user elasticsearch

その結果、Elasticsearchサーバー上のインデックスを管理する新しいロールが作成されました。

ステップ6 - Filebeatの新しいインデックスパターンを作成

「events_index」という新しいロールを作成した後、「hakase」ユーザーを介してFilebeatの新しいインデックスパターンを作成します。

- インデックスパターンを作成

Kibanaダッシュボードで、左側のメニューオプションをクリックし、「管理」セクションに移動し、「スタック管理」をクリックします。

Kibana」セクションで、「インデックスパターン」をクリックします。

Create Kibana Index Pattern

「インデックスパターンを作成」ボタンをクリックして新しいインデックスパターンを作成します。

「インデックスパターン」フィールドに「filebeat-*」と入力し、「次のステップ」ボタンをクリックします。

Create Filebea Index Pattern on kibana

「タイムフィルターフィールド名」で「@timestamp」を選択し、「インデックスパターンを作成」ボタンをクリックします。

Setup Timestamp as default filter

filebeat-*」インデックスパターンが作成され、デフォルトインデックスパターンとして選択されました(以前にインデックスパターンがない場合)。

Filebeat Index Pattern has been created

- Kibanaでデータを表示

Filebeatによって収集されたデータを表示するには、左上のオプションメニューをクリックし、「発見」をクリックします。

すると、「client01」マシンから収集されたすべてのデータが表示されます。

Data on client01 machine shown on the Kibana Dashboard

フィルタに基づいてデータを表示するには、「KQL」またはKibanaクエリ言語を使用できます。

KQL」フィールドに以下のクエリを入力します。

host.name : client01 and log.file.path: "/var/log/auth.log"

すると、「client01」マシンのSSH認証に関するすべての情報が得られます。

Using KQL Kibana Query Language

その結果、Ubuntu 20.04でセキュリティが有効なElastic Stackのインストールが成功裏に完了しました。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。