Kubernetes ぞのログむン: EFK ず PLG

Kubernetes ぞのログむン: EFK ず PLG

分散システムの耇雑化に䌎い、監芖はクラりド゜リュヌションの成長においお非垞に重芁な芁玠ずなっおいたす。分散システムの挙動を理解するこずは䞍可欠です。あらゆるサヌビスからデヌタを収集し、パフォヌマンス分析、゚ラヌの怜蚌、可甚性、ログを単䞀のむンタヌフェヌスで専門家に提䟛できるスケヌラブルなツヌルが必芁です。

これらのツヌルは、効率的か぀生産的でなければなりたせん。この蚘事では、EFKElasticsearchずPLGLokiずいう2぀の人気のテクノロゞヌスタックを取り䞊げ、それぞれのアヌキテクチャず違いを分析したす。

EFKスタック

非垞に人気の高いELKやEFKに぀いお聞いたこずがあるかもしれたせん。このスタックは、Elasticsearchオブゞェクトストレヌゞ、LogstashたたはFluentDログ収集ず集玄、そしお可芖化のためのKibanaずいった、耇数の異なるパヌツで構成されおいたす。

兞型的な䜜業蚈画は次のようになりたす。

Kubernetes ぞのログむン: EFK ず PLG

Elasticsearch リアルタむム怜玢ず分析機胜を備えた分散オブゞェクトストレヌゞ。ログなどの半構造化デヌタに最適な゜リュヌションです。情報はJSONドキュメントずしお保存され、リアルタむムでむンデックス化され、クラスタヌノヌドに分散されたす。Apache Lucene怜玢゚ンゞンをベヌスにした党文怜玢では、すべおの䞀意の単語ずそれに関連するドキュメントを含む転眮むンデックスが䜿甚されたす。

流暢なD — は、デヌタの収集ず消費の過皋でデヌタの統合を行うデヌタコレクタです。可胜な限りJSON圢匏でデヌタを敎理しようずしたす。アヌキテクチャは拡匵可胜で、より倚くの 数癟皮類の異なる拡匵機胜あらゆる機䌚にコミュニティがサポヌトしたす。

朚堎 — 時系列分析、グラフ分析、機械孊習など、さたざたな远加機胜を備えた Elasticsearch のデヌタ芖芚化ツヌルです。

Elasticsearchアヌキテクチャ

Elasticsearchクラスタヌは、ノヌドに分散しおデヌタを保存し、可甚性ず回埩力を向䞊させたす。クラスタヌは耇数のノヌドで構成され、どのノヌドでもクラスタヌのすべおの圹割を実行できたすが、倧芏暡な導入では通垞、ノヌドに個別のタスクが割り圓おられたす。

クラスタヌ ノヌドの皮類:

  • マスタヌ ノヌド - クラスタヌを管理したす。少なくずも 3 ぀必芁で、1 ぀は垞にアクティブです。
  • デヌタ ノヌド - むンデックス付けされたデヌタを保存し、それを䜿甚しおさたざたなタスクを実行したす。
  • 取り蟌みノヌド - むンデックス䜜成前のデヌタ倉換甚のパむプラむンを敎理したす。
  • 調敎ノヌド - リク゚ストのルヌティング、怜玢凊理フェヌズの短瞮、倧量むンデックスの調敎。
  • アラヌトノヌド - アラヌト時にタスクを起動したす。
  • 機械孊習ノヌド - 機械孊習タスクを凊理したす。

䞋の図は、デヌタの可甚性を高めるために、デヌタがどのようにノヌド間で保存および耇補されるかを瀺しおいたす。

Kubernetes ぞのログむン: EFK ず PLG

各レプリカのデヌタは転眮むンデックスに保存されたす。䞋の図はこれがどのように行われるかを瀺しおいたす。

Kubernetes ぞのログむン: EFK ず PLG

むンストヌル

詳现は以䞋をご芧ください ここで、私はHelmチャヌトを䜿いたす:

$ helm install efk-stack stable/elastic-stack --set logstash.enabled=false --set fluentd.enabled=true --set fluentd-elastics

PLGスタック

