Graylog: 保持期間の管理

ログの保持期間を設定する方法

👋 Stackheroのドキュメントへようこそ!

Stackheroは、数多くの利点を提供する、すぐに使えるGraylogクラウドソリューションを提供しています。

  • 無制限で専用のSMTP メールサーバーが含まれています。
  • ワンクリックで簡単にアップデート
  • HTTPSで保護されたカスタマイズ可能なドメイン名(例: https://logs.your-company.com)。
  • プライベートで専用のVMによる最適なパフォーマンスと強力なセキュリティ

時間を節約し、生活を簡素化:StackheroのGraylogクラウドホスティングソリューションを試すのに5分しかかかりません!

保持期間は、OpenSearch データベースに保存されるメッセージ数を定義します。保持期間は、メッセージ数、最大保存期間、または全体のサイズ上限に基づいて設定できます。

例えば、過去 365 日分のメッセージを保持する、2 億件までのメッセージを保持する、または合計 400 GB のストレージ容量を確保する、といった設定が可能です。

保持ポリシーを定義する前に、Graylog および OpenSearch で使用されるインデックスの仕組みを理解しておくことが重要です。インデックスは物理的なコンテナのようなものと考えてください。Graylog は「コンテナ」(インデックス)を開き、受信したメッセージをその中に格納します。割り当てられたクォータを超えると、そのコンテナはクローズされ、棚に保管され、新しいメッセージ用に新しいコンテナが開始されます。

このクォータは、以下のような異なる基準で設定できます:

  1. メッセージ数:「1 コンテナあたり 2,000 万件のメッセージを保持し、その後新しいコンテナを開始する」
  2. 時間制限:「1 コンテナを 10 日間使用し、その後新しいコンテナに切り替える」
  3. サイズ制限:「1 コンテナあたり 20 GB を保存し、その後新しいコンテナに移行する」

また、棚に保管できるコンテナ(インデックス)の最大数も定義されています。この数を超えると、最も古いコンテナが自動的に削除されます。例えば、最大 20 個のコンテナに設定し、棚に 22 個ある場合、最も古い 2 個が削除されます。

この例えでは、コンテナがインデックス、棚が OpenSearch、最大数が許可されるインデックス数を表しています。

Graylog では、3 つの保持戦略が提供されています:

  1. 「Index time」:各インデックスにメッセージを保持する最大期間を定義します(例:1 インデックスあたり 14 日間)。
  2. 「Index message count」:1 インデックスあたりの最大メッセージ数を設定します(例:1 インデックスあたり 2,000 万件)。
  3. 「Index size」:インデックスの最大サイズを制限します(例:1 インデックスあたり 40 GB)。

これらの戦略の中から、ご自身の要件に合わせて選択できます。例えば、「Index time」を選択すると、常に過去 X 日分のログを保持できるようになります。

ディスクストレージの必要容量を正確に見積もるようご注意ください。

例えば、1 日あたり 1 GB のログを保存し、過去 365 日分のログを保持する場合、365 GB のディスク容量が必要です。さらに運用用の空き容量も確保する必要があります(詳細は下記参照)。

デフォルトでは、Graylog はインデックス数を 20 に制限しています。この値はニーズに合わせて調整可能です。例えば、過去 365 日分のログを保存したい場合、365 日を 20 インデックスで割ることで、1 インデックスあたり約 19 日分のログを保持することになります。

他の戦略でも同様の計算が可能です:

  1. 「Index message count」戦略の場合:2 億件のメッセージを 20 インデックスで保持したい場合、2 億 ÷ 20 で 1 インデックスあたり 1,000 万件となります。
  2. 「Index size」戦略の場合:400 GB のログを 10 インデックスで保持したい場合、400 GB ÷ 10 で 1 インデックスあたり 40 GB となります。

ログ、Graylog のジャーナル、MongoDB データ用に、常に少なくとも 15 GB の空きディスク容量を確保することを推奨します。

空きディスク容量がなくなると、OpenSearch の動作がブロックされ、より大きなインスタンスへのアップグレードが必要になる場合があります。

保持ポリシーを設定するには、Graylog のインターフェースにアクセスしてください。「System」メニューから「Indices」を選択し、「Default index set」の「Edit」ボタンをクリックします。

下記の例では、最大 27 インデックス、各インデックスに 14 日分のログを保持する設定になっています。この構成では、約 1 年(378 日)分のログを保持できます。

1 インデックスあたり 14 日以上のメッセージを保持することは推奨しません。

Retention configuration to keep logs for a yearRetention configuration to keep logs for a year

ローテーションポリシーとして「Index time」を選択する場合、ISO8601 Duration 標準に従って期間を定義する必要があります。

例えば、「P7D」は 7 日、「P14D」は 14 日を意味します。

インデックスについてさらに詳しく知りたい場合は、公式ドキュメントの参照を強くおすすめします。

まれに、OpenSearch が読み取り専用モードに切り替わり、以下のようなエラーが発生することがあります:

  1. "Flood stage disk watermark exceeded, all indices on this node will be marked read-only"
  2. "FORBIDDEN/12/index read-only / allow delete (api)"

これらのエラーは、ディスク容量が極端に少なくなった際に OpenSearch の保護機構として発生します。空きディスク容量が 7 GB 未満になると、OpenSearch はデータ破損を防ぐためにインデックスを読み取り専用に設定します。

このようなエラーが発生した場合、次の 2 つの対応策があります:

  1. 保持ポリシーを再設定して、保持するログを減らします。ポリシーを調整した後、最も古いインデックスを削除してディスク容量を確保し、OpenSearch を再び読み書き可能なモードに戻します。インデックスを削除すると、そのインデックス内のすべてのデータが失われる点にご注意ください。
  2. より大きなディスクを持つインスタンスにアップグレードします。Stackhero ダッシュボードからワンクリックでインスタンスを再起動し、追加のディスク容量で OpenSearch が自動的に読み書き可能なモードに戻ります。