どのログを取り込んで保存するかを決めたら、ログを整理します。おそらく、依然として数百ギガバイトまたは数十テラバイトのログを取り込むことになります。当初よりはかなり減りましたが、効果的に使用しようとすると、やはり苦労が必要になります。
これを解決するために、これらの残りのログをテーマ別のパーティションにグループ化し、ログを解析して貴重な属性を取り出してタグ付けします。この方法でログを整理すると、次のことが可能になります。
- ログ内の任意の属性をクエリします
- フロントエンド ログとバックエンド ログなど、特定のパーティションを一度に管理
- クエリのロード時間を短縮する
ログを分割する理由
ログを個別のパーティションに分割すると、パフォーマンスが向上し、ログの管理が容易になります。たとえば、フロントエンド ログにのみ存在する属性をクエリしたいとします。5 TB のログをクエリすると、フロントエンド ログのみの特定の 1 TB パーティションをクエリするよりも大幅に時間がかかります。
データを分割する目的:
- 環境や組織の中で、固定的であったり、変化の頻度が低い概念に合わせてデータパーティションを作成します(例:ビジネスユニット、チーム、環境、サービスなど)。
- 最適なパフォーマンスを得るためには、各パーティションが1日の取り込み量が1TB以下であることを確認してください。
パーティションの保持には 2 つのタイプがあります。保持力を最大限に高めるには、 Standard [標準] を選択します。遠い将来にクエリを実行する可能性がある貴重なデータにこれを使用します。30 日間保持するには Secondary [セカンダリを] 選択します。これは、価値の低いデータ、または近い将来にのみ必要となるデータに使用してください。
ログを解析する理由
取り込み時にログを解析することは、あなたや組織内の他のユーザーがログ データをより使いやすくするための最良の方法です。たとえば、Grok 解析ルールを使用して、次の 2 つのログを解析前と解析後で比較します。
事前解析:
{ "message": "32 4329 store_Portland"}
事後解析:
{ "transaction_total": "32", "purchase_number": "4329", "store_location": "store_Portland",}
これにより、ダッシュボードやアラートで transaction_total
などの新しく定義された属性を簡単にクエリできるようになります。
ログを整理する
ACME Corp が今後数か月間で約 2 TB のログを取り込むことが分かっているとします。Java アプリとインフラストラクチャ エージェントからのログのパーティションを作成したいと考えています。彼らは、遠い将来に Java ログをクエリする必要があるかもしれないと考え、標準の保存期間を使用することにしました。一方、最近のインフラストラクチャ ログのみが必要なため、それらに対しては二次保持を使用します。
そのためには
ログを分割する
- 左側のナビゲーションの Manage Data [データの管理] で、 Data partitions [データ パーティション]をクリックし、 Create partition rule [パーティション ルールの作成]をクリックします。
- パーティション名を、
Log_
で始まる英数字の文字列として定義します。この場合、Log_java
。 - 任意の説明を追加します。
- パーティションの標準の名前空間保持を選択します。
- ルールの一致基準を設定します。このパーティションに保存するログと一致する有効な NRQL
WHERE
句を入力します。この場合、logtype=java
。 - [作成] をクリックして、新しいパーティションを保存します。
これにより、すべての Java ログに対して標準のデータ保持を持つデータ パーティションが作成されます。インフラストラクチャ ログを整理するには、上記と同じ手順に従い、保持をセカンダリに変更し、クエリを logtype=infrastructure
に変更するだけです。
ログを解析する
ログが分割されたので、今度はログを解析します。それらを解析すると、ログ内の関連データを抽出して、クエリとアクセスを容易にすることができます。
ログを解析するには:
- ログ UI の左側のナビゲーションにある Manage Data [データの管理] で、 Parsing [解析]をクリックし、 Create parsing rule [解析ルールの作成]をクリックします。
- 新しい解析規則の名前を入力します。
- 解析する既存のフィールドを選択するか (デフォルトは
message
)、または新しいフィールド名を入力します。 - 解析するログに一致する有効な NRQL
WHERE
句を入力してください。 - 一致するログが存在する場合はそれを選択するか、「ログの貼り付け」タブをクリックしてサンプル ログを貼り付けます。
- 解析ルールを入力し、 Output [出力] セクションで結果を表示して、解析ルールが機能していることを検証します。(以下の例を参照してください)
- カスタム解析ルールを有効にして保存します。
次の例は、解析ルールを作成する具体的な例を示しています。
ログを解析するための Grok パターンの作成の詳細については、 ブログ投稿を参照してください。
次のステップ
ログの真の価値を発見し、チームがログに対する何時間ものイライラを軽減できたこと、おめでとうございます。システムが成長して取り込むにつれて、解析ルールとパーティションを確実に維持する必要があります。New Relic のログ管理で何ができるかについて詳しく知りたい場合は、次のドキュメントを参照してください。
- ログ データの解析: Grok を使用したログの解析を詳しく調べ、GraphQL API である NerdGraph を使用してログ解析ルールを作成、クエリ、管理する方法を学びます。
- ログ パターン: ログ パターンは、検索せずにログ データの値を発見する最速の方法です。
- ログの難読化: ログの難読化ルールを使用すると、特定の種類の情報が New Relic に保存されないようにすることができます。
- 長いログ (BLOB) でデータを検索する: 大量のログ データは、問題のトラブルシューティングに役立ちます。しかし、ログ内の属性に数千の文字が含まれている場合はどうなるでしょうか?New Relic はこのデータのうちどれくらいの量を保存できますか?そして、このすべてのデータから有用な情報を見つけるにはどうすればよいでしょうか?