この頭字語が芋぀からなくおも驚かないでください。Grafana Lokiずしおよく知られおいたす。いずれにせよ、このスタックは実瞟のある技術的゜リュヌションを䜿甚しおいるため、人気が高たっおいたす。人気の可芖化ツヌルであるGrafanaに぀いお聞いたこずがあるかもしれたせん。その開発者は、Prometheusに觊発されお、氎平スケヌラブルで高性胜なログ集玄システムであるLokiを開発したした。Lokiはログ自䜓ではなくメタデヌタのみをむンデックス化するため、操䜜が簡単でコスト効率に優れおいたす。

プロムテヌル — オペレヌティング システムから Loki クラスタヌにログを送信する゚ヌゞェント。 グラファナ — Loki のデヌタに基づいた芖芚化ツヌル。

Kubernetes ぞのログむン: EFK ず PLG

Loki は Prometheus ず同じ原理に基づいお構築されおいるため、Kubernetes ログの保存ず分析に適しおいたす。

ロキの建築

Loki は、シングルプロセス モヌドたたはマルチプロセス モヌドのいずれかで実行でき、氎平スケヌリングが可胜です。

Kubernetes ぞのログむン: EFK ず PLG

モノリシックアプリケヌションずしおもマむクロサヌビスずしおも動䜜可胜です。単䞀プロセスずしお実行するこずで、ロヌカル開発や小芏暡な監芖に䟿利です。産業甚途での実装やスケヌラブルな負荷には、マむクロサヌビスオプションの䜿甚をお勧めしたす。デヌタの曞き蟌みパスず読み取りパスが分離されおいるため、必芁に応じお埮調敎やスケヌリングが可胜です。

ログ収集システムのアヌキテクチャを詳现なしで芋おみたしょう。

Kubernetes ぞのログむン: EFK ず PLG

説明は次のずおりですマむクロサヌビス アヌキテクチャ

Kubernetes ぞのログむン: EFK ず PLG

コンポヌネント

プロムテヌル — ノヌドにサヌビスセットずしおむンストヌルされた゚ヌゞェント。タスクからログを取埗し、Kubernetes APIを呌び出しおログのラベル付けに䜿甚するメタデヌタを取埗したす。その埌、ログをメむンのLokiサヌビスに送信したす。メタデヌタのマッチングには、Prometheusず同じラベル付けルヌルがサポヌトされおいたす。

ディストリビュヌタヌ — バッファずしお機胜する配信サヌビスです。数癟䞇件ものレコヌドを凊理するために、受信デヌタをブロックに圧瞮したす。耇数のデヌタレシヌバヌが同時に動䜜したすが、3぀の受信デヌタストリヌムに属するログは、そのすべおのブロックにおいお、いずれかのレシヌバヌにのみ栌玍されたす。これは、レシヌバヌのリングずシヌケンシャルハッシュによっお構成されたす。フォヌルトトレランスず冗長性を確保するため、この凊理はn回未蚭定の堎合はXNUMX回実行されたす。

むンゞェスタヌ — 受信偎サヌビス。デヌタブロックはログが远加された圧瞮状態で到着したす。ブロックが十分な倧きさになるず、デヌタベヌスにフラッシュされたす。メタデヌタはむンデックスに、ログを含むブロックのデヌタはチャンク通垞はオブゞェクトストレヌゞに送られたす。フラッシュ埌、受信偎は新しいブロックを䜜成し、そこに新しいレコヌドを远加したす。

Kubernetes ぞのログむン: EFK ず PLG

目次 — デヌタベヌス、DynamoDB、Cassandra、Google BigTable など。

チャンク — 圧瞮されたログ ブロック。通垞は S3 などのオブゞェクト ストレヌゞに保存されたす。

ク゚リア — 面倒な䜜業をすべお行う読み取りパスです。時間範囲ずタグを確認し、むンデックスを参照しお䞀臎するものを探したす。そしお、デヌタブロックを読み取り、フィルタリングしお結果を取埗したす。

それでは、実際に動䜜を芋おみたしょう。

むンストヌル

Kubernetesにむンストヌルする最も簡単な方法は、helmを䜿うこずです。すでにむンストヌルず蚭定が完了しおいるこずを前提ずしおいたすそしお第3バヌゞョン 玄。 翻蚳者)

リポゞトリを远加しおスタックを蚭定したす。

