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を紹介しました。ぜひ一度試してみてください。

関連記事

Splunk App for Behavioral Profilingのご紹介
Tips
5 分程度

Splunk App for Behavioral Profilingのご紹介

Splunk App for Behavioral Profilingのワークフローを使用すれば、大規模で複雑な環境でも異常な挙動を検出してスコアリングし、プロファイルと関連付けて、レジリエンスに影響を及ぼすエンティティを見つけ出すことができます。このブログでは、Splunk App for Behavioral Profilingについてご紹介します。
Splunk Streamを使って DNS データを Splunking! - 簡単な方法
Tips
5 分程度

Splunk Streamを使って DNS データを Splunking! - 簡単な方法

DNSは、分析のためにSplunkにインジェストする最も強力なデータソースの1つであり、セキュリティやIT運用のユースケースを満たすため、あるいはビジネスの運用を洞察するためにも利用できます。Splunkに取り込むデータソースを1つだけ選ぶとしたら、それはDNSデータにしてください」とRyan Kovar氏は言います。
AWS CloudWatch LogsからFirehose経由でログを収集
Tips
5 分程度

AWS CloudWatch LogsからFirehose経由でログを収集

CloudWatch Logsを使用すれば、AWS環境からすべてのログを1カ所に収集可能。Lambda関数(ラムダ式)などを介して、ログソースをソースとログ形式ごとに複数のロググループにまとめられます。この記事では、ログファイルをCloudWatchからSplunkに取り込む方法についてご紹介します。