Elastic Stack (ELK) を Azure VM にインストールする
適用対象: ✔️ Linux VM ✔️ フレキシブルなスケール セット
この記事では、Elasticsearch、Logstash、および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 コンソールで [検出] を選択して、syslog イベントを検索、参照、およびフィルター処理します。
次のステップ
このチュートリアルでは、Elastic Stack を Azure の開発 VM にデプロイしました。 以下の方法を学習しました。
- Azure リソース グループでの Ubuntu VM の作成
- VM への Elasticsearch、Logstash、および Kibana のインストール
- Logstash から Elasticsearch へのサンプル データの送信
- ポートのオープンと Kibana コンソールでのデータ操作