New Relic のログ解析機能を使って Key-Value 形式のログデータをパースすることができるようになりました。Grokパターンを使った基本的なパース方法とカスタマイズの方法を紹介します。
New Relic のログパースはGrokパターンと正規表現に対応しています。Grokパターンを使うことでログデータを簡単に解析してパースすることができます。Grokパターンを使ったログのパース方法については下記のブログをご確認ください。
この記事で紹介しているポイントは、次の2つです。
-
基本的な Key-Value 形式のログデータのパース方法を知る
Grok パターン keyvalue() を使用して Key-Value 形式のログをパースする方法を紹介します。 -
パース方法をカスタマイズする方法がわかる
Grok パターン keyvalue() のオプション設定を使って解析動作をカスタマイズする方法を紹介します。
例えば、動作を簡単に把握するためにわかりやすい下記のログを例として使用します。
解析対象のログ
key1=value1,key2=value2,key3=value3
上記のログを解析して Key と Value に分割して取り込む場合は、下記のようにGrokの式を設定します。
keyvalue
%{GREEDYDATA:custom_attribute_prefix:keyvalue()}
実際に New Relic 上で設定すると下記のように変換が実行されます。
変換後はパーシングルールで設定した custom_attribute_prefix がプレフィックスとして属性名に付与されます。これだけでKey-Value 形式のログデータをパースして New Relic に取り込む事ができます。
区切り文字を変更する
デフォルトは ,
(カンマ) が区切り文字として設定されています。オプションで delimiter
を設定すると区切り文字を変更する事ができます。
例えば、区切り文字に;
(セミコロン)を使用する場合は下記のようになります。
解析対象のログ
key1=value1;key2=value2;key3=value3
上記のログを解析するために delimiter
のオプションを設定します。
keyvalue
%{GREEDYDATA:custom_attribute_prefix:keyValue({"delimiter": ";"})}
,
(カンマ)以外の区切り文字が指定されている場合でもこのように先ほどと同じように変換されています。
keyValueSeparator
key と value の割り当てに使用されている文字列を変更する事ができます。デフォルトは =
(イコール) が設定されています。オプションで keyValueSeparator
を設定すると変更する事ができます。
例えば、key と value の割り当てに :
(コロン)を使用する場合は下記のようになります。
解析対象のログ
key1:value1;key2:value2;key3:value3
上記のログを解析するために :
(コロン) のオプションを設定します。
keyvalue
%{GREEDYDATA:custom_attribute_prefix:keyValue({"keyValueSeparator": ":"})}
:
(コロン)以外のkey と value の割り当て文字列が指定されている場合でもこのように先ほどと同じように変換されています。
プレフィックスなし
変換後の値もカスタマイズできます。プレフィックスを設定しない場合はオプションで noPrefix
を設定すると変更する事ができます。
例えば、下記のログを変換する際に属性のプレフィックスを設定しない場合です。
解析対象のログ
key1=value1,key2=value2,key3=value3
上記のログを解析するために noPrefix
のオプションを設定します。
keyvalue
%{GREEDYDATA:custom_attribute_prefix:keyValue({"noPrefix": true})}
このパターンで設定するとプレフィックスが設定されずにkeyがそのまま属性名として取り込まれます。
オプションの組み合わせ
keyvalue() のオプション設定は複数組み合わせる事が可能です。 各オプションの設定を,
(カンマ)で区切って連結する必要があります。 これまで紹介したオプションをすべて組み合わせた例を紹介します。
区切り文字に ;
(セミコロン), key と value の割り当てに :
(コロン), プレフィックスなし を組み合わせると下記のようになります。
例えば、下記のログを変換する例を紹介します。
解析対象のログ
key1:value1;key2:value2;key3:value3
上記のログを解析するために delimiter
, keyValueSeparator
, noPrefix
のオプションを設定します。
keyvalue
%{GREEDYDATA:custom_attribute_prefix:keyValue({"delimiter": ";", "keyValueSeparator": ":", "noPrefix": true})}
このパターンで設定すると複数のオプションが適用されて取り込まれます。
これまでは Key-Value 形式のログデータをパースする際は、それぞれ設定する必要がありましたが keyvalue() を使うと簡単に取り込む事が可能です。項目が可変の場合でも簡単にパースできるのは大きな利点です。他の Grok パターンと組み合わせる事が可能でログの一部が Key-Value 形式のケースにも対応しています。複数のパターンを組み合わせてログを取り込み時に変換してダッシュボードでの利用やアラート設定をより柔軟に実施できるようにログの解析機能を活用していきましょう。
New Relicでは、新しい機能やその活用方法について、QiitaやXで発信しています!
無料でアカウント作成も可能なのでぜひお試しください!
Views: 0