ELKスタックは、Elasticsearch、Logstash、Kibanaの略称で、以下の機能を提供します:
- Elasticsearch: ログ解析ツールとアプリケーション構成データベースを備えたスケーラブルな検索および分析エンジンで、データ駆動型アプリケーションに最適です。
- Logstash: 様々なソースからログを収集し、解析してElasticsearchに送信するログ処理ツールです。
- Kibana: Elasticsearchに保存されたデータをインタラクティブなグラフ、グラフ、ダッシュボードを使用して探索および分析できる強力な可視化ツールです。
Elasticsearchのインフラストラクチャ
ELKスタックのデプロイに進む前に、まずElasticsearchのインフラストラクチャの重要なコンポーネントを理解しましょう:
- ノード: Elasticsearchは、検索および分析タスクのバイナリとして機能する専用サーバーであるノード上で実行されます。
- シャード: データベーススペースは論理的にシャードに分割され、データのアクセスと分散を高速化します。
- インデックス: Elasticsearchは、保存されたデータをインデックスに整理し、効率的なデータ管理を促進します。
- ELKスタックの構成: ELKスタックをKubernetes上にデプロイするには、Kubernetesクラスタが必要です。既にクラスタを持っている場合は、デプロイに進むことができます。そうでない場合は、Terraformファイルを含む提供されたGitHubリポジトリを使用してKubernetesクラスタを設定できます。
- Elasticsearchのデプロイ: Helmチャートを利用することで、Elasticsearchを効率的にデプロイできます。値ファイルを変更して、特定の要件に合わせることができます。例えば、レプリカの数を調整したり、特定の機能をオン/オフにすることができます。Artifactory Hubからダウンロードしてください。
values-elasticsearch.yaml
clusterName: "itsyndicateblog"
replicas: 1
minimumMasterNodes: 1
createCert: true
secret:
enabled: true
password: "" # generated randomly if not defined
image: "docker.elastic.co/elasticsearch/elasticsearch"
imageTag: "8.5.1"
resources:
requests:
cpu: "200m"
memory: "500Mi"
limits:
cpu: "300m"
memory: "1Gi"
ingress:
enabled: false # enable ingress only if you need external access to elasticsearch cluster
hosts:
- host: elastic.itsyndicate.org
paths:
- path: /
値をカスタマイズした後、Helmチャートを使用してElasticsearchをインストールしてください。
helm install elasticsearch -f elasticsearch-values.yaml <chart-name>
注意: 永続ボリューム用にドライバー(EBSまたはEFS)を構成していることを確認してください。
Kibanaのデプロイ
Helmチャートを使用してKibanaをデプロイするのは簡単です。値ファイルでElasticsearchサービスのURLとポートを指定してください。
values-kibana.yaml
elasticsearchHosts: "https://elasticsearch-master:9200"
enterpriseSearch:
host: "https://elasticsearch-master:9200"
helm install kibana -f kibana-values.yaml <chart-name>
Kibanaが正しくインストールされているか確認し、コンテナのポートをローカルネットワークにポートフォワードします(K8s Lensを使用しています)。
LogstashとFilebeatのデプロイ
効果的なログ管理のために、LogstashとFilebeatを使用します。Filebeatはさまざまなソースから記録を収集し、Logstashはそれらを処理してElasticsearchに送信します。
Logstashのデプロイ
- 設定を含むリポジトリをクローンします:logstash-k8s
- tf-modules/eks/manifests/logstash-k8sに移動してください。
- configmap.yaml ファイルを編集する
- elasticsearchのホスト、ユーザー、パスワードを追加します(これらはKubernetesの“Secrets”リソースから取得できます)
- テンプレートを適用する:
kubectl apply -f logstash-k8s -n $CHANGE_TO_ELASTIC_NS
Filebeatをデプロイする
- Filebeatの設定がノード上の正しいログファイル(EKSでは通常、/var/log/containersフォルダです)を指していることを確認してください。確認するには、ノードの1つにログインし、/var/log/containersディレクトリに移動します。ファイルがない場合は、ディレクトリを変更してみてください。
- すべてが正しければ、Kubernetesテンプレートを適用する:
kubectl apply -f filebeat-k8s
ログがElasticsearchにストリーミングされる方法を確認するためのシンプルなアプリケーションをデプロイする
- クローンされたリポジトリからeks/manifestsフォルダに移動する
- コマンドを実行する:
kubeclt apply -f app -n default
インストールが完了したら、Kibanaに再訪し、elasticsearchインデックスを作成する
インデックスを作成する:
logstashインデックスパターンを作成: logstash-[namespace]*
これで、デプロイされたアプリケーションからのログが表示されるはずです。そうでない場合は、このアプリにいくつかのリクエストを送信し、問題をトラブルシューティングしてみてください。必要に応じてビデオガイドを参照してください。
結論
ELKスタックをKubernetesに正常にデプロイし、アプリケーションに強力なログ分析とデータ駆動型の洞察を提供しました。Elasticsearch、Logstash、Kibanaは大規模なデータストリームを効果的に処理し、意味のある可視化を提供します。
これで強力なロギングソリューションが整いましたので、ログを効率的に管理し、貴重な洞察を得ることができます。分析を楽しんでください!
ELKスタックをデプロイするためのこのガイドを読んでいただき、ありがとうございます。質問がある場合やさらなる支援が必要な場合は、お気軽にご連絡ください。コーディングを楽しんでください!
Source:
https://dzone.com/articles/how-to-deploy-the-elk-stack-on-kubernetes