こんにちは、技術本部のM・Yです。
先日、Sumo LogicのAIアシスタント機能が「Sumo Logic Mobot」として正式にリリースされました(旧称:Mo Copilot)。
本記事では、Beta版からの進化点や、新たに追加された機能、使い方についてまとめました。
これからSumo Logicを使ってみようと検討している方や、クエリを書くことに難しさを感じられている方にとっては、強力な支援ツールになると感じています。
Sumo Logic Mobotは、自然言語での対話を通じてログ分析やトラブルシューティング、プラットフォームの学習を支援するAIアシスタントです。 正式リリースに伴い、Mobotは高速な応答時間と高い翻訳精度を実現し、以下の2つの専門エージェントを備えた総合アシスタントへと進化しました。
本記事では、これら2種類のAgentのうち、主にQuery Agentについて取り上げ、ユースケースにおいても、Query Agentのユースケースを掲載しています。
Mobotには、Beta版から引き継がれた機能に加え、よりスムーズな調査を実現するための新機能が多数搭載されています。
検索結果から自動的にチャートを生成し、直接ダッシュボードに追加できます。
構造化ログや半構造化ログに対応しています。非構造化ログ(Palo Alto Firewallなど)の場合は、FER(フィールド抽出ルール)を適用することで分析可能です。
質問内容に基づいてMobotがデータソースを自動選択します。もちろん、自分で指定することも可能です。
リクエストが曖昧な場合、Mobotは意図を絞り込むためのフォローアップ質問を行います。
一般的なエラー表示ではなく、明確なメッセージと実行可能な修正案を提示します。
過去90日間に組織内で開かれたダッシュボードから学習し、ユーザの意図やデータ構造をより深く理解します。
プロンプト、改善案、クエリ、結果をすべて1つのインターフェースで確認でき、過去の会話への分岐や再訪もスムーズに行えます。
正式リリース時点でも質問の入力は基本的に英語が推奨されていますが、日本語での入力も可能になりました。
ただし、通常の環境とSumoLogic公式トレーニング環境では、Sumo Logic Mobotへの日本語入力において違いがあります。通常の環境においては、上記の画像のように日本語での入力が可能となっています。
一方で、トレーニング環境においては、下記の画像のように「Failed to create message」というエラーメッセージが発生し、日本語(マルチバイト文字)での入力ができないことを確認しております。(2026/01/07時点現在)
トレーニング環境で日本語入力を行いたい場合は、日本語(マルチバイト文字)表記ではなく、アルファベット表記(ローマ字)で入力します。そのうえで、入力文の後ろに命令はローマ字で表記されていることを追記します。そして回答も日本語で出力するように指示をすると、英語を介さずにMobotを利用できます。
(The text above is Japanese written in Romaji. Please interpret the meaning and output the answer in Japanese.)
Mobotは主にログ検索に特化しています。メトリクスやトレースのクエリ生成については、現時点では主な対象の範囲外となります。
A: インテリジェントなセキュリティ運用とインシデント対応を強化するために構築されたマルチエージェントAIプラットフォームです。Mobotは、このDojo AIのユーザー向け対話インターフェースとして機能します。
A: 生成AI(GenAI)と従来の機械学習(ML)技術を組み合わせたアンサンブルモデルを採用しています。生成AIにはAmazon Bedrockを利用し、異常検知などの機能には従来のML手法を用いています。
A: はい。AIは推奨や定型タスクの支援を行いますが、最終的な判断やアクションはユーザーが行うことを前提として設計されています。
A: いいえ。顧客データやPII(個人識別情報)はAIモデルのトレーニングには使用されません。MobotはAmazon Bedrock経由で提供される基盤モデルを使用しており、データは非公開かつ安全に保たれます。
A: パフォーマンス最適化のために一時的にクエリ履歴が保存されることがありますが、データはローリングベース(順次破棄)で管理され、プライバシーが維持されます。
A: Mobotの使用を希望しない場合は、Sumo Logicのサポートチームに連絡することで無効化が可能です。
参照:https://www.sumologic.com/solutions/ai-ml-powered
以下では、簡単なユースケースでクエリがうまく生成されるのかについて確認してみました。
また今回は、メーカーが提供しているトレーニング環境を利用して動作確認をおこないました。
Mobotは、従来のSumo Logic Mo Copilotとは異なり、データソースの自動選択機能があります(下記画像内の赤枠)。
一方で、この機能はまだ実用的と言える段階にありません。特に簡易な英語でQuery生成をする際、都度データソースが変更されることもありました。よって、現段階では明示的にデータソースを指定し、そのうえでAIにQuery生成を行わせる方法が良いと感じました。
では早速、今回はデータソース欄に「Labs/Apache/Access」と入力したうえで、Mobotに対して「I want to count source IP addresses.」と入力しQuery生成を行わせます。
すると、すぐに以下のクエリが提示され、検索結果が表示されました。
_sourceCategory=Labs/Apache/Access
| count by %"src_ip"
次に、「Show me source IP addresses on a map.」と入力します。
すると、Mobotは自動的にクエリを生成し、送信元IPアドレスを地図上で可視化をしてくれました。このままでも、右上の「Add to Dashboard」ボタンからダッシュボードへ追加できそうです。
_sourceCategory=Labs/Apache/Access
| lookup latitude, longitude, country_name from geo://location on ip = %"src_ip"
| count by latitude, longitude
最後に、「Correlate source IP addresses from Box logs with CrowdStrike threat intelligence and plot them on a map.」と入力します。
3行目の
| lookup type, actor, raw, threatlevel as malicious_confidence from sumo://threat/cs on threat=src_ip
がCrowdStrikeとの突合クエリとなるので、うまく生成出来ているようです。
全文
_sourceCategory=Labs/Apache/Access
| parse regex "^(?<src_ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})" nodrop
| lookup type, actor, raw, threatlevel as malicious_confidence from sumo://threat/cs on threat=src_ip
| where type="ip_address" and !isNull(malicious_confidence)
| lookup latitude, longitude, country_name from geo://location on ip = src_ip
| count by latitude, longitude
このように、利用すべきオペレータがわからなくても、やりたいことを英語で伝える形でログの分析が可能になります。
二つ目のユースケースとして、Sumo Logic Mobotではうまく生成出来なかったQuery生成の例を共有します。
目的
・Subqueryを使ったQuery文をMobotで生成する。
・過去30日でログインに失敗したすべてのユーザの過去30日の行動を時系列順かつテーブル形式で表示する(表示内容:時刻、ユーザ名、イベントタイプ)。
まずは、ユースケース1でも行ったように生成結果を安定的にするために、データソースを決定します。
今回は、目的に記載のあるようにイベントタイプを確認するために、「Labs/Box」を設定します。
次にMobotに対して「Show all users who failed to log in within the past 30 days.」と入力し、Query生成を行わせます。
_sourcecategory=Labs/Box
| where _messagetime >= now() - 30d
| json "created_at","ip_address","event_type","created_by.name","created_by.login" as messagetime,src_ip,event_type, src_user,src_login nodrop
| where event_type matches "FAILED_LOGIN"
| count by src_user, src_login
次にMobotに対して「Show the past 30 days of activity for all users who failed to log in within the past 30 days, in a chronological table format (columns: Time, Username, Event Type).」と入力し、Subqueryの生成を行わせます。
_sourcecategory=Labs/Box
| json "created_at","event_type","created_by.name" as messagetime,event_type,src_user nodrop
| where _messagetime >= now() - 30d and event_type="FAILED_LOGIN"
| count by messagetime,src_user,event_type
| sort by messagetime asc
結果としては、上記のようにログインに失敗した特定のユーザが過去30日間で発生させたFAILED_LOGINの時刻と回数を可視化してしまっています。
下記のように、明示的にSubqueryの使用を指示しても、Subqueryは利用できないのか、現段階ではこのような複雑なQueryの生成は難しいようです。
本記事では、先日正式にリリースされたSumo LogicのAIアシスタント機能である「Sumo Logic Mobot」のQuery Agentの特徴をまとめ、ユースケースを利用して検証してみました。
今回は、ユースケース1については、上手くQueryが生成され、手動で行う際とそん色ない可視化を行うことが出来ました。とはいえ、上手く目的通りの情報を可視化することが出来ましたが、やはり生成AIであるので命令の仕方次第で、クエリ生成のされ方が異なる場面もありました。
一方で、ユースケース2で紹介したように、現段階ではSubqueryを使用した場合などの複雑で難易度の高いQueryを生成するには向いていないことも分かりました。この点については、ユーザの皆さんがMobotを利用して生成されたクエリに対して、フィードバックを返していけば(生成されたクエリについて「👍」や「👎」で評価することが出来ます)、今後生成されるクエリの精度についても、より良くなっていくと思います。
また、ユースケース1の結果から、そこまで複雑ではないQueryについては、翻訳機越しにMobotに入力するだけでクエリができてしまうので、かなり楽ができる印象でした。特に、Sumo Logicを初めて触る人がログの分析を始めるためのきっかけとして、優秀な印象を受けました。
正式リリースを迎えたSumo Logic Mobot、すぐに利用できるので、ぜひ一度気軽に利用してみてください。