Kubernetes ぞのログむン: EFK ず PLG

Kubernetes ぞのログむン: EFK ず PLG

分散システムの耇雑さが増すに぀れお、監芖は成長するクラりド ゜リュヌションの非垞に重芁なコンポヌネントになっおいたす。 圌らの行動を理解するこずが必芁です。 すべおのサヌビスからデヌタを収集し、パフォヌマンス分析、゚ラヌ デモンストレヌション、可甚性、ログを備えた単䞀のむンタヌフェむスを専門家に提䟛できる、スケヌラブルなツヌルが必芁です。

これらの同じツヌルは効率的か぀生産的でなければなりたせん。 この蚘事では、EFK (Elasticsearch) ず PLG (Loki) ずいう XNUMX ぀の人気のあるテクノロゞヌ スタックを取り䞊げ、それらのアヌキテクチャず違いを調べたす。

EFKスタック

非垞に人気のある ELK たたは EFK に぀いおは、すでに聞いたこずがあるかもしれたせん。 スタックは、Elasticsearch (オブゞェクト ストレヌゞ)、Logstash たたは FluentD (ログの収集ず集玄)、および芖芚化のための Kibana ずいういく぀かの異なる郚分で構成されたす。

䞀般的なワヌクフロヌは次のようになりたす。

Kubernetes ぞのログむン: EFK ず PLG

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

流暢なD は、デヌタを収集および䜿甚する際にデヌタを統合するデヌタ コレクタヌです。 可胜な限り JSON でデヌタを敎理しようずしたす。 そのアヌキテクチャは拡匵可胜であり、さらに倚くのものがありたす 䜕癟もの異なる拡匵子、コミュニティでサポヌトされ、あらゆる機䌚に察応したす。

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

Elasticsearch アヌキテクチャ

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

クラスタヌノヌドのタむプ:

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

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

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 ぀の受信デヌタ ストリヌムに属するログは、そのすべおのブロックに぀いおそのうちの XNUMX ぀にのみ衚瀺される必芁がありたす。 これは、シンクのリングず順次ハッシュで構成されたす。 フォヌルト トレランスず冗長性のために、これは n 回 (構成されおいない堎合は XNUMX 回) 実行されたす。

むンゞェスタヌ — サヌビス受信者。 デヌタ ブロックは、ログが远加されお圧瞮されお到着したす。 ブロックが十分なサむズになるず、ブロックはデヌタベヌスにフラッシュされたす。 メタデヌタはむンデックスに送られ、ログ ブロックのデヌタはチャンク (通垞はオブゞェクト ストレヌゞ) に送られたす。 リセット埌、受信機は新しいブロックを䜜成し、そこに新しい゚ントリが远加されたす。

Kubernetes ぞのログむン: EFK ず PLG

むンデックス - デヌタベヌス、DynamoDB、Cassandra、Google BigTable など。

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

ク゚リア - すべおの汚い仕事を行う読み取りパス。 時間範囲ずタむムスタンプを調べおから、むンデックスを調べお䞀臎するものを芋぀けたす。 次に、デヌタのブロックを読み取り、フィルタリングしお結果を取埗したす。

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

むンストヌル

Kubernetes にむンストヌルする最も簡単な方法は、helm を䜿甚するこずです。 すでにむンストヌルしお構成しおいるこずを前提ずしおいたす (そしお第XNUMXバヌゞョン 玄。 翻蚳者)

リポゞトリを远加し、スタックをむンストヌルしたす。

$ 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

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

Kubernetes ぞのログむン: EFK ず PLG

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

比范

ク゚リ蚀語

Elasticsearch は、Query DSL ず Lucene ク゚リ蚀語を䜿甚しお、党文怜玢機胜を提䟛したす。 これは、幅広いオペレヌタヌをサポヌトする確立された匷力な怜玢゚ンゞンです。 これを䜿甚するず、コンテキストで怜玢し、関連性で䞊べ替えるこずができたす。

リングの反察偎には、PromQL (Prometheus ク゚リ蚀語) の埌継である Loki で䜿甚される LogQL がありたす。 ログタグを䜿甚しおログデヌタをフィルタリングしお遞択したす。 説明されおいるように、いく぀かの挔算子ず算術を䜿甚するこずができたす。 ここで, しかし、機胜の点ではElastic蚀語に遅れをずっおいたす。

Loki のク゚リはタグに関連付けられおいるため、メトリクスずの関連付けが容易になり、その結果、運甚監芖を敎理しやすくなりたす。

スケヌラビリティ

どちらのスタックも氎平方向にスケヌラブルですが、Loki には個別の読み取りパスず曞き蟌みパスずマむクロサヌビス アヌキテクチャがあるため、それが容易になりたす。 Loki はニヌズに合わせおカスタマむズでき、非垞に倧量のログ デヌタに䜿甚できたす。

マルチテナンシヌ

クラスタヌのマルチテナントは OPEX の略語で共通のテヌマであり、䞡方のスタックがマルチテナントを提䟛したす。 Elasticsearchにはいく぀かありたす 方法 クラむアントの分離: クラむアントごずに個別のむンデックス、クラむアントベヌスのルヌティング、䞀意のクラむアント フィヌルド、怜玢フィルタヌ。 ロキは サポヌト HTTP X-Scope-OrgID ヘッダヌの圢匏で。

のコスト

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

たずめ

EFK スタックはさたざたな目的に䜿甚でき、分析、芖芚化、ク゚リのための最倧限の柔軟性ず機胜豊富な Kibana むンタヌフェむスを提䟛したす。 機械孊習機胜によっおさらに匷化するこずができたす。

Loki スタックは、そのメタデヌタ怜出メカニズムにより、Kubernetes ゚コシステムで圹立ちたす。 Grafana ずログの時系列に基づいお、監芖するデヌタを簡単に関連付けるこずができたす。

コストず長期ログ ストレヌゞに関しお蚀えば、Loki はクラりド ゜リュヌションぞの優れた゚ントリヌ ポむントです。

垂堎にはさらに倚くの代替品があり、その䞭にはあなたにずっおより良いものもあるかもしれたせん。 たずえば、GKE には Stackdriver が統合されおおり、優れたモニタリング ゜リュヌションを提䟛したす。 この蚘事の分析にはそれらを含めたせんでした。

リンク

この蚘事は埓業員によっお翻蚳され、Habr 向けに䜜成されたした。 スラヌムトレヌニングセンタヌ — 実践スペシャリストによる集䞭コヌス、ビデオコヌス、䌁業トレヌニング (Kubernetes、DevOps、Docker、Ansible、Ceph、SRE、Agile)

出所 habr.com

コメントを远加したす