Splunk Ingest Processorの一般提供が開始されました。これからIngest Processorで初めてのパイプラインの構築に挑戦される方も、先にSplunk Edge Processorを試している方もいらっしゃるでしょう。ユーザーインターフェイスにログインして機能をチェックして回り、場合によってはすでにHEC、フォワーダー、syslog経由でデータの送信を始めている方もいらっしゃるかもしれません。しかしそこで、壁にぶつかります。初めてのパイプラインを、どのように記述すればよいのでしょうか。SPLは知っていても、SPL2は?ストリーミングコンテキストで?そもそも、何から始めればよいのでしょうか。
そんな皆様に朗報です。SplunkのSPLからSPL2へのコンバーターが、Splunk Data ManagementのEdge ProcessorとIngest Processor (ここではまとめて「パイプラインビルダー」と呼びます)で利用可能になりました。このコンバーターを使えば、パイプラインにSPLをコピー&ペーストするか手入力するだけで、SPL2に自動的に変換されます。Edge ProcessorやIngest Processorでパイプラインの構築を開始するのに最適のツールで、最初にいくつかのパイプラインを構築しながら、SPL2を身に付けることができます。さらに、Splunk Cloud PlatformやSplunk Enterpriseから既存のSPLサーチをコピー&ペーストして、サーチ時の分析をデータ取り込み前の変換へと変えることもできます(「大いなる力には大いなる責任が伴う」というわけです)。
その使い方を見ていきましょう。
SPLからSPL2への変換は簡単です。まずは、基本的な空のEdge Processorパイプラインを作ってみましょう。

Splunkが先日シスコの一員になったことを記念して、Cisco ASAデータの処理を例にします。目標は、_rawからメッセージ番号フィールドを抽出し、特定のメッセージ番号をフィルタリングして、ベンダー名を「Cisco」に設定することです。このサーチをSPLで書くと、次のようになります。
| rex field=_raw "/(%ASA|%FTD)-\d+-(?P\d+)/" | search message-number != 43003 | eval vendor_name = "Cisco" | fields - message-number
さて、このSPLをEdge Processorパイプラインで使用するには、どうすればよいでしょうか。方法は2つあります。
つまり、先ほどのSPLクエリーをspl1コマンドの引数として指定するか、SPLクエリー自体をバッククォートで囲むだけです。SPL2に変換できるクエリーは、クリックすると、左側に電球マークが表示されます。または、クエリーの上にポインターを置いてから[Quick Fix]をクリックすることもできます。その後、[Convert SPL1 to SPL2]をクリックすれば、完了です。

SPLとSPL2の小さな違いの1つとして、SPL2では、英数字とアンダースコア(_)以外の文字を含むフィールド名を一重引用符で囲む必要があります。図を見ると、この点が自動で処理され、コンバーターが一重引用符を追加して「message-number」を囲んだことがわかります。
それでは、searchコマンドはどうなるのでしょうか。コマンドサポート表によると、Edge Processorでは(まだ)サポートされていません。しかし、ご安心ください。コンバーターでは、search句をwhereコマンドに変換するオプションも表示されます(例外もあります)。

SPLからSPL2への変換については、以下の点に注意してください。
$pipeline = from $source | <SPL here> | <SPL2 here> | <SPL here> | into $destination
SPLのsearchとSPL2のwhereは、完全に意味が一致するわけではありません。そのため、全体的なベストプラクティスとして、パイプラインをあらかじめテストし、変換後のSPL2が、もともとSPLで意図していたとおりに動作することを確認するように強くお勧めします。
使い方がわかったら、あとは実践するのみです。バッククォートを付けて変換してみましょう。
SPLからSPL2へのコンバーターの機能と制約について詳しくは、こちらのドキュメントをご覧ください。
SPLからSPL2への変換対象についてご要望がある場合は、ぜひSplunk Ideasポータルを使い、Edge Processorに関するアイデアをお送りください。
SPLからSPL2への変換についての一般的なご相談やご意見がある場合は、SplunkユーザーグループSlackの#spl2チャネルにお気軽にご参加ください!
このブログはこちらの英語ブログの翻訳、井上 綾乃によるレビューです。