Elastic Stack (ELK) を Azure VM にインストールする

適用対象: ✔️ Linux VM ✔️ フレキシブルなスケール セット

この記事では、ElasticsearchLogstash、およびKibana を、Azure の Ubuntu VM にデプロイする方法について説明します。 実行中の Elastic Stack を表示するために、必要に応じて Kibana に接続し、サンプル ログ データを使用できます。

さらに、「Elastic on Azure 仮想マシンのデプロイ」モジュールでは、Elastic on Azure 仮想マシンのデプロイに関する詳細なガイド付きチュートリアルを行うことができます。

このチュートリアルで学習する内容は次のとおりです。

  • Azure リソース グループでの Ubuntu VM の作成
  • VM への Elasticsearch、Logstash、および Kibana のインストール
  • Logstash による Elasticsearch へのサンプル データの送信
  • ポートのオープンと Kibana コンソールでのデータ操作

このデプロイは、Elastic Stack での基本的な開発に適しています。 運用環境の推奨事項を含め、Elastic Stack の詳細については、Elastic のドキュメントAzure アーキテクチャ センターを参照してください。

前提条件

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。

  • CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。

    • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。

    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。

  • この記事では、Azure CLI のバージョン 2.0.4 以降が必要です。 Azure Cloud Shell を使用している場合は、最新バージョンが既にインストールされています。

リソース グループを作成する

az group create コマンドを使用して、リソース グループを作成します。 Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。

次の例では、myResourceGroup という名前のリソース グループを eastus に作成します。

az group create --name myResourceGroup --location eastus

仮想マシンの作成

az vm create コマンドで VM を作成します。

次の例では、myVM という名前の VM を作成し、既定のキーの場所にまだ SSH キーが存在しない場合は SSH キーを作成します。 特定のキーのセットを使用するには、--ssh-key-value オプションを使用します。

az vm create \
    --resource-group myResourceGroup \
    --name myVM \
    --image Ubuntu2204 \
    --admin-username azureuser \
    --generate-ssh-keys

VM が作成されると、Azure CLI によって次の例のような情報が表示されます。 publicIpAddress を書き留めておきます。 このアドレスは、VM へのアクセスに使用されます。

{
  "fqdns": "",
  "id": "/subscriptions/<subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM",
  "location": "eastus",
  "macAddress": "00-0D-3A-23-9A-49",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.4",
  "publicIpAddress": "40.68.254.142",
  "resourceGroup": "myResourceGroup"
}

VM への SSH 接続

VM のパブリック IP アドレスが未確認である場合は、az network public-ip list コマンドを実行してください。

az network public-ip list --resource-group myResourceGroup --query [].ipAddress

次のコマンドを使用して、仮想マシンとの SSH セッションを作成します。 ご使用の仮想マシンの正しいパブリック IP アドレスに置き換えてください。 この例の IP アドレスは 40.68.254.142 です。

ssh azureuser@40.68.254.142

Elastic Stack のインストール

Elasticsearch 署名キーをインポートし、APT ソース リストを更新して、Elastic パッケージ リポジトリを追加します。

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

VM に Java Virtual をインストールし、JAVA_HOME 変数を構成します。これは、Elastic Stack コンポーネントを実行するうえで必要です。

sudo apt update && sudo apt install openjdk-8-jre-headless
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

次のコマンドを実行して、Ubuntu パッケージ ソースを更新し、Elasticsearch、Kibana、および Logstash をインストールします。

sudo apt update && sudo apt install elasticsearch kibana logstash   

注意

ディレクトリ レイアウト、初期構成など、インストール手順の詳細については、Elastic のドキュメントを参照してください

Elasticsearch の起動

次のコマンドを使用して、VM で Elasticsearch を起動します。

sudo systemctl start elasticsearch.service

このコマンドによる出力はありません。そこで、この curl コマンドを使用して、Elasticsearch が VM で実行されていることを確認します。

sudo curl -XGET 'localhost:9200/'

Elasticsearch が実行されている場合は、次のような出力が表示されます。

{
  "name" : "w6Z4NwR",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "SDzCajBoSK2EkXmHvJVaDQ",
  "version" : {
    "number" : "5.6.3",
    "build_hash" : "1a2f265",
    "build_date" : "2017-10-06T20:33:39.012Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.1"
  },
  "tagline" : "You Know, for Search"
}

Logstash の起動と、Elasticsearch へのデータの追加

次のコマンドを使用して、Logstash を起動します。

sudo systemctl start logstash.service

対話モードで Logstash をテストして、適切に動作していることを確認します。

sudo /usr/share/logstash/bin/logstash -e 'input { stdin { } } output { stdout {} }'

これは、標準入力を標準出力にエコーする基本的な Logstash パイプラインです。

The stdin plugin is now waiting for input:
hello azure
2017-10-11T20:01:08.904Z myVM hello azure

この VM から Elasticsearch にカーネル メッセージを転送するように Logstash を設定します。 空のディレクトリに vm-syslog-logstash.conf という新しいファイルを作成し、次の Logstash 構成で貼り付けます。

input {
    stdin {
        type => "stdin-type"
    }

    file {
        type => "syslog"
        path => [ "/var/log/*.log", "/var/log/*/*.log", "/var/log/messages", "/var/log/syslog" ]
        start_position => "beginning"
    }
}

output {

    stdout {
        codec => rubydebug
    }
    elasticsearch {
        hosts  => "localhost:9200"
    }
}

この構成のテストし、syslog データを Elasticsearch に送信します。

sudo /usr/share/logstash/bin/logstash -f vm-syslog-logstash.conf

端末の syslog エントリが、Elasticsearch に送信されたようにエコーされていることがわかります。 データをいくつか送信したら、CTRL+C を使用して Logstash を終了します。

Kibana の起動と、Elasticsearch のデータの視覚化

/etc/kibana/kibana.yml を編集し、Web ブラウザーからアクセスできるように、リッスン中の Kibana の IP アドレスを変更します。

server.host: "0.0.0.0"

次のコマンドを使用して、Kibana を起動します。

sudo systemctl start kibana.service

Azure CLI からポート 5601 を開いて、Kibana コンソールへのリモート アクセスを許可します。

az vm open-port --port 5601 --resource-group myResourceGroup --name myVM

Kibana コンソールを開いて、 [作成] を選択し、前に Elasticsearch に送信した syslog データに基づいて、既定のインデックスを生成します。

Kibana コンソールを示すスクリーンショット。[作成] ボタンが強調表示されています。

Kibana コンソールで [検出] を選択して、syslog イベントを検索、参照、およびフィルター処理します。

Kibana で Syslog イベントを参照

次のステップ

このチュートリアルでは、Elastic Stack を Azure の開発 VM にデプロイしました。 以下の方法を学習しました。

  • Azure リソース グループでの Ubuntu VM の作成
  • VM への Elasticsearch、Logstash、および Kibana のインストール
  • Logstash から Elasticsearch へのサンプル データの送信
  • ポートのオープンと Kibana コンソールでのデータ操作