【要約】New Relic のログ検索結果に直リンクする隠し URL 仕様 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者がGitHub Actions等の外部システムからECS Fargateのバッチタスクを起動した際、実行後のログ調査を効率化したいという課題がある。具体的には以下の問題に直面している。
- ・公式の共有機能(Copy permalink)は手動操作を前提としており、プログラムによる動的なURL生成が困難である。
- ・NerdGraph(GraphQL API)には、任意の検索クエリを埋め込んだLogs UIのURLを生成するMutationが存在しない。
- ・以前のURL仕様が変更され、従来の生成方法では検索窓が空になるなど、機能しなくなった。
// Approach
開発者は、New Relic Oneの内部的なURL Stateを解析し、非公式ながらも動的なURLを組み立てる手法を採用した。具体的な手順は以下の通りである。
- ・Nerdlet IDとして
logger.log-tailerを指定する。 - ・
paneパラメータに、nerdletId,accountId,duration,queryを含むJSONをBase64エンコードして格納する。 - ・検索クエリには、Lucene構文を用いて
ecs_task_arnやlevelを指定する。 - ・URLの短縮と安全性のために、JSONの空白削除や
urlencodeのsafeオプションを活用する。
// Result
開発者は、GitHub ActionsのJob Summaryから、特定のECSタスクのログへワンクリックで遷移できる環境を構築した。これにより、ログ調査のリードタイムを短縮し、開発者のコンテキストスイッチを抑制できる。また、仕様変更に備え、NerdGraphによる直接取得やクエリの併記といった、運用継続性を担保する退路も設計に組み込んでいる。
Senior Engineer Insight
> 本手法は、公式APIの欠如を補う優れたハックだが、非公式仕様への依存というリスクを孕んでいる。大規模運用においては、このURLが突然機能しなくなる可能性を常に考慮すべきだ。実装時には、NerdGraphによるログ取得やダッシュボード利用といった「退路」を設計に組み込むことが、システムの堅牢性と運用継続性を保つ鍵となる。