ログの検索・分析

Mackerelのログ機能は、サービス単位でログを横断的に検索し、チームで検索ノウハウを共有できます。このヘルプでは、新しいログの検索画面での検索操作から検索結果の分析、検索条件の保存・共有までの一連の流れを説明します。

Mackerelへのログの送信方法や、データ量・コストの見積りについては、それぞれ「Mackerel にログを送信する」、「ログのデータ量とコストを見積もる」を参照してください。

Mackerelのログ機能は現在β版として提供しています。以下の点についてはあらかじめご了承ください。

  • 今後、仕様や画面デザインが変更される可能性があります。
  • 機能改善や不具合修正のために、臨時のメンテナンスを実施する場合があります。
  • お預かりしているログデータの保持を保証することはできません。

目次

はじめに

Mackerelのログ機能では、サービス単位でアプリケーションのログを横断的に検索・分析できます。個々のホストやコンテナにログインしてログファイルを探す必要はありません。サービスを選ぶだけで、そのサービスに属するすべてのコンポーネントのログをまとめて検索できます。

ログ機能の画面を開くには、Webコンソールのサイドメニューから「ログ」を選択してください。

ログ機能の画面は次の2つで構成されています。

  • ログの検索画面:保存済みの検索条件やチームの履歴を確認する画面
  • 新しいログの検索画面:検索条件を指定してログを検索し、結果を分析する画面

ログの検索画面

ログを検索する

新しいログの検索画面では、サービスと期間を指定し、キーワードや重要度、属性によるフィルタを組み合わせてログを絞り込みます。

ログの検索条件

サービスの選択

画面上部のプルダウンから、検索対象のサービスを選択します。サービスを選択すると、そのサービスに紐づくすべてのログが検索対象になります。サービスが未選択の状態では検索を実行できません。

キーワードでメッセージを検索する

メッセージ検索欄にキーワードを入力すると、ログ本文に対してキーワード検索を実行します。

  • プレーンテキスト、JSONのいずれの形式のログも検索対象になります
  • キーワードを空にしたまま検索すると、条件に該当するすべてのログを取得します

なお、現時点ではクエリ言語による検索には対応していません。キーワード検索と属性によるフィルタ(後述)を組み合わせて絞り込みを行ってください。

属性によるフィルタで構造化ログを絞り込む

構造化ログ(JSON形式)を送信している場合、ログ本文の中のキーを指定して絞り込みができます。一般的なログ検索ツールではクエリ構文を覚えて記述する必要がありますが、MackerelではGUIの操作だけで直感的にフィルタリングできます

