アプリケーションの規模と複雑性が増すにつれ、ログの管理はますます難しくなっていきます。オープンソースのロギングツールなら、完全カスタマイズのオープンソースソリューションであっても、New Relicのようなオブザーバビリティツールとオープンソースツールの組み合わせであっても、ログ管理をサポートしてくれます。このブログでは、オープンソースのロギングツールをいくつか取り上げ、スタック全体のオブザーバビリティ拡張にどう役立つか、またNew Relicと組み合わせてスタック全体のオブザーバビリティとロギングをどう最大化できるかを説明します。以下のオープンソースツールのNew Relicでのユースケースを紹介します。

  • OpenTelemetry
  • Logstash
  • Fluent Bit
  • Fluentd
  • Rsyslog

これらのロギングツールでは、ログデータのインポート、解析、変換、フィルタリング、エクスポートが可能で、その柔軟性を生かしてオブザーバビリティ実践の強化を支援します。例えば、使用しているツールに応じてログを構造化し、個人データを難読化し、ログを読みやすくします。これらはすべて、ログがNew Relicに送信される前に行われます。

多くのオープンソースロギングツールには、ログデータ転送のプラグインやその他のオプションが用意されていますが、ログデータをNew Relicに送信するには別のソリューションを使う必要がある場合もあります。また、ログデータ転送の基本と、REST APIを使用してログデータをNew Relicに転送する方法についてもご紹介します。

オープンソースのロギングツールのユースケース

ログデータを適切に相関させて比較するには、中央集約化されたログ管理ソリューションが必要です。ログを標準化することも同じくらい重要ですが、多くの異なるサービスからのログを扱っていると、これがやっかいな場合もあります。異なるサービスからのログには異なる属性が含まれることが多く、しかも同じ属性に異なる名称がついていたりします。New Relicのようなオブザーバビリティツールは、ログを集約して管理し、アプリケーション内で実際に起こっていることの強力なデータを提供することができます。しかし、ログのフォーマットや標準化をサポートするオープンソースのロギングツールでも、これは可能です。オープンソースのロギングツールが、どのようにアプリケーションパフォーマンスの監視、分析の効果を高めるのか、ユースケースを見ていきましょう。

  • ログデータのエクスポートとインポート:New Relicのようなオブザーバビリティツールは、サービスのカスタム実装向けのオプションと併せ、多くのサービスの自動計装機能を提供しています。それでもなお、サービスやアプリケーションからログやその他データをエクスポートするのが難しい状況に遭遇するかもしれません。例えば、カスタマイズされたインハウスのソリューションがあれば、それは一からログをエクスポートする必要があるということになります。OpenTelemetryやFluentdなどのオープンソースのツールは、ベンダー中立的なソリューションを提供し、ログデータを収集してNew Relicなどのツールに送信します。
  • ログデータの中央集約化:理想的には、データは1か所に集約するべきです。そうでなければ、サービス間のログデータの相関と比較が効果的に行えません。オープンソースのロギングツールはログのインポートやエクスポートに対する柔軟性が非常に高いため、それを使用して確実にすべてのログデータを1か所に集約できます。
  • ログの標準化と構造化:多くのオープンソースのロギングツールの重要な点は、ログデータの変換に使用できるということです。これは特に、構造化ログにおいて役立ちます。例えば、Logstashのようなロギングツールを使用して、ログがサービス全体で一貫した属性と測定単位を持つようにできます。標準化されたログは機械での読み込みがしやすくなり(自動化と分析の簡素化が容易になる)、また標準化されていないデータの比較をしようとする際の混乱やエラーを排除できるため、人間にとっても判読しやすくなります。
  • 機密データの難読化:ログデータの一部を難読化する必要は、特に個人情報(PII)が含まれている場合によくあります。ロギングツールは、これらのデータを隠し、情報セキュリティ侵害やHIPAAなどの法律違反を防ぎます。

オープンソースの上位ロギングツール

オープンソースの上位ロギングツールのいくつかを、New Relicとの統合方法のヒントと併せてご紹介します。

OpenTelemetry

OpenTelemetryは、アプリケーションやサービスから、ログを含めたテレメトリデータを収集し、処理、エクスポートを行える強力なオープンソースツールです。これはログ管理やオブザーバビリティツールではなく、ベンダー中立の一連のツール、API、SDKの集積であり、コードを簡単にインストゥルメントし、必要に応じてどこへでも送信できます。また、OpenTelemetry(OTel)コレクターを使用して、ログを1か所に集約もできます。

OpenTelemetryはオブザーバビリティプラットフォームではないため、監視には追加のツールが必要です。そこでNew Relicのような、オールインワンのオブザーバビリティソリューションを提供するツールを使用することで、スタックの監視が非常にしやすくなります。

