はじめに
Kuberntes環境でELK Stack(Elasticsearc,Logstash,Kibana,Filebeat)をhelmでインストールする方法について説明します.
まず,環境についてです.環境は以下のにようになっており,ノードは1台です.
ノードの詳細情報
- CPU: 4core
- メモリー: 16GB
- ストレージ: 25GB
- OS: Ubuntu 24.04
次に,インストールの手順についてです.以下の手順でインストールと説明をします.
インストール手順
- k3sのインストール
- helmのインストール
- namespaceの作成
- Elasticsearchのインストール
- Logstashのインストール
- Kibanaのインストール
- usernameとpasswordを確認
- Filebeatのインストール
k3sのインストール
# k3sを公式スクリプトを使用してインストール
sudo curl -sfL https://get.k3s.io | sh -
# Kubernetesクライアント設定ファイル(k3s.yaml)を /tmp/config にコピー
sudo cp -p /etc/rancher/k3s/k3s.yaml /tmp/config
# コピーした設定ファイルのアクセス権を変更し、全ユーザーが読み取れるようにする
sudo chmod 644 /tmp/config
# 環境変数 KUBECONFIG に設定ファイルのパスを登録し、シェル起動時に適用する設定を .bashrc に追加
echo "export KUBECONFIG=/tmp/config" >> ~/.bashrc
# .bashrc に追加した環境変数や設定を現在のシェルに反映
source ~/.bashrc
helmのインストール
# helm v3のインストールスクリプトをget_helm.shという名前でダウンロード
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
# ダウンロードしたスクリプトに実行権限を付与
chmod 700 get_helm.sh
# helm v3のインストールスクリプトを実行
./get_helm.sh
# Elastic社のhelmチャートリポジトリをhelmに登録
helm repo add elastic https://helm.elastic.co
# 登録したhelmリポジトリの情報を最新状態に更新
helm repo update
namespaceの作成(任意)
今回は,elasticをnamespaceとして作成したので,その時のものを例としてコマンドを載せています.
kubectl create namespace elastic
Elasticsearchのインストール
helm install elasticsearch elastic/elasticsearch -n elastic --set replicas=1
Logstashのインストール
helm install logstash elastic/logstash -n elastic --set replicas=1
Kibanaのインストール
helm install kibana elastic/kibana -n elastic \
--set replicas=1 \
--set service.type=NodePort \
--set service.nodePort=30100 \
--set service.port=5601 \
--set elasticsearchHosts="https://elasticsearch-master:9200" \
--timeout 30m \
--wait=false
usernameとpasswordを確認
Filestreamをインストールする際にそれぞれのVM環境のpasswordが必要になるので,そのための確認コマンドです.
# username
kubectl get secret elasticsearch-master-credentials -n 作成したnamespace -o jsonpath='{.data.username}' | base64 --decode
# password
kubectl get secret elasticsearch-master-credentials -n 作成したnamespace -o jsonpath='{.data.username}' | base64 --decode
Filebeatのインストール
helm install filebeat elastic/filebeat -n elastic \
--set daemonset.enabled=true \
--set-string filebeatConfig."filebeat\.yml"="
filebeat.inputs:
- type: container
paths:
- /var/log/containers/*.log
output.elasticsearch:
hosts: [\"elasticsearch-master:9200\"]
protocol: https
username: \"確認したusernameを入れる\"
password: \"確認したpasswordを入れる\"
ssl.verification_mode: none"
ここまでがインストールの手順です.これらによりELK Stackがインストールされ使用できるようになります.
確認
ELK StackとFilebeatが正常にインストールされ,起動されているかを確認するには,以下のコマンドを使用すると確認できます.
kubectl get pod -A
実行結果
このようにREADYが1/1になっており,STATUSがRunningになっていればOKです.
サイトにて,IPアドレス:ポート番号で検索をかけるとKibanaも閲覧可能です.ポート番号は30100です.
最後に
注意点として,passwordを適切なものに設定していなかったり,CPUの数が足りていなかったりすると,インストールの手順の中でエラーが起こるかもしれないので気を付けてください.