フィルタの追加方法
  1. 検索条件エリアの「メッセージを検索」をクリックします
  2. フィルタリングしたいキー名を入力します(例:user_idrequest_id
  3. 入力欄が動的に追加されるので、値を入力します

条件には属性の型と演算子を指定します。

  • :string、number、bool から選択します
  • 演算子:型によって使用できる演算子が異なります
    • string:=(一致)、!=(不一致)、^(先頭部分一致)
    • number:=(一致)、>(より大きい)、>=(以上)、<(より小さい)、<=(以下)
    • bool:=(一致)、!=(不一致)

入力した値と演算子に基づいてフィルタリングが行われます。例えば演算子が = の状態で user_idusr-123 と入力すると、user_id の値が usr-123 のログだけが検索結果に表示されます。

複数の属性をフィルタに追加して、条件を掛け合わせることもできます。例えば user_idrequest_id を同時に指定すれば、特定のユーザーの特定のリクエストに関するログだけに絞り込めます。

属性によるフィルタの対象について

属性によるフィルタは、ログ本文(メッセージ)がJSONとしてパース可能な構造化ログの場合に機能します。ログ本文の中の構造化データが対象であり、OpenTelemetryのログアトリビュート(Resource AttributesやLog Record Attributes)とは異なります。

重要度(Severity)で絞り込む

ログレベルの欄では、重要度によって検索結果を絞り込めます。Mackerelでは、OpenTelemetryのSeverity Number(1〜24)を以下の6段階にマッピングして表示します。

重要度 Severity Number 表示カラー
TRACE 1〜4 グリーン
DEBUG 5〜8 グレー
INFO 9〜12 ブルー
WARN 13〜16 イエロー
ERROR 17〜20 レッド
FATAL 21〜24 パープル

重要度はチップ形式で表示され、トグル操作で選択・解除できます。例えばERRORとFATALだけを選択すれば、重大なログに素早く絞り込めます。「すべて」ボタンを押すと、全重要度を一括で選択状態に戻せます。

検索結果を読み解く

検索を実行すると、ヒストグラムとログ一覧が表示されます。ここでは、検索結果の見方と分析に役立つ機能を紹介します。

ヒストグラムで時間分布を把握する

検索結果の上部には、ログの件数を時系列で表したバーチャート(ヒストグラム)が表示されます。ヒストグラムの上部には、ヒット件数・検索時間・最終検索時刻も確認できます。

バケットサイズの自動調整

バーの時間幅(バケットサイズ)は、選択した期間に応じて自動的に調整されます。例えば、6時間の期間を選択した場合は15分単位のバーで表示されます。

エラーラインの表示

バケット内にERRORまたはFATALのログが含まれる場合、バーの最上部に赤いエラーラインが表示されます。エラーが集中している時間帯を一目で把握できます。

エラー表示

ポップアップの詳細表示

各バーにマウスオーバーすると、そのバケットのログ件数の詳細がポップアップで表示されます。エラーログが含まれている場合は、エラー件数の内訳も確認できます。

ドリルダウンで時間範囲を絞り込む

ヒストグラム上で任意の時間範囲をマウスでドラッグすると、表示範囲をその時間に絞り込めます。ログ一覧もその時間範囲に合わせて絞り込まれます。

ログ一覧

ヒストグラムの下にはログ一覧が表示されます。初期表示は100件です。画面の一番下までスクロールすると、次の100件が表示されます。

表示期間の指定

検索する期間を以下のプリセットから選択できます。

  • 15分
  • 1時間
  • 6時間
  • 1日
  • 1週間

特定の時間帯を細かく指定したい場合は、カレンダーアイコンを選択してください。任意の開始日時(From)と終了日時(To)を設定できます。

タイムゾーンの切り替え

時刻の表示をローカルタイムゾーン(Local)とUTCで切り替えられます。切り替えボタンを押すと、ログ一覧の時刻表示やヒストグラムの時間軸など、画面上のすべての時刻が切り替わります。チームメンバーが異なるタイムゾーンで作業している場合に便利です。

メッセージを検索

ヒストグラムの上部にある検索ボックスにキーワードを入力すると、そのキーワードがハイライトされます。

JSONログの表示形式

JSON形式のログは、一覧では compact 形式ですが、クリックすると pretty print 形式の表示が展開されます。

展開した状態では、各キーの値がクリック可能になっています。値をクリックすると「この値で絞り込む」「この値を除外する」の選択肢が表示され、そのまま検索条件に追加できます。例えばエラーログを展開して user_id の値をクリックし「この値で絞り込む」を選ぶと、そのユーザーに関するログだけに即座に絞り込めます。

トレースとの連携

ログにトレースIDが含まれている場合、ログ一覧のトレース列にそのIDが表示されます。IDをクリックするとトレースの詳細がアコーディオン形式で展開され、処理の流れを視覚的に確認できます。なお、トレースの詳細を表示するには、対応するトレースが Mackerel に送信されている必要があります。

なお、トレースの保存期間は2週間のため、ログ上にトレースIDが表示されていても、トレースがすでに削除されている場合があります。

検索結果を活用する

データのエクスポート

検索結果をMackerelの外部で活用するために、以下のエクスポート機能を利用できます。

一括操作
  • クリップボードコピー:表示中のログをタブ区切りテキストとしてクリップボードにコピーします。表計算ソフトなどへの貼り付けに便利です
  • CSVダウンロード:表示中のログをCSVファイルとしてダウンロードします。
個別のログ行のコピー

ログ一覧の各行にマウスオーバーすると、コピーボタンが表示されます。特定のログメッセージだけを素早くコピーできます。

周辺のログの表示

エラーなどで絞り込んだログを見ているとき、その前後にどのようなログが出ていたかを確認したい場面があります。ログ一覧の各行にある「周辺のログ」をクリックすると、絞り込み条件に関係なくそのログの前後のログ一覧がポップアップで表示されます。エラー発生直前の状況や、その後の影響範囲を把握するのに役立ちます。

検索条件の保存と共有

Mackerelのログ機能のコンセプトは「熟練者の知見を、チームの力に」です。検索条件の保存・共有機能は、このコンセプトを支える中心的な機能です。

障害対応時にどのサービスのどのキーワードでログを検索すればよいか、その知識は特定の熟練者に偏りがちです。検索条件を保存して共有することで、熟練者が不在の場面でもチームメンバーが保存条件をもとにログ探索を始められます。

検索条件の保存

検索条件を保存するには、「名前をつけて保存」をクリックします。

  • デフォルト名の自動生成:検索条件から自動的に名前が生成されます(例:my-sample-app - ERROR,WARN)。分かりやすい名前に変更することもできます(最大60文字)
  • メモの添付:最大200文字のメモを添えられます。検索条件の意味だけでなく、「どのような状況でこの検索を使うのか」「何を確認すべきか」という文脈も一緒に残しておくと、チームメンバーが条件を活用しやすくなります

保存した検索条件は、オーガニゼーションのメンバー全員がログの検索画面から参照できます。

スター機能

よく使う検索条件にはスターを付けられます。スター付きの条件は一覧画面の最上部にまとめて表示されるため、障害対応時によく使う条件にスターを付けておくとすぐにアクセスできます。

保存済みフィルターの呼び出し

ログの検索画面で保存済みの条件をクリックすると、同じ条件で検索を実行できます。

上書き保存

保存済みフィルターから遷移した後に検索条件を変更した場合、「名前をつけて保存」の右側に「上書き保存」ボタンが活性化します。条件に変更がない場合はボタンが非活性になるため、意図しない上書きを防げます。

チームの履歴

ログの検索画面では、オーガニゼーション内のメンバーが実行した検索の履歴を最新順で確認できます。

各履歴には以下の情報が表示されます。

  • 誰が検索したか
  • いつ検索したか
  • どのサービスを対象にしたか
  • どの属性を対象にしたか
  • どのログレベルを対象にしたか

履歴をクリックすると、同じ条件で検索を実行できます。

活用例

障害対応時に、他のメンバーがすでに何を調べたかをチームの履歴で追跡できます。例えば、あるメンバーが特定のエラーメッセージで検索した履歴を見つけたら、同じ条件で検索を再現したり、別の角度からの検索を試したりできます。

属人化しがちな障害対応の調査プロセスがチームで可視化されるため、「誰が何を調べて、何が分かったのか」を共有しやすくなります。対応が終わった後の振り返りにも活用できます。

まとめ

このヘルプでは、Mackerelのログ機能における検索・分析の主な機能を紹介しました。

  • サービス単位の横断検索:サービスを選ぶだけで、関連するすべてのログをまとめて検索
  • 柔軟な絞り込み:キーワード検索、重要度フィルタ、属性によるフィルタを組み合わせた多角的な絞り込み
  • ヒストグラムとドリルダウン:時間分布の可視化と直感的な時間範囲の選択
  • インライン絞り込み:読み込み済みのログに対するリアルタイムな二次フィルタ
  • 検索条件の保存・共有:熟練者の検索ノウハウをチームの共有資産として蓄積
  • チームの履歴:メンバーの検索履歴を可視化し、調査の属人化を防止

関連ヘルプ

ログ機能のその他のヘルプも合わせて参照してください。