$ helm repo add loki https://grafana.github.io/loki/charts
$ helm repo update
$ helm upgrade --install loki loki/loki-stack --set grafana.enabled=true,prometheus.enabled=true,prometheus.alertmanager.persistentVolume.enabled=false,prometheus.server.persistentVolume.enabled=false

以䞋は、Etcd メトリクスの Prometheus ず Etcd ポッド ログの Loki からのデヌタを衚瀺するダッシュボヌドの䟋です。

Kubernetes ぞのログむン: EFK ず PLG

それでは、䞡システムのアヌキテクチャに぀いお説明し、それぞれの機胜を比范しおみたしょう。

比范

ク゚リ蚀語

Elasticsearchは、Query DSLずLuceneク゚リ蚀語を䜿甚しお党文怜玢機胜を提䟛したす。幅広い挔算子をサポヌトする、成熟した匷力な怜玢゚ンゞンです。コンテキスト怜玢ず関連性に基づく゜ヌトが可胜です。

リングの反察偎には、PromQLPrometheusク゚リ蚀語の埌継であるLokiで䜿甚されおいるLogQLがありたす。LogQLはログタグを䜿甚しおログデヌタをフィルタリングおよび取埗したす。前述のように、いく぀かの挔算子ず算術挔算を䜿甚できたす。 ここでしかし、機胜面では Elastic 蚀語に遅れをずっおいたす。

Loki のク゚リはラベルに関連付けられおいるため、メトリックず簡単に盞関関係をずるこずができ、それらを䜿甚しお運甚監芖を敎理しやすくなりたす。

スケヌラビリティ

どちらのスタックも氎平方向にスケヌラブルですが、Loki は読み取りず曞き蟌みのパスが分離されおおり、マむクロサヌビスアヌキテクチャを採甚しおいるため、より容易に拡匵できたす。Loki はニヌズに合わせおカスタマむズでき、非垞に倧量のログデヌタを凊理できたす。

マルチテナント

クラスタヌのマルチテナントはOPEX削枛の共通のテヌマであり、どちらのスタックもマルチテナント機胜を提䟛したす。Elasticsearchには、いく぀かの 方法 クラむアント分離クラむアントごずに個別のむンデックス、クラむアントベヌスのルヌティング、クラむアント固有のフィヌルド、怜玢フィルタヌ。Lokiは サポヌト HTTP X-Scope-OrgID ヘッダヌの圢匏です。

のコスト

Lokiはデヌタをむンデックスするのではなく、メタデヌタのみをむンデックスするため、非垞に費甚察効果が高いです。これにより、 ストレヌゞの節玄 オブゞェクト ストレヌゞは、Elasticsearch クラスタヌで䜿甚されるブロック ストレヌゞよりも安䟡であるため、メモリ (キャッシュ) も節玄できたす。

たずめ

EFKスタックは、分析、可芖化、ク゚リのための最倧限の柔軟性ず機胜豊富なKibanaむンタヌフェヌスを備え、様々な甚途に䜿甚できたす。機械孊習機胜を远加するこずで、さらに匷化するこずも可胜です。

Lokiスタックは、メタデヌタ怜出メカニズムを備えおいるため、Kubernetes゚コシステムで圹立ちたす。Grafanaずログの時系列に基づいお、監芖甚のデヌタを簡単に盞関させるこずができたす。

コストず長期的なログ保持に関しお蚀えば、Loki はクラりド ゜リュヌションぞの参入に最適な遞択肢です。

垂堎には他にも倚くの代替手段があり、䞭にはあなたにずっおより適したものもあるかもしれたせん。䟋えば、GKE向けのStackdriver統合は優れた監芖゜リュヌションを提䟛したす。この蚘事の分析ではこれらを含めおいたせん。

リンク

この蚘事は埓業員によっお翻蚳され、Habr 向けに䜜成されたした。 スラヌムトレヌニングセンタヌ — 実践的な専門家による集䞭コヌス、ビデオコヌス、䌁業研修Kubernetes、DevOps、Docker、Ansible、Ceph、SRE、Agile

出所 habr.com

DDoS 保護機胜を備えた信頌性の高いサむト甚ホスティング、VPS VDS サヌバヌを賌入する 🔥 DDoS攻撃察策付きの信頌性の高いりェブサむトホスティング、VPS/VDSサヌバヌを賌入したしょう | ProHoster