CalicoEnterpriseのネットワークログを使用したマイクロサービス接続の問題の解決





ネットワークは、分散アプリケーションの基盤です。分散アプリケーションにはいくつかのマイクロサービスがあり、それぞれがポッドのセットで実行され、多くの場合、異なるノードに配置されます。分散アプリケーションの問題領域は、ネットワークレベル(フロー、ネットワークログ)、またはアプリケーションリソースの使用不可(メトリック)またはコンポーネントの使用不可(トレース)のレベルである可能性があります。



ネットワーク層での接続は、ルーティング設定、IPプーリング、ネットワークポリシーなどのさまざまな要因の影響を受ける可能性があります。サービスAがネットワーク経由でサービスBと通信できない場合、または外部アプリケーションがサービスAに接続できない場合、ネットワークログは接続の問題をトラブルシューティングするための重要なデータソースになります。従来のネットワークと同様に、ネットワークログを使用すると、クラスター管理者はKubernetesマイクロサービスネットワークを監視できます。











ネットワークログには複数のユースケースがあります



ネットワークログを使用して、さまざまなチーム(DevOps、SecOps、Platform、Network)の固有の要件を満たすことができます。Kubernetesネットワークログの価値は、エンドポイント/エンドポイント(ポッド、ラベル、名前名など)に関する詳細なコンテキストや、接続のセットアップ時に展開されるネットワークポリシーなど、収集された情報にあります。IT環境では、DevOps、SecOps、ネットワーク、およびプラットフォームの各チームは、ナレッジドメインで役立つユースケースにネットワークログを活用できます。以下にいくつかの例を示します。







CalicoEnterpriseのデータフローログを使用したポリシーの生成と脅威の検出。



Calico Enterpriseは、ポッドへのすべての接続でネットワークストリームのコンテキストログを生成します。ログはノード上のファイルに保存され、Fluentdエージェントによって処理され、構成された宛先に送信されます。







上の図に示すように、ログはデフォルトでCalicoEnterpriseに付属のElasticsearchエンジンに送信されます。SOCプラットフォームへのストリームログの転送を構成できます。すべての雑誌に単一のプラットフォームを使用することをお勧めします。ログは、一元化されたロギングプラットフォーム上に構築された明確に定義されたプロセスをすでに持っている運用チームにとって不可欠な監視および分析ツールです。これはあなたの計画にとって重要です。



データフローログの特性



ストリームログには、多くのストレージオーバーヘッドがあります。デフォルトでは、CalicoEnterpriseは過去7日間のデータのみを保存します。これにより、Calico Enterpriseは、ポリシー開発と接続のトラブルシューティングをほぼリアルタイムで簡素化するように特別に設計された機能を提供できます。



  • ポリシーを作成するための推奨ガイドラインにより、開発者はサービスを保護するためのネットワークポリシーを自動的に生成できます
  • ポリシー(推奨、プレビュー、段階的ポリシー)のワークフローにより、SecOpsおよびDevOpsチームは効率的にポリシーを作成し、邪魔にならない方法で展開できます。
  • 脅威の検出により、SecOpsチームは特定のIPアドレスまたはドメインへの各フローを追跡し、脅威を特定できます。


Calico Enterpriseの標準フローログには、必要なすべてのコンテキスト情報が含まれています。



  • Kubernetesコンテキスト(サブ、名前付け、ラベル、ポリシー)
  • 入力経由で利用可能な場合は、外部ソースの送信者IPアドレス
  • Start_time、end_time、action、bytes_in、bytes_out、dest_ip、dest_name、dest_name_aggr、dest_namespace、dest_port、dest_type、dest_labels、reporter、num_flows、num_flows_completed、num_flows_started、http_requests_alrequests source_namespace、source_port、source_type、source_labels、original_source_ips、num_original_source_ips


DNSログは、時間の経過とともにポッドごとに集計され、次の情報が含まれます。



  • Start_time、end_time、type、count、client_ip、client_name、client_name_aggr、client_namespace、client_labels、qname、qtype、qclass、rcode、rrsets、servers


ログエントリは、ElasticsearchインデックスとしてKibanaで利用できます。インデックス作成パラメータ、保持時間、およびストレージを完全に制御できます。デフォルト設定を維持することは、ほとんどの展開でうまく機能します。



スレッドログストレージを最適化することで運用コストを削減



Calico Enterpriseは、さまざまなログ(ネットワーク/フロー、監査、DNS)を収集します。ストリームログはストレージの点で最も高価であり、総ストレージの95%以上を占めています。多くの場合、完全にロードされたノードごとに、1秒あたり5kのフローがあります。フローあたり200バイトが適度な場合、これは1 MB /秒(メガバイト)になります。各ノードの1日のストレージ要件は、スレッドログで86GBです。 100ノードのクラスターの場合、1日のスレッドログ要件は8 TB + !!!になります。明らかに、これはスケーリングしません。さらに重要なのは、本当にそれだけのデータを保存する必要があるのでしょうか。通常、ログに含まれるデータの値は時間の経過とともに指数関数的に減少し、トラブルシューティングとコンプライアンスの目的にのみ関連します。



このため、Calico Enterpriseにはデフォルトで集約があり、スレッドログストレージ要件が100分の1に削減されます。これは、クライアントがストリームログから受け取るデータ(可視性、監視、トラブルシューティング)を損なうことなく行います。ログは、指定された期間にわたって宛先ポートごとに集約されます。このように、Calico Enterpriseのデフォルト設定を使用するときに、ストリームログを保存するコストについて心配する必要はありません。Calico Enterpriseがストレージ要件を下げるのに役立つもう1つの方法は、それを除外することです。ストリームログの生成から除外される特定の名前名またはインストールを簡単にカスタマイズできます。



スレッドログを詳細に調査することに興味がありますか?



スレッドログはデフォルトで有効になっています。詳細な構成については、次のドキュメントを参照してください。






All Articles