アプリケーションをデプロイするためにクラウドネイティブ ソリューションを使用しない場合、使用するログ ソリューションは多くの場合、ELK テクノロジー スタックです。 この技術的ソリューションは比較的成熟しており、安定性も非常に高いため、当時の標準にほぼなりました。 しかし、Kubernetes を使用したクラウド ネイティブ時代に入ると、Kubernetes は以前のオペレーティング システムの多くの基礎レイヤーをブロックし、いくつかの標準インターフェースを提供します。 同時に、Kubernetes のログ ソースは、コンテナ、Kubernetes 独自のイベント、ログなど、従来の仮想マシンのものよりも多くなります。 当社のログ収集ソリューションも時代の変化に対応する必要があります。 Kubernetes の公式ブログでは、次のソリューションが提供されています。 ノードコレクション最初の解決策は、ノードでログを収集することです。 Kubernetes はマスター スケジューリング ノードとワーカー作業ノードに分かれていることはわかっています。アプリケーションはすべてワーカーノードで実行されています。
Docker ランタイムを例にとると、デフォルトでは標準入力ファイルは /var/log ディレクトリに書き込まれます。 上図に示すように、Kubernetes の各ワーカーノードに DaemonSet タイプのコレクター (filebeat など) をデプロイし、ノード下の /var/log にログを収集させ、収集したログを elasticsearch などのコンポーネントなどのログ処理のバックエンドに送信できます。 このソリューションの利点は、使用するリソースが少なく、ワーカーノードの数だけコレクターをデプロイできることです。 また、業務との結合度が低く、業務とコレクターのどちらを再起動またはアップグレードしても、お互いに影響を与えることはありません。 しかし、欠点も明らかです。ノード全体のログ収集のボトルネックはこのコレクターにあります。一部のワーカーノード上の Pod 数が不均衡であったり、ログ生成自体が不均一であったりすると、明らかな負債の不均衡が生じます。 また、特定のログ ピーク シナリオに合わせて調整することも不可能です (結局のところ、すべての Pod は同じログ コレクターを使用します)。 したがって、ノード レベルのログ収集は、ワーカー ノードの負債が少なく、保守が容易な場合に適しています。 サイドカープロキシパターン最初のタイプと比較すると、2 番目のタイプは、集中ログ収集から各アプリケーション Pod への自己収集への分散ログ収集として理解できます。 ログ収集のために、各ビジネス ポッドにサイドカーを搭載する必要があります。サイドカーとビジネス ポッドは同じストレージを共有するため、ログを簡単に読み取ることができます。 アプリケーションと一緒にマウントされるため、リソース使用量は当然ノードコレクションより多くなります。同様に結合度も増加します。コレクション コンポーネントのアップグレードは、ビジネス ポッドにも影響する可能性があります。 ただし、同じ利点として、単一の Pod の収集計画をより細かく制御できるという点があります。 たとえば、ログを頻繁に書き込むアプリケーションの場合、Filebeat の構成を改善し、そのような高負荷のログを Elasticsearch に別途書き込むことで、リソースを通常の負荷のログから分離することもできます。 このソリューションは、クラスター サイズが大きいシナリオに適しており、きめ細かい構成が必要です。 実際に私たちもこのソリューションを採用しましたが、具体的な内容は少し異なります。 以下の理由により、標準入力と出力を直接使用しません。 ログ形式を統一できないため、クエリ時に標準化された制限を設けることができません (たとえば、各ログにビジネス ID、traceId などが含まれている必要があります。クエリ時に、これらのビジネス インジケーターを使用していくつかの標準クエリ ステートメントを蓄積するのは簡単です)。 結局、私たちは Java の古い友人である logback を使い続け、独自のログ形式を設定しました。すべてのアプリケーションはこのテンプレートに従ってログを出力します。 同時に、ログ フレームワークのバッチ書き込み機能とバッファリング機能により、ログのパフォーマンスの調整が容易になります。 (標準出力のみを使用すると、アプリケーションにとってブラックボックスになります。) 私たちの最終的な技術的解決策は次のとおりです。 直接書き込みもう 1 つの解決策は直接書き込むことですが、これは実際には Kubernetes 自体とはほとんど関係がありません。 ビジネス自体が elasticsearch やその他のストレージ コンポーネントの API を呼び出してデータを書き込みます。この方法は通常、パフォーマンス要件が高いシナリオに適しています。中間の収集ステップをスキップし、ストレージの端に直接書き込みます。 私はこれを VictoriaLogs: 超低占有率 ElasticSearch の代替として紹介しました。メッセージ リンク情報を生成できるように、ブローカーのインターセプターにいくつかのメッセージ情報を埋め込む必要があります。 メッセージの送信と消費の各段階をインターセプトする必要があり、同時実行の圧力が比較的高いため、ログ書き込みパフォーマンスに対する要件は依然としてかなり高くなります。 そのため、インターセプター内のログストレージに直接書き込む必要があります。
ログを送信する場合は、高性能なログ生成フレームワークを使用する必要があります。ここでは、aliyun-log-java-producer が選択され、いくつかのカスタマイズが行われます。 このライブラリは次の機能をサポートしています。
これは Alibaba Cloud Log Service のコンポーネントであるため、コードは Alibaba のログ サービスにのみ書き込むようにハードコードされています。 したがって、少し変更するだけで、任意のバックエンドへのカスタム送信をサポートできるようになりました。初期化中に送信コールバック インターフェイスをカスタマイズするだけで済みます。
ログセキュリティログ記録は非常に基本的ですが、繊細な機能です。まず、コーディング標準では、ID カードやパスワードなどの機密情報を印刷しないようにする必要があります。同時に、ログへのアクセスも権限制御の対象となる必要があります。 当社の社内研究開発プラットフォームでは、ログ記録や監視などの機能がアプリケーションの権限にリンクされています。 簡単に言えば、ES の統合クエリ エントリは閉じられており、クエリは次のようにアプリケーション レベルでのみ提供されます。
オープンテレメトリーもちろん、ログに関しては、OpenTelemetry は当然避けられません。クラウド ネイティブの可観測性の現在の標準として、対応するログ コンポーネントも提供します。 OpenTelemetry は構造化されたログ形式も定義します。 otel.logs.exporter=otlp (デフォルト) を設定すると、ログが oetl-collector にエクスポートされ、バックエンド ストレージにエクスポートされます。 otel-collector がボトルネックになりますが、複数のレプリカを展開して負荷を軽減することもできます。 また、アプリケーションで異なるエンドポイント (otel.exporter.otlp.endpoint=http://127.0.0.1:4317) を指定して、ログ コレクターを区別し、リソースを他のタイプのコレクターから分離することもできます。 ただし、ログに関するコミュニティの実践はまだ比較的少なく、バージョン 1.0 がリリースされてからまだ時間が経っていないため、以前のファイルビートと比較した安定性をテストするにはまだ時間が必要です。 要約する理想的には、問題のトラブルシューティングと特定を改善するために、可観測性の 3 つの重要なコンポーネントをリンクする必要があります。 たとえば、インジケーターの変化を通じて監視システムからアラームを受信した場合、リンク トラッキングを使用して、どのシステムが問題を引き起こしたかを特定できます。 次に、traceID を通じて特定のログが特定され、ログ コンテキストを通じてさらに多くのログ情報がリストされるため、チェーン全体を直列に接続することができ、効率が大幅に向上します。 参考リンク:
|
>>: インターネットの速度が十分でない場合は、データ転送デバイスがそのギャップを埋めることができます
タオバオでビジネスをする場合、商品を用意した後、まず問題になるのは価格設定です。しかし、これまで多く...
重要なヒント:無料のウェブマスター ツールを使用すると、問題を特定し、検索結果でのウェブサイトのパフ...
ネットワーク最適化は、ほとんどの人がうまくできない仕事です。ウェブマスターの中に、忍耐力のない人がい...
zgovpsはどうですか? zgovps ドイツはどうですか? zgovpsのドイツの「Falken...
budgetnode は Access Internet Ltd のブランドであり、今年登録番号10...
pzea.com のアジア データ センターでの VPS プロモーションが開始されました。全品 30...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますインターネ...
K-ed またはダウングレードされたウェブサイトを回復するにはどうすればよいでしょうか。ほとんどの人...
現在、国内のネットワークは急速に発展しており、ウェブサイトの最適化とSEOもますます多くの人々に認識...
月給5,000~50,000のこれらのプロジェクトはあなたの将来です国慶節の休暇中、私たちSine ...
最近、蔡蔡は何もすることがないときは、いろいろなフォーラムに行って見るのが好きです。なぜでしょうか。...
Shardhost は、2011 年 6 月に英国で登録された小規模な VPS プロバイダーです (...
newtudou(童話の町)は、遅ればせながら中秋節特別オファー、香港VPS、100M帯域幅、中国本...
クラウド コンピューティングは、効率的なスケーラビリティと使用した分だけ支払う柔軟性により、企業の間...
Kubernetes は、ノード クラスター全体にわたるデプロイメント、スケジュール設定、スケーリン...