こんにちは(‾◡◝)
技術統括部のAIです。ただの人間です。
今回はCSEの機能であるLog Mappingをcurlコマンドを使ってAPIで追加する方法をご紹介します。
もちろんSumo社が事前に定義したものはたくさんありますが、例えばZoomのLog Mappingがないため自分で設定しないといけない場合もあると思います。
今回は新しく「ai_test_01」というLog Mappingを追加する方法を説明します。
そもそもLog Mappingとは?
Log Mappingとは、CIPからCSEに送られるメッセージから抽出されたキーと値のペアからRecordを構築する方法をCSEに指示するプロセスになります。
これは正規化や標準化などNormalizationと呼ぶこともあります。
どのLog Mappingを使ってどのメッセージを処理するかを識別するために、Log Mappingごとにベンダー名、製品名、メッセージ形式およびイベントIDなどを指定します。
例えば、ユーザ名をベンダAのメッセージでは「user」、ベンダBのメッセージでは「user_name」と定義されている場合、CSEにメッセージを取り込む際にユーザ名を「username」に標準化します。
Log Mappingを使うことにより、形式の異なるメッセージをCSEに取り込んでも標準化された値でSignalやInsightが生成することができます。
事前準備
APIでLog Mappingを追加する際に必要な情報は以下の2点です。
- Access Key
- JSONファイル
まずAccess Keyは[ログインユーザー名] -> [Preferences] -> [+ Add Access Key]から作成することができます。
Keyは生成時のみ表示されるため、必ずメモに残してください。
次に追加したいLog Mappingの内容をJSONファイルにまとめます。
※1ファイルで追加できるLog Mappingは1つのみとなるため、複数追加したい場合は複数のJSONファイルをご準備ください。
Log Mappingを追加する上で必要な項目は、以下のヘルプページに記載された内容を参照して追加したい内容をまとめたJSONファイルを事前に準備しています。
https://api.jp.sumologic.com/docs/sec/#operation/CreateLogMapping
アスタリスク(*)が付いた項目に設定値がないと、crulコマンドを実行後にエラーとなってしまうので、ご注意ください。
サンプルJSONファイル
今回使うJSONファイルは以下のように作っています。
使用する前にコメントアウト( // )部分は削除してくださいね。
{
"fields": {
"name": "ai_test_01", // Log Mappingの名前
"fields": [ // 複数設定する場合は、以下の{}をカンマでつなげて追記
{
"name": "test0-1", // 標準化した後の値
"value": "test01a", // 標準化する前の値
"valueType": null,
"skippedValues": null,
"lookup": null,
"defaultValue": "aaa", // 標準化する前のキーのデフォルト値
"format": null,
"caseInsensitive": null,
"alternateValues": null,
"timeZone": null,
"splitDelimiter": null,
"splitIndex": null,
"fieldJoin": null,
"joinDelimiter": null,
"formatParameters": null
}
],
"skippedValues": null,
"structuredFields": {
"logFormat": "JSON", // 対象メッセージのフォーマット
"vendor": "Zoom", // 対象メッセージのベンダー名
"product": "Zoom", // 対象メッセージの製品名
"eventIdPattern": "_default_"
},
"structuredInputs": [ // WebUIの[IF INPUT MATCHES] 部分に表示
{
"logFormat": "JSON",
"vendor": "Zoom",
"product": "Zoom",
"eventIdPattern": "_default_"
}
],
"recordType": "Audit", // レコードタイプの設定
"productGuid": "7205db83-88e8-4074-8288-136a6c493d69", // WebUIの[THEN CREATE RECORD] 部分に表示
"relatesEntities": true,
"enabled": true // Log Mappingの有効化
}
}
※[productGuid]ですが、ベンダー名と製品名の決まったペアIDを指定しなければいけません。
※ヘルプページに記載がないため、記事公開時点ではAPIでLog Mapping情報を取得し、指定したいIDを見つける必要があります。
追加用テンプレート
Log Mappingを追加するために以下のテンプレートを使います。curl -u "<accessId>:<accessKey>" -X POST -H <REQUEST BODY SCHEMA> -T <JSON file> <API Endpoint/PATH>
- <accessId> ★
事前準備で作成したAccess ID - <accessKey> ★
事前準備で作成したAccess Key - <REQUEST BODY SCHEMA>
JSONファイルを利用するため、"Content-Type: application/json" を使います - <JSON file> ★
使用するJSONファイルの名前(例:log_mapping_test01.json) - <API Endpoint/PATH>
https://api.jp.sumologic.com/api/sec/v1/log-mappings を使います
※★はお客様によって書き換えていただく部分です。
上記を組み合わせると、以下のようなコマンドになります。
※Access IDとKeyはマスクしているため、環境にあわせて書き換えてください。
curl -u "XXX:xxx" -X POST -H "Content-Type: application/json" -T log_mapping_test01.json https://api.jp.sumologic.com/api/sec/v1/log-mappings
こちらを使ってLog Mappingを追加していきます!
API実行
コマンドプロンプトを起動し、使用するJSONファイルがあるディレクトリに移動します。C:\Users\ai>cd "Desktop\sumoAPI\log mapping"
C:\Users\ai\Desktop\sumoAPI\log mapping>dir
2024/01/22 10:36 <DIR> .
2024/01/22 10:36 <DIR> ..
2024/01/22 10:38 1,039 log_mapping_test01.json
前節のコマンドを実行し成功すると、JSONファイルの中身が出力されます。C:\Users\ai\Desktop\sumoAPI\log mapping>
curl -u "XXX:xxx" -X POST -H "Content-Type: application/json" -T log_mapping_test01.json https://api.jp.sumologic.com/api/sec/v1/log-mappings
{"data": {"id": "da53627b-911b-45a5-8cc8-146f2853cdb1", "name": "ai_test_01", "source": "user", "skippedValues": [",", "-"], "fields": [{"name": "test0-1", "value": "test01a", "valueType": null, "skippedValues": null, "lookup": null, "defaultValue": "aaa", "format": null, "caseInsensitive": null, "alternateValues": null, "timeZone": null, "splitDelimiter": null, "splitIndex": null, "fieldJoin": null, "joinDelimiter": null, "formatParameters": null}], "enabled": true, "relatesEntities": true, "unstructuredFields": null, "structuredInputs": [{"vendor": "Zoom", "product": "Zoom", "eventIdPattern": "_default_", "logFormat": "JSON"}], "recordType": "Audit", "productGuid": "7205db83-88e8-4074-8288-136a6c493d69"}, "errors": []}
C:\Users\ai\Desktop\sumoAPI\log mapping>
追加に失敗すると以下のようなログが出力されますので、JSONファイルの中身やAccess IDとKeyの組み合わせに問題ないかをご確認ください。C:\Users\ai\Desktop\sumoAPI\log mapping>
curl -u "XXX:xxx" -X POST -H "Content-Type: application/json" -T log_mapping_test01.json https://api.jp.sumologic.com/api/sec/v1/log-mappings
<!doctype html>
<html lang=en>
<title>400 Bad Request</title>
<h1>Bad Request</h1>
<p>The browser (or proxy) sent a request that this server could not understand.</p>
実行結果の確認
CSE画面から[LogMappings]タブをクリックします。
一覧画面から、今回追加した「ai_test_01」が確認できます。
名前をクリックすると詳細が表示されますので、JSONファイルの内容が正しく登録されていることを確認します。
まとめ
このようにAPIを使ってLog Mappingを追加することができました!
テンプレートを少し変えるだけでLog Mappingの一覧を取得したり、設定値の更新ができますので、ぜひご活用ください。
- カテゴリ:
- Sumo Logic
- 機能説明