ログの中に含まれている文字列を手軽に暗号化して表示できたら・・・
通信の中に含まれたBase64でエンコードされた文字列を手軽にデコードして可視化できたら・・・
そんなことが簡単にできるNRQL関数が新しく追加されました!
これであなたもBase64マスターです!
このアップデートの詳細はこちら。
New Relic アップデート(2024年1月)
New Relic アップデート
使い方
エンコードする時はencode()
関数、デコードする時はdecode()
関数を使用することで、文字列とBLOBに対してBase-64変換を実行できるようになります。
入力値(最初の引数)は、エンコーディング(2番目の引数)で指定されたBase-64標準を使用してデコードされます。
次の文字列値は、サポートされているエンコードパラメーターです。
「base64」:RFC4648 Base-64標準を使用
「base64mime」:RFC2045 Base-64 標準(MIME)を使用
「base64url」:URLおよびファイル名に安全なアルファベットを用いたRFC4648 Base-64標準を使用
<注意点>
・BLOB は WHERE 句または FACET 句では許可されないため、blob 型を使用した decode()
は WHERE 句またはFACETではサポートされません。
・encode()
関数はBLOBではサポートされていません。
※長いログのmessage値は最初の4,094文字はNRDBに保存されますが、それ以降の128,000バイトはBLOBに保存されます。
ここで指しているBLOBはこの長いログが保存されたフィールドを指しています。
詳しくはこちらのドキュメントをご参照ください
使ってみよう
では早速使ってみたいと思います!
まず手元の環境でSpanに含まれるentity.guidをdecodeしてみます
FROM Span SELECT entity.guid, decode(entity.guid, 'base64')
WHERE entity.guid IS NOT NULL
実はentity.guidってbase64でencodeされて作られてることがわかりますね
今度はBrowserのPageViewからSessionをencodeしてみます
FROM PageView SELECT session, encode(session, 'base64')
BLOBに保存されたログをdecodeして表示してみます
FROM Log
WITH blob(`newrelic.ext.message`) as encodedBlob,
decode(encodedBlob, 'base64') as decodedBlob
SELECT encodedBlob, decodedBlob
WHERE newrelic.ext.message IS NOT NULL
LIMIT 10
BLOBに保存されたnewrelic.ext.
属性はbase64で保存されているので、検索した時にそのままdecodeして表示することが可能です
ちなみにmessageとnewrelic.ext.messageを並べて表示すると、こんな感じになります。
まとめ
実はNew Relicに保存されているデータがbase64で保存されているものがありますが、decode()関数を活用することで簡単にデコードすることができるようになります。
また手軽にencodeできるので、ダッシュボードで可視化するときに見せたくない文字列を手軽にエンコードできるようになります。
New Relicに取り込まれた値を活用する手段の一つとして、是非この機能をご活用ください!!
このアップデートの詳細はこちら。New Relic アップデート(2024年1月)
無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!
New Relic株式会社のQiita Organizationでは、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。