また、OpenTelemetryを使用すると、New Relicでのフルオブザーバビリティの実現も容易になります。New Relicは多くの環境で自動計装を提供しますが、一方で、カスタマイズされた計装が必要なサービスやアプリケーションもあるかもしれません。そこで、OpenTelemetryのベンダー中立のフレキシブルなソリューションを使うことにより、すべてのログとその他のテレメトリデータがNew Relicに送信されていることを担保されます。

OpenTelemetryが初めての方にも、より高度なソリューションを検討している方にも、New Relicはそれらを支援する多くのリソースを用意しています。以下にそのいくつかをご紹介します。

Logstash

Logstashは、さまざまなソースからのログデータの収集、解析、変換を行うデータ処理パイプラインです。このプラグインベースのアーキテクチャを使用してログなどのソースからのデータ収集をカスタマイズし、フィルターを使用してデータを変換し、さらに出力をカスタマイズして変換されたデータをNew Relicなどのソースに送信することができます。データの変換と解析機能は、ログの構造化と標準化に特に役立ちます。これにより、他のソースにエクスポートする前にデータの一貫性を確保することができます。

Logstashをすでに使用しており、New RelicでLogstashデータを転送してより有用にしたいのであれば、こちらのドキュメンテーションに従い、New RelicのLogstashアウトプットプラグインを設定してください

Fluent Bit

Fluent Bitは、速くて軽量なオープンソースデータコレクターおよびプロセッサーです。典型的にはログデータの収集と処理に使用しますが、その他のMELT(メトリクス、イベント、ログ、トレース)データにも使用できます。Logstashと同様、ビルトイン・プラグインを使用してデータの解析、フィルタリング、変換ができます。

Fluent BitログをNew Relicに転送したい場合は、New Relic Fluent Bitプラグインに関するドキュメントをご確認ください。

また、Fluent Bitを使用して、New Relicログの柔軟性をさらに高めることもできます。以下にその例を挙げます。

Fluentd

Fluent Bit同様、Fluentdはログデータの処理に使われることの多いオープンソースデータコレクターです。メトリクスやイベントなどの他のタイプのデータも処理できます。ただし、軽量のFluent Bitとは違い、Fluentdはより多くの機能を持ち、プラグインも多数あります。言い換えると、Fluent Bitのプラグインは軽量なアーキテクチャに最適化されているのに対し、Fluentdはより多くのユースケースをサポートする設計になっています。

もしすでにFluentdを使用しており、FluentdのログデータをNew Relicに転送したい場合、ログ転送用のFluentdプラグインのドキュメンテーションを確認して開始してください。

Rsyslog

Rsyslogは、「Rocket-fast system for log processing(ロケットのように速いログ処理システム)」の略です。その名が示す通り、Unixのようなシステム上でログデータの収集、処理、転送を行う高パフォーマンスのソフトウェアユーティリティです。ローカルファイルやクエリ、データベース、リモートサーバーなど、さまざまな場所にログデータを書き込むのに役立つツールであり、保管前にログデータを変換、構造化するのにも使用できます。典型的にはさまざまなソースからログデータを収集し、それを1か所に集約して保管するのに使用されます。Rsyslogは広く普及しており、ログ管理をすばやく実施したいと考えるチームによく使用されています。

New Relicへのログ転送

多くのオープンソースツールには、すでにNew Relicへのデータ転送を行うプラグインやその他のライブラリがあります。実際、これらのツールがまさにデータ転送に必要なソリューションであることも多々あります。しかし、New Relicにデータを転送するためのネイティブの転送ソリューションがないロギングツールやサービスを使用しているとしたら、どうすべきでしょうか?

New Relicへのデータ転送のオプションは多くあり、詳細はNew Relicへのデータ転送ドキュメンテーションで説明されています。このドキュメンテーションでは、ログ転送がNew Relicでどのように機能するかを示す図表も記載されています。実行可能な方法の例として、以下のようなものがあります。

  • アプリケーションログデータの転送には、エージェントによる方法を使用できます。New Relicは、Go、Java、Node.js、.NET、Python、PHP、Rubyなど、多くの言語のアプリケーションを自動計装トします。New Relicは、環境を自動検知するアプリ内のガイド付きインストレーションを提供しています。
  • インフラストラクチャログデータの転送には、インフラストラクチャエージェントが使用でき、これもガイド付きインストールの一部になっています。もしくは、Fluent Bit、Fluentd、Logstashなど、前述した多くのオープンソースツールを使用することもできます。
  • クラウドログデータの転送には、New Relicは、Amazon Web Services(AWS)、Google Cloud Platform(GCP)、Microsoft Azureとのインテグレーションを提供しています。クラウドインテグレーションの詳細については、インフラストラクチャインテグレーションの紹介をご覧ください。
  • コンテナログデータの転送には、Kubernetesプラグインを使用するか、インフラストラクチャエージェントを使用してDockerを計装できます。New RelicログAPIやFastlyなどのAPIを含め、柔軟性の高いオプションが数多くあります。