ChatGPTでSplunkを使いこなす(SPL基礎編)

Tips & Tricks 近藤 洋平

ChatGPTを筆頭に大規模言語モデルや生成AIが大きな注目を集めています。ChatGPTの応用例は様々な分野で公開されていますがSplunkも例外ではありません。今回はSPLにフォーカスしてChatGPTを使ったSplunkの活用方法を紹介します。

ユースケース

SPLの作成

Search Processing Language(SPL)は、Splunkでデータを検索、分析するための強力な言語です。プログラミング言語と比べて比較的習得が容易な言語ではありますが、SPLに慣れていなくてもChatGPTを利用すると効率的にSPL作成を行うことができます。その際に以下の情報をプロンプトに盛り込むことで要件に合ったSPLを得やすくなります。

データの種類と構造

目的と要件

結果のフォーマット

フィルタ条件

期間と集計単位

試しにSplunk Basicワークショップのハンズオンで実施している演習問題のSPLを作成してみました。

<Basicワークショップの演習問題から抜粋>

predict - 時系列フィールドの値を予測

<ChatGPT画面>

ChatGPT画面1
ChatGPT画面2
ChatGPT画面3

ChatGPTの回答内容に従ってSPLを実行した結果がこちらです。意図した通りのWebアクセス件数の予測ができています。

SPLの実行結果

ちなみに、Splunkも生成AIの取り組みを進めており.conf23でSplunk AI assistantを発表しています(プレスリリース)。現時点ではPreview版がSplunkbaseで公開されています。Preview版は英語のみの対応になりますが、Splunk内でチャットを通じてやりたいことを指示してそのままサーチ画面に移れる等シームレスな操作感で利用できるのがポイントです。

Splunk AI assistant

SPLの解説

前任者が作成したSPLクエリやAppで提供されているSPLクエリが何をやっているか分からない、という場合にはChatGPTに処理内容を解説してもらうことが可能です。また、カスタムSPLクエリ作成時にも1から作るのではなくAppのテンプレートをベースにChatGPTと対話をしながら処理の説明を確認して修正していくと効率化が図れます。

ここではセキュリティの検知ルールを提供している無償App「Splunk Security Essentials」から複雑なSPLをピックアップして試してみます。

対象としたのは「Geographocally Improbable Access Drtected for Privileged Accounts(特権アカウントで地理的に不適切なアクセスが検出されました)」という検知ルールのSPLクエリです。このルールは複数のアクセス元IPアドレスに基づく位置情報の地点間の距離とアクセス時間間隔から、通常の移動手段では不可能なアクセスがあった場合に検出します。

特権アカウントで地理的に不適切なアクセスが検出されました

SPLはこちらです。そのままChatGPTに貼り付けつつ処理内容を解説してもらいました。

ChatGPT画面4

ChatGPT画面5

(以下略)

ChatGPT画面6

(中略)

ChatGPT画面7

ChatGPTにSPLを貼り付けるだけで、処理の全体像と各行の処理について何を行っているか丁寧に解説してもらうことができました。コマンドやオプションの補足説明もあり、自分でSPLをカスタマイズする時にも役立ちます。もちろんChatGPTに「M365のログで同様の検知がしたい」と依頼してしまうことも可能です。

SPLのチューニング(サーチ時間の短縮)

別のブログ記事でも紹介されているようにSplunkには様々な高速化手法でサーチ時間を短縮できます。サーチ時間を短縮したい場面でもChatGPTは有効です。まずはどのような手法があるか聞いてみました。

ChatGPT画面8

実際の回答はもう少し続きますが、適切な手法が回答されています。続いて、具体的なSPLを書いてチューニングしてもらいました。

ChatGPT画面9

敢えて処理効率が悪いSPLクエリを書いてみましたが、「indexを具体的に指定する」、「不要なデータは初めにフィルタする」といった適切なチューニングをしてもらえました。

まとめ

ChatGPTを使うことでSPLを効率的に作成、理解、チューニングできることをご紹介しました。SPLに不慣れな方にもChatGPTを使うことで学習コストは下がってきています。今回紹介したユースケース以外にも、「Splunkでこれをどうやってやるの?」とChatGPTに尋ねてヒントが得られる様々なケースがあります。さらに、英語版のみではありますがSplunk内でネイティブにSPLに対する生成AI利用ができるSplunk AI assistantを紹介しました。ぜひ一度試してみてください。

関連記事

SPLでjoinを使わない方法
Tips
5 分程度

SPLでjoinを使わない方法

Splunkに「join」している皆様は、レコードを明示的にjoinする必要はありません。
Splunk社員による公開研修!〜Splunk Japan SE Workshopのご紹介〜
Tips
5 分程度

Splunk社員による公開研修!〜Splunk Japan SE Workshopのご紹介〜

Splunkでは定期的に、日本のソリューションエンジニアが公開ワークショップ(オンライン)を開催しています。本記事では、どなたでも参加いただける、日本のソリューションエンジニアによるラボ演習付きワークショップをご紹介します。
Skipped & Deferred Searchを理解する(パート2)
Tips
24 分程度

Skipped & Deferred Searchを理解する(パート2)

予定されていたサーチが何らかの理由で実行されない場合、そのサーチはスキップ(skipped)または延期(deferred)されます。パート2ではその主な原因やベストプラクティス、トラブルシューティングを解説しています。