Download as pdf or txt
Download as pdf or txt
You are on page 1of 472

S plu nk ® E nt er pr is e 8 . 1 .

0
サーチリファレンス:
作成:2020/10/26午後6時22分

Copyright (c) 2021 Splunk Inc. All Rights Reserved


T abl e o f C o nt e nt s
はじめに 5
『サーチリファレンス』マニュアルにようこそ 5
SPL構⽂の理解 5
このマニュアルの使⽤⽅法 8

クイックリファレンス 10
Splunkクイックリファレンスガイド 10
コマンドクイックリファレンス 10
カテゴリ別のコマンド 15
コマンドタイプ 23
SQLユーザー向けのSplunk SPL 26
SPLデータタイプおよび句 29

評価関数 33
評価関数 33
⽐較関数と条件関数 39
変換関数 47
暗号化関数 51
⽇付と時間の関数 52
情報関数 56
JSON関数 58
数学関数 66
多値評価関数 70
統計的評価関数 76
テキスト関数 77
三⾓関数と双曲線関数 80

統計およびグラフ関数 85
統計およびグラフ関数 85
集計関数 87
イベント順関数 103
マルチ値統計およびグラフ機能 107
時間関数 109

時間書式変数と修飾⼦ 117
⽇付と時間の書式変数 117
時間修飾⼦ 119

サーチコマンド 123
abstract 123
accum 123
addcoltotals 124
addinfo 126
addtotals 127
analyzefields 130
anom alies 131
anom alousvalue 134
anom alydetection 137
append 139
appendcols 143
appendpipe 144
arules 145
associate 146
audit 148
autoregress 148
awssnsalert 149
bin 149
bucket 152
bucketdir 152
cefout 152
chart 152
cluster 164
cofilter 167
collect 168
concurrency 171
contingency 174
convert 177
correlate 180
ctable 181
datam odel 181
datam odelsim ple 184
dbinspect 184
dbxquery 188
dedup 188
delete 190
delta 191
diff 195
erex 196
eval 198
eventcount 205
eventstats 207
extract 212
fieldform at 214
フィールド 217
fieldsum m ary 219
filldown 220
fillnull 221
findtypes 222
folderize 223
foreach 224
form at 226
開始 228
gauge 230
gentim es 231
geom 233
geom filter 237
geostats 237
head 241
highlight 244
history 245
iconify 247
inputcsv 248
inputintelligence 250
inputlookup 250
iplocation 253
join 256
km eans 259
kvform 260
loadjob 261
localize 263
localop 264
lookup 264
m akecontinuous 268
m akem v 269
m akeresults 271
m ap 275
m collect 277
m etadata 280
m etasearch 283
m eventcollect 284
m preview 286
m search 289
m stats 289
m ultikv 299
m ultisearch 300
m vcom bine 301
m vexpand 304
nom v 306
outlier 307
outputcsv 308
outputlookup 310
outputtext 312
overlap 313
pivot 314
predict 316
rangem ap 321
rare 323
redistribute 324
正規表現 328
relevancy 329
reltim e 330
renam e 330
replace 332
require 333
rest 334
return 336
reverse 337
rex 338
rtorder 341
run 341
savedsearch 341
script 342
scrub 343
search 344
searchtxn 349
selfjoin 350
sendem ail 354
set 357
setfields 358
sichart 359
sirare 360
sistats 361
sitim echart 362
sitop 362
snowincident 364
snowincidentstream 364
snowevent 364
snoweventstream 364
sort 364
spath 367
stats 371
strcat 380
stream stats 381
table 389
tags 391
tail 394
tim echart 394
tim ewrap 405
top 408
transaction 411
transpose 419
trendline 422
tscollect 423
tstats 424
typeahead 431
typelearner 432
typer 433
UNION 434
uniq 437
untable 437
walklex 441
where 443
x11 445
xm lkv 446
xm lunescape 447
xpath 447
xsDisplayConcept 449
xsDisplayContext 449
xsFindBestConcept 449
xsListConcepts 449
xsListContexts 450
xsUpdateDDContext 450
xsWhere 450
xyseries 450
サードパーティのカスタムコマンド 453

内部コマンド 4 54
内部コマンドについて 454
collapse 454
dum p 454
findkeywords 455
m akejson 456
m catalog 458
noop 461
prjob 465
runshellscript 467
sendalert 467

CLIでのサーチ 4 70
CLIでのサーチについて 470
CLIのサーチ構⽂ 470
はじめに
『サーチリファレンス』マニュアルにようこそ
このマニュアルは、Splunkサーチ処理⾔語(SPL)のリファレンスガイドです。このマニュアルには、構⽂、説明、例とともに
サーチコマンドの⼀覧が掲載されています。さらに、コマンドのカテゴリ、コマンドで使⽤できる関数、サーチ処理⾔語
(SPL)とSQLの関係に関するクイックリファレンスも含まれています。

はじめに
Splunkソフトウェアやサーチを利⽤したことがない場合は、まず『サーチチュートリアル』をご覧ください。このチュート
リアルでは、サーチとレポート作成のアプリケーションについて解説します。チュートリアルでは、Splunk導⼊環境への
データアップロード、データのサーチ、簡易チャート、レポートやダッシュボードの作成について説明します。

サーチチュートリアルを修了し、実際のデータでSplunkソフトウェアを使⽤開始する前に、以下の準備をする必要がありま
す。

Splunkインスタンスにデータを追加する 。『データの取り込み』を参照してください。
インデックス処理の仕組みとデータの処理⽅法を理解する 。『インデクサーおよびインデクサーのクラスターの管
理』を参照してください。
フィールドとホスト、ソースタイプ、イベントタイプなどのナレッジオブジェクトを理解する 。『ナレッジ管
理』マニュアルを参照してください。

サーチマニュアル
『サーチ』マニュアルは『サーチ参照』の付随マニュアルです。『サーチ』マニュアルでは、サーチの作成と最適化につい
て詳細に解説しています。

サーチの種類
イベントの取得
時間範囲の指定
サーチの最適化
サブサーチの使⽤
統計テーブルおよびチャートの作成
イベントのグループ化と相関
将来のフィールドの予測
ジョブの管理

クイックリファレンス情報
クイックリファレンスガイドには以下が含まれます。
Splunkの機能に関する説明
⼀般的なサーチコマンド
サーチの最適化に関するヒント
evalとstatsコマンドの関数
サーチの例
正規表現
⽂字列をタイムスタンプに変換するためのフォーマット

コマンドのカテゴリ

カテゴリ別サーチコマンドのトピックでは、アクションの種類ごとにコマンドが整理されています。

たとえば、報告 カテゴリのコマンドは、変換サーチの作成に使⽤されます。報告コマンドはチャートやその他のデータの可
視化に必要な統計データのテーブルを返します。

このトピックには各コマンドの簡単な説明のほか、このマニュアルのサーチコマンドのセクションにある詳細情報へのリン
クが含まれています。

コマンドの構⽂
次へ進む前に、「SPL構⽂の理解」で、このマニュアルで使⽤される慣例やルールを参照してください。

S P L 構⽂の理解
以下のセクションではSplunk SPLコマンド で使⽤される構⽂について説明します。キーワード、フレーズ、ワイルドカー
ド、および正規表現の使⽤に関する追加情報ついては、「サーチコマンド⼊⾨」をご覧ください。

5
必須および省略可能な引数
SPLコマンドには、必須および省略可能な引数があります。
必要な因数は⾓括弧< >で⽰されます。
省略可能な引数については、⾓括弧[ ]で囲みます。

以下のコマンドの構⽂を考えてみてください。

bin [<bins-options>...] <field> [AS <newfield>]

必須の引数は、<field>になります。このコマンドを使⽤するには、最低限bin <field>を指定する必要があります。

省略可能な引数は、[<bins-options>...]および[AS <newfield>]になります。

ユーザー⼊⼒引数
以下のコマンドの構⽂を考えてみてください。

replace (<wc-string> WITH <wc-string>)... [IN <field-list>]

ユーザー⼊⼒の引数は、<wc-string>および<field-list>になります。

繰り返し引数
引数によっては、複数回指定されるものがあります。構⽂は省略...を表⽰して引数のどの部分を繰り返すかを指定します。省
略記号は、常に構⽂の繰り返し部分の直後に 置かれます。
以下のコマンドを考慮してください。

convert [timeformat=string] (<convert-function> [AS <field>])...

必須の引数は、<convert-function>で、[AS <field>]句をもつフィールドを指定するためのオプションがついています。

構⽂の終わりの省略記号が右括弧⽂字の後にあることに注意してください。この例では、括弧の内側の構⽂について
は、<convert-function> [AS <field>]の繰り返しでも可能です。

以下の構⽂では、<bins-options>...を繰り返すことができます。

bin [<bins-options>...] <field> [AS <newfield>]

グループ引数
場合によっては、構⽂では引数をグループとして表⽰し、⼀連の引数が⼀緒に使われることを⽰す必要があります。括弧()は
引数のグループ化に使⽤します。

たとえば、以下の構⽂では、

replace (<wc-string> WITH <wc-string>)... [IN <field-list>]

グループ引数は、(<wc-string> WITH <wc-string>)... になります。これは繰り返し可能な、⼀連の必須の引数です。

K ey w o r ds
多くのコマンドでは、引数やオプションとともにキーワードが使⽤されます。キーワードの例には以下の様なものがありま
す。

AS
BY
OVER
WHERE

サーチではこれらのキーワードは、⼤⽂字または⼩⽂字で指定できます。しかしながら可読性を考慮して、Splunkのドキュ
メントではキーワードにはすべて⼤⽂字が使⽤されます。

引⽤符で囲まれた要素
要素が引⽤符で囲まれている場合は、その要素をサーチに含める必要があります。引⽤符に囲まれる最も⼀般的な要素は括
弧です。

chartコマンドの構⽂を例に取ってみましょう。
6
chart [<chart-options>] [agg=<stats-agg-term>]
( <stats-agg-term> | <sparkline-agg-term> | "("<eval-expression>")" )...
[ BY <row-split><column-split> ] | [ OVER <row-split> ] [BY <column-split>] ]

<eval-expression>を囲む括弧には引⽤符が付いています。これは、サーチの際には<eval-expression>を括弧で囲む必要があるこ
とを意味しています。

以下のサーチ例では<eval-expression>はavg(size)/max(delay)であり、括弧で囲まれています。

... | chart eval(avg(size)/max(delay)) AS ratio BY host user

引数の順序
コマンドの構⽂では、コマンドの引数は使⽤される順番で表⽰されます。
引数の説明では、必須引数 および省略可能な引数 のセクションがあり、引数はアルファベット順に表⽰されています。各引
数ごとに、構⽂ と説明 の項⽬があります。また、省略可能な引数についてはデフォルト値 があることがあります。

データタイプ
SPL構⽂のデータ型に使⽤される⽤語体系は、次の表で説明されています。

構⽂ データタイプ メモ

trueまたはfalseを使⽤します。他のバリエーションも可能です。たとえば、trueの代わり
に「t」、「T」、「TRUE」、「yes」、または数字の「1」を使⽤できます。falseの代わ
<bool> ブール値
りには、「no」、数字の「0」、そしてtrueのバリエーションと同じようにfalseのバリ
エーションを指定できます。

フィールドの名前。フィールド
<field> 名にワイルドカードを指定する <wc-field>を参照してください。
ことはできません。

<int>または
正または負の値をとる整数。 時には「符号付き」整数と呼ばれることもあります。<unsigned int>を参照してください。
<integer>

<string> ⽂字列 <wc-string>を参照してください。

符号なし整数は正の値でなければなりません。符号なし整数は符号付き整数よりも⼤きな数
<unsigned int> 符号なし整数
になります。

フィールド名または部分名にワ
イルドカード⽂字を使⽤して、
<wc-field> ワイルドカード⽂字としてアスタリスク(*)⽂字を使⽤します。
複数の同様の名前のフィールド
を指定します。

ワイルドカード⽂字を含む⽂字
<wc-string> ワイルドカード⽂字としてアスタリスク(*)⽂字を使⽤します。
列値または部分⽂字列値。

論理演算⼦
論理演算⼦がコマンドの構⽂に含まれるときは、常に⼤⽂字で指定する必要があります。論理演算⼦には以下のものが含ま
れます。

そして
または
NOT
理論演算⼦が評価される順番の詳細とその例は、『サーチ』マニュアルの理論演算⼦を参照してください。

NOT演算⼦の詳細については、『サーチ』マニュアルで「NOTと !=の違い」を参照してください。

BY 句
<by-clause>と<split-by-clause>は同じ引数ではありません。
<by-clause>を使うと、<by-clause>フィールドの⼀意の値ごとに1⾏が返されます。<by-clause>は各⼀意の項⽬を別々
の⾏ に表⽰します。<by-clause>はグループ化するものと考えてください。

7
<split-by-clause>は各⼀意の項⽬を別々の列 に表⽰します。<split-by-clause>は分割するものと考えてください。

ワイルドカード⽂字( * )はBY句では使⽤できません。

f i eldお よ び w i ldc ar d f i eld


構⽂が<field>を含む場合、イベントのフィールド名を指定します。

以下の構⽂を⾒てみましょう。
bin [<bins-options>...] <field> [AS <newfield>]

<field>引数が必要です。[AS <newfield>]引数を使⽤して、フィールドがサーチ結果に別の名前を表⽰するよう指定できます。
引数は省略することができます。

たとえば、フィールドがcategoryIdで、出⼒時にフィールドにCategoryIDと名付けたい場合は、次のように指定します。

categoryId AS CategoryID

<wc-field>引数は、フィールド名を指定するときにワイルドカードが使えることを⽰しています。たとえば、「log」で終わる
⼀連のフィールドがあるとき、そのようなフィールドをすべて取得するときには、*logを指定できます。

ワイルドカード⽂字を値の中央に使⽤する場合、特に句読点のワイルドカードとして使⽤する場合は、結果を予測できない
ことがあります。

関連項⽬
サーチマニュアル:
サーチの詳細
ワイルドカード
フィールド式
引⽤符とエスケープ⽂字

このマニュアルの使⽤⽅法
このマニュアルは、サーチコマンドの構⽂、説明、および使⽤例を探しているユーザーの⽅向けのリファレンスガイドで
す。

クイックリファレンス情報

関数
コマンドのトピック
サーチコマンドの各トピックは、説明、構⽂、例、関連項⽬に分かれています。コマンドのトピックの多くには、使⽤法の
項⽬もあります。

説明
コマンドの⽬的を説明します。コマンドの使⽤⽅法に関する詳細が含まれることもあります。複雑なコマンドについて
は、別途、使⽤⽅法が解説されています。

構⽂
各サーチコマンドの完全な構⽂と引数について解説されています。コマンドの中には、指定できるオプションのある引
数を持つものもあります。この場合、引数に指定できるオプションは、引数の説明に続いて⽰されます。
必須引数
構⽂を表⽰し、必須引数を説明します。

省略可能な引数
構⽂を表⽰し、省略可能な引数を説明します。必要に応じて、デフォルト値も表⽰します。

使⽤法
コマンドの使⽤法についての追加情報が含まれます。


コマンドの使⽤⽅法を⽰す例です。
関連項⽬
関係するコマンドや同様のコマンドへのリンクが含まれています。

8
コマンドの構⽂に関する規則
コマンドの引数は、使⽤される順番で構⽂の中に現れます。
必須の引数と省略できる省略可能な引数が存在しています。これらの引数は、アルファベット順に表⽰されています。各引
数ごとに、構⽂ と説明 の項⽬があります。デフォルト など、引数に関する情報がある場合は、その他の項⽬で解説されてい
ます。
「SPL構⽂の理解」を参照してください。

フォーマットに関する規則

斜体

Splunkのドキュメントで別のマニュアルが⾔及される場合、こうしたマニュアルの名前は斜体で表記されています。

9
クイックリファレンス
S pl u nkクイックリファレンスガイド
Splunkクイックリファレンスガイドは6ページのリファレンスカードです。サーチの概念、コマンド、関数と例が記載されて
います。ガイドはオンラインのPDF版で提供されています。
注意 :パイプ演算⼦の前にサーチがあることを⽰すため、クイックリファレンスの例では先頭に省略記号(...)が使⽤されてい
ます。先頭のパイプは、サーチコマンドが⽣成コマンドで、コマンドラインインターフェイスやSplunk Webが、サーチの前
にsearchコマンドを付けることを防⽌します。

関連項⽬
カテゴリ別サーチコマンド

Splunk A ns w er s
このサーチ⾔語リファレンスで探しているものが⾒つからない場合は、Splunk Answersをチェックして、Splunkユーザー
がサーチ⾔語についてどのような質問と回答をしているかを確認してください。

コマンドクイックリファレンス
以下のテーブルは、アルファベット順のサーチコマンド⼀覧です。コマンドの簡単な説明と関連コマンドへのリンクが含ま
れます。完全な構⽂、使⽤例および詳細な事例については、コマンド名をクリックし、各コマンドのトピックを開きます。
⼀部のコマンドは、同じ関数を使⽤します。説明と例を含めた関数の⼀覧については、評価関数と統計およびグラフ関数を
参照してください。
テーブルにないコマンドは、サードパーティAppまたはアドオンのコマンドである可能性があります。Appやアドオンのコ
マンドについては、Splunkbaseのドキュメントを参照してください。

コマンド 説明 関連コマンド
abstract 各サーチ結果のサマリーを⽣成します。 highlight

accum
指定された数値フィールドの現在までの合計値 autoregress, delta, trendline, streamstats
を保持します。

addcoltotals
以前のイベントのすべての数値フィールドの合 addtotals, stats
計を含むイベントを算出します。

addinfo
現在のサーチについて、共通の情報を含む search
フィールドを追加します。

addtotals 各結果のすべての数値フィールドの合計を算出 addcoltotals、stats


します。

analyzefields
他の離散型フィールドを予測できるかどうか、 anomalousvalue
数値フィールドを分析します。

anomalies イベントの「unexpectedness」(意外さ)スコ anomalousvalue、cluster、kmeans、outlier


アを算出します。

anomalousvalue 不正な、または異常なサーチ結果を探します。 analyzefields、anomalies、cluster、kmeans、outlier

各イベントで確率を計算し、極端に低い確率を
anomalydetection 検知することで、異常なイベントを特定しま analyzefields、anomalies、anomalousvalue、cluster、kmeans、outlier
す。

append サブサーチの結果を現在の結果に追加します。 appendcols、appendcsv、appendlookup、join、set

サブサーチの結果フィールドを現在の結果に追
appendcols 加します(最初の結果を最初の結果に、2番⽬の append、appendcsv、join、set
結果を2番⽬の結果に、以降同様)。

appendpipe
現在の結果セットに適⽤した、サブパイプライ append、appendcols、join、set
ンの結果を追加します。

arules フィールド値間の相関ルールを検索します。 associate、correlate

associate フィールド間の相関関係を識別します。 correlate、contingency

audit
ローカル監査インデックスに保管されている、

10
audit
監査証跡情報を返します。

autoregress
移動平均を計算するためにデータを設定しま accum、autoregress、delta、trendline、streamstats
す。

bin (バケツ) 連続した数値を離散集合に配置します。 chart、timechart

フィールド値を上位レベルのグループに置換し
bucketdir ます(ファイル名をディレクトリで置換するな cluster、dedup
ど)。

グラフ化するために、結果を表形式で出⼒しま
chart す。「統計・グラフ関数」も参照してくださ binsichart、timechart
い。

cluster 類似イベントをクラスター化します。 anomalies、anomalousvalue、cluster、kmeans、outlier

cofilter
field1とfield2の値が⼀緒に発⽣する回数を求め associate、correlate
ます。

collect
サーチ結果をサマリーインデックスに保管しま overlap
す。

期間(duration)フィールドを使って、各イベント
concurrency の同時(concurrent)イベント数をサーチしま timechart
す。

contingency 2つのフィールドの分割表を作成します。 associate、correlate

convert フィールド値を数値に変換します。 eval

correlate 異なるフィールドの相関関係を算出します。 associate、contingency

データモデルまたはデータモデルデータセット
datamodel を調査し、データモデルデータセットをサーチ pivot
します。

dbinspect
指定したインデックスに関する情報を返しま
す。

dedup 指定した基準に⼀致する後続の結果を削除しま uniq


す。

delete 特定のイベントまたはサーチ結果を削除しま
す。

delta
隣接する結果間でフィールド値の差異を算出し accum、autoregress、trendline、streamstats
ます。

diff 2つのサーチ結果の差異を返します。

類似の値を持つフィールドを⾃動抽出するため
erex の、例またはカウンター例の値を指定できま extract、kvform、multikv、regex、rex、xmlkv
す。

eval
式を計算して、値をフィールドに保管します。 where
「評価関数」も参照してください。

eventcount インデックス内のイベント数を返します。 dbinspect

eventstats すべてのサーチ結果に、サマリー統計情報を追 stats


加します。

extract (kv) サーチ結果から、フィールドと値のペアを抽出 kvform、multikv、xmlkv、rex


します。

fieldformat
出⼒時に値を変更せずにフィールドを表⽰する eval、where
⽅法を指定します。

fields サーチ結果からフィールドを削除します。

fieldsummary すべてのフィールドまたはフィールドのサブ analyzefields、anomalies、anomalousvalue、stats


セットのサマリー情報を⽣成します。

filldown NULL値を最新の⾮NULL値に置き換えます。 fillnull

fillnull NULL値を特定の値に置き換えます。

提案するイベントタイプのリストを⽣成しま
11
findtypes
提案するイベントタイプのリストを⽣成しま typer
す。

folderize 上位レベルのグループを作成します(ファイル名
をディレクトリで置換するなど)。

ワイルドカード指定されたフィールドリスト内
foreach の各フィールドに対して、テンプレート化され eval
たストリーミングサブサーチを実⾏します。

format
サブサーチの複数の結果を⼊⼿し、1つの結果に
まとめます。

モデルデータセット、CSVルックアップ、KVス
from トアールックアップ、保存済みサーチ、または
テーブルデータセットなどのデータセットから
データを取得します。

gauge 結果をゲージグラフでの表⽰に適した形式に変
換します。

gentimes 時間範囲結果を⽣成します。

各イベントにgeomというフィールドを追加しま
geom す。このフィールドには、JSONのポリゴン図 geomfilter
形に使⽤する地理データ構造が含まれ、コロプ
レスマップの可視化に使⽤されます。

2つの座標を使って、コロプレスマップをクリッ
geomfilter ピングする境界ボックスを指定します。境界 geom
ボックスから外れる座標は除外されます。

geostats 世界地図に表⽰する地域ビンにクラスター化さ stats, xyseries


れる統計情報を⽣成します。

head 指定した結果の最初のn件を返します。 reverse, tail

highlight 特定の項⽬を強調表⽰します。 iconify

history
イベントリストまたはテーブル形式でサーチの search
履歴を返します。

iconify 指定したフィールド⼀覧の中のそれぞれ異なる highlight


値に対して、⼀意のアイコンを表⽰します。

inputcsv 指定したCSVファイルから、サーチ結果を読み loadjob, outputcsv


込みます。

inputlookup
指定した静的ルックアップテーブルからサーチ inputcsv、join、lookup、outputlookup
結果を読み込みます。

iplocation IPアドレスから場所情報を抽出します。

join サブサーチの結果をメインサーチの結果に組み appendcols, lookup, selfjoin


合わせます。

kmeans 選択フィールドに対して、K-Meansクラスタリ anomalies, anomalousvalue, cluster, outlier


ングを実施します。

kvform
フォームテンプレートを使ってサーチ結果から extract, kvform, multikv, xmlkv, rex
値を取得します。

loadjob 前に完了したサーチジョブのイベントまたは結 inputcsv


果を読み込みます。

localize サーチ結果が⾒つかった時間範囲のリストを返 map, transaction


します。

後続のコマンド(このコマンドに続くすべてのコ
localop マンド)を、リモートピアー上ではなくローカル
で実⾏します。

lookup 明⽰的にフィールド値のルックアップを起動し
ます。

makecontinuous フィールドをX軸連続にします(グラフ/時間グラ chart, timechart


フが開始)。

makemv
サーチ時に、指定フィールドを複数値フィール mvcombine, mvexpand, nomv
ドに変更します。
12
makeresults 指定された数の空のサーチ結果を⽣成します。

map ループ演算⼦、各サーチ結果に対してサーチを
実⾏します。

サーチ結果をメトリックスデータに変換し、
mcollect データをサーチヘッド上のメトリックスイン collect、meventcollect
デックスに挿⼊します。

指定したインデックスまたは分散サーチピアー
metadata から、ソース、ソースタイプ、またはホストの dbinspect
リストを返します。

metasearch
論理式内の単語に基づいて、インデックスから metadata、search
イベントのメタデータを取得します。

サーチ結果をメトリックスデータに変換し、
meventcollect データをインデクサー上のメトリックスイン collect、mcollect
デックスに挿⼊します。

指定したメトリックスインデックスで指定した
mpreview フィルターと⼀致するrawメトリックスデータ mcatalog, mstats, msearch
ポイント のプレビューを返します。

msearch mpreviewコマンドのエイリアス。 mcatalog, mstats, mpreview

メトリックスインデックスの測定、
mstats metric_name、およびディメンションフィール stats、tstats
ドの統計を算出します。

テーブルで書式設定された(table-formatted)イ
multikv ベントからフィールド値(field-values)を抽出し
ます。

multisearch
複数のストリーミングサーチ を同時実⾏しま append, join
す。

サーチ結果内で1つのフィールド値が異なってい
mvcombine る複数のイベントを、複数値フィールドを持つ mvexpand, makemv, nomv
単⼀の結果にまとめます。

mvexpand
複数値フィールドの値を、その各値を持つ個別 mvcombine, makemv, nomv
のイベントにデプロイします。

nomv
指定した複数値フィールドを、サーチ時に単⼀ makemv, mvcombine, mvexpand
値フィールドに変更します。

outlier 範囲外の数値を削除します。 anomalies、anomalousvalue、cluster、kmeans

outputcsv サーチ結果を指定したCSVファイルに出⼒しま inputcsv、outputtext


す。

outputlookup
サーチ結果を、指定した静的ルックアップテー inputlookup, lookup, outputcsv
ブルに書き込みます。

結果のrawテキストフィールド(_raw)
outputtext outputcsv
を_xmlフィールドに出⼒します。

overlap
サマリーインデックス内で、時間が重なる、ま collect
たは⾒逃したイベントをサーチします。

pivot
特定のデータモデルデータセットに対して、ピ datamodel
ボットサーチを実⾏します。

predict 時系列アルゴリズムを使って、フィールドの将 x11


来の値を予測します。

rangemap RANGEフィールドに、⼀致する範囲名を設定し
ます。

rare フィールドの⼀番少ない値を表⽰します。 sirare, stats, top

redistribute
並列縮約サーチプロセスを実装して、⾼濃度
データセットのサーチ実⾏時間を短縮します。

regex 指定した正規表現に⼀致しない結果を削除しま rex、search


す。

relevancy イベントとクエリーの⼀致度を計算します。
13
「now」と「_time」間の差をユーザーが認識で
reltime きる値に変換し、その値をサーチ結果のreltime convert
フィールドに追加します。

指定フィールドの名前を変更します(ワイルド
rename カードを使って複数のフィールドを指定できま
す)。

replace 指定フィールドの値を、指定値に置換します。

サーチ⽂字列で先⾏するクエリやコマンドから
require イベントや結果が何も返されなかった場合は、
サーチは失敗します。

rest RESTエンドポイントにアクセスして、返された
エンティティをサーチ結果として表⽰します。

return サブサーチから返す値を指定します。 format, search

reverse 結果の並び順を逆にします。 head, sort, tail

rex 「groups」という名前のPerl正規表現を指定 extract, kvform, multikv, xmlkv, regex


し、サーチ時にフィールドを抽出します。

リアルタイムサーチからイベントをバッファー
rtorder に格納して、可能な時にそれらを時間の昇順に
⽣成します。

savedsearch 保存済みサーチのサーチ結果を返します。

script (実⾏) サーチの⼀環として外部PerlまたはPythonスク


リプトを実⾏します。

scrub サーチ結果を匿名化します。

search インデックスから、⼀致するイベントを検索し
ます。

searchtxn
指定したサーチ制約内のトランザクションイベ transaction
ントを検索します。

selfjoin 結果を⾃⾝と結合します。 join

sendemail サーチ結果を指定したメールアドレスに送信し
ます。

set サブサーチで⼀連の操作(union、diff、 append, appendcols, join, diff


intersect)を実⾏します。

setfields
すべての結果のフィールド値を共通値に設定し eval, fillnull, rename
ます。

sichart サマリーインデックス版のchartコマンド。 chart, sitimechart, timechart

sirare サマリーインデックス版のrareコマンド。 rare

sistats サマリーインデックス版のstatsコマンド。 stats

sitimechart サマリーインデックス版のtimechartコマンド。 chart, sichart, timechart

sitop サマリーインデックス版のtopコマンド。 top

sort サーチ結果を指定フィールドで並べ替えます。 reverse

構造化データフォーマットXMLおよびJSONか
spath らフィールドを抽出するための、直接的な⼿段 xpath
を提供します。

統計情報を提供します。必要に応じてフィール
stats ド別にグループ化します。「統計・グラフ関 eventstats, top, rare
数」も参照してください。

strcat ⽂字列値を連結します。

streamstats ストリーミングを利⽤して、サマリー統計情報 eventstats, stats


をすべてのサーチ結果に追加します。

指定フィールドを使ってテーブルを作成しま
14
table 指定フィールドを使ってテーブルを作成しま fields
す。

tags
サーチ結果の指定フィールドに、タグを使って eval
注釈を付けます。

tail 指定した結果の最後のn件を返します。 head, reverse

時系列グラフと対応する統計情報テーブルを作
timechart 成します。「統計・グラフ関数」も参照してく chart, bucket
ださい。

タイムチャートコマンドの出⼒を全て
timewrap のtimewrap-span時間範囲が異なるシリーズに timechart
なるように表⽰またはラップします。

top フィールドで⼀番多い値を表⽰します。 rare, stats

transaction
各結果をトランザクションにグループ化しま
す。

transpose サーチ結果の⾏を列として再フォーマットしま
す。

trendline フィールドの移動平均を算出します。 timechart

tscollect 後ほどtstatsコマンドで使⽤するために、結果を collect, stats, tstats


tsidxファイルに書き込みます。

tstats
tscollectコマンドで作成されたtsidxファイルの stats, tscollect
統計情報を算出します。

typeahead
指定されたプレフィックスの先⾏⼊⼒情報を返
します。

typelearner 提案するイベントタイプを⽣成します。 typer

typer サーチ結果のeventtypeを算出します。 typelearner

union 2つかそれ以上のデータセットからの結果を1つ
のデータセットに統合します。

uniq
前の結果と完全に重複する任意のサーチを削除 dedup
します。

結果を、表形式からstats出⼒に似た形式に変換
untable します。xyseriesおよびmaketableと逆の処理
を⾏います。

イベントインデックスの各バケツから⽤語やイ
walklex ンデックス済みフィールドのリストを⽣成しま metadata、tstats
す。

where
データに任意のフィルタリングを実⾏します。 eval
「評価関数」も参照してください。

x11 季節パターンを削除して、データの傾向を判断 predict


できます。

xmlkv XMLキーと値のペアを抽出します。 extract, kvform, multikv, rex

xmlunescape XMLのエスケープを解除します。

xpath XMLパスを再定義します。

xyseries 結果をグラフ化に適した形式に変換します。

カテゴリ別のコマンド
以下の表にサーチコマンドを使⽤カテゴリ別に⽰します。⼀部のコマンドは、指定するオプションによって、複数のカテゴ
リに該当することもあります。

相関
これらのコマンドは、相関サーチの作成に使⽤できます。

15
コマンド 説明
append サブサーチの結果を現在の結果に追加します。

appendcols サブサーチの結果フィールドを現在の結果に追加します(最初の結果を最初の結果に、2番⽬の結果を2番⽬の結
果に、以降同様)。

appendpipe 現在の結果セットに適⽤した、サブパイプラインの結果を追加します。

arules フィールド値間の相関ルールを検索します。

associate フィールド間の相関関係を識別します。

contingency, counttable,
2つのフィールドの分割表を作成します。
ctable

correlate 異なるフィールドの相関関係を算出します。

diff 2つのサーチ結果の差異を返します。

join メイン結果パイプラインの結果をサブサーチの結果に組み合わせます。

lookup 明⽰的にフィールド値のルックアップを起動します。

selfjoin 結果を⾃⾝と結合します。

set サブサーチで⼀連の操作(union、diff、intersect)を実⾏します。

stats 統計情報を提供します。必要に応じてフィールド別にグループ化します。「統計およびグラフ関数」を参照して
ください。

transaction 各結果をトランザクションにグループ化します。

⽇付とインデックス
これらのコマンドは、データの詳細の学習、データソースの追加と削除、サマリーインデックス内のデータの管理に使⽤で
きます。

データの表⽰

これらのコマンドは、インデックス内のデータに関する情報を返します。データやインデックスが変更されることはありま
せん。

コマンド 説明
audit ローカル監査インデックスに保管されている、監査証跡情報を返します。

datamodel データモデルまたはデータモデルオブジェクトに関する情報を返します。

dbinspect 指定したインデックスに関する情報を返します。

eventcount インデックス内のイベント数を返します。

metadata
指定したインデックスまたは分散サーチピアーから、ソース、ソースタイプ、またはホストのリストを返しま
す。

typeahead 指定されたプレフィックスの先⾏⼊⼒情報を返します。

データの管理

インデックスにデータソースを追加する、またはインデックスから特定のデータを削除するために使⽤できるコマンドで
す。

コマンド 説明
delete 特定のイベントまたはサーチ結果を削除します。

input ソースの追加または無効化。

サマリーインデックスの管理

16
これらのコマンドは、サマリーインデックスの作成と管理に使⽤されます。

コマンド 説明
collect, stash サーチ結果をサマリーインデックスに保管します。

overlap サマリーインデックス内で、時間が重なる、または⾒逃したイベントをサーチします。

sichart サマリーインデックス版のchart。サマリーインデックスに対して、後ほどchartサーチを実⾏するために必要な
情報を算出します。

sirare サマリーインデックス版のrare。サマリーインデックスに対して、後ほどrareサーチを実⾏するために必要な情
報を算出します。

sistats
サマリーインデックス版のstats。サマリーインデックスに対して、後ほどstatsサーチを実⾏するために必要な情
報を算出します。

sitimechart サマリーインデックス版のtimechart。サマリーインデックスに対して、後ほどtimechartサーチを実⾏するため
に必要な情報を算出します。

sitop サマリーインデックス版のtop。サマリーインデックスに対して、後ほどtopサーチを実⾏するために必要な情報
を算出します。

フィールド
フィールドまたはフィールド値の追加、抽出、および変更に使⽤できるコマンドです。フィールド操作に最も役⽴つコマン
ドは、evalとその統計およびグラフ関数です。

フィールドの追加

新しいフィールドを追加するには、これらのコマンドを使⽤します。

コマンド 説明
accum 指定された数値フィールドの現在までの合計値を保持します。

addinfo 現在のサーチについて、共通の情報を含むフィールドを追加します。

addtotals 各結果のすべての数値フィールドの合計を算出します。

delta 隣接する結果間でフィールド値の差異を算出します。

eval 式を計算して、値をフィールドに保管します。「評価関数」も参照してください。

iplocation IPアドレスに基づいて市、国、緯度、経度などの場所情報を追加します。

lookup 設定されたルックアップテーブルに対して、明⽰的にフィールド値ルックアップを開始して、ルックアップテー
ブルからイベントにフィールドを追加します。

multikv テーブルで書式設定された(table-formatted)イベントからフィールド値(field-values)を抽出します。

rangemap RANGEフィールドに、⼀致する範囲名を設定します。

relevancy イベントがクエリーとどれだけ⼀致しているかを⽰す関連フィールドを追加します。

strcat ⽂字列値を連結し、結果を指定フィールドに保存します。

フィールドの抽出

サーチ結果から新しいフィールドを抽出するさまざまな⽅法を提供しています。

コマンド 説明
erex 類似の値を持つフィールドを⾃動抽出するための、例またはカウンター例の値を指定できます。

extract, kv サーチ結果から、フィールドと値のペアを抽出します。

kvform フォームテンプレートを使ってサーチ結果から値を取得します。

rex 「groups」という名前のPerl正規表現を指定し、サーチ時にフィールドを抽出します。

spath 構造化データフォーマットXMLおよびJSONからフィールドを抽出するための、直接的な⼿段を提供します。

17
xmlkv XMLキーと値のペアを抽出します。

フィールドおよびフィールド値の変更

フィールドまたはその値を変更するには、これらのコマンドを使⽤します。

コマンド 説明
convert フィールド値を数値に変換します。

filldown NULL値を最新の⾮NULL値に置き換えます。

fillnull NULL値を特定の値に置き換えます。

makemv サーチ時に、指定フィールドを複数値フィールドに変更します。

nomv 指定した複数値フィールドを、サーチ時に単⼀値フィールドに変更します。

reltime 「now」と「_time」間の差をユーザーが認識できる値に変換し、その値をサーチ結果のreltimeフィールドに追
加します。

rename 指定したフィールドの名前を変更します。複数のフィールド名を指定するには、ワイルドカードを使⽤します。

replace 指定フィールドの値を、指定値に置換します。

異常の検索
データの異常を検索するには、これらのコマンドを使⽤します。⼀般的ではないまたは範囲外のイベントとフィールドの
サーチ、または同様のイベントのクラスター化。

コマンド 説明
analyzefields, af 他の離散型フィールドを予測できるかどうか、数値フィールドを分析します。

anomalies イベントの「unexpectedness」(意外さ)スコアを算出します。

anomalousvalue 不正な、または異常なサーチ結果を探します。

anomalydetection 各イベントで確率を計算し、極端に低い確率を検知することで、異常なイベントを特定します。

cluster 類似イベントをクラスター化します。

kmeans 選択フィールドに対して、K-Meansクラスタリングを実施します。

outlier 範囲外の数値を削除します。

rare フィールドの⼀番少ない値を表⽰します。

地理的場所
これらのコマンドは、サーチ結果に地域情報を追加します。

コマンド 説明
iplocation IPアドレスに基づいて市、国、緯度、経度などの場所情報を返します。

各イベントに「geom」というフィールドを追加します。このフィールドには、JSONのポリゴン図形に使⽤す
geom る地理的データ構造が含まれ、コロプレスマップの可視化に使⽤できます。このコマンドには、インストールさ
れるexternal_type=geoがある外部のルックアップが必要になります。

geomfilter 2つの座標を使って、コロプレスマップをクリッピングする境界ボックスを指定します。境界ボックスから外れ
る座標は除外されます。

geostats 世界地図に表⽰する地域ビンにクラスター化される統計情報を⽣成します。

メトリックス
これらのコマンドはメトリックスデータを処理します。

コマンド 説明
18
mcollect イベントをメトリックスデータポイントに変換し、データポイントをサーチヘッド上のメトリックスインデック
スに挿⼊します。

meventcollect イベントをメトリックスデータポイントに変換して、データポイントをインデクサー層のメトリックスインデッ
クスに挿⼊します。

mpreview, msearch メトリックスインデックスのメトリックス時系列でrawメトリックスデータポイントのサンプルを提供します。


メトリックスデータのトラブルシューティングに役⽴ちます。

メトリックスインデックスのmeasurement、metric_name、およびdimensionフィールドについて、視覚エフェ
mstats
クトに対応する統計を計算します。

予測とトレンド
これらのコマンドは将来の値を予測し、視覚エフェクトの作成に利⽤できるトレンド線を計算します。

コマンド 説明
predict 時系列アルゴリズムを使って、フィールドの将来の値を予測します。

trendline フィールドの移動平均を算出します。

x11 季節パターンを削除して、データの傾向を判断できます。

レポート
これらのコマンドは、変換サーチ の作成に使⽤されます。これらのコマンドは、グラフやその他の視覚エフェクトに必要な
統計データテーブルを返します。

コマンド 説明
addtotals 各結果のすべての数値フィールドの合計を算出します。

autoregress 指定したフィールドに基づいて、イベントの⾃⼰回帰または移動平均の計算準備をします。

bin, discretize 連続した数値を離散集合に配置します。

chart グラフ化するために、結果を表形式で出⼒します。「統計・グラフ関数」も参照してください。

contingency, counttable,
2つのフィールドの分割表を作成します。
ctable

correlate 異なるフィールドの相関関係を算出します。

eventcount インデックス内のイベント数を返します。

eventstats すべてのサーチ結果に、サマリー統計情報を追加します。

gauge 結果をゲージグラフでの表⽰に適した形式に変換します。

makecontinuous フィールドをX軸連続にします(chart/ timechartによって呼び出されます)。

mstats メトリックスインデックスの測定、metric_name、およびディメンションフィールドの統計を算出します。

outlier 範囲外の数値を削除します。

rare フィールドの⼀番少ない値を表⽰します。

stats
統計情報を提供します。必要に応じてフィールド別にグループ化します。「統計・グラフ関数」も参照してくだ
さい。

streamstats ストリーミングを利⽤して、サマリー統計情報をすべてのサーチ結果に追加します。

timechart 時系列グラフと対応する統計情報テーブルを作成します。「統計・グラフ関数」も参照してください。

top フィールドで⼀番多い値を表⽰します。

trendline フィールドの移動平均を算出します。

tstats tsidxファイルのインデックス付きフィールドに対して統計的なクエリーを実⾏します。

19
untable 結果を、表形式からstats出⼒に似た形式に変換します。xyseriesおよびmaketableと逆の処理を⾏います。

xyseries 結果をグラフ化に適した形式に変換します。

結果
これらのコマンドは、サーチ結果の管理に使⽤できます。たとえば、⼀連の結果を他の結果へ追加、結果からのイベントの
フィルタリング、結果の再フォーマットなどの作業を⾏うことができます。

アラート

サーチ結果をメールで送信するには、このコマンドを使⽤します。

コマンド 説明
sendemail サーチ結果をインラインで、または添付ファイルとして、指定した1つ以上のメールアドレスに送信します。

追加

1つの結果セットを、他のセットまたはそれ⾃⾝に追加します。

コマンド 説明
append サブサーチの結果を現在の結果に追加します。

appendcols サブサーチの結果フィールドを現在の結果に追加します(最初の結果を最初の結果に、2番⽬の結果を2番⽬の結
果に、以降同様)。

join メイン結果パイプラインの結果をサブパイプラインの結果と、SQLのように結合します。

selfjoin 結果を⾃⾝と結合します。

フィルタリング

現在の結果からイベントやフィールドを削除する場合に使⽤します。

コマンド 説明
dedup 指定した基準に⼀致する後続の結果を削除します。

fields サーチ結果からフィールドを削除します。

from モデルデータセット、CSVルックアップ、KVストアールックアップ、保存済みサーチ、またはテーブルデータ
セットなどのデータセットからデータを取得します。

mvcombine サーチ結果内で1つのフィールド値が異なっている複数のイベントを、複数値フィールドを持つ単⼀の結果にま
とめます。

regex 指定した正規表現に⼀致しない結果を削除します。

searchtxn 指定したサーチ制約内のトランザクションイベントを検索します。

table 指定フィールドを使ってテーブルを作成します。

uniq 前の結果と完全に重複する任意のサーチを削除します。

where データに任意のフィルタリングを実⾏します。「評価関数」も参照してください。

フォーマット

現在の結果を再フォーマットする場合に使⽤します。

コマンド 説明
eval式を使⽤して、表⽰時に基礎となる値を変更せずにフィールド値の形式を変更します。エクスポートされた
fieldformat
データには適⽤されません。

transpose サーチ結果の⾏を列として再フォーマットします。グラフのX軸とY軸の表⽰に関する問題を修正したり、データ
20
transpose
のセットをシリーズに変換してグラフを⽣成したりするのに便利です。

untable 結果を、表形式からstats出⼒に似た形式に変換します。xyseriesおよびmaketableと逆の処理を⾏います。

xyseries 結果をグラフ化に適した形式に変換します。

⽣成

イベントを⽣成または返す場合に使⽤します。

コマンド 説明
gentimes 時間範囲に⼀致する結果を返します。

loadjob 前に完了したサーチジョブのイベントまたは結果を読み込みます。

makeresults 指定された数の空のサーチ結果を⽣成します。

mvexpand 複数値フィールドの値を、その各値を持つ個別のイベントにデプロイします。

savedsearch 保存済みサーチのサーチ結果を返します。

search インデックスから、⼀致するイベントを検索します。このコマンドは、各サーチパイプラインの先頭に暗黙的に
存在しており、他の⽣成コマンドで開始することはありません。

グループ化

現在の結果をグループ化または分類する場合に使⽤します。

コマンド 説明
cluster 類似イベントをクラスター化します。

kmeans 選択フィールドに対して、K-Meansクラスタリングを実施します。

mvexpand 複数値フィールドの値を、その各値を持つ個別のイベントにデプロイします。

transaction 各結果をトランザクションにグループ化します。

typelearner 提案するイベントタイプを⽣成します。

typer サーチ結果のeventtypeを算出します。

並べ替え

現在のサーチ結果を並べ替える場合に使⽤します。

コマンド 説明
head 指定した結果の最初のn件を返します。

reverse 結果の並び順を逆にします。

sort サーチ結果を指定フィールドで並べ替えます。

tail 指定した結果の最後のn件を返します。

読み込み

外部ファイルまたは前のサーチから結果を読み込む場合に使⽤します。

コマンド 説明
inputcsv 指定したCSVファイルから、サーチ結果を読み込みます。

inputlookup 指定した静的ルックアップテーブルからサーチ結果を読み込みます。

loadjob 前に完了したサーチジョブのイベントまたは結果を読み込みます。

21
書き込み

現在のサーチ結果の出⼒⽅法を定義する場合に使⽤します。

コマンド 説明
collect, stash サーチ結果をサマリーインデックスに保管します。

meventcollect イベントをメトリックスデータポイントに変換して、データポイントをインデクサー層のメトリックスインデッ
クスに挿⼊します。

mcollect イベントをメトリックスデータポイントに変換し、データポイントをサーチヘッド上のメトリックスインデック
スに挿⼊します。

outputcsv サーチ結果を指定したCSVファイルに出⼒します。

outputlookup サーチ結果を、指定した静的ルックアップテーブルに書き込みます。

outputtext 結果のrawテキストフィールド(_raw)を_xmlフィールドに出⼒します。

sendemail サーチ結果をインラインで、または添付ファイルとして、指定した1つ以上のメールアドレスに送信します。

サーチ

コマンド 説明
localop 後続のコマンド(このコマンドに続くすべてのコマンド)を、リモートピアー上ではなくローカルで実⾏します。

map ループ演算⼦、各サーチ結果に対してサーチを実⾏します。

redistribute 並列縮約サーチプロセスを起動して、サポートされているSPLコマンドのサーチ実⾏時間を短縮します。

search インデックスから、⼀致するイベントを検索します。このコマンドは、各サーチパイプラインの先頭に暗黙的に
存在しており、他の⽣成コマンドで開始することはありません。

sendemail サーチ結果をインラインで、または添付ファイルとして、指定した1つ以上のメールアドレスに送信します。

サブサーチ
サブサーチ で使⽤できるコマンドです。

コマンド 説明
append サブサーチの結果を現在の結果に追加します。

appendcols サブサーチの結果フィールドを現在の結果に追加します(最初の結果を最初の結果に、2番⽬の結果を2番⽬の結
果に、以降同様)。

appendpipe 現在の結果セットに適⽤した、サブパイプラインの結果を追加します。

foreach ワイルドカード指定されたフィールドリスト内の各フィールドに対して、テンプレートされたストリーミングサ
ブサーチを実⾏します。

format サブサーチの複数の結果を⼊⼿し、1つの結果にまとめます。

join サブサーチの結果をメインサーチの結果に組み合わせます。

return サブサーチから返す値を指定します。

set サブサーチで⼀連の操作(union、diff、intersect)を実⾏します。

時間
時間範囲に基づいてサーチする、または時間情報をイベントに追加する場合に使⽤します。

コマンド 説明
gentimes 時間範囲に⼀致する結果を返します。

localize サーチ結果が⾒つかった時間範囲のリストを返します。

22
reltime
「now」と「_time」間の差をユーザーが認識できる値に変換し、その値をサーチ結果のreltimeフィールドに追
加します。

コマンドタイプ
すべてのサーチコマンドは、おおまかに6つの種類に分けられます(分散可能ストリーミング、集中ストリーミング、変換、⽣
成、オーケストレーション、およびデータセット処理)。これらのタイプは相互に排他的ではありません。コマンドには、ス
トリーミングコマンド、変換コマンド、そして⽣成コマンドがあります。
以下のテーブルは、これらの各タイプに属するコマンド⼀覧です。各タイプの詳細については、『サーチ』マニュアルのコ
マンドタイプを参照してください。

ストリーミングコマンド
ストリーミングコマンド は、サーチが返した各イベントを処理します。
分散可能ストリーミングコマンドは、サーチおよびコマンドがどこで呼び出されるかに応じて、インデクサーまたは
サーチヘッド上で実⾏されます。分散可能ストリーミングコマンドは、インデックスデータのサブセットに並列的に適
⽤できます。
集中ストリーミングコマンドは、サーチが返した各イベントに変換を適⽤します。集中ストリーミングコマンドと違
い、集中ストリーミングコマンドはサーチヘッド上のみで実⾏されます。

コマンド メモ
addinfo 分散可能ストリーミング

addtotals 分散可能ストリーミング。(⾏の合計ではなく)列の合計の計算に使⽤される場合は変換コマンド。

anomalydetection

append

arules

autoregress 集中ストリーミング。

bin span引数を指定してストリーミング。

bucketdir

cluster あるモードでストリーミング。

convert 分散可能ストリーミング。

デフォルトはストリーミングです。sortby引数を使⽤するか、またはkeepevents=trueと指定すると、dedupコマンドはデータ処
dedup
理コマンドとなります。

eval 分散可能ストリーミング。

extract 分散可能ストリーミング。

fieldformat 分散可能ストリーミング。

フィールド 分散可能ストリーミング。

field-listが指定されていない場合は分散可能ストリーミング。field-listが指定されていない場合はデータセット処理コマン
fillnull
ド。

head 集中ストリーミング。

highlight 分散可能ストリーミング。

iconify 分散可能ストリーミング。

iplocation 分散可能ストリーミング。

joinするための⼀連のフィールドが定義されている場合は集中ストリーミング。field-listが指定されていない場合はデータセッ
join
ト処理コマンド。

local=false (デフォルト)が指定されている場合は分散可能ストリーミング。local=trueの場合はオーケストレーションコマン
lookup
ド。

makemv 分散可能ストリーミング。

multikv 分散可能ストリーミング。
23
mvexpand 分散可能ストリーミング。

nomv 分散可能ストリーミング。

rangemap 分散可能ストリーミング。

正規表現 分散可能ストリーミング。

reltime 分散可能ストリーミング。

rename 分散可能ストリーミング。

replace 分散可能ストリーミング。

rex 分散可能ストリーミング。

サーチパイプラインのずっと後で使⽤される場合、分散可能ストリーミング。サーチで最初のコマンドである場合は⽣成コマン
search
ド。

spath 分散可能ストリーミング。

strcat 分散可能ストリーミング。

streamstats 集中ストリーミング。

tags 分散可能ストリーミング。

transaction 集中ストリーミング。

typer 分散可能ストリーミング。

where 分散可能ストリーミング。

untable 分散可能ストリーミング。

xmlkv 分散可能ストリーミング。

xmlunescape

xpath 分散可能ストリーミング。

xyseries grouped=false引数(デフォルト)が指定されている場合は分散可能ストリーミング。そうでなければ変換コマンド。

コマンドの⽣成
⽣成コマンド は、イベントを変換せずに1つ以上のインデックスからイベントまたはレポートを⽣成します。

コマンド メモ
datamodel レポート⽣成サーチ

dbinspect レポート⽣成。

eventcount レポート⽣成。

開始 コマンドが参照するサーチまたはナレッジオブジェクトによりレポート⽣成またはイベント⽣成のいずれかである場合があります。

gentimes イベント⽣成。

inputcsv イベント⽣成(集中)。

inputlookup デフォルトのappend=falseの時に、イベント⽣成(集中)。

loadjob イベント⽣成(集中)。

makeresults レポート⽣成。

レポート⽣成。metadataはすべてのピアーからデータを取得しますが、それ以降に実⾏されるコマンドはサーチヘッド上でのみ実⾏さ
metadata
れます。

metasearch イベント⽣成。

mstats append=trueが指定されている場合以外はレポート⽣成。

multisearch イベント⽣成。

pivot レポート⽣成。

rest
24
デフォルトの、サーチで最初のコマンド発⾏時に、イベント⽣成(分散)。サーチパイプラインの最初以外で使⽤されている場合はスト
search
リーミング(分散可能)コマンド。

searchtxn イベント⽣成。

set イベント⽣成。

tstats prestats=trueの場合はレポート⽣成(分散)。prestats=falseの場合、tstatsはイベント⽣成。

変換コマンド
変換コマンド は、結果をデータテーブルに整理します。このコマンドは、各イベントの指定したセル値を統計⽬的で使⽤で
きる数値に「変換」します。
以前のバージョンのSplunkソフトウェアでは、変換コマンドはレポートコマンドと呼ばれていました。

コマンド メモ
(⾏の合計ではなく)列の合計の計算に使⽤されるときは、変換。⾏の合計(デフォルト)に使⽤されるときは分散可能ストリーミング
addtotals
コマンド。

chart

cofilter

contingency

history

makecontinuous

mvcombine

rare

stats

table

timechart

top

xyseries grouped=trueの場合は変換。grouped=false (デフォルト)の場合はストリーミング(分散可能)コマンド。

オーケストレーションコマンド
オーケストレーションコマンド は、サーチの処理⽅法のいくつかの側⾯を制御します。サーチの最終結果セットに直接の影
響はありません。たとえば、オーケストレーションコマンドをサーチに適⽤し、サーチ全体をより⾼速に完了させるのに役
⽴つサーチ最適化を有効または無効にできます。

コマンド メモ
localop

local=trueの場合にのみオーケストレーションコマンドになります。この場合、lookupコマンドがリモートピアーではなく、サーチ
lookup
ヘッド上で強制的に実⾏されます。local=false (デフォルト)の場合はストリーミング(分散可能)コマンド。

noop

redistribute

require

データセット処理コマンド
データセット処理コマンドは、コマンドの実⾏前にデータセット全体が必要となるコマンドです。これらのコマンドの⼀部
は、特定の状況や特定の引数が使⽤される場合に他のコマンドタイプに分類されます。

コマンド メモ
anomalousvalue ⼀部のモード

anomalydetection ⼀部のモード

25
append ⼀部のモード

bin ⼀部のモード。span引数が指定されている場合はストリーミングコマンド。

cluster ⼀部のモード

concurrency

datamodel

sortby引数を使⽤するか、またはkeepevents=trueと指定すると、dedupコマンドはデータ処理コマンドとなります。そうでなけ
dedup
れば、dedupはストリーミングコマンドです。

eventstats

fieldsummary ⼀部のモード

fillnull ⼀部のモード

開始 ⼀部のモード

join ⼀部のモード

map

outlier

pivot ⼀部のモード

reverse

sort

tail

transaction ⼀部のモード

UNION ⼀部のモード

S QL ユーザー向けのS pl u nk S P L
SQLとSplunkサーチ処理⾔語(SPL)の対応は完全ではありませんが、SQLに慣れている場合は、簡単な⽐較により、容易に
サーチコマンドの最初の理解を進めることができます。

概念
Splunkプラットフォームはデータを従来のデータベースには保存しません。代わりに、暗黙の時間次元 を持つ半構造の分散
型⾮リレーショナルデータベースにデータを保管します。リレーショナルデータベースでは、すべてのテーブル列をあらか
じめ定義しておく必要があり、また新しいハードウェアをつないでも⾃動的に拡張されることはありません。ただし、デー
タベースの世界の多くの概念と類似性があります。

データベースの
Splunkの概念 メモ
概念
SQLクエリー Splunkサーチ Splunkサーチは、インデックス作成されたデータを取得し、変換とレポート作成操作を実⾏します。
サーチ結果はパイプ⽂字を使⽤して、コマンドからコマンドに受け渡し、結果のフィルタリング、変更、
順序変更、グループ化を⾏うことができます。

テーブル/ビュー サーチ結果 サーチ結果は、データベースで動的に⾏と列が⽣成されるテーブルのビューと考えることができます。

インデックス インデックス Splunkソフトウェアでは、すべての値とフィールドのインデックスが作成されます。⼿動で追加、更


新、破棄する必要はありません。インデックス列を考慮する必要もありません。すべてを素早く⾃動的に
取得することができます。

⾏ 結果/イベント Splunkサーチの結果は、テーブルの⼀⾏に相当する、フィールド(または列)の値のリストです。イベント
は、タイムスタンプとrawテキストを持つ結果になります。⼀般的にイベントは、以下のようなログファ
イルからのレコードになります。
173.26.34.223 - - [01/Jul/2009:12:05:27 -0700] "GET /trade/app?action=logout HTTP/1.1"
200 2953

column (列) field フィールドは、サーチによって動的に返されます。返される⼀連のフィールドはサーチごとに異なってい


る場合があります。Splunkソフトウェアに、rawデータからより多くのフィールドを抽出する⽅法を教⽰
した後同じサーチを実⾏すると、前回よりも多くのフィールドが返されます。フィールドは、データ型と

26
は関連付けられていません。

データベース/ス インデックス/App データベースがテーブルの集合から構成されているように、Splunkインデックスはデータの集合体で


キーマ す。そのデータの詳細な知識、抽出⽅法、実⾏するレポートなどが、Splunkのアプリケーションに保管
されています。

SQ L か ら Splunk SP L へ
SQLは、列 で構成されるリレーショナルデータベーステーブルをサーチするように設計されています。SPLは、フィール
ド で構成されるイベントをサーチするように設計されています。SQLでは、「mytable」や「mycolumn」を使⽤する例が
よくあります。SPLでは、「fields」を参照する例があります。そのような例では、「source」フィールドが「table」のプ
ロキシとして使⽤されます。Splunkソフトウェアで「source(ソース)」とは、ファイル、ストリーム、または特定のデータ
の元となる他の⼊⼒を表します(例:/var/log/messagesまたはUDP:514)。

ある⾔語を他の⾔語に変換する場合、元の⾔語には独特の⽤語が含まれているため変換作業には時間がかかります。以下の
サーチ例はもっと簡潔にすることもできますが、並列性と明確性のために、SPLテーブルとフィールド名はSQLの例と同じま
まにしています。
SPLサーチの場合、ユーザーインターフェイスにフィルタリングのより⼿軽な⼿段が⽤意されているため、FIELDSコ
マンドを使って列をフィルタリングする必要はほとんどありません。FIELDSコマンドは、並列性のためにSPLの例で
使⽤されます。
SPLでは、論理演算サーチの単語間にAND演算⼦が暗黙的に指定されているため、ANDを使⽤する必要はありませ
ん。ただし、ANDまたはOR演算⼦を使⽤する場合は、⼤⽂字で指定する必要があります。
SPLコマンドは、⼤⽂字で指定する必要はありません。以下のSPLの例では、分かりやすくするためにコマンドが⼤⽂
字で指定されています。

SQLコマンド SQLの例 Splunk SPLの例


SELECT *
SELECT * source=mytable

FROM mytable

WHERE
SELECT * source=mytable mycolumn=5
FROM mytable
WHERE mycolumn=5

SELECT
SELECT mycolumn1, mycolumn2 source=mytable
FROM mytable | FIELDS mycolumn1, mycolumn2

AND/OR
SELECT * source=mytable
FROM mytable AND (mycolumn1="true"
WHERE (mycolumn1="true" OR mycolumn2="red")
OR mycolumn2="red") AND mycolumn3="blue"
AND mycolumn3="blue"
注意: SPLでは、AND演算⼦は暗黙的に指定されている
ため、指定する必要はありません。この例では、以下を使
⽤することもできます。

source=mytable
(mycolumn1="true"
OR mycolumn2="red")
mycolumn3="blue"

AS (エイリアス)
SELECT mycolumn AS column_alias source=mytable
FROM mytable | RENAME mycolumn as column_alias
| FIELDS column_alias

BETWEEN
SELECT * source=mytable
FROM mytable mycolumn>=1 mycolumn<=5
WHERE mycolumn
BETWEEN 1 AND 5

GROUP BY
SELECT mycolumn, avg(mycolumn) source=mytable mycolumn=value
FROM mytable | STATS avg(mycolumn) BY mycolumn
WHERE mycolumn=value | FIELDS mycolumn, avg(mycolumn)
GROUP BY mycolumn
いくつかのコマンドはby-clauseを使⽤して情報をグルー
プ化し、これにはchart、rare、sort、stats、そして
timechartが含まれます。

27
HAVING
SELECT mycolumn, avg(mycolumn) source=mytable mycolumn=value
FROM mytable | STATS avg(mycolumn) BY mycolumn
WHERE mycolumn=value | SEARCH avg(mycolumn)=value
GROUP BY mycolumn | FIELDS mycolumn, avg(mycolumn)
HAVING avg(mycolumn)=value

LIKE
SELECT * source=mytable
FROM mytable mycolumn="*some text*"
WHERE mycolumn LIKE "%some text%"
注意 :Splunk SPLで最も⼀般的に使⽤されているサーチ
(すべてのフィールドに対して⼀部の⽂字列をサーチする)
は、SQLではほとんど不可能です。以下のSPLサーチで
は、どこかに「some text」を含むすべての⾏が返されま
す。

source=mytable "some text"

ORDER BY
SELECT * source=mytable
FROM mytable | SORT -mycolumn
ORDER BY mycolumn desc
SPLでは、降順でソートするフィールド名の前にマイナス
記号( - )を使⽤します。

SELECT DISTINCT
SELECT DISTINCT source=mytable
mycolumn1, mycolumn2 | DEDUP mycolumn1
FROM mytable | FIELDS mycolumn1, mycolumn2

SELECT TOP
SELECT TOP(5) Source=mytable1 mycolum3="bar"
mycolum1, | FIELDS mycolum1 mycolum2
mycolum2 | SORT mycolum1 mycolum2
FROM mytable1 | HEAD 5
WHERE mycolum3 = "bar"
ORDER BY mycolum1 mycolum2

INNER JOIN
SELECT * index=myIndex1 OR index=myIndex2
FROM mytable1 | stats values(*) AS * BY myField
INNER JOIN mytable2
ON mytable1.mycolumn= 注意 :テーブルを結合するには、他にも2種類の⽅法があ
mytable2.mycolumn
ります。

lookupコマンドを使って、外部テーブルからフィー
ルドを追加します。

... | LOOKUP myvaluelookup


mycolumn
OUTPUT myoutputcolumn

サブサーチの使⽤:

source=mytable1
[SEARCH source=mytable2
mycolumn2=myvalue
| FIELDS mycolumn2]

結合したい列の名前が異なっている場合は、renameコマン
ドでどちらかの列名を変更してください。たとえば、
mytable2の列名を変更する場合は次のように⼊⼒します。

source=mytable1
| JOIN type=inner mycolumn
[ SEARCH source=mytable2
| RENAME mycolumn2
AS mycolumn]

myindex1の列名を変更する場合は次のように⼊⼒しま
す。

index=myIndex1 OR index=myIndex2
| rename myfield1 as myField
| stats values(*) AS * BY myField

サーチコマンド、ルックアップ、またはサブサーチのいず
28
サーチコマンド、ルックアップ、またはサブサーチのいず
れを使⽤する場合でも列名を変更できます。

LEFT (OUTER) JOIN


SELECT * source=mytable1
FROM mytable1 | JOIN type=left mycolumn
LEFT JOIN mytable2 [SEARCH source=mytable2]
ON mytable1.mycolumn=
mytable2.mycolumn

SELECT INTO
SELECT * source=old_mytable
INTO new_mytable IN mydb2 | EVAL source=new_mytable
FROM old_mytable | COLLECT index=mydb2

注意 :⼀般的にCOLLECTは、コストが⾼い計算で算出さ
れたフィールドをSplunk導⼊環境に保管するために⽤いら
れます。そうすることにより、それ以降のアクセスが⾼速
になります。この現在の例は特殊なものですが、SQLのコ
マンドと⽐較するために記載しています。ソースの名前は
orig_sourceに変更されます。

TRUNCATE TABLE
TRUNCATE TABLE mytable source=mytable
| DELETE

INSERT INTO 注意 :SELECT INTOも参照してください。サーチ⾔語で


INSERT INTO mytable 個別のレコードは追加されませんが、必要に応じてAPIを
VALUES (value1, value2, value3,....) 使って追加することができます。

UNION
SELECT mycolumn source=mytable1
FROM mytable1 | APPEND
UNION [SEARCH source=mytable2]
SELECT mycolumn FROM mytable2 | DEDUP mycolumn

UNION ALL
SELECT * source=mytable1
FROM mytable1 | APPEND
UNION ALL [SEARCH source=mytable2]
SELECT * FROM mytable2

DELETE
DELETE FROM mytable source=mytable1 mycolumn=5
WHERE mycolumn=5 | DELETE

UPDATE 注意 :Splunk Enterpriseでレコードを更新する際には、


UPDATE mytable いくつか考慮しておくことがあります。まず、新しい値を
SET column1=value, Splunk導⼊環境に追加(INSERT INTOを参照)します。
column2=value,... Splunkソフトウェアは常に最新の結果を最初に返すため、
WHERE some_column=some_value 古い値の削除を気にする必要はありません。次に、取得時
には最新の値のみが使われるように、常に結果から重複項
⽬を排除することができます(SELECT DISTINCTを参
照)。最後に、実際に古いレコードを削除できます
(DELETEを参照)。

関連項⽬
SPL構⽂の理解

S P L データタイプおよび句
データタイプ

bool

引数値<bo o l> は、データタイプが論理型であることを表します。ドキュメントでは「true」または「false」と表記されま


す。コマンドでは論理値の他の表記も使⽤できます。たとえば、「true」の代わりに「t」、「T」、「TRUE」または番号の
「1」が使えます。「false」の代わりに「f」、「F」、「FALSE」または番号の「0」が使えます。

int

引数値<int > は、データタイプが整数型であることを表します。

num
29
引数値<num>は、データタイプが番号型であることを表します。

float

引数値<float>は、データタイプが浮動⼩数型であることを表します。

よくある構⽂表現
bin-span

構⽂ :span=(<span-length> | <log-span>)
説明 :各binのサイズを設定する。
例 :span=2d
例 :span=5m
例 :span=10

by-clause

構⽂ :by <field-list>
説明 :グループ化するフィールド。
例 :by addr, port
例 :by host

eval-funct ion

構⽂ :abs | case | cidrmatch | coalesce | exact | exp | floor | if | ifnull | isbool | isint | isnotnull | isnull | isnum |
isstr | len|like | ln|log | lower | match | max | md5 | min | mvcount | mvindex | mvfilter | now | null | nullif | pi | pow
| random | replace | round | searchmatch | sqrt | substr | tostring | trim | ltrim | rtrim | typeof | upper | urldecode
| validate
説明 :evalが使⽤する関数。
例 :md5(field)
例 :typeof(12) + typeof("string") + typeof(1==2) + typeof(badfield)
例 :searchmatch("foo AND bar")
例 :sqrt(9)
例 :round(3.5)
例 :replace(date, "^(\d{1,2})/(\d{1,2})/", "\2/\1/")
例 :pi()
例 :nullif(fielda, fieldb)
例 :random()
例 :pow(x, y)
例 :mvfilter(match(email, "\.net$") OR match(email, "\.org$"))
例 :mvindex(multifield, 2)
例 :null()
例 :now()
例 :isbool(field)
例 :exp(3)
例 :floor(1.9)
例 :coalesce(null(), "Returned value", null())
例 :exact(3.14 * num)
例 :case(error == 404, "Not found", error == 500, "Internal Server Error", error == 200, "OK")
例 :cidrmatch("123.132.32.0/25", ip)
例 :abs(number)
例 :isnotnull(field)
例 :substr("string", 1, 3) + substr("string", -3)
例 :if(error == 200, "OK", "Error")
例 :len(field)
例 :log(number, 2)
例 :lower(username)
例 :match(field, "^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$")
例 :max(1, 3, 6, 7, "f"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$")oo", field)
例 :like(field, "foo%")
例 :ln(bytes)
例 :mvcount(multifield)
例 :urldecode("http%3A%2F%2Fwww.splunk.com%2Fdownload%3Fr%3Dheader")
例 :validate(isint(port), "ERROR: Port is not an integer", port = 1 AND port = 65535, "ERROR: Port is out of
range")
例 :tostring(1==1) + " " + tostring(15, "hex") + " " + tostring(12345.6789, "commas")
例 :trim(" ZZZZabcZZ ", " Z")

evaled-field

30
構⽂ :eval(<eval-expression>)
説明 :動的に評価されたフィールド。

field

field-list

regex-expression

構⽂ :(\")?<string>(\")?
説明 :PCREライブラリがサポートするPeri互換の正規表現。
例 :... | regex _raw="(?<!\d)10.\d{1,3}\.\d{1,3}\.\d{1,3}(?!\d)"

single-agg

構⽂ :count | stats-func (<field>)


説明 :単⼀フィールド(evaledフィールドの可能性あり)に適⽤される単⼀の集計。ワイルドカードは使⽤できません。
イベントにまとめて適⽤する特別集計⼦「count」を使⽤する場合を除き、フィールドを指定する必要があります。
例 :avg(delay)
例 :sum({date_hour * date_minute})
例 :count

sort -by-clause

構⽂ :("-"|"+")<sort-field> ","
説明 :ソートするフィールドのリストとソートの順(昇順または降順)
例 :- time, host
例 :-size, +source
例 :_time, -host

span-lengt h

構⽂ :<int:span>(<timescale>)?
説明 :各binのスパン。タイムスケールを使⽤する場合、これは時間範囲として使⽤されます。使⽤しない場合、これ
は絶対バケツ「length」になります。
例 :2d
例 :5m
例 :10

split -by-clause

構⽂ :<field> (<tc-option> )* (<where-clause>)?


説明 :分割するフィールド。数値フィールドの場合、デフォルトの離散化が適⽤されます。

st at s-agg

構⽂ :<stats-func>( "(" ( <evaled-field> | <wc-field> )? ")" )?


説明 :1つ以上のフィールドに適⽤する集計関数で構成された指定⼦。4.0では、任意の評価式に適⽤する集計関数も該
当します。eval評価式は、「{」と「}」で囲む必要があります。括弧内に式を指定しない場合、集計は個別にすべての
フィールドに対して適⽤されます。フィールド値「*」での呼び出しと同等の処理が⾏われます。数値集計⼦を不完全数
値フィールドに適⽤した場合、その集計で列が⽣成されることはありません。
例 :count({sourcetype="splunkd"})
例 :max(size)
例 :stdev(*delay)
例 :avg(kbps)

st at s-agg-t erm

構⽂ :<stats-agg> (as <wc-field>)?


説明 :必要に応じて新しいフィールド名に名前を変更できる統計指定⼦。
例 :count(device) AS numdevices
例 :avg(kbps)

subsearch

構⽂ :[<string>]
説明 :サブサーチの指定。
例 :[search 404 | select url]

31
t c-opt ion

構⽂ :<bins-options> | (usenull=<bool>) | (useother=<bool>) | (nullstr=<string>) |(otherstr=<string>)


説明 :フィールドによる分割の⽅法を指定するオプション。bins-optionsの他にもusenullは、split-byフィールドが存
在しないイベントに対して、シリーズを作成するかどうかを⽰します。このシリーズには、nullstrオプションの値でラ
ベルが付けられます。デフォルトはNULLです。useotherは、<where-clause>の基準を満たさないためグラフに含ま
れていないデータシリーズに対して、シリーズを追加するかどうかを⽰します。このシリーズには、otherstrオプショ
ンの値でラベルが付けられます。デフォルトはOTHERです。
例 :otherstr=OTHERFIELDS
例 :usenull=f
例 :bins=10

t im eform at

構⽂ :timeformat=<string>
説明 :starttime、endtimeのフォーマットを指定します。
例 :timeformat=%m/%d/%Y:%H:%M:%S

タイムスタンプ

構⽂ :(MM/DD/YY)?:(HH:MM:SS)?|<int>
説明 :なし
例 :10/1/07:12:34:56
例 :-5

where-clause

構⽂ :where <single-agg> <where-comp>


説明 :tc-by-clauseにフィールドが指定されている場合に、特定のデータシリーズを含めるかどうかの基準を指定しま
す。この句(省略可能)を省略した場合、デフォルトの「where sum in top10」が使⽤されます。集計単語は各データシ
リーズに適⽤され、これらの集計結果は基準と⽐較されます。⼀般的にこのオプションは、シリーズ内の質量分布を選
択するのではなく、スパイクを選択するために⽤いられます。デフォルトでは、濃度曲線下⾯積別上位10件のシリーズ
を探します。代わりに、sumをmaxに変更して、⾼さが上位10件のスパイクを持つシリーズを探すことも可能です。
例 :where max < 10
例 :where count notin bottom10
例 :where avg > 100
例 :where sum in top5

wc-field

32
評価関数
評価関数
評価関数を使⽤してイベントに基づいて式を評価し、結果を返します。

クイックリファレンス
評価関数のクイックリファレンスは、「対応している関数と構⽂」を参照してください。

コマンド
評価関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

使⽤法
⽂字列を受け付けるすべての関数は、リテラル⽂字列または任意のフィールドを受け付けることができます。
数値を受け付けるすべての関数は、リテラル数値または任意の数値フィールドを受け付けることができます。

⽂字列引数とフィールド

ほとんどの評価関数では、⽂字列引数が必要な場合は、リテラル⽂字列またはフィールド名を指定できます。リテラル⽂字
列は⼆重引⽤符で囲む必要があります。つまり、関数の構⽂が⽂字列を指定している場合は、⽂字列になる任意の式を指定
できます。たとえば、サーバー名が格納されたnameというフィールドがあるとします。名前の最後にserverというリテラル⽂
字列を追加します。この場合はname + "server"と指定します。

ネスト化関数

ある関数を別の関数の引数として指定できます。
次の例では、cidrmatch関数はif関数の最初の引数として使⽤されます。

... | eval isLocal=if(cidrmatch("123.132.32.0/25",ip), "local", "not local")

次の例ではtrue()関数を使⽤してデフォルトをcase関数に提供する⽅法を⽰しています。

... | eval error=case(status == 200, "OK", status == 404, "Not found", true(), "Other")

対応している関数と構⽂
サポートされている評価関数の情報を表⽰する⽅法は2つあります。
関数のカテゴリ別リスト
関数のアルファベット順リスト

関数のカテゴリ別リスト

以下の表は対応している評価関数のクイックリファレンスです。この表には、各関数の構⽂と簡単な説明が記載されていま
す。詳細および例については「関数の種類」 の列にあるリンク先を参照してください。

関数の種類 対応している関数と構⽂ 説明

case(X,"Y",...) 条件と値を交互に受け⼊れます。条件が最初にTRUEとなった値を返しま
す。

cidrmatch("X",Y) IPアドレスがCIDR表記と⼀致するかどうかによってTRUEまたはFALSE
を返します。

coalesce(X,...)
この関数は任意の数の引数を取得して、NULLではない最初の値を返し
ます。

false() FALSEを返します。

if(X,Y,Z) 条件XがTRUEと評価されればY、そうでなければZ を返します。

この関数は、リストにある1つの値が、指定したフィールドにある値に⼀
33
in(FIELD, VALUE-LIST)
この関数は、リストにある1つの値が、指定したフィールドにある値に⼀
致すると、真を返します。

like(TEXT, PATTERN) TEXTがPATTERNに⼀致すればTRUEを返します。


⽐較関数と条件関数
match(SUBJECT, "REGEX")
正規表現がSUBJECTに⼀致するかどうかによってTRUEまたはFALSE
を返します。

null() この関数は引数を取らず、NULLを返します。

この関数は、フィールドを⽐較するのに使⽤されます。この関数は2つの
nullif(X,Y) 引数XおよびYをとり、X = Yの場合はNULLを、そうでない場合はXを返
します。

searchmatch(X) この関数を使⽤すると、サーチ⽂字列(X)がイベントと⼀致する場合に
TRUEを返すことができます。

true() TRUEを返します。

この関数を使⽤すると、最初にFALSEに評価された式Xに対応する⽂字
validate(X,Y,...)
列Yを返すことができます。この関数は、case関数の反対です。

printf("format",arguments)
指定したフォーマット記述に基づいてフォーマットされた⽂字列を作成
します。

変換関数 tonumber(NUMSTR,BASE) ⽂字列を数字に変換します。

tostring(X,Y) 数字や論理値などの⼊⼒を⽂字列に変換します。

md5(X) 値Xのmd5ハッシュを計算します。

sha1(X) 値Xのsha1ハッシュを計算します。
暗号化関数
sha256(X) 値Xのsha256ハッシュを計算します。

sha512(X) 値Xのsha512ハッシュを計算します。

now() サーチが開始された時刻を返します。

relative_time(X,Y) 相対時間指定⼦で時刻を調整します。

strftime(X,Y) UNIX時刻を⼈間が読めるフォーマットに変換します。
⽇付と時間の関数
strptime(X,Y) ⼈間が読める時刻をUNIX時刻に変換します。

time() eval関数が計算された時刻です。時刻は、イベントが処理されたタイミン
グによって異なります。

isbool(X) フィールド値が論理値であればTRUEを返します。

isint(X) フィールド値が整数であればTRUEを返します。

isnotnull(X) フィールド値がNULLでなければTRUEを返します。

isnull(X) フィールド値がNULLであればTRUEを返します。
情報関数
isnum(X) フィールド値が数字であればTRUEを返します。

isstr(X) フィールド値が⽂字列であればTRUEを返します。

typeof(X)
フィールドタイプを⽰す⽂字列(Number、String、Boolean等)を返しま
す。

abs(X) 絶対値を返します。

ceiling(X)またはceil(X) 現在値よりも⼩さい、最も近い整数に丸めます。

exact(X) 数値eval計算を⼤きな精度で書式設定された出⼒を返します。

exp(X) 指数関数eXを返します。

floor(X) 現在値よりも⼤きい、最も近い整数に丸めます。

34
ln(X) ⾃然対数を返します。

数学関数 Yを底としたXの対数を返します。Yを省略すると基数10が使⽤されま
log(X,Y)
す。

pi() 定数piを精度11桁で返します。

pow(X,Y) XのY乗(XY)を返します。

round(X,Y) XをYに指定されている⼩数位で丸めた値を返します。デフォルトでは、
整数に丸められます。

sigfig(X) Xを、有効桁数に丸めます。

sqrt(X) 値の平⽅根を返します。

commands(X) Xで使⽤されるコマンドのリストが⼊った複数値フィールドを返します。

mvappend(X,...) 指定されたすべての値に基づいた複数値の結果を返します。

mvcount(MVFIELD) 指定したフィールド内の値の数(カウント)を返します。

mvdedup(X) 複数値フィールドから重複する値をすべて削除します。

mvfilter(X) 任意の論理式Xに基づいて複数値フィールドをフィルタリングします。

mvfind(MVFIELD,"REGEX") 複数値フィールドで正規表現と⼀致する値のインデックスを探します。

多値評価関数 mvindex(MVFIELD,STARTINDEX,ENDINDEX)
STARTINDEXおよびENDINDEXで記述される複数値フィールドから値
のセットを返します。

mvjoin(MVFIELD,STR) 複数値フィールドのすべての値を取って、STRで区切って追加します。

mvrange(X,Y,Z) X〜Yの範囲の増分Z の数字で複数値フィールドを作成します。

mvsort(X) 辞書的にソートされた複数値フィールドの値を返します。

2つの複数値フィールドX、Yを取って、Xの最初の値、Yの最初の値、X
mvzip(X,Y,"Z") の2番⽬の値、Yの2番⽬の値の順序で、両⽅のフィールドを連結させま
す。

split(X,"Y") XをYで区切った複数値フィールドを返します。

max(X,...) 最⼤の⽂字列または数値を返します。

統計的評価関数 min(X,...) 最⼩の⽂字列または数値を返します。

random() 0から231-1までの整数の疑似乱数を返します。

len(X) ⽂字列の(バイト数ではなく)⽂字数のカウントを返します。

lower(X) ⽂字列を⼩⽂字に変換します。

ltrim(X,Y) Yで表された⽂字を⽂字列の左側から切り取ります。

replace(X,Y,Z)
⽂字列Xにおける正規表現⽂字列Yとのすべての⼀致を⽂字列Z で置き換
えた結果の⽂字列を返します。

rtrim(X,Y) Yの⽂字を右側から切り取ったXを返します。
テキスト関数
spath(X,Y)
Yの場所パスに基づいて、Xの構造化データタイプ(XMLまたはJSON)か
ら値を抽出します。

substr(X,Y,Z) 開始位置Yと⻑さZ に基づいて、Xの⼀部の⽂字列を返します。

trim(X,Y) Yで表された⽂字を⽂字列の両側から切り取ります。

upper(X) ⽂字列を⼤⽂字で返します。

urldecode(X) URLのエスケープ⽂字を元の⽂字に置き換えます。

acos(X) Xの逆余弦を計算します。

35
acosh(X) Xの逆双曲線余弦を計算します。

asin(X) Xの逆正弦を計算します。

asinh(X) Xの逆双曲線正弦を計算します。

atan(X) Xの逆正接を計算します。

atan2(X,Y) X、Yの逆正接を計算します。

atanh(X) Xの逆双曲線正接を計算します。
三⾓関数と双曲線関数
cos(X) Xの余弦をラジアン単位で計算します。

cosh(X) Xの逆双曲線余弦をラジアン単位で計算します。

hypot(X,Y) 三⾓形の斜辺を計算します。

sin(X) Xの正弦を計算します。

sinh(X) Xの双曲線正弦を計算します。

tan(X) Xの正接を計算します。

tanh(X) Xの双曲線正接を計算します。

関数のアルファベット順リスト

対応している関数と構⽂ 説明 関数の種類
abs(X) 絶対値を返します。 数学関数

acos(X) Xの逆余弦を計算します。 三⾓関数と双曲線関数

acosh(X) Xの逆双曲線余弦を計算します。 三⾓関数と双曲線関数

asin(X) Xの逆正弦を計算します。 三⾓関数と双曲線関数

asinh(X) Xの逆双曲線正弦を計算します。 三⾓関数と双曲線関数

atan(X) Xの逆正接を計算します。 三⾓関数と双曲線関数

atan2(X,Y) X、Yの逆正接を計算します。 三⾓関数と双曲線関数

atanh(X) Xの逆双曲線正接を計算します。 三⾓関数と双曲線関数

case(X,"Y",...)
条件と値を交互に受け⼊れます。条件が最初にTRUEとなった値
⽐較関数と条件関数
を返します。

cidrmatch("X",Y) IPアドレスがCIDR表記と⼀致するかどうかによってTRUEまたは
⽐較関数と条件関数
FALSEを返します。

ceiling(X) 現在値よりも⼩さい、最も近い整数に丸めます。 数学関数

coalesce(X,...)
この関数は任意の数の引数を取得して、NULLではない最初の値
⽐較関数と条件関数
を返します。

commands(X) Xで使⽤されるコマンドのリストが⼊った複数値フィールドを返
多値評価関数
します。

cos(X) Xの余弦をラジアン単位で計算します。 三⾓関数と双曲線関数

cosh(X) Xの逆双曲線余弦をラジアン単位で計算します。 三⾓関数と双曲線関数

exact(X) 数値eval計算を⼤きな精度で書式設定された出⼒を返します。 数学関数

exp(X) 指数関数eXを返します。 数学関数

false() FALSEを返します。 ⽐較関数と条件関数

36
floor(X) 現在値よりも⼤きい、最も近い整数に丸めます。 数学関数

hypot(X,Y) 三⾓形の斜辺を計算します。 三⾓関数と双曲線関数

if(X,Y,Z) 条件XがTRUEと評価されればY、そうでなければZ を返します。 ⽐較関数と条件関数

in(FIELD, VALUE-LIST)
この関数は、リストにある1つの値が、指定したフィールドにあ
⽐較関数と条件関数
る値に⼀致すると、真を返します。

isbool(X) フィールド値が論理値であればTRUEを返します。 情報関数

isint(X) フィールド値が整数であればTRUEを返します。 情報関数

isnotnull(X) フィールド値がNULLでなければTRUEを返します。 情報関数

isnull(X) フィールド値がNULLであればTRUEを返します。 情報関数

isnum(X) フィールド値が数字であればTRUEを返します。 情報関数

isstr(X) フィールド値が⽂字列であればTRUEを返します。 情報関数

len(X) ⽂字列の(バイト数ではなく)⽂字数のカウントを返します。 テキスト関数

like(TEXT, PATTERN) TEXTがPATTERNに⼀致すればTRUEを返します。 ⽐較関数と条件関数

ln(X) ⾃然対数を返します。 数学関数

log(X,Y)
Yを底としたXの対数を返します。Yを省略すると基数10が使⽤さ
数学関数
れます。

lower(X) ⽂字列を⼩⽂字に変換します。 テキスト関数

ltrim(X,Y) Yで表された⽂字を⽂字列の左側から切り取ります。 テキスト関数

match(SUBJECT, "REGEX")
正規表現がSUBJECTに⼀致するかどうかによってTRUEまたは
⽐較関数と条件関数
FALSEを返します。

max(X,...) 最⼤の⽂字列または数値を返します。 統計的評価関数

md5(X) 値Xのmd5ハッシュを計算します。 暗号化関数

min(X,...) 最⼩の⽂字列または数値を返します。 統計的評価関数

mvappend(X,...) 指定されたすべての値に基づいた複数値の結果を返します。 多値評価関数

mvcount(MVFIELD) 指定したフィールド内の値の数(カウント)を返します。 多値評価関数

mvdedup(X) 複数値フィールドから重複する値をすべて削除します。 多値評価関数

mvfilter(X) 任意の論理式Xに基づいて複数値フィールドをフィルタリングし
多値評価関数
ます。

mvfind(MVFIELD,"REGEX") 複数値フィールドで正規表現と⼀致する値のインデックスを探し
多値評価関数
ます。

mvindex(MVFIELD,STARTINDEX,ENDINDEX)
STARTINDEXおよびENDINDEXで記述される複数値フィールド
多値評価関数
から値のセットを返します。

mvjoin(MVFIELD,STR)
複数値フィールドのすべての値を取って、STRで区切って追加し
多値評価関数
ます。

mvrange(X,Y,Z) X〜Yの範囲の増分Z の数字で複数値フィールドを作成します。 多値評価関数

mvsort(X) 辞書的にソートされた複数値フィールドの値を返します。 多値評価関数

2つの複数値フィールドX、Yを取って、Xの最初の値、Yの最初の
mvzip(X,Y,"Z") 値、Xの2番⽬の値、Yの2番⽬の値の順序で、両⽅のフィールド 多値評価関数
を連結させます。

now() サーチが開始された時刻を返します。 ⽇付と時間の関数

null() この関数は引数を取らず、NULLを返します。 ⽐較関数と条件関数

37
この関数は、フィールドを⽐較するのに使⽤されます。この関数
nullif(X,Y) は2つの引数XおよびYをとり、X = Yの場合はNULLを、そうで ⽐較関数と条件関数
ない場合はXを返します。

pi() 定数piを精度11桁で返します。 数学関数

pow(X,Y) XのY乗(XY)を返します。 数学関数

printf("format",arguments)
指定したフォーマット記述に基づいてフォーマットされた⽂字列
変換関数
を作成します。

random() 0から231-1までの整数の疑似乱数を返します。 統計的評価関数

relative_time(X,Y) 相対時間指定⼦で時刻を調整します。 ⽇付と時間の関数

replace(X,Y,Z)
⽂字列Xにおける正規表現⽂字列Yとのすべての⼀致を⽂字列Z で
テキスト関数
置き換えた結果の⽂字列を返します。

round(X,Y)
XをYに指定されている⼩数位で丸めた値を返します。デフォルト
数学関数
では、整数に丸められます。

rtrim(X,Y) Yの⽂字を右側から切り取ったXを返します。 テキスト関数

searchmatch(X)
この関数を使⽤すると、サーチ⽂字列(X)がイベントと⼀致する場
⽐較関数と条件関数
合にTRUEを返すことができます。

sha1(X) 値Xのsha1ハッシュを計算します。 暗号化関数

sha256(X) 値Xのsha256ハッシュを計算します。 暗号化関数

sha512(X) 値Xのsha512ハッシュを計算します。 暗号化関数

sigfig(X) Xを、有効桁数に丸めます。 数学関数

sin(X) Xの正弦を計算します。 三⾓関数と双曲線関数

sinh(X) Xの双曲線正弦を計算します。 三⾓関数と双曲線関数

spath(X,Y) Yの場所パスに基づいて、Xの構造化データタイプ(XMLまたは
テキスト関数
JSON)から値を抽出します。

split(X,"Y") XをYで区切った複数値フィールドを返します。 多値評価関数

sqrt(X) 値の平⽅根を返します。 数学関数

strftime(X,Y) UNIX時刻を⼈間が読めるフォーマットに変換します。 ⽇付と時間の関数

strptime(X,Y) ⼈間が読める時刻をUNIX時刻に変換します。 ⽇付と時間の関数

substr(X,Y,Z) 開始位置Yと⻑さZ に基づいて、Xの⼀部の⽂字列を返します。 テキスト関数

tan(X) Xの正接を計算します。 三⾓関数と双曲線関数

tanh(X) Xの双曲線正接を計算します。 三⾓関数と双曲線関数

time()
eval関数が計算された時刻です。時刻は、イベントが処理された
⽇付と時間の関数
タイミングによって異なります。

tonumber(NUMSTR,BASE) ⽂字列を数字に変換します。 変換関数

tostring(X,Y) 数字や論理値などの⼊⼒を⽂字列に変換します。 変換関数

trim(X,Y) Yで表された⽂字を⽂字列の両側から切り取ります。 テキスト関数

true() TRUEを返します。 ⽐較関数と条件関数

typeof(X) フィールドタイプを⽰す⽂字列(Number、String、Boolean等)
情報関数
を返します。

upper(X) ⽂字列を⼤⽂字で返します。 テキスト関数

urldecode(X) URLのエスケープ⽂字を元の⽂字に置き換えます。 テキスト関数

38
この関数を使⽤すると、最初にFALSEに評価された式Xに対応す
validate(X,Y,...) る⽂字列Yを返すことができます。この関数は、case関数の反対 ⽐較関数と条件関数
です。

関連項⽬
トピック:
統計およびグラフ関数
コマンド:
eval
fieldformat
where

⽐較関数と条件関数
以下のリストは値を⽐較したり条件節を指定するのに使⽤できる関数を⼀覧しています。
関数、およびネスト関数で⽂字列および数値フィールドを使⽤する際の情報は、「評価関数」をご覧ください。
ANDやORなどの論理演算⼦については、「論理演算⼦」を参照してください。

c as e( X ,"Y ",...)
説明

条件と値を交互に受け⼊れます。条件が最初にTRUEとなった値を返します。
この関数は引数ペアXとYを取ります。X引数は論理式で、最初から最後まで評価していきます。最初のX式の評価が最初に真
(True)となった時に、対応するY引数が返されます。どれも真(True)でない場合は、デフォルトではNULLが返されます。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏する際には、時間範囲として「昨⽇」 を指定してください。

以下の例は、対応するHTTPステータスコードの説明を返します。
sourcetype=access_* | eval description=case(status == 200, "OK", status ==404, "Not found", status == 500, "Internal Server
Error") | table status description

結果は、以下のような内容で[統計]タブに表⽰されます。

st at us descript io n
200 OK
200 OK
408
200 OK

404 ⾒つかりません
200 OK
406
500 内部サーバーエラー
200 OK

ステータスが指定された値に⼀致しない場合にデフォルト値を表⽰する⽅法の例は、true()関数の説明を参照してください。

39
その他の例:

この例は、2つの異なる⽅法でcase関数を使⽤して、カテゴリとカスタムソート順序を作成する⽅法を表しています。

この例では、USGS EarthquakesWebサイトからダウンロードした最近の地震データを使⽤しています。データはカンマ区切り形式のASCIIテキスト
ファイルで、記録されている各地震のマグニチュード(mag)、座標(latitude、longitude)、地域(place)などが含まれています。
この例を実際に試したい場合は、最新のCSVファイルをUSGS Ear thquake F e e ds からダウンロードして、ファイルをSplunkインスタンスにアッ
プロードします。

地震を深度に基づいて分類します。浅発地震は深度70 km未満、中発地震は深度70〜300 km、深発地震は深度300 km超で


発⽣します。カテゴリ名として、それぞれLow、Mid、およびDeepを使⽤します。

source=all_month.csv | eval Description=case(depth<=70, "Low", depth>70 AND depth<=300, "Mid", depth>300, "Deep") | stats count
min(mag) max(mag) by Description

evalコマンドを使ってDescriptionフィールドを作成します。このフィールドは、地震のDepthに基づいて、「Low」(浅)、
「Mid」(中)、または「Deep」(深)の値を取ります。case()関数は、各説明に適合する深さの範囲を指定するために⽤いられ
ています。たとえば、深度が70 km未満の場合、その地震は浅発地震として分類され、DescriptionにはLowが設定されます。

また、このサーチはevalコマンドの結果をstatsコマンドに渡して、地震数をカウントし、各説明(Description)にマグニ
チュードの最⼩値と最⼤値を表⽰します。
結果は、以下のような内容で[統計]タブに表⽰されます。

説明 co unt m in(Mag) m ax(Mag)

Deep 35 4.1 6.7


低 6236 -0.60 7.70
Mid 635 0.8 6.3

[Description (説明)]列の結果をソートするには、Splunk Webのソートアイコンをクリックします。ただし、この例の返さ


れた結果の順序は、アルファベット順(Deep (深)、Low (浅)、Mid (中)、またはMid (中)、Low (浅)、Deep (深))になります。
case関数を使⽤して、カスタム順序(Low
(浅)、Mid (中)、Deep (深)など)で結果をソートすることもできます。カスタムソー
ト順序を作成するには、数値ランキングに値を設定して、そのランキングに基づいてソートします。
source=all_month.csv | eval Description=case(depth<=70, "Low", depth>70 AND depth<=300, "Mid", depth>300, "Deep") | stats count
min(mag) max(mag) by Description | eval sort_field=case(Description="Low", 1, Description="Mid", 2, Description="Deep",3) |
sort sort_field

結果は、以下のような内容で[統計]タブに表⽰されます。

説明 co unt m in(Mag) m ax(Mag)

低 6236 -0.60 7.70


Mid 635 0.8 6.3
Deep 35 4.1 6.7

c i dr m atc h( "X ",Y )


説明

IPアドレスがCIDR表記と⼀致するかどうかによってTRUEまたはFALSEを返します。
IPアドレスが特定のサブネットに属しているかどうかを判断する場合にこの関数を使⽤します。IPアドレスYが特定のサブ
ネットXに属している場合、この関数はTRUEを返します。XおよびYは両⽅とも⽂字列引数です。XはCIDRサブネットです。
Yはサブネットと⼀致するIPアドレスです。この関数はIPv6と互換性があります。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

40
以下の例はcidrmatchおよびif関数を使⽤して、フィールドipがサブネットに⼀致する場合、フィールド、isLocalを「ローカ
ル」に設定します。ipフィールドがサブネットに⼀致しない場合、isLocalフィールドが「⾮ローカル」に設定されます。

... | eval isLocal=if(cidrmatch("123.132.32.0/25",ip), "local", "not local")

以下の例では、cidrmatch関数をフィルターとして使⽤して、ipアドレスに⼀致しないイベントを削除しています。

... | where cidrmatch("123.132.32.0/25", ip)

c o ales c e( X ,...)

説明

この関数は任意の数の引数を取得して、NULLではない最初の値を返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

IPアドレスがclientipまたはipaddressに抽出されている、⼀連のイベントがある場合を考えてみましょう。この例は、新しい
フィールドipを定義しています。このフィールドは、どちらがNULL (イベントに存在している)ではないかに応じ
て、clientipフィールドまたはipaddressフィールドの値を取ります。clientipおよびipaddressフィールド両⽅がイベントにある
場合、この機能は最初の引数である、clientipフィールドを返します。

... | eval ip=coalesce(clientip,ipaddress)

f als e( )

説明

この関数を使⽤してFALSEを返します。
この関数により、1==0など、明らかに偽(False)である条件を指定することができます。この関数を含むフィールドは指定さ
れません。

使⽤法

この関数はしばしばその他の関数といっしょに引数として使⽤されます。

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

i f ( X ,Y ,Z )

説明

条件XがTRUEと評価されればY、そうでなければZを返します。
この関数は3つの引数を取ります。最初の引数Xは論理演算式でなければなりません。Xの評価が真(True)の場合、結果は2番
⽬の引数Yになります。Xの評価が偽(False)の場合、結果は3番⽬の引数Zを返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

if関数はしばしば他の関数と⼀緒に使⽤されます。基本的な例 を参照してください。

基本的な例

以下の例はフィールドerrorの値を⾒ます。error=200の場合、関数はerr=OKを返します。そうでない場合は、関数はerr=Errorを
返します。
... | eval err=if(error == 200, "OK", "Error")

41
以下の例はcidrmatchおよびif関数を使⽤して、フィールドipがサブネットに⼀致する場合、フィールド、isLocalを「ローカ
ル」に設定します。ipフィールドがサブネットに⼀致しない場合、isLocalフィールドが「⾮ローカル」に設定されます。

... | eval isLocal=if(cidrmatch("123.132.32.0/25",ip), "local", "not local")

i n( F IEL D , VA L U E- L IST )
説明

この関数は、リストにある1つの値が、指定したフィールドにある値に⼀致すると、真を返します。
この関数はカンマで区切られた値のリストを取ります。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

以下の⽂字列がサポートされています。
...| where in(field,"value1","value2", ...)
...| where field in("value1","value2", ...)
...| eval new_field=if(in(field,"value1","value2", ...), "value-if_true","value-if-false")

evalコマンドでは、論理値を使⽤できません。IF関数内でIN関数を指定する必要があります。これにより、⼊⼒として論理値
を使⽤できるようになります。

この⽂字列値は引⽤符で囲む必要があります。この値でワイルドカード⽂字を指定して、類似する値(HTTPエラーコードや
CIDR IPアドレス範囲など)のグループを指定することはできません。代わりにIN演算⼦を使⽤してください。
IN演算⼦はin関数と同様です。searchおよびtstatsコマンドとともにIN演算⼦を使⽤できます。ワイルドカード⽂字を上記の
コマンドとともにVALUE-LISTで使⽤できます。

基本的な例

以下の例は、statusフィールドの1つの値がリスト内の値の1つと⼀致する場合に、whereコマンドを使⽤してin=TRUEを返しま
す。

... | where status in("400", "401", "403", "404")

以下の例は、if関数の最初のパラメーターとしてin関数を使⽤します。Eval式はstatusフィールドの値がリスト内の値の1つ
と⼀致する場合に、TRUEを返します。
... | eval error=if(in(status, "error", "failure", "severe"),"true","false")

その他の例:

以下の例はin関数をif関数と結合してstatusフィールドを評価します。statusフィールドに404、500、または503のうちの1
つを含む場合、フィールドerrorは値trueになります。次に、errorフィールドの値にカウントが⾏われます。

... | eval error=if(in(status, "404","500","503"),"true","false") | stats count by error

関連項⽬

ブログ
smooth演算⼦|複数のフィールド値のサーチ

li ke( T EX T , P A T T ER N)

説明

この関数は、TEXTがPATTERNに⼀致すればTRUEを返します。
この関数は、TEXTに⼀致する⽂字列と、PATTERNに⼀致する⽂字列式の2つの引数を取り⼊れます。TEXTがPATTERNに
⼀致する場合にだけ、真を返します。パターンマッチングでは、テキストの完全⼀致、1⽂字の⼀致、そして複数⽂字の⼀致
がサポートされます。
パーセント( %)記号は、任意の複数⽂字と⼀致するワイルドカードとして使⽤します。
アンダースコアー(_)⽂字は、任意の1⽂字と⼀致するワイルドカードとして使⽤します。
42
使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例では、フィールド値がfooで開始する場合like=TRUEを返します。

... | eval is_a_foo=if(like(field, "foo%"), "yes a foo", "not a foo")

以下の例はwhereコマンドを使⽤して、ipaddressが198.で始まる場合にlike=TRUEを返します。パーセント( % )記号は、like関数
のワイルドカードとして使⽤できます。
... | where like(ipaddress, "198.%")

lo o kup( "[< f i le> |< def i ni ti o n> ]", j s o n_ o bj ec t( "< i nput_ f i eld> ", < m atc h_ f i eld> ,...) ,
j s o n_ ar r ay ( "< o utput_ f i eld> ",...) )

説明

この関数はCSVルックアップを実⾏します。JSONオブジェクトとして出⼒フィールド(1つまたは複数)を返します。

使⽤法

lookup()関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

lookup()関数は、CSVルックアップ<file>または<definition>から<input_field>を取り、サーチ結果から<match_field>を持つイベ
ントを探します。次に、input_fieldに対応するCSVテーブルから他のフィールド/値のペアを特定し、JSONオブジェクトの
形式で⼀致イベントに追加します。

lookup()では、ルックアップ<file>または<definition>を引⽤符で囲む必要があります。ファイルを指定する場合は、グローバ
ルルックアップディレクトリ($SPLUNK_HOME/etc/system/lookups/)または現在のAppコンテキストと⼀致するルックアップディレ
クトリ(例:$SPLUNK_HOME/etc/users/<user>/<app>/lookups/)に保存されているCSVルックアップファイルの完全ファイル名を指定
してください。
最初の引⽤符内の⽂字列の最後が「.csv」ではない場合、evalプロセッサーは⽂字列をCSVルックアップ定義名であると⾒な
します。指定されたCSVルックアップ定義はグローバルに共有する必要があります。CSVルックアップを⾮公開としたり、
特定のAppと共有したりすることはできません。
lookup()関数では、複数の<input_field>/<match_field>ペアを使⽤してイベントを識別でき、これらのイベントには複数
の<output_field>値を適⽤できます。複数の⼊⼒、⼀致、出⼒を使⽤した有効なlookup()構⽂の例を⽰します。

... | eval <string>=lookup("[<file>|<definition>]", json_object("<input_field1>", <match_field1>, "<input_field2>",


<match_field2>), json_array("<output_field1>", "<output_field2>", "<output_field3>")

CSVルックアップファイルのアップロードとCSVルックアップ定義の作成についての詳細は、『ナレッジ管理』マニュア
ルの「Splunk WebでのCSVルックアップの定義」を参照してください。
lookup()関数は、evalでjson_objectとjson_arrayの2つのJSON関数を使⽤します。JSON関数により、evalプロセッサーは効率
的なグループ化を⾏うことができます。詳細は、『サーチリファレンス』の「JSON関数」を参照してください。

lookup()関数の異なる使い⽅の例を⽰します。

1 .配列を持つJ S O N オブジェクトを返す単純な例

この単純なmakeresultsの例は、http_status.csvルックアップテーブルでstatus_typeのSuccessfulとペアリングされ
るstatus_description値を⽰す配列を返します。

このサーチは次の結果を返します。output={"status_description":["OK","Created","Accepted","Non-Authoritative
Information","No Content","Reset Content","Partial Content"]}

| makeresults | eval type = "Successful" | eval output=lookup("http_status.csv", json_object("status_type", type),


json_array("status_description"))

43
2.複数の⼊⼒とマッチフィールドのペアを使⽤したサーチの例

次のサーチは、複数の⼊⼒とマッチフィールドのペアを使⽤して、http_status.csvルックアップテーブル
でtype="Successful"とstatus="200"のイベントがstatus_descriptionのOKと⼀致することを⽰しています。

このサーチは次の結果を返します。output={"status_description":"OK"}

| makeresults | eval type = "Successful", status="200" | eval output=lookup("http_status.csv", json_object("status_type", type,


"status", status), json_array("status_description"))

3.HTTP ステータスの説明とタイプのペア数を取得する

次の例は、http_status.csvルックアップファイルのstatusフィールドの値を、返されるイベントのstatusフィールドの値
と⼀致させています。そして、status_descriptionフィールドとstatus_typeフィールドの値のペアと共
に、status_detailsフィールドの値としてJSONオブジェクトを⽣成し、イベントに追加しています。最後に、オブジェ
クトごとにJSONオブジェクトのカウントを返します。
このサーチで返されるJSONオブジェクトの例は次のようになりま
す。status_details=JSON:{"status_description":"Created","status_type":"Successful"}

index=_internal | eval output=lookup("http_status.csv", json_object("status", status), json_array("status_description",


"status_type")), status_details="JSON:".output | stats count by status_details

4 .HTTP ステータスeval ルックアップによってイベントに追加されたHTTP ステータスの説明値の数を取得する

次の例では、lookup関数を別のeval関数にネストしています。この場合は、json_extract JSON関数です。この関数
は、status_descriptionフィールド/値ペアをjson_arrayオブジェクトから抽出して対応するイベントに適⽤します。そし
てサーチは、status_description値ごとのイベント数をstatus_descriptionフィールドと共に返します。

このサーチで返されるstatus_description値の例です。3番⽬の例で返される結果と⽐較してくださ
い。status_details=Created

index=_internal | eval status_details=json_extract(lookup("http_status.csv", json_object("status", status),


json_array("status_description", "status_type")), "status_description") | stats count by status_details

m atc h( SU BJ EC T , "R EGEX ")

説明

この関数は、正規表現がSUBJECTに⼀致するかどうかによってTRUEまたはFALSEを返します。
この関数は正規表現⽂字列REGEXをSUBJECTの値と⽐較して、論理値を返します。REGEXでSUBJECTの任意のサブ⽂字
列との⼀致が⾒つかった場合、真(True)が返されます。

使⽤法

match関数はregexベースです。たとえば、バックスラッシュ( \ )⽂字を使⽤して、引⽤符などの特殊⽂字をエスケープしま
す。パイプ( | )⽂字を使⽤してOR条件を指定します。
これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

この例は、fieldがIPアドレスの基本パターンに⼀致している場合にのみ真を返します。この例は( ^ )⽂字およびダラー( $ )記
号を使⽤して完全⼀致を実⾏します。
... | eval n=if(match(field, "^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$"), 1, 0)

以下の例はmatch関数を<eval-expression>で使⽤します。SUBJECTはtestと呼ばれる計算済みフィールドです。
「REGEX」は⽂字列です。

この例では、match関数を<eval-expression>で使⽤します。SUBJECTはtestと呼ばれる計算済みフィールドです。
「REGEX」は⽂字列yesです。

... | eval matches = if(match(test,"yes"), 1, 0)

値が引⽤符とともに保管されている場合、埋め込まれた引⽤符をエスケープ処理するために(\)を使⽤する必要があります。

44
例:
| makeresults | eval test="\"yes\"" | eval matches = if(match(test, "\"yes\""), 1, 0)

null( )

説明

この関数は引数を取らず、NULLを返します。評価エンジンはNULLを使⽤して「値なし」を表します。フィールド値を
NULLに設定してフィールド値をクリアします。

使⽤法

NULL値は、特定の結果には存在していないけれども、他の結果には存在しているフィールド値です。
これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

フィールドの値の平均を計算したいが、いくつかの値がゼロであったとします。ゼロが値なしのプレースホルダーである場
合、ゼロは正確な平均の作成に⼲渉します。null関数を使⽤してゼロを削除します。

関連項⽬

fillnullコマンドを使⽤してNULL値を指定した値に置き換えます。
nullif(X,Y)関数を使⽤して2つのフィールドを⽐較しX = YであればNULLを返します。

nulli f ( X ,Y )
説明

この関数は、フィールドを⽐較するのに使⽤されます。この関数は2つの引数XおよびYをとり、X = Yの場合はNULLを、そ
うでない場合はXを返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例はfieldA=fieldBである場合、NULLを返します。そうでない場合は、関数はfieldAを返します。
... | eval n=nullif(fieldA,fieldB)

s ear c hm atc h( X )

説明

この関数を使⽤すると、サーチ⽂字列(X)がイベントと⼀致する場合にTRUEを返すことができます。
この関数は、サーチ⽂字列となる1つの引数Xを取ります。この関数は、イベントがサーチ⽂字列に⼀致した場合にのみ、真
(True)を返します。

使⽤法

searchmatch関数は、if関数内で使⽤する必要があります。

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

次の例では、makeresultsコマンドを使⽤していくつかの単純な結果を作成しています。searchmatch関数を使⽤して、結果のい
ずれかが"x=hi y=*"という⽂字列と⼀致するかどうかを判断します。

45
| makeresults 1 | eval _raw = "x=hi y=bye" | eval x="hi" | eval y="bye" | eval test=if(searchmatch("x=hi y=*"), "yes", "no") |
table _raw test x y

if関数の結果がyesであれば、結果はsearchmatch関数で指定したサーチ⽂字列と⼀致しています。

tr ue( )

説明

この関数を使⽤してTRUEを返します。
この関数により、1==1など、明らかに真(True)である条件を指定することができます。この関数を含むフィールドは指定さ
れません。

使⽤法

この関数はしばしばその他の関数といっしょに引数として使⽤されます。
これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏する際には、時間範囲として「昨⽇」 を指定してください。

次の例では、true()関数を使⽤してcase関数にデフォルト値を提供する⽅法を⽰しています。ステータスフィールドの値が
「200」または「404」ではない場合は「その他」が値として使⽤されます。
sourcetype=access_* | eval description=case(status==200,"OK", status==404, "Not found", true(), "Other") | table status
description

結果は、以下のような内容で[統計]タブに表⽰されます。

st at us descript io n

200 OK
200 OK
408 その他
200 OK
404 ⾒つかりません

200 OK
200 OK
406 その他
200 OK

v ali date( X ,Y ,...)

説明

この関数を使⽤すると、最初にFALSEに評価された式Xに対応する⽂字列Yを返すことができます。この関数は、case関数の
反対です。
この関数は、論理式Xと⽂字列Yの1対の引数ペアを取り、FALSEと評価された最初の式Xに対応する⽂字列Yを返します。す
べての式がTRUEと評価された場合は、デフォルトとしてNULLを返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例
46
以下の例は、有効なポートを確認するための簡単なチェックを⾏います。
... | eval n=validate(isint(port), "ERROR: Port is not an integer", port >= 1 AND port <= 65535, "ERROR: Port is out of range")

変換関数
以下のリストは数字を⽂字列に、⽂字列を数字に変換する際に使⽤できる関数を記載しています。

関数、およびネスト関数で⽂字列および数値フィールドを使⽤する際の情報は、「評価関数」をご覧ください。

pr i ntf ( "f o r m at",ar g um ents )

説明

The printf関数は、指定した⽂字列形式および引数に基づいて、⽂字列値を構築します。

ゼロ以上のフィールドを指定することができます。引数は⽂字列、数字、計算、またはフィールドである場合がありま
す。

SPL printf関数はC sprintf()関数および、Python、PerlおよびRubyなどの他の⾔語の類似関数に似ています。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

format
説明 :formatは1つ以上の書式変換識別⼦を含むことができる特殊⽂字列です。各変換識別⼦には、フラッグ、幅仕様、
精度仕様などの任意で使⽤できるコンポーネントを含むことができます。formatは引⽤符で囲む必要があります。
構⽂ :"(%[flags][width][.precision]<conversion_specifier>)..."
引数
説明 :argumentsは省略可能で、フォーマットの幅、精度、さらに値を含むことができます。値は⽂字列、数字、フィー
ルド名などです。
構⽂ :[width][.precision][value]

対応している変換識別⼦

以下の表は対応している変換識別⼦を説明しています。

変換 エイ
識別 リア 説明 例
⼦ ス
この例は値piを⼩数点以下3桁で、16進数で返します。
%aま
た 16進数での浮動⼩数点数
は %A 0X1.922P+1を返すprintf("%.3A",pi())

この例は65のユニフォーム点と、⽂字列"Foo"の最初の⽂字を返します。
%c 単⼀ユニコードコード点
A,Fを返すprintf("%c,%c",65,"Foo")

この例は、正または負の整数値を、それが表す記号を含めて返します。
%d %i 符号付き10進数整数
-2,4,30を返すprintf("%d,%i,%d",-2,+4,30)

%eま この例は5139を⼩数点以下2桁の指数形式で返します。
た 浮動⼩数点数、指数形式
は %E 5.14e+03を返すprintf("%.2e",5139)

この例は値piを⼩数点以下2桁で返します。
%fま
た 浮動⼩数点数
は %F 3.14を返すprintf("%.2f",pi())

この例は値piを⼩数点以下2桁( %f識別⼦を使⽤)で返し、数字123を⼩数
%gま 点以下2桁の指数形式で返します( %e識別⼦を使⽤)。
浮動⼩数点数。この識別⼦は書式化されている数字範

囲に応じて %eまたは %fのいずれかを使⽤します。
は %G
47
は %G 3.1,1.2e+02を返すprintf("%.2g,%.2g",pi(),123)

この例は255の基本8数字を返します。

%o 符号なし8進数
377を返すprintf("%o",255)

この例は"foo"および"bar"という連結⽂字列を返します。

%s %z ⽂字列
foobarを返すprintf("%s%z", "foo", "bar")

%u 符号なし、⾮負、10進数 この例は引数の数字の整数値を返します。99を返すprintf("%u,",99)

この例は、引数にある数字に等しい16進数値を返します。この例は、こ
%xま の識別⼦を使⽤する場合の⼤⽂字、⼩⽂字の両⽅を⽰しています。
た %p 符号なし16進数(⼩⽂字または⼤⽂字)
は %X a,A,Aを返すprintf("%x,%X,%p",10,10,10)

この例は⽂字列の値にパーセント記号を付けて返します。

%% パーセント記号
100%を返すprintf("100%%")

フラグ⽂字

以下の表は対応しているフラグ⽂字を説明しています。

フラグ
⽂字 説明 例

単⼀引⽤
符または 12,345を返
アポスト 千の分離記号としてカンマを追加します。
すprintf("%'d",12345)
ロフィ( '
)

1 を返すprintf("%-
ダッシュ 4d",1)
またはマ 左寄せ。このフラグが指定されていない場合は、結果はデフォルトの寄せ⽅になります。
イナス( - printf関数は、デフォルトが右寄せの場合にのみ、結果の右寄せをサポートします。 出⼒では左寄せになりま
) す。

この例は引数の値の先頭
にゼロを付けて返すの
で、数字は4桁になりま
す。
ゼロ( 0 ) ゼロパッド

0001を返
すprintf("%04d",1)

プラス( 常に記号( +または- )を含みます。このフラグが指定されていない場合、変換はマイナスの値にのみ記号を表 +1を返


+) ⽰します。 すprintf("%+4d",1)

符号⽤のスペース。符号付きの変換の最初の⽂字が符号でない場合、または符号付きの変換結果が⽂字でない 1を返すprintf("% -
<space> 場合、<space>が結果の接頭辞として追加されます。<space>および+フラグの両⽅が指定されている場合
4d",1)
は、<space>フラグは無視されます。

代替形式として使⽤します。 %o変換識別⼦では、#フラグは精度を⾼めて、結果の最初の桁がゼロになるよ
ハッ
うにします。 %xまたは %X変換識別⼦では、⾮ゼロ結果の接頭辞が0x (or 0X)になります。 %a、 %A、
シュ、数 0x1を返
%e、 %E、 %f、 %F、 %%g、およびG変換識別⼦では、基数の後にゼロが続かなくても、結果には常に基
字、また
数が含まれます。フラグがないと、基数は数字が後に続く場合にのみ変換結果に表⽰されます。 %gおよ すprintf("%#x", 1)
はポンド
び %G変換識別⼦では、後に続くゼロは通常とは異なり結果から削除されません。その他の変換識別⼦では、
(#)
この挙動は定義されていません。

フィールド幅指定

48
アスタリスク( * )をprintf関数と共に使⽤して引数からフィールド幅または精度を返すことができます。


この例は、正または負の整数値を、それが表す記号を含めて返します。

123を返すprintf("%*d", 5, 123)

以下の例では⼩数点以下1桁の浮動⼩数点数を返します。

1.2を返すprintf("%.*f", 1, 1.23)

以下の例は値pi()を⼩数点以下2桁で返します。

3.14e+00を返すprintf("%*.*e", 9, 2, pi())

フィールド幅は数字またはアスタリスク( * )特殊⽂字を伴う引数を使って記載できます。

フィールド幅識
説明 例
別⼦
印刷する最⼩⽂字数。印刷する値がこの数字よりも短い場合、結果は空欄にパッドされます。結果が⼤きくても、値は
数値
分離されません。

* (asterisk) 幅は書式⽂字列では指定されませんが、引数の前に追加の整数値引数を書式化する必要があります。

精度の指定

精度 説明

%d、 %i、 %o、 %u、 %xま 精度は返す最⼩桁数を指定します。返す値がこの数字よりも短い場合、結果はゼロを頭にしてパッドされます。結果


たは %X が⻑くても、値は分離されません。精度0とは、値0に⽂字が返されないことを意味します。

%aまたは %A、 %eまた


これは返される⼩数点以下の桁数です。デフォルトは6です。
は %E、 %fまたは %F

%gまたは %G 返される有効数字の最⼤数です。

%s 返される⽂字の最⼤数です。デフォルトにより、最後のNULL⽂字まで、すべての⽂字が印刷されます。

精度値なしの期間の指定 期間が明⽰的な精度の値なしで指定される場合、0が仮置きされます。

.*などのように、精度値にア
精度は書式⽂字列では指定されませんが、引数の前に追加の整数値引数を書式化する必要があります。
スタリスクを指定します。

対応していない変換識別⼦

対応していないC sprintf()関数からの変換識別⼦も若⼲あります。

%C、しかし %cがサポートされています
%n
%S、しかし %sがサポートされています
使⽤する引数をえらぶ%<num>$識別⼦

基本的な例

この例でnew_fieldと呼ばれるフィールドを作成し、field_oneとfield_twoの値に基づいて⽂字列値を作成します。値は⼩数点の
前に4桁、後に4桁に書式化されます。-は⽂字列値を左寄せにします。30はフィールドの幅を指定します。

...| eval new_field=printf("%04.4f %-30s",field_one,field_two)

to num ber ( NU M ST R ,BA SE)

説明

49
この関数は、⼊⼒⽂字列NUMSTRを数字に変換します。NUMSTRはフィールド名または値の場合があります。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

BASEは必要に応じて、NUMSTRの数字のベースを定義するために使⽤されます。BASEは2から36の可能性があります。10
進法に対応するためにデフォルトは10です。
tonumber関数がフィールド値を数字に解析できない場合(値に先頭および末尾のスペースが含まれる場合など)は、関数は
NULLを返します。trim関数を使⽤して、先頭と末尾のスペースを削除してください。

tonumber関数がリテラル⽂字列を数字に解析できない場合は、エラーが返されます。

基本的な例

以下はstore_salesフィールドの⽂字列値を数字に変換する例です。
... | eval n=tonumber(store_sales)

以下の例では16進数を使⽤し16のBASEを使⽤して「164」を返します。
... | eval n=tonumber("0A4",16)

この例では、数字に変換する前に、celsiusフィールドにある値から先頭または末尾スペースを削除します。

... | eval temperature=tonumber(trim(celsius))

to s tr i ng ( X ,Y )

説明

この関数は、⼊⼒値を⽂字列に変換します。⼊⼒値が数値の場合、それが⽂字列に変換されます。⼊⼒値が論理値の場合
は、対応する⽂字列値、真(True)または偽(False)が返されます。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

この関数には少なくとも1つの引数Xが必要です。
evalコマンドと併⽤すると、値がASCIIに変換されるため、想定通りのソートとならない場合があります。fieldformatコマン
ドとtostring関数を使って表⽰する値をフォーマットします。基礎となる値はfieldformatコマンドで変更されません。

Xが数字である場合は、2番⽬の引数Yは省略可能で、"hex"、"commas"、または"duration"です。

例 説明
tostring(X,"hex") は、Xを16進形式に変換します。

tostring(X,"commas") Xをカンマで書式化します。数字に⼩数点がある場合、関数は⼩数点以下2桁に四捨五⼊します。

tostring(X,"duration") は、X秒を認識できる時間形式HH:MM:SSに変換します。

基本的な例

この例は、「True 0xF 12,345.68」を返します。


... | eval n=tostring(1==1) + " " + tostring(15, "hex") + " " + tostring(12345.6789, "commas")

以下の例ではfoo=615およびfoo2=00:10:15を返します。615秒は分および秒に変換されます。

... | eval foo=615 | eval foo2 = tostring(foo, "duration")

50
この例では、totalSales列をフォーマット後、通貨記号とカンマを付けて表⽰しています。⾦額とtostring関数の間にはピリ
オドを使⽤する必要があります。
... | fieldformat totalSales="$".tostring(totalSales,"commas")

関連項⽬
コマンド
convert
関数
strptime

暗号化関数
以下のリストには⽂字値の安全ハッシュを計算するために使⽤できる関数が記載されています。
関数、およびネスト関数で⽂字列および数値フィールドを使⽤する際の情報は、「評価関数」をご覧ください。

m d5( X )

説明

この関数は、⽂字列値XのMD5ハッシュを返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

次の例は、「Hello World」のフレーズに対してMessage Digest (MD5) 128ビットハッシュ値が格納された新しいフィール


ドnを返します。

... | eval n=md5("Hello World")

以下の例では、⻑いランダム⽂字列を作成しています。

| makeresults count=32768 | eval message=md5("". random()) | stats values(message) as message | eval message = mvjoin(message,
"")

makeresultsコマンドは、タイムスタンプ付きの32768件の結果を⽣成します。
evalコマンドは、messageという新しいフィールドを作成します。
random関数は、32768件のそれぞれの結果に対して乱数フィールド値を返します。"".は、random関数が⽣成した数
値を⽂字列値に変換します。
md5関数は、⽂字列値から128ビットのハッシュ値を⽣成します。
md5関数の結果は、evalコマンドが⽣成したmessageフィールドに格納されます。
statsコマンドは、values関数を使⽤して個別の乱数値を1つの複数値結果に変換します。
evalコマンドは、mvjoin関数を使⽤して、複数値エントリを単⼀値に組み合わせます。

s ha1( X )

説明

この関数は、FIPS互換SHA-1ハッシュ関数に基づいて、⽂字列値Xの保護されたハッシュを計算して返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

... | eval n=sha1("Put that in your | and Splunk it.")

s ha2 56 ( X )

51
説明

この関数は、FIPS互換SHA-256ハッシュ関数に基づいて、⽂字列値Xの保護されたハッシュを計算して返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

... | eval n=sha256("Can you SPL?")

s ha512 ( X )
説明

この関数は、FIPS互換SHA-512ハッシュ関数に基づいて、⽂字列値Xの保護されたハッシュを計算して返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

... | eval n=sha512("You bet your sweet SaaS.")

⽇付と時間の関数
以下のリストには⽇付と時間の計算に使⽤できる関数が含まれます。

関数、およびネスト関数で⽂字列および数値フィールドを使⽤する際の情報は、「評価関数」をご覧ください。
このトピックに記載の関数に加えて、サーチで使⽤できる変数および修飾⼦もあります。

⽇付と時間の書式変数
時間修飾⼦

no w ( )

説明

この関数は引数を取らず、サーチの開始時刻を返します。

使⽤法

now()関数はしばしばその他のデータおよび時間関数と⼀緒に使⽤されます。

now()関数が返す時間はUnix時またはエポック時からの秒数で⽰されます。

サーチで使⽤される場合、この関数はサーチが実⾏されたUNIX時間を返します。結果が返されるときのUNIX時間を返した
い場合、代わりにtime()機能を使います。

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例では、now()の値に基づいて、昨⽇の開始値のUNIX時間を判断します。

... | eval n=relative_time(now(), "-1d@d")

その他の例:

過去30分間に発⽣したイベントを検索するには、イベント時、イベント分、現在時、現在分を計算する必要がありま
す。now()関数を使⽤して現在時(curHour)および現在分(curMin)を計算します。_timeフィールドにあるイベントタイムスタ
ンプはイベント時(eventHour)およびイベント分(eventMin)の計算に使⽤されます。例:
52
... earliest=-30d | eval eventHour=strftime(_time,"%H") | eval eventMin=strftime(_time,"%M") | eval
curHour=strftime(now(),"%H") | eval curMin=strftime(now(),"%M") | where (eventHour=curHour and eventMin > curMin - 30) or
(curMin < 30 and eventHour=curHour-1 and eventMin>curMin+30) | bucket _time span=1d | chart count by _time

r elati v e_ ti m e( X ,Y )

説明

この関数はUNIX時間、X、を第⼀引数として、相対時間指定⼦、Y、を第⼆引数として使⽤し、Xに適⽤されたYのUNIX時
間値を返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例では、now()の値に基づいて、昨⽇の開始値のUNIX時間を判断します。

... | eval n=relative_time(now(), "-1d@d")

s tr f ti m e( X ,Y )

説明

この関数はUNIX時刻値のXを第⼀引数として取り、Yで指定されたフォーマットを使⽤して時刻を⽂字列として表⽰しま
す。UNIX時刻は秒単位で指定する必要があります。UNIX時刻の最初の10桁を使⽤して、時刻を秒単位で使⽤します。

使⽤法

時刻がミリ秒、マイクロ秒、またはナノ秒単位である場合は、秒単位に変換する必要があります。pow関数を使⽤して数字を
変換してください。

ミリ秒から秒に変換するには、数字を1000または10^3で割ります。
マイクロ秒から秒に変換するには、数字を10^6で割ります。
ナノ秒から秒に変換するには、数字を10^9で割ります。

以下のサーチでは、pow関数を使⽤して、ナノ秒から秒に変換します。

| makeresults | eval StartTimestamp="1521467703049000000"| eval starttime=strftime(StartTimestamp/pow(10,9),"%Y-%m-


%dT%H:%M:%S.%Q")

結果は、以下のような内容で[統計]タブに表⽰されます。

St art Tim eSt am p _t im e st art t im e


1521467703049000000 2018-08-10 09:04:00 2018-03-19T06:55:03.049

これらの結果では、_timeの値がサーチが実⾏された⽇時になっています。

書式設定のオプションの⼀覧と説明については、「共通の時間書式設定変数」を参照してください。

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例では、_timeフィールドから時間と分を返します。

...| eval hour_min=strftime(_time, "%H:%M")

_timeフィールドの値が2018-08-10 11:48:23の場合、hour_minフィールドに返される値は11:48です。

その他の例:

以下の例では、makeresultsコマンドを使⽤して1件の結果を作成します。

| makeresults

53
例:

_t im e

2018-08-14 14:00:15

_timeフィールドは、⼈間が読めるフォーマットで表⽰されていてもUNIX時間で保存されます。UNIX時間を他のフォーマッ
トに変換する場合、⽇付と時間の書式変数とともにstrftime関数を使⽤します。変数は引⽤符で囲む必要があります。

たとえば、イベントが発⽣した週を返すには、%V変数を使⽤します。

| makeresults | eval week=strftime(_time,"%V")

結果には、8⽉14⽇が第33週に発⽣していることが⽰されています。

_t im e week

2018-08-14 14:00:15 33

フォーマットの時間コンポーネントの前にくる時間指定⼦(⽂字T)と1秒未満の単位を使⽤して⽇時を返すには、%Y-%m-
%dT%H:%M:%S.%Q変数を使⽤します。例:

| makeresults | eval mytime=strftime(_time,"%Y-%m-%dT%H:%M:%S.%Q")

結果は以下のとおりです。

_t im e m yt im e
2018-08-14 14:00:15 2018-08-14T14:00:15.000

s tr pti m e( X ,Y )

説明

この関数は⽂字列Xで表される時間を取り、その時間をUNIXタイムスタンプに解析します。⽇付と時間の変数を使⽤して、
⽂字列Xに⼀致するフォーマットYを指定します。

たとえば、⽂字列Xが2018-08-13 11:22:33の場合、フォーマットYは%Y-%m-%d %H:%M:%S にする必要があります。⽂字列Xの⽇付


は、1971年1⽉1⽇以降にする必要があります。
_timeフィールドはUNIX時間です。Splunk WebのUIでは、_timeフィールドは⼈間が読めるフォーマットで表⽰されます
が、UNIX時間で保存されます。_timeフィールドでstrptime関数を使⽤しようとしても、フィールドの値には何のアクショ
ンも実⾏されません。

使⽤法

strptime関数では、関数で⽂字列の時間を正しいUNIX時間に変換できるように⽂字列Xの時間フォーマットを指定する必要が
あります。以下の表にいくつかの例を⽰します。

⽂字列の時間 ⼀致する時間の書式変数
Mon July 23 2018 17:19:01.89 %a %B %d %Y %H:%M:%S.%N

Mon 7/23/2018 17:19:01.89 %a %m/%d/%Y %H:%M:%S.%N

2018/07/23 17:19:01.89 %Y/%m/%d %H:%M:%S.%N

2018-07-23T17:19:01.89 %Y-%m-%dT%H:%M:%S.%N

書式設定のオプションの⼀覧と説明については、「共通の時間書式設定変数」を参照してください。
これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例では、timeStrフィールドの値が時間と分である場合に(例:11:59)、時刻をタイムスタンプとして返します。

54
... | eval n=strptime(timeStr, "%H:%M")

その他の例:

この例は、strptime関数を使⽤した結果を⽰しています。以下のサーチでは、複数の操作を実⾏しています。

gentimesコマンドは、6時間間隔で⼀連の時間を⽣成します。このコマンド
は、startime、starthuman、endtime、endhumanの4つのフィールドを返します。
fieldsコマンドは、starthumanおよびendhumanフィールドのみを返します。
evalコマンドは、starthumanフィールドの⽂字列の時間値を取り、⽂字列の時間値に対応するUNIX時間を返します。

| gentimes start=8/13/18 increment=6h | fields starthuman endhuman | eval


startunix=strptime(starthuman,"%a %B %d %H:%M:%S.%N %Y")

結果は、以下のような内容で[統計]タブに表⽰されます。

st art hum an endhum an st art unix


Mon Aug 13 00:00:00 2018 Mon Aug 13 05:59:59 2018 534143600.000000

Mon Aug 13 06:00:00 2018 Mon Aug 13 11:59:59 2018 1534165200.000000

Mon Aug 13 12:00:00 2018 Mon Aug 13 17:59:59 2018 534186800.000000

Mon Aug 13 18:00:00 2018 Mon Aug 13 23:59:59 2018 1534208400.000000

Tue Aug 14 00:00:00 2018 Tue Aug 14 05:59:59 2018 1534230000.000000

Tue Aug 14 06:00:00 2018 Tue Aug 14 11:59:59 2018 1534251600.000000

Tue Aug 14 12:00:00 2018 Tue Aug 14 17:59:59 2018 1534273200.000000

Tue Aug 14 18:00:00 2018 Tue Aug 14 23:59:59 2018 1534294800.000000

ti m e( )

説明

この関数は実時間をUNIX時間フォーマットでマイクロ秒の単位まで返します。

使⽤法

time()関数の値は、evalコマンドによりイベントが処理された時期に基づいて、各イベントに対して異なります。

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

この例は、time()関数を使⽤した結果を⽰しています。以下のサーチでは、複数の操作を実⾏しています。

gentimesコマンドは、6時間間隔で⼀連の時間を⽣成します。このコマンド
は、startime、starthuman、endtime、endhumanの4つのフィールドを返します。
fieldsコマンドは、startimeおよびstarthumanフィールドのみを返します。
最初のevalコマンドは、startimeフィールドの数値を取り、そこに含まれるマイクロ秒を返します。
2番⽬のevalコマンドは、testtimeフィールドを作成し、evalコマンドで結果が処理された時点のUNIX時間を返します。

| gentimes start=8/13/18 increment=6h | fields starttime starthuman | eval epoch_time=strptime(starttime,"%s") | eval


testtime=time()

結果は、以下のような内容で[統計]タブに表⽰されます。

st art t im e st art hum an epo ch_t im e t est t im e


1534143600 Mon Aug 13 00:00:00 2018 1534143600.000000 1534376565.299298

1534165200 Mon Aug 13 06:00:00 2018 1534165200.000000 1534376565.299300

1534186800 Mon Aug 13 12:00:00 2018 1534186800.000000 1534376565.299302

55
1534208400 Mon Aug 13 18:00:00 2018 1534208400.000000 1534376565.299304

1534230000 Tue Aug 14 00:00:00 2018 1534230000.000000 1534376565.299305

1534251600 Tue Aug 14 06:00:00 2018 1534251600.000000 1534376565.299306

1534273200 Tue Aug 14 12:00:00 2018 1534273200.000000 1534376565.299308

1534294800 Tue Aug 14 18:00:00 2018 1534294800.000000 1534376565.299309

epoch_timeフィールドとtest_timeフィールドの値のマイクロ秒の差に注意してください。各結果でtest_timeの値が増加してい
ます。

情報関数
以下のリストには値についての情報を返すために使⽤できる関数が含まれます。
関数、およびネスト関数で⽂字列および数値フィールドを使⽤する際の情報は、「評価関数」をご覧ください。

i s bo o l( X )

説明

この関数は1つの引数Xを取り、Xが論理的データタイプであるかどうかを評価します。関数はXが論理的である場合はTRUE
を返します。

使⽤法

この関数をcidrmatchおよびmvfindなどの論理的データタイプを返す他の関数と⼀緒に使⽤します。

この関数は、フィールド値が「true」または「false」であるかどうかを判断するためには使⽤できません。フィールド値は
⽂字列または数字データタイプだからです。<fieldname>=true OR <fieldname>=falseなどの構⽂を使⽤してフィールド値を決定
します。
これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

i s i nt( X )

説明

この関数は引数Xを取り、Xが整数の場合は真(True)を返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例はisint関数とif関数と⼀緒に使⽤する例です。フィールド「n」は、isint関数の結果に応じて、「int」または「not
int」値のある各結果に追加されます。「フィールド」の値が数値である場合、isint関数はTRUEを返し、値は「int」を
「n」フィールドに追加します。

... | eval n=if(isint(field),"int", "not int")

以下の例はisint関数をwhereコマンドと⼀緒に使⽤する⽅法を⽰します。

... | where isint(field)

i s no tnull( X )

説明

この関数は引数Xを取り、XがNULLでない場合は真(True)を返します。

56
使⽤法

この関数はフィールド(X)に値が含まれているかどうかを確認する場合に役⽴ちます。
これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例はisnotnull関数とif関数と⼀緒に使⽤する例です。フィールド「n」は、isnotnull関数の結果に応じて、「yes」ま
たは「no」値のある各結果に追加されます。「フィールド」の値が数値である場合、isnotnull関数はTRUEを返し、値は
「yes」を「n」フィールドに追加します。

... | eval n=if(isnotnull(field),"yes","no")

以下の例はisnotnull関数をwhereコマンドと⼀緒に使⽤する⽅法を⽰します。

... | where isnotnull(field)

i s null( X )
説明

この関数は引数Xを取り、XがNULLの場合は真(True)を返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例はisnull関数とif関数と⼀緒に使⽤する例です。フィールド「n」は、isnull関数の結果に応じて、「yes」または
「no」値のある各結果に追加されます。結果の「フィールド」に値がない場合、isnull関数はTRUEを返し、フィールド
「n」に値「yes」を追加します。
... | eval n=if(isnull(field),"yes","no")

以下の例はisnull関数をwhereコマンドと⼀緒に使⽤する⽅法を⽰します。

... | where isnull(field)

i s num ( X )
説明

この関数は引数Xを取り、Xが数値の場合は真(True)を返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例はisnum関数とif関数と⼀緒に使⽤する例です。フィールド「n」は、isnum関数の結果に応じて、「yes」または
「no」値のある各結果に追加されます。「フィールド」の値が数値である場合、isnum関数はTRUEを返し、値は「yes」を
「n」フィールドに追加します。
... | eval n=if(isnum(field),"yes","no")

以下の例はisnum関数をwhereコマンドと⼀緒に使⽤する⽅法を⽰します。

... | where isnum(field)

57
i s s tr ( X )

説明

この関数は引数Xを取り、Xが⽂字列の場合は真(True)を返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例はisstr関数とif関数と⼀緒に使⽤する例です。フィールド「n」は、isstr関数の結果に応じて、「yes」または
「no」値のある各結果に追加されます。「フィールド」の値が⽂字列である場合、isstr関数はTRUEを返し、値は「yes」を
「n」フィールドに追加します。

... | eval n=if(isstr(field),"yes","no")

以下の例はisstr関数をwhereコマンドと⼀緒に使⽤する⽅法を⽰します。

... | where isstr(field)

ty peo f ( X )

説明

この関数は1つの引数を取り、その引数のデータタイプを返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例は1つの引数を取り、そのタイプの⽂字列表記を返します。この例は、「NumberStringBoolInvalid」を返します。

... | eval n=typeof(12) + typeof("string") + typeof(1==2) + typeof(badfield)

以下の例では、makeresultsコマンドを使⽤して1件の結果を作成します。

| makeresults

例:

_t im e

2018-08-14 14:00:15

_timeフィールドのデータタイプを判別するには、typeof関数とともにevalコマンドを使⽤します。例:

| makeresults | eval t=typeof(_time)

結果は以下のとおりです。

_t im e t

2018-08-14 14:00:15 数値

JS ON 関数
JSONオブジェクトの作成や操作に使⽤できる関数を下表に⽰します。

説明 JSON関数

58
キー/値ペアから新しいJSONオブジェクトを作成します。 json_object

値のリストを使⽤してJSON配列を作成します。 json_array

フィールドと0以上のパスからJSON配列またはSplunkソフトウェアのネイティブタイプ値を返します。 json_extract

JSONノードの値を挿⼊するか、または指定された値で上書きし、更新後のJSONオブジェクトを返します。 json_set

JSONオブジェクトが有効なJSON構⽂を使⽤しているかどうかを評価して、真(True)または偽(False)を返します。 json_ valid

j s o n_ o bj ec t( < m em ber s > )


キー/値ペアのメンバーから新しいJSONオブジェクトを作成します。

使⽤法

<key>または<value>に対して⽂字列を指定する場合は、⽂字列を⼆重引⽤符で囲む必要があります。<key>は⽂字列である必要
があります。<value>には、⽂字列、数値、論理値、NULL、複数値フィールド、配列、または別のJSONオブジェクトを指定
できます。

これらの関数は評価式の⼀部としてevalおよびwhereコマンドと共に使⽤できます。

名前付き引数を使⽤するには、配列で引数のペアを指定して、値を⾓括弧で囲みます。名前付き引数の構⽂
はjson_object(members: [<key>, <value>,...])です。例:

... json_object(members: ["name", "maria", "surname", "dubois"])

イベントでJSONオブジェクトを作成するためのjson_object関数の異なる使い⽅の例を⽰します。

1 .基本J S O N オブジェクトを作成する

以下の例では{ "name": "maria" }という基本JSONオブジェクトを作成します。

... | eval name = json_object("name", "maria")

2.複数値フィールドを使⽤してJ S O N オブジェクトを作成する

次の例では、キーnameというキーを使⽤し、「maria」と「arun」という値を含むfirstnamesという名前の複数値フィー
ルドを作成します。作成されるJSONオブジェクトは{ "name": ["maria", "arun"] } です。

... | eval firstnames = json_object("name", mvappend("maria", "arun"))

3.J S O N 配列を使⽤してJ S O N オブジェクトを作成する

次の例では、値のJSON配列を使⽤したJSONオブジェクトを作成します。
... | eval locations = json_object("cities", json_array("London", "Sydney", "Berlin", "Santiago"))

{ "cities": ["London", "Sydney", "Berlin", "Santiago"] }というJSONオブジェクトが作成されます。

4 .ネストされたJ S O N オブジェクトを作成する

次の例では、他のJSONオブジェクトと、gamelistという複数値またはJSON配列フィールドを使⽤する、ネストされた
JSONオブジェクトを作成します。
...| eval games = json_object("category", json_object("boardgames", json_object("cooperative", gamelist)))

次のJSONオブジェクトが作成されます。

{
"games": {
"category": {
"boardgames": {
"cooperative": [ "Pandemic", "Forbidden Island", "Castle Panic" ]
}

59
}
}
}

j s o n_ ar r ay ( < v alues > )


値のリストを使⽤してJSON配列を作成します。

使⽤法

<value>には、⽂字列、数値、論理値など、どのような値でも指定できます。また、json_object関数を使⽤して値を指定するこ
ともできます。
これらの関数は評価式の⼀部としてevalおよびwhereコマンドと共に使⽤できます。

名前付き引数を使⽤するには、配列で値を指定して、値を⾓括弧で囲みます。名前付き引数の構⽂はjson_array(values:
[<value>, <value>...])です。例:

... json_array(values: ["buttercup", "fluttershy", "rarity"])

イベントでJSON配列を作成するためのjson_array関数の異なる使い⽅の例を⽰します。

基本J S O N 配列を作成する

以下の例では、["buttercup", "fluttershy", "rarity"] という単純なJSON配列を作成します。

... | eval ponies = json_array("buttercup", "fluttershy", "rarity")

⽂字列とJ S O N オブジェクトからJ S O N 配列を作成する

次の例では、duboisと⾔う⽂字列とjson_object関数で配列値を定義しています。

... | eval surname = json_array("dubois", json_object("name", "patel"))

[ "dubois", {"name": "patel}" ]というJSON配列が作成されます。

j s o n_ ex tr ac t( < j s o n> , < paths > )


この関数は、ピースJSONと0以上のパスから値を返します。値は、JSON配列またはSplunkソフトウェアのネイティブタイ
プ値として返されます。

使⽤法

変換または抽出される内容は、JSONのピースまたはJSONと1つ以上のパスのどちらを指定したかによって異なります。

構⽂ 説明
JSONフィールドをSplunkソフトウェアのネイティブタイプに変換します。例:

json_extract(<json>) JSON⽂字列を⽂字列に変換
JSON論理値を論理値に変換
JSON NULLをNULLに変換

<path>で指定された値を<json>から抽出して、値をネイティブタイプに変換します。パスが配列を指す場合
json_extract(<json>, <path>)
は、JSON配列になります。

json_extract(V, <path>,
<json>からすべてのパスを抽出してJSON配列として返します。
<path>, ...)

これらの関数は評価式の⼀部としてevalおよびwhereコマンドと共に使⽤できます。

名前付き引数を使⽤するには、配列でパスを指定して⾓括弧で囲みます。名前付き引数の構⽂はjson_extract(json:<json>,
paths:[<path>, <path>...])です。例:

... json_extract(json: cities, paths:["cities{}.name", "cities{}.Bridges{}"])

60

以下の例では、イベントのcitiesというフィールドにあるJSONオブジェクトを使⽤します。

{
"cities": [
{
"name": "London",
"Bridges": [
{ "name": "Tower Bridge", "length": 801 },
{ "name": "Millennium Bridge", "length": 1066 }
]
},
{
"name": "Venice",
"Bridges": [
{ "name": "Rialto Bridge", "length": 157 },
{ "name": "Bridge of Sighs", "length": 36 },
{ "name": "Ponte della Paglia" }
]
},
{
"name": "San Francisco",
"Bridges": [
{ "name": "Golden Gate Bridge", "length": 8981 },
{ "name": "Bay Bridge", "length": 23556 }
]
}
]
}

1 .フィールド内のJ S O N オブジェクト全体を抽出する

次の例では、citiesフィールドからJSONオブジェクト全体を返します。citiesフィールドにはオブジェクトが1つだけ
含まれ増す。オブジェクト全体がキーになります。この抽出によって任意のタイプの値が返されます。

... | eval extract_cities = json_extract(cities)

フィール 結果

{"cities":[{"name":"London","Bridges":[{"name":"Tower Bridge","length":801},{"name":"Millennium
Bridge","length":1066}]},{"name":"Venice","Bridges":[{"name":"Rialto Bridge","length":157},{"name":"Bridge of
extract_cities
Sighs","length":36},{"name":"Ponte della Paglia"}]},{"name":"San Francisco","Bridges":[{"name":"Golden Gate
Bridge","length":8981},{"name":"Bay Bridge","length":23556}]}]}

2.フィールド内で最初にネストされているJ S O N オブジェクトを抽出する

次の例では、JSONオブジェクトからロンドンに関する情報を抽出しています。この抽出によって任意のタイプの値が
返されます。
... | eval London=json_extract(cities,"cities{0}")

フィールド 結果

London {"name":"London","Bridges":[{"name":"Tower Bridge","length":801},{"name":"Millennium Bridge","length":1066}]}

3.フィールド内で3番⽬にネストされているJ S O N オブジェクトを抽出する

次の例では、JSONオブジェクトからサンフランシスコに関する情報を抽出しています。この抽出によって任意のタイ

61
プの値が返されます。

... | eval "San_Francisco"=json_extract(cities,"cities{2}")

フィールド 結果
{"name":"San Francisco","Bridges":[{"name":"Golden Gate Bridge","length":8981},{"name":"Bay
San_Francisco
Bridge","length":23556}]}

4 .フィールド内でネストされている各J S O N オブジェクトから特定のキーを抽出する

次の例では、JSONオブジェクトから都市名を抽出しています。この抽出によって任意のタイプの値が返されます。

... | eval my_cities=json_extract(cities,"cities{}.name")

フィールド 結果

my_cities ["London","Venice","San Francisco"]

5.フィールド内でネストされている各J S O N オブジェクトから特定のキー/値ペアのセットを抽出する

次の例では、JSONオブジェクトからすべての都市の各橋に関する情報を抽出しています。この抽出によって任意のタ
イプの値が返されます。
... | eval Bridges=json_extract(cities,"cities{}.Bridges{}")

フィー 結果
ルド

[{"name":"Tower Bridge","length":801},{"name":"Millennium Bridge","length":1066},{"name":"Rialto


Bridges Bridge","length":157},{"name":"Bridge of Sighs","length":36},{"name":"Ponte della Paglia"},{"name":"Golden Gate
Bridge","length":8981},{"name":"Bay Bridge","length":23556}]

6 .フィールド内でネストされている各J S O N オブジェクトから特定の値を抽出する

次の例では、JSONオブジェクトからすべての都市の橋の名前を抽出しています。この抽出によって任意のタイプの値
が返されます。

... | eval Bridge_names=json_extract(cities,"cities{}.Bridges{}.name")

フィールド 結果

["Tower Bridge","Millennium Bridge","Rialto Bridge","Bridge of Sighs","Ponte della Paglia","Golden Gate


Bridge_names
Bridge","Bay Bridge"]

7 .フィールド内でネストされている特定のJ S O N オブジェクトから特定のキー/値ペアを抽出する

次の例では、JSONオブジェクトから3番⽬の都市の最初の橋の名前と⻑さを抽出しています。この抽出によって任意の
タイプの値が返されます。
... | eval GG_Bridge=json_extract(cities,"cities{2}.Bridges{0}")

フィールド 結果

GG_Bridge {"name":"Golden Gate Bridge","length":8981}

8 .フィールド内でネストされている特定のJ S O N オブジェクトから特定の値を抽出する

次の例では、JSONオブジェクトから3番⽬の都市の最初の橋の⻑さを抽出しています。この抽出によって任意のタイプ
の値が返されます。

... | eval GG_Bridge_length=json_extract(cities,"cities{2}.Bridges{0}.length")

フィールド 結果
GG_Bridge_length 8981

62
j s o n_ s et( < j s o n> , < path_ v alue_ pai r s > )
JSONノードの値を挿⼊するか、または指定された値で上書きし、更新後のJSONオブジェクトを返します。

使⽤法

これらの関数は評価式の⼀部としてevalおよびwhereコマンドと共に使⽤できます。

パスにキーのリストが含まれていて、キーが存在しない場合は、チェーン内のすべてのキーが作成されます。
JSONオブジェクトとパスが⼀致しない場合は、更新はスキップされますが、エラーは⽣成されません。たとえば、
{"a": "b"}というオブジェクトに対して、json_set(.., "a.c", "d")を実⾏すると、「a」は⽂字列値で「a.c」はネスト化され
たオブジェクトを⽰すため、結果は返されません。
すでに値が存在して、⼀致する⾮値タイプであれば、json_set関数はデフォルトで値を上書きします。値のタイプは適
⽤されません。たとえば、数値を⽂字列、論理値、NULLなどで上書きできます。

名前付き引数を使⽤するには、配列でパス/値ペアを指定して、ペアを⾓括弧で囲みます。名前付き引数の構⽂
はjson_set(json:<json>, path_value_pairs:[<path>, <value>...])です。例:

... json_set(json:games, path_value_pairs:["category.boardgames.cooperative{2}", "name":"Sherlock Holmes: Consulting


Detective"])

以下の例では、イベントのgamesというフィールドにあるJSONオブジェクトを使⽤します。

{
"category": {
"boardgames": {
"cooperative": [
{
"name": "Pandemic"
},
{
"name": "Forbidden Island"
},
{
"name": "Castle Panic"
}
]
}
}
}

1 .既存のJ S O N 配列の値を上書きする

次の例では、JSONオブジェクトの[category.boardgames.cooperative]というパスの"Castle Panic"という値を上書きしま
す。値は"name":"Sherlock Holmes: Consulting Detective"に置換されます。結果はmy_gamesという新しいフィールドに保存
されます。
位置のカウントは0から開始されます。3番⽬の位置は2であるため、パスでは{2}と指定しています。

... | eval my_games = json_set(games,"category.boardgames.cooperative{2}", "name":"Sherlock Holmes: Consulting Detective")

サーチ結果は次のとおりです。

フィール 結果

{"category":{"boardgames":{"cooperative":["name":"Pandemic", "name":"Forbidden Island", "name":"Sherlock Holmes:


my_games
Consulting Detective"]}}}

2.既存のJ S O N オブジェクトに値のリストを挿⼊する

次の例では、⼈気の⾼いゲームのリスト["name":"Settlers of Catan", "name":"Terraforming Mars", "name":"Ticket to


Ride"]をJSONオブジェクトの[category.boardgames.competitive]というパスに挿⼊します。

63
competitiveというキーはパス上に存在しないため、作成されます。json_array関数を使⽤して、値のリストをboardgames
JSONオブジェクトに付加します。
...| eval my_games = json_set(games,"category.boardgames.competitive", json_array("name":"Settlers of Catan",
"name":"Terraforming Mars", "name":"Ticket to Ride"))

サーチ結果は次のとおりです。

フィール 結果

{"category":{"boardgames":{"cooperative":["name":"Pandemic", "name":"Forbidden Island", "name":"Sherlock Holmes:
my_games Consulting Detective"],"competitive": ["name":"Settlers of Catan", "name":"Terraforming Mars", "name":"Ticket to
Ride"]}}}

JSONオブジェクトは以下のようになります。

{
"category": {
"boardgames": {
"cooperative": [
{
"name": "Pandemic"
},
{
"name": "Forbidden Island"
},
{
"name": "Castle Panic"
}
]
},
"competitive": [
{
"name": "Settlers of Catan"
},
{
"name": "Terraforming Mars"
},
{
"name": "Ticket to Ride"
}
]
}
}

3.既存のJ S O N オブジェクトにキー/値ペアのセットを挿⼊する

次の例では、論理値を指定してゲームの在庫の有無を指定するキー/値ペアのセットを挿⼊します。これらのペアは、
JSONオブジェクトの[category.boardgames.competitive]というパスに挿⼊されます。json_array関数を使⽤して、キー/値
ペアのリストをboardgames JSONオブジェクトに付加します。

...| eval my_games = json_set(games,"category.boardgames.competitive{}.available", true())

サーチ結果は次のとおりです。

フィール 結果

{"category":{"boardgames":{"cooperative":["name":"Pandemic", "name":"Forbidden Island", "name":"Sherlock Holmes:
my_games Consulting Detective"],"competitive": ["name":"Settlers of Catan", "available":true, "name":"Terraforming Mars",
"available":true, "name":"Ticket to Ride", "available":true]}}}

JSONオブジェクトは以下のようになります。
64
{
"category": {
"boardgames": {
"cooperative": [
{
"name": "Pandemic"
},
{
"name": "Forbidden Island"
},
{
"name": "Castle Panic"
}
]
},
"competitive": [
{
"name": "Settlers of Catan",
"available": true
},
{
"name": "Terraforming Mars",
"available": true
},
{
"name": "Ticket to Ride",
"available": true
}
]
}
}

Settlers of Catanというゲームが在庫切れであれば、そのavailableキーの値をfalse()で上書きします。

例:

... | eval my_games = json_set(games,"category.boardgames.competitive{0}.available", false())

サーチ結果は次のとおりです。

フィール 結果

{"category":{"boardgames":{"cooperative":["name":"Pandemic", "name":"Forbidden Island", "name":"Sherlock Holmes:


my_games Consulting Detective"],"competitive": ["name":"Settlers of Catan", "available":false, "name":"Terraforming Mars",
"available":true, "name":"Ticket to Ride", "available":true]}}}

JSONオブジェクトは以下のようになります。

{
"category": {
"boardgames": {
"cooperative": [
{
"name": "Pandemic"
},
{
"name": "Forbidden Island"
},
{
"name": "Castle Panic"
}
]
},

65
"competitive": [
{
"name": "Settlers of Catan",
"available": false
},
{
"name": "Terraforming Mars",
"available": true
},
{
"name": "Ticket to Ride",
"available": true
}
]
}
}

j s o n_ v ali d( < j s o n> )


JSONのピースが有効なJSON構⽂を使⽤しているかどうかを評価して、真(True)または偽(False)を返します。

使⽤法

これらの関数は評価式の⼀部としてevalおよびwhereコマンドと共に使⽤できます。

名前付き引数を使⽤するには、引数値の前に引数名を指定する必要があります。例:
... json_valid(json:names)

J S O N オブジェクトを検証する

次の例では、firstnamesフィールドでJSONオブジェクトの{ "names": ["maria", "arun"] }を検証します。

... | eval name = json_valid(firstnames)

関連項⽬
関数
評価関数のクイックリファレンス

数学関数
以下のリストには数学の計算に使⽤できる関数が含まれます。

関数、およびネスト関数で⽂字列および数値フィールドを使⽤する際の情報は、「評価関数」をご覧ください。
これらの関数で使⽤できる算術演算⼦のリストは、evalコマンドの「使⽤法」の「演算⼦」を参照してください。

abs ( X )

説明

この関数は数値Xを取り、その絶対値を返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例はabsnumと呼ばれるフィールドを作成し、その他委は数値フィールドnumberの絶対値です。

... | eval absnum=abs(number)

66
c ei li ng ( X ) ま た は c ei l( X )

説明

この関数は値Xを次に⼤きな整数に丸めます。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

完全な関数名ではなくceil(X)という短縮形を使⽤できます。

基本的な例

以下の例は、n=2を返します。
... | eval n=ceil(1.9)

ex ac t( X )

説明

この関数は、数値eval計算を⼤きな精度で書式設定された出⼒を表⽰します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

... | eval n=exact(3.14 * num)

ex p( X )

説明

この関数は数値Xを取り、その指数関数eXを返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例ではy=e3を返します。
... | eval y=exp(3)

f lo o r ( X )

説明

この関数は値Xを次に⼩さな整数に丸めます。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例では「1」を返します。

67
... | eval n=floor(1.9)

ln( X )

説明

この関数は数値Xを取り、その⾃然対数を返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

この例は、bytesの値の⾃然対数を返します。
... | eval lnBytes=ln(bytes)

lo g ( X ,Y )

説明

この関数は、1つまたは2つの数値引数を取り、2番⽬の引数を底とした最初の引数Xの対数を返します。2番⽬の引数Yが省略
されている場合、この関数は10を底とした数値Xの対数を返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

... | eval num=log(number,2)

pi ( )

説明

この関数は引数を取らず、精度が11桁のpi定数を返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例は円形の領域を計算します。つまりpi()に半径の⼆乗を乗算します。

... | eval area_circle=pi()*pow(radius,2)

po w ( X ,Y )

説明

この関数は2つの数値引数XおよびYを取り、XYを返します。XのY乗です。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

68
基本的な例

以下の例は円形の領域を計算します。つまりpo()に半径の⼆乗を乗算します。

... | eval area_circle=pi()*pow(radius,2)

r o und( X ,Y )

説明

この関数は1つまたは2つの数値引数XとYを取り、XをYに指定されている⼩数位で丸めた値を返します。デフォルトでは、整
数に丸められます。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例は、n=4を返します。
... | eval n=round(3.5)

以下の例は、n=2.56を返します。
... | eval n=round(2.555, 2)

次の例では、-1を使⽤して、10の位に丸める精度を指定しています。

... | eval n=round(155, -1)

このサーチはn=150を返します。

sigfig(X)

説明

この関数は1つの数値引数Xを取り、その数値を適切な有効数字に丸めます。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

sigfigの計算は、数値を⽣成する計算のタイプに基づいています。

乗算や除算の場合、すべてのオペランドの有効数字の最⼩数が結果に含まれます。
加算および減算の場合、すべてのオペランドの最低精度の数値と同じ⼩数位の数が結果に含まれます。
たとえば、123.0と4.567の数値の⼩数位の精度は異なります。最初の数値は、⼩数点以下1桁であるため精度が低いです。2
番⽬の数値は、⼩数点以下3桁であるため精度が⾼いす。

123.0 + 4.567 = 127.567という計算の場合、sigfig関数では、最も少ない⼩数位の数が返されます。この例では、1つの⼩数


位のみが返されます。最後の有効数字の右側の数値が5よりも⼤きいため、127.6という結果が返されます。

基本的な例

例1: 次の例は、sigfig関数の仕組みを⽰しています。計算1.00*1111は値n=1111を返しますが、以下のsigfig関数を使⽤する
サーチはn=1110を返します。

... | eval n=sigfig(1.00*1111)

この例では、1.00には3つの有効数字があり、1111には4つの有効数字があります。この例では、すべてのオペランドの有効
数字の最⼩数は3です。最終結果はsigfig関数を使⽤して3桁に丸められ、n=1111ではなくn=1110が返されます。

69
例2:計算の結果で、⼩数位の最⼩桁付近の精度が異なってしまうことがあります。たとえば、次のサーチは100個の値の平
均を計算します。
| makeresults count=100 | eval test=3.99 | stats avg(test)

この計算の結果は次のようになります。

avg(t est )

3.9900000000000055

カウントを10000に変更すると、異なる結果が返されます。

| makeresults count=10000 | eval test=3.99 | stats avg(test)

この計算の結果は次のようになります。

avg(t est )

3.990000000000215

これは、数値が倍精度の浮動⼩数点数として扱われるためです。

この問題を緩和するには、sigfig関数を使⽤して、返される有効桁数を指定します。

ただし、先にサーチのstatsコマンド部分の変更が必要です。avg(test)のフィールド名を変更して括弧を削除する必要があり
ます。たとえば、stats avg(test) AS testです。sigfig関数では、Xに数値またはフィールド名を指定しますが、sigfig関数は
他の関数のようなフィールド名(この例ではavg)は受け⼊れません。

返される⼩数位の桁数を指定するには、フィールド名を1で乗算し、⼩数点以下の0の数で⼩数位の桁数を指定します。たと
えば、⼩数位4桁までが返されるようにするには、フィールド名を1.0000で乗算します。⼩数位2桁が返されるようにするに
は、次の例のように1.00で乗算します。
| makeresults count=10000 | eval test=3.99 | stats avg(test) AS test | eval new_test=sigfig(test*1.00)

この計算の結果は次のようになります。

テスト

3.99

s qr t( X )

説明

この関数は1つの数値引数Xを取り、その平⽅根を返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例では「3」を返します。

... | eval n=sqrt(9)

多値評価関数
以下のリストは、複数値フィールドで使⽤できる、または複数値フィールドを返す関数を含んでいます。
関数、およびネスト関数で⽂字列および数値フィールドを使⽤する際の情報は、「評価関数」をご覧ください。

c o m m ands ( X )

説明

この関数はサーチ⽂字列、またはサーチ⽂字列Xを含むフィールドを取り、Xで使⽤されるコマンドのリストを含む複数の
70
この関数はサーチ⽂字列、またはサーチ⽂字列Xを含むフィールドを取り、Xで使⽤されるコマンドのリストを含む複数の
フィールドを返します。

使⽤法

この関数はaudit.logイベントの分析以外には通常推奨しません。

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例は「search」、「stats」、および「sort」が含まれる複数値フィールドXを返します。

... | eval x=commands("search foo | stats count | sort count")

m v append( X ,...)

説明

この関数は任意の数の引数を取得して、すべての値の複数値結果を返します。引数には、⽂字列、複数値フィールド、また
は単⼀値フィールドになります。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

次の例は、リテラル⽂字列値のlocalhostとフィールド名のsrcipの2つの値を付加する⽅法を⽰しています。

... | eval fullName=mvappend("localhost", srcip)

次の例は、ネストされたmvappend関数の使い⽅を⽰しています。

内側のmvappend関数には、リテラル⽂字列値のlocalhostとフィールド名のsrcipの2つの値があります。
外側のmvappend関数には、内側のmvappend関数、フィールド名のdestip、そしてリテラルIPアドレスの192.168.1.1の3つの
値があります。

... | eval ipaddresses=mvappend(mvappend("localhost", srcip), destip, "192.168.1.1")

結果は、配列["localhost", <values_in_scrip>, <values_in_destip>, "192.168.1.1"]としてipaddressesという新しいフィールドに


書き込まれます。

m v c o unt( M VF IEL D )

説明

この関数は、フィールドを取り、各結果についてそのフィールドの値の数を返します。フィールドが複数値フィールドであ
る場合は、そのフィールドの値の数を返します。フィールドに値が1つだけ含まれる場合、この関数は1を返します。フィー
ルドに値が含まれない場合、この関数はNULLを返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

... | eval n=mvcount(multifield)

その他の例:

以下の例では、mvcount()関数はTo、From、およびCcフィールドに含まれるメールアドレスの数を返し、指定された「_count」
フィールドにアドレスを保存します。
eventtype="sendmail" | eval To_count=mvcount(split(To,"@"))-1 | eval From_count=mvcount(From) | eval Cc_count=
mvcount(split(Cc,"@"))-1

71
このサーチでは、Toフィールドの値を取り、split関数を使⽤してメールアドレスを@記号で分割しています。Ccフィールドで
もsplit関数を同じ⽬的で使⽤しています。

Fromフィールドに(通常はそうであるように)メールアドレスが1つしか存在しない場合、mvcount(From)関数は1を返しま
す。Ccアドレスが含まれていない場合、イベントに対してCcフィールドが存在しない可能性があります。この場合、
mvcount(cc)関数はNULLを返します。

m v dedup( X )

説明

この関数は複数値フィールドXを取得して、重複した値を省いた複数値フィールドを返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

... | eval s=mvdedup(mvfield)

m v f i lter ( X )

説明

この関数は任意の論理演算式Xに基づいて、複数値フィールドをフィルタリングします。論理演算式Xは、⼀度に1つのフィー
ルドのみを参照できます。

使⽤法

この関数は、フィールドxのNULL値も返します。NULL値を使⽤したくない場合は、以下のいずれかの式を使⽤します。

mvfilter(!isnull(x))
mvfilter(isnotnull(x))

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例は、.netまたは.orgで終わるフィールドemailのすべての値を返します。

... | eval n=mvfilter(match(email, "\.net$") OR match(email, "\.org$"))

m v f i nd( M VF IEL D ,"R EGEX ")

説明

この関数は、複数値フィールドMVFIELDの値で「REGEX」正規表現に⼀致するものを探します。⼀致する値があった場
合、最初に⼀致した値のインデックスが返されます(0から始まる)。⼀致する値がない場合は、NULLが返されます。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

... | eval n=mvfind(mymvfield, "err\d+")

m v i ndex ( M VF IEL D ,ST A R T IND EX , END IND EX )

説明

この関数は2つまたは3つの引数を取り、指定されたインデックス値を使⽤して複数値フィールドのサブセットを返します。
フィールドMVFIELDと数値STARTINDEXが必要です。数値ENDINDEXを含めても含めなくてもかまいません。

72
使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

インデックスは0から開始します。複数値フィールドで5つの値がある場合、最初の値のインデックスは0です。2番⽬の値の
インデックスは1です。

Startindex、endindexの両⽅が負の値になることもあります。この場合、-1が最後のエレメントになります。
Endindexを指定しない場合は、単純にstartindexに対応する値が返されます。

インデックスが範囲外または無効な場合、結果はNULLになります。

基本的な例

インデックスは0から開始するため、この例ではmultifield内の3番⽬の値が返されます(存在する場合)。
... | eval n=mvindex(multifield, 2)

その他の例:

次のサーチは、<field>の値を最⼤10個表⽰します。

STARTINDEXは、最後の値である-1から始まる範囲です。範囲は最後の10個の値である-1-10です。ENDINDEXは、フィー
ルドの最後の値である-1を返します。

複数値フィールドに20個の値がある場合は、最後の10個の値のみが返されます。
複数値フィールドに3個の値しかない場合は、3個の値のみが返されます。

... | eval keep=mvindex(<field>,-1-10,-1)

m v j o i n( M VF IEL D ,ST R )

説明

この関数は複数値フィールド(MVFIELD)と区切り⽂字(STR)の2つの引数を使⽤します。この関数はMVFIELDに含まれる
個々の値をSTRの値を区切り⽂字として使って連結します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

値「1」、「2」、「3」、「4」、「5」を含む「ベース」と呼ばれる複数値フィールドがあります。値はスペースで区切られ
ます。単⼀値フィールドを作成したい場合は、区切り⽂字としてORを使⽤します。たとえば「1 OR 2 OR 3 OR 4 OR 5」。

以下のサーチはbaseフィールドを値で作成します。サーチは次にmvjoin関数の結果を使⽤してjoinedフィールドを作成しま
す。

... | eval base=mvrange(1,6), joined=mvjoin('base'," OR ")

この例は、セミコロンを区切り⽂字に使って、「foo」の個別の値を結合します。

... | eval n=mvjoin(foo, ";")

m v m ap( X ,Y )

説明

この関数は、複数値フィールド(X)の各値に対して操作(Y)を反復して実⾏し、結果のリストが格納された複数値フィールドを
返します。
Xは、単⼀のフィールドを参照する複数値式です。
Yは、結果式です。

使⽤法
73
これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

次の例は、fooの各値を10倍します。
... | eval foo = mvmap(foo, foo*10)

次の例は、fooの各値を単⼀値フィールドbarの値で乗算します。
... | eval foo = mvmap(foo, foo*bar)

次の例は、fooの2番⽬と3番⽬の値を単⼀値フィールドbarの値で乗算します。

... | eval foo = mvmap(mvindex(foo,1,2), foo*bar)

m v r ang e( X ,Y ,Z )

説明

この関数は、数値範囲の複数値フィールドを作成します。この関数は最⼤3つの引数を取ることができます。開始数X、終了
数Y (フィールドからは除外されます)、そしてステップ増分Z (任意)です。増分が7dなどのタイムスパンの場合は、開始数と
終了数はUNIX時間として処理されます。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

この例は、値1、3、5、7、9を持つ複数値フィールドを返します。

... | eval mv=mvrange(1,11,2)

以下の例では、1/1/2018のUNIXタイムスタンプを開始⽇付、4/19/2018のUNIXタイムスタンプを終了⽇付、そして増分と
して7⽇間を使⽤しています。

| makeresults | eval mv=mvrange(1514834731,1524134919,"7d")

この例では、UNIXタイムスタンプが⼊った複数値フィールドが返されます。結果は、以下のような内容で[統計]タブに表⽰
されます。

_t im e mv

1514834731
1515439531
1516044331
1516649131
1517253931
1517858731
1518463531
1519068331
2018-04-10 12:31:03 1519673131
1520277931
1520879131
1521483931
1522088731
1522693531
1523298331
1523903131

m v s o r t( X )

説明

この関数は複数値フィールドXを使⽤し、その値を辞書的にソートした複数値フィールドを返します。
74
使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

辞書的順序はアイテムをそのアイテムをコンピューターメモリーでエンコードするのに使⽤される値に基づいて並べ替えま
す。Splunkソフトウェアでは、これはほとんど常にUTF-8エンコードで、ASCIIよりも多くの機能があります。
数字は⽂字の前に並び替えられます。⽂字は最初の桁に基づいて並び替えられます。たとえば、10, 9, 70, 100は辞書
的には10, 100, 70, 9に並べ替えられます。
⼤⽂字は⼩⽂字の前に来ます。
記号は標準ではありません。数値の前に並び替えられる記号もあります。その他の記号は⽂字の前または後に並び替え
られます。

基本的な例

... | eval s=mvsort(mvfield)

m v z i p( X ,Y ,"Z ")

説明

この関数は、2つの複数値フィールドX、Yを使⽤し、Xの最初の値、Yの最初の値、Xの2番⽬の値、Yの2番⽬の値の順序で、
両⽅のフィールドを連結させます。第三の引数Zはオプショナルで、2つの値を結合する区切り⽂字を指定するために使⽤し
ます。デフォルトの区切り⽂字はカンマです。

使⽤法

これはPyhon zipコマンドと似ています。

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

... | eval nserver=mvzip(hosts,ports)

その他の例:

複数のmvzip関数をまとめてネストし、3つの個別のフィールドから1つの複数値フィールドthree_fieldsを作成できます。パイ
プ( | )⽂字は、フィールド値間の区切り⽂字として使⽤されます。

...| eval three_fields=mvzip(mvzip(field1,field2,"|"),field3,"|")

(この例を提供してくださったSplunkユーザーcmerrimanさんに感謝の意を表明します。)

s pli t( X ,"Y ")

説明

この関数はフィールドXと区切り⽂字Yの2つの引数を使⽤し、Xの値を区切り⽂字Yで分割した複数値フィールドを返しま
す。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

Splunkソフトウェアには⼀連の複数値関数が含まれています。「多値評価関数」、「多値統計関数」、「グラフ関数」を参
照してください。

基本的な例

... | eval n=split(foo, ";")

関連項⽬

75
以下の複数値コマンドを参照してください。

makemv、mvcombine、mvexpand、nomv

統計的評価関数
以下のリストには統計の計算に使⽤できる評価関数が含まれます。
関数、およびネスト関数で⽂字列および数値フィールドを使⽤する際の情報は、「評価関数」をご覧ください。

これらの関数に加えて、stats、chart、および関連するコマンドで使⽤できる⼀連の包括的な統計関数があります。

m ax ( X ,...)

説明

この関数は、任意の数の数字または⽂字列引数を取り、最⼤を返します。⽂字列は数字よりも⼤きいです。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

この例では、fieldの値に応じて「foo」またはフィールドのいずれかが返されます。

... | eval n=max(1, 3, 6, 7, "foo", field)

m i n( X ,...)

説明

この関数は、任意の数の数字または⽂字列引数を取り、最⼩を返します。⽂字列は数字よりも⼤きいです。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

この例では、fieldの値に応じて1またはフィールドが返されます。
... | eval n=min(1, 3, 6, 7, "foo", field)

r ando m ( )

説明

この関数は引数を取らず、0から231-1までのランダムな整数を返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例は0...2147483647などのランダムな整数を返します。

... | eval n=random()

次の例は、指定範囲内の乱数を返します。この例の乱数の範囲は1〜100,000です。

... | eval n=(random() % 100000) + 1


76
この例は、乱数を取り、モジュロ演算⼦( % )を使⽤してその乱数を100000で除算します。これにより、返される乱数は必ず
100000より⼩さくなります。除算の結果は1増加されるため、結果は必ず1以上となります。

テキスト関数
以下のリストには⽂字列値と⼀緒に使⽤できる関数が⼀覧されています。

関数、およびネスト関数で⽂字列および数値フィールドを使⽤する際の情報は、「評価関数」をご覧ください。

len( X )

説明

この関数は⽂字列Xの⽂字⻑を返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

この関数は、複数値フィールドではサポートされません。

基本的な例

次のような結果のセットがあるとします。

_t im e nam es

2020-01-09 16:35:14 buttercup


2020-01-09 16:35:14 rarity

2020-01-09 16:35:14 tenderhoof

2020-01-09 16:35:14 dash


2020-01-09 16:35:14 mistmane

len関数を使⽤して、namesフィールドの⻑さを決定します。

... | eval length=len(names)

結果には、namesフィールドの値の⽂字カウントが⽰されます。

_t im e lengt h nam es
2020-01-09 16:35:14 9 buttercup

2020-01-09 16:35:14 6 rarity

2020-01-09 16:35:14 10 tenderhoof


2020-01-09 16:35:14 4 dash

2020-01-09 16:35:14 8 mistmane

lo w er ( X )

説明

この関数は⽂字列引数を取り、⼩⽂字での⽂字列を返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。
77
この関数は複数値フィールドで使⽤できます。

基本的な例

この例は、フィールドusernameの値を⼩⽂字で返します。

... | eval username=lower(username)

ltr i m ( X ,Y )

説明

この関数はフィールドXとYの1つまたは2つの引数を使⽤し、Y内の⽂字を左側からトリミングしたXを返します。Yが指定さ
れない場合、タブや空⽩が除外されます。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

この関数は、複数値フィールドではサポートされません。

基本的な例

以下の例では先頭のスペースおよび⽂字列の左側からの⽂字Zの表⽰全てを切り取っています。返される値はx=「abcZZ」
です。
... | eval x=ltrim(" ZZZZabcZZ ", " Z")

r eplac e( X ,Y ,Z )

説明

この関数は、⽂字列X内の正規表現⽂字列Yに⼀致する各⽂字列を、代替⽂字列Zで修正した⽂字列を返します。3番⽬の引数
Zも、正規表現に⼀致するグループを参照することができます。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

この関数は、複数値フィールドではサポートされません。

バックスラッシュ(\)⽂字を置換するにはバックスラッシュを2回エスケープする必要があります。これは、replace関数がeval
式で使⽤されるためです。eval式は、正規表現をPCREに渡す前に1レベルのエスケープを実⾏します。そしてPCREでも、エ
スケープを実⾏します。「SPLおよび正規表現」を参照してください。

基本的な例

以下の例は⽇付を、⽉と⽇の数値を⼊れ替えて返します。⼊⼒が1/14/2017であると、返す値は14/1/2017になります。

... | eval n=replace(date, "^(\d{1,2})/(\d{1,2})/", "\2/\1/")

r tr i m ( X ,Y )

説明

この関数はフィールドXとYの1つまたは2つの引数を使⽤し、Y内の⽂字を右側からトリミングしたXを返します。Yが指定さ
れない場合、タブや空⽩が除外されます。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

この関数は、複数値フィールドではサポートされません。

基本的な例

78
以下の例では「n= ZZZZabc」を返します。

... | eval n=rtrim(" ZZZZabcZZ ", " Z")

s path( X ,Y )

説明

この関数は2つの引数、⼊⼒ソースフィールドX、およびspath式Y (Xから抽出する値の場所を表したXMLまたはJSON形式の
パス)を取ります。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

この関数は、複数値フィールドではサポートされません。

Yがリテラル⽂字の場合は、spath(X,"Y")で囲む必要があります。Yがフィールド名(パスの値を持つ)の場合は、引⽤符は必要
ありません。結果が複数値フィールドになることもあります。詳細は、spathコマンドを参照してください。

基本的な例

この例は、locDescエレメントの値を返します。

... | eval locDesc=spath(_raw, "vendorProductSet.product.desc.locDesc")

以下の例は、twitterイベントからhashtagsを返します。
index=twitter | eval output=spath(_raw, "entities.hashtags")

s ubs tr ( X ,Y ,Z )

説明

この関数は2つまたは3つの引数をとります。必須引数は⽂字列であるX、数値であるYです。Zは省略可能で数値です。この
関数はYで指定されたインデックスから始まり、Zに指定されている⽂字数までの、Xの⽂字列の⼀部を返します。Zが指定さ
れていない場合は、残りの⽂字列を返します。

使⽤法

インデックスは1から始まるSQLiteセマンティクスに従います。⽂字列の最後からの開始を指⽰するために、負のインデック
スを使⽤することができます。

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

この関数は、複数値フィールドではサポートされません。

基本的な例

この例では、「str」と「ing」を連結して「string」を返します。

... | eval n=substr("string", 1, 3) + substr("string", -3)

tr i m ( X ,Y )

説明

この関数は1つまたは2つの⽂字列引数XおよびYを使⽤し、Y内の⽂字を両側からトリミングしたXを返します。Yが指定され
ない場合、タブや空⽩が除外されます。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

79
この関数は、複数値フィールドではサポートされません。

基本的な例

以下の例では「abc」を返します。

... | eval n=trim(" ZZZZabcZZ ", " Z")

upper ( X )

説明

この関数は1つの⽂字列引数を取り、⼤⽂字での⽂字列を返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

この関数は複数値フィールドで使⽤できます。

基本的な例

この例は、フィールドusernameの値を⼤⽂字で返します。

... | eval n=upper(username)

ur ldec o de( X )

説明

この関数は1つのURL⽂字列引数Xを取り、エスケープされていない、または復号化されたURL⽂字列を返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

この関数は、複数値フィールドではサポートされません。

基本的な例

この例では、「http://www.splunk.com/download?r=header」が返されます。
... | eval n=urldecode("http%3A%2F%2Fwww.splunk.com%2Fdownload%3Fr%3Dheader")

三⾓関数と双曲線関数
以下のリストには三⾓関数と双曲線関数の計算に使⽤できる関数が含まれます。
関数、およびネスト関数で⽂字列および数値フィールドを使⽤する際の情報は、「評価関数」をご覧ください。

ac o s ( X )

説明

この関数は、Xの逆余弦を[0, pi]のラジアン単位で計算します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例は逆余弦を計算しています。

... | eval n=acos(0)

80
以下の例では、180をpiで割り、その解を0の逆余弦で乗しています。

... | eval degrees=acos(0)*180/pi()

ac o s h( X )
説明

この関数は、Xの逆双曲線余弦をラジアン単位で計算します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

... | eval n=acosh(2)

as i n( X )

説明

この関数は、Xの逆正弦を[-pi/2,+pi/2]のラジアン単位で計算します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例は逆正弦を計算しています。
... | eval n=asin(1)

以下の例は180をpiで割り、その解を1の逆正弦で乗しています。
... | eval degrees=asin(1)*180/pi()

as i nh( X )

説明

この関数は、Xの逆双曲線正弦をラジアン単位で計算します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

... | eval n=asinh(1)

atan( X )

説明

この関数は、Xの逆正接を[-pi/2,+pi/2]ラジアン単位で計算します。

81
使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

... | eval n=atan(0.50)

atan2 ( Y , X )

説明

この関数は、Y、Xの逆正接を[-pi,+pi]ラジアン単位で計算します。

YはY軸の⽐率を⽰す値です。XはX軸の⽐率を⽰す値です。

値の計算では、両⽅の引数の記号を考慮して象限が決定されます。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

... | eval n=atan2(0.50, 0.75)

atanh( X )

説明

この関数は、Xの逆双曲線正接をラジアン単位で計算します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

... | eval n=atanh(0.500)

cos(X)

説明

この関数は、Xの余弦をラジアン単位で計算します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例は-1の余弦を計算しています。
... | eval n=cos(-1)

以下の例はpiの余弦を計算しています。
... | eval n=cos(pi())

82
c o s h( X )

説明

この関数は、Xの逆双曲線余弦をラジアン単位で計算します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

... | eval n=cosh(1)

hy po t( X ,Y )

説明

この関数は、XとYの辺を持つ直⾓三⾓形の斜辺を計算します。

この関数は、ピタゴラスの定理にある、XとYの2乗の和の平⽅根を返します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

... | eval n=hypot(3,4)

s i n( X )

説明

この関数はXの正弦を計算します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

以下の例は1の正弦を計算しています。

... | eval n=sin(1)

以下のサーチは180で割ったpiの正弦に、90を乗じて計算しています。
... | eval n=sin(90 * pi()/180)

s i nh( X )

説明

この関数はXの双曲線正弦を計算します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

83
基本的な例

... | eval n=sinh(1)

tan( X )

説明

この関数はXの正接を計算します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

... | eval n=tan(1)

tanh( X )

説明

この関数はXの双曲線正接を計算します。

使⽤法

これらの関数はeval式の⼀部としてeval、fieldformat、whereコマンドと共に使⽤できます。

基本的な例

... | eval n=tanh(1)

84
統計およびグラフ関数
統計およびグラフ関数
chart、stats、timechartコマンドとともに統計関数を使⽤できます。

関連するコマンドのサポート
関数は関連する統計およびグラフ関数とも⼀緒に使⽤できます。以下の表に、統計およびグラフ関数でサポートされるコマ
ンドと、これらの関数を使⽤できる関連コマンドを⽰します。

コマンド サポートされている関連コマンド

chart sichart

eventstats
streamstats
stats geostats
sistats
tstatsおよびmstatsコマンドがサポートする関数については、それぞれのマニュアルを参照してください。

timechart sitimechart

スパークラインチャートを作成するために使⽤できる関数は、以下の表に記載されています。スパークラインはchartおよ
びstatsコマンドだけに適⽤される関数で、その他の関数を呼び出すことができます。詳細は、『サーチ』マニュアルの
「サーチ結果へのスパークラインの追加」を参照してください。

フィールド値の処理⽅法
ほとんどの統計およびチャート関数は、フィールド値が数字であると予測しています。すべての値は数字として処理され、
数字でない値は無視されます。

以下の関数は、値が数字であっても、フィールド値をリテラル⽂字列値として処理します。

max
count estdc latest
min
distinct_count estdc_error last
mode
earliest first list
values

たとえば、distinct_count関数を使⽤し、フィールドには「1」、「1.0」、および「01」などの値が含まれているとします。
各値は⼀意の⽂字値とみなされます。
唯⼀の例外はmaxおよびmin関数です。これらの関数は可能であれば値を数字として処理します。たとえば、「1」、「1.0」、
および「01」は同じ数値として処理されます。

対応している関数と構⽂
以下の表はサポートされている統計およびグラフ関数のクイックリファレンスです。この表には、各関数の構⽂と簡単な説
明が記載されています。表内のリンクを使⽤すると、各関数の詳細と例を⾒ることができます。

関数の種類 対応している関数と構⽂ 説明
avg(X) フィールドXの値の平均を返します。

指定したフィールドに値が⼊っていた(空ではなかった)回数を返します。ま
た、evalコマンドでcount関数を使⽤すると、フィールドに特定の値が⼊ってい
count(X)
た回数をカウントすることができます。たとえば、count
eval(field_name="value")です。

distinct_count(X) フィールドの⼀意の値のカウントを返します。

estdc(X) フィールドXの⼀意の値の推定数を返します。
85
フィールドXの⼀意の値の推定数の理論的誤差。誤差
estdc_error(X) は、absolute_value(estimate_distinct_count -
real_distinct_count)/real_distinct_countの⽐率を表しています。

フィールドXの最⼤値を返します。Xの値が数値でない場合、辞書的順序を使⽤し
max(X) て最⼤値を検索します。この関数は可能であればフィールド値を数字として処理
します。それができない場合は、フィールド値を⽂字列として処理します。

mean(X) フィールドXの算術的平均。

median(X) フィールドXの中央値を返します。

min(X) フィールドXの最⼩値を返します。Xの値が数値でない場合、辞書的順序を使⽤し
集計関数 て最⼩値を検索します。

mode(X) フィールドXの最も頻繁に出現する値を返します。

数値フィールドYの値の第X位パーセンタイルを返します。有効な値は1から99の
整数です。
percentile<X>(Y)
その他のパーセンタイル関数としては、upperperc<X>(Y)とexactperc<X>(Y)が
あります。

range(X) フィールドXの値が数値の場合にのみ、フィールドXの最⼤値と最⼩値の差を返し
ます。

stdev(X) フィールドXの標本標準偏差を返します。

stdevp(X) フィールドXの⺟標準偏差を返します。

sum(X) フィールドXの値の合計を返します。

sumsq(X) フィールドXの値の2乗の合計を返します。

var(X) フィールドXの標本分散を返します。

varp(X) フィールドXの⺟分散を返します。

フィールドXの初めて出現した値を返します。⼀般的に、フィールドの最初に出
first(X) 現した値は、statsコマンドのイベント⼊⼒順序と相対的な、このフィールドの
もっとも最近のインスタンスになります。
イベント順関数
フィールドXの最後に出現した値を返します。⼀般的に、フィールドの最後に出
last(X) 現した値は、statsコマンドのイベント⼊⼒順序と相対的な、このフィールドの
もっとも古いインスタンスになります。

list(X)
フィールドXの最⼤100の値のリストを、複数値エントリとして返します。値の
順序は、⼊⼒イベントの順序を反映しています。
マルチ値統計およびグ
ラフ機能
values(X) フィールドXのすべての異なる値を複数値エントリとして返します。値の順序
は、辞書的順序です。

earliest(X) フィールドXの値の、時系列的にもっとも早く出現した(最も古い)値を返しま
す。

最も早く出現した(最も古い)フィールド値のUNIX時を返しま
earliest_time(X) す。earliest(x)、latest(x)、およびlatest_time(x)と⼀緒に使⽤して、累積
カウンターの増加レートを計算します。

latest(X) フィールドXの値の、時系列的にもっとも遅く出現した(最も新しい)値を返しま
す。

最も遅く出現した(最も新しい)フィールド値のUNIX時を返しま
latest_time(X) す。earliest(x)、earliest_time(x)、およびlatest(x)と⼀緒に使⽤して、累
積カウンターの増加レートを計算します。

per_day(X) 各⽇のフィールドXの値、またはeval式Xを返します。

時間関数 per_hour(X) 各時間のフィールドXの値、またはeval式Xを返します。

per_minute(X) 各分のフィールドXの値、またはeval式Xを返します。

86
per_second(X) 各秒のフィールドXの値、またはeval式Xを返します。

フィールド値の毎秒のレート変化を返します。(latest(X) - earliest(X)) /
(latest_time(X) - earliest_time(X))を表します。フィールド
rate(X)
のearliest(X)およびlatest(X)の値が数値であ
り、earliest_time(X)とlatest_time(X)の値が異なっている必要があります。

rate_avg(X) 指定された累積カウンターメトリックスに関連付けられている時系列の平均レー
トを返します。

rate_sum(X)
指定された累積カウンターメトリックスに関連付けられている時系列の合計レー
トを返します。

関連項⽬
評価関数

stats、chart、timechart、eventstats、streamstats、geostats

A ns w er s
何か質問がありますか? 「Splunk Answers」で関数やコマンドを検索できます。

集計関数
集計関数は各イベントから値をまとめて単⼀の、有意な値を作成します。⼀般的な集計関数には平均、カウント、最⼩、最
⼤、標準偏差、合計、および変数があります。

ほとんどの集計関数は数値フィールドで使⽤されます。ただし、アルファベット⽂字列フィールドまたは数値フィールドの
いずれかで使⽤できる関数もあります。関数の説明では、アルファベット⽂字列で使⽤できる関数を⽰しています。
概要については「統計およびグラフ関数」を参照してください。

av g ( X )

説明

フィールドXの値の平均を返します。

使⽤法

この関数はchart、stats、timechartコマンド、さらにsparkline()グラフでも使⽤できます。

この関数と⼀緒に使⽤できる関連する統計およびグラフコマンドのリストは、「統計およびグラフ関数」を参照してくださ
い。

基本的な例

以下の例は⼀意の各ホスト(host)に対して、平均サイズ(size)を返します。
... | stats avg(size) BY host

以下の例では、各5分間の期間の各「host」の平均スループット(thruput)を返します。
... | bin _time span=5m | stats avg(thruput) BY _time host

以下の例では、⼀意の各ホスト(host)およびユーザー(user)のペアに対して、最⼤遅延(delay)に対する平均サイズ(size)の⽐
率を返します。
... | chart eval(avg(size)/max(delay)) AS ratio BY host user

以下の例は、Processor別のcpu_secondsの平均を⼩数第2位で四捨五⼊した時間グラフを⽰します。

... | timechart eval(round(avg(cpu_seconds),2)) BY processor

87
その他の例:

トランザクションの期間に基づいて、トランザクションの平均イベント数をグラフ化します。

この例では、サーチチュートリアルのサンプルデータセットを使⽤しています。Splunkインスタンスでこの例を試すには、サンプルデータをダウン
ロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。サーチを実⾏するときは、時間範囲として[全時間] を使⽤し
ます。

1. 次のサーチを実⾏して、トランザクションの期間に基づいて、トランザクション内の平均イベント数を表⽰するグラフ
を作成します。

sourcetype=access_* status=200 action=purchase | transaction clientip maxspan=30m | chart avg(eventcount) by duration


span=log2

transactionコマンドは結果にdurationおよびeventcountの2つのフィールドを追加します。eventcountフィールドは、単⼀
のトランザクション内のイベント数を追跡します。

このサーチでは、トランザクションがchartコマンドに渡されます。avg()関数は、各期間におけるイベントの平均数を計
算するために使⽤されます。期間は秒単位で、多くの値が存在していると考えられるため、このサーチではspan引数を
使⽤して、期間を基数2の対数のビンにバケツ化しています。

2. フィールド形式オプションを使⽤すると、数字のフォーマットを有効化できます。

3. 表⽰を円グラフに変更するには、[ 視覚エフェクト] タブをクリックします。

88
円グラフの各くさび形(ウェッジ)は、イベントトランザクションの期間を表しています。ウェッジにマウスオーバーす
ると、平均数を⾒ることができます。

c o unt( X ) ま た は c ( X )

説明

フィールドXの出現回数を返します。⼀致する特定のフィールド値を⽰す場合は、Xをeval(field="値")として指定してくださ
い。フィールド値を⽂字列として処理します。この関数を使⽤するには、count(X)、または短縮形c(X)を指定します。

使⽤法

このcount(X)関数はchart、stats、timechartおよびsparkline()コマンド、さらにグラフでも使⽤できます。

基本的な例

以下の例では、statusフィールドの値が「404」のイベントのカウントを返します。

...| stats count(eval(status="404")) AS count_status BY sourcetype

この例はcount関数とeval式を使⽤しています。「stats関数でのeval式の使⽤」を参照してください。

以下の例は、サーチ結果を10個のビンに分け、各ビンのrawイベント数を返します。

... | bin size bins=10 | stats count(_raw) BY size

以下の例では_rawフィールドを使⽤するイベントの数のスパークライングラフを作成します。

... sparkline(count)

以下の例ではuserフィールドのあるイベントをカウントするスパークライングラフを作成します。

... sparkline(count(user))

以下の例では、timechartコマンドを使⽤して、actionフィールドに値purchaseが含まれるイベントをカウントします。

sourcetype=access_* | timechart count(eval(action="purchase")) BY productName usenull=f useother=f

その他の例

それぞれのマグニチュード範囲で発⽣した地震数をカウントします。

この例では、USGS EarthquakesのWebサイトからダウンロードした最近の地震データを使⽤しています。データはカンマ区切り形式のASCIIテキス
トファイルで、記録されている各地震のマグニチュード(mag)、座標(latitude、longitude)、地域(place)が含まれています。

89
最新のCSVファイルをUSGS Ear thquake F e e ds からダウンロードして、ファイルをSplunkインスタンスにアップロードします。この例では過去
30⽇間のAll Ear thquake s データを使⽤します。

1. 次のサーチを実⾏して、各マグニチュード範囲で発⽣した地震数を計算します。このデータセットは、期間が30⽇間の
イベントで成り⽴っています。
source=all_month.csv | chart count AS "Number of Earthquakes" BY mag span=1 | rename mag AS "Magnitude Range"

このサーチはspan=1を使って、各範囲のマグニチュードフィールドmagを定義しています。
次にrenameコマンドを使って、フィールド名を「Magnitude Range」に変更しています。

結果は、以下のような内容で[統計]タブに表⽰されます。

マグニチュード範囲 地震数

-1〜0 18

0〜1 2088

1〜2 3005

2〜3 1026

3〜4 194

4〜5 452

5〜4 109

6〜7 11

7〜8 3

各W ebサーバーに対して⾏われた、異なるページ要求の件数をカウントする

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏するときは、時間範囲として[全時間] を使⽤します。

1. 次のサーチを実⾏し、chartコマンドを使⽤して、各ウェブサーバーで⽣じる、GETおよびPOST、という複数の異なる
ページリクエストを決定します。

sourcetype=access_* | chart count(eval(method="GET")) AS GET, count(eval(method="POST")) AS POST BY host

この例では、eval式を使ってstatsコマンドのカウント対象となる異なるフィールド値を指定しています。最初の句
はcount()関数を使って、methodフィールドの値がGETのWebアクセスイベントをカウントしています。そして、ASキー
ワードを使⽤して、これらの結果を表すフィールドが名前が変更されたGETであることを⽰します。

次に2番⽬の句では、POSTイベントに対して同様の処理を⾏います。次にBY句でhostフィールドを使⽤して、両⽅のタ
イプのイベント数がWebサーバー別に分割されます。

結果は、以下のような内容で[統計]タブに表⽰されます。

ホスト GET POST


www1 8431 5197

www2 8097 4815

www3 8338 4654

2. [ 視覚エフェクト] タブをクリックします。必要であれば結果を棒グラフにフォーマットします。このグラフには、各イ
ベントタイプ(GETとPOST)のイベント数合計が、hostの値に基づいて表⽰されます。

90
di s ti nc t_ c o unt( X ) o r dc ( X )

説明

フィールドXの⼀意の値の数を返します。この関数はフィールド値を⽂字列として処理します。この関数を使⽤するに
は、distinct_count(X)、または短縮形dc(X)を指定します。

使⽤法

この関数はchart、stats、timechartコマンド、さらにsparkline()グラフでも使⽤できます。

基本的な例

以下の例は、同じ「host」値を持つ結果の重複項⽬を削除して、残り結果の合計カウントを返します。
... | stats dc(host)

この例は、⼀意のdevice数のスパークラインを⽣成し、フィールド名を「numdevices」に変更します。
...sparkline(dc(device)) AS numdevices

この例は、各sourcetypeの⼀意のソース数をカウントし、カウントを5分間の期間で分割します。
...sparkline(dc(source),5m) BY sourcetype

その他の例:

この例では、サーチチュートリアルのサンプルデータセットを使⽤しています。Splunkインスタンスでこの例を試すには、サンプルデータをダウン
ロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。サーチを実⾏する際には、時間範囲として「昨⽇」 を指定し
てください。

1. 次のサーチを実⾏して、昨⽇Buttercup Gamesオンラインストアーで買い物したカスタマー数をカウントします。こ
のサーチは、カスタマーが購⼊した製品(アクセサリ、Tシャツ、ゲーム類)のタイプごとにカウントを整理します。
sourcetype=access_* action=purchase | stats dc(clientip) BY categoryId

この例では、まず最初に購⼊イベントaction=purchaseをサーチしています。
これらの結果がパイプ⽂字でstatsコマンドに渡され、dc()関数を使って、商品を購⼊した個別のユーザー数が算
出されます。
商品カテゴリ(categoryId)に基づいてこの数量を分類するために、BY句を使⽤しています。

91
結果は、以下のような内容で[統計]タブに表⽰されます。

cat ego ryId dc(client ip)

ACCESSORIES 37

ARCADE 58

NULL 8

SHOOTER 31

SIMULATION 34

SPORTS 13

STRATEGY 74

TEE 38

es tdc ( X )

説明

フィールドXの⼀意の値の推定数を返します。この関数はフィールド値を⽂字列として処理します。⽂字列の値1.0および1は
⼀意の値としてみなされ、個別にカウントされます。

使⽤法

chart、stats、timechartコマンドとともにこの関数を使⽤できます。

デフォルトでは、サーチで返された個別値の実際の数が1000未満である場合、Splunkソフトウェアはサーチの個別値カウン
トを推定しません。その代わりに、実際の個別値カウントを使⽤します。この閾値は、limits.confのapprox_dc_threshold設定
で設定されます。

基本的な例

以下の例は、同じ「host」値を持つ結果の重複項⽬を削除して、残り結果の合計カウントを返します。
... | stats estdc(host)

結果はこのようになります。

est dc(ho st )

この例は、予測される⼀意のdevicesフィールド数のスパークラインを⽣成し、結果フィールド名を「numdevices」に変更し
ます。
...sparkline(estdc(device)) AS numdevices

以下の例は各ソースタイプのソースの⼀意の数を予測します。結果はスパークライングラフに5分間隔で表⽰されます。
...sparkline(estdc(source),5m) BY sourcetype

es tdc _ er r o r ( X )

説明

フィールドXの⼀意の値の推定数の理論的誤差。誤差は、absolute_value(estimate_distinct_count -
real_distinct_count)/real_distinct_countの⽐率を表しています。この関数はフィールド値を⽂字列として処理します。

使⽤法

chart、stats、timechartコマンドとともにこの関数を使⽤できます。

92
基本的な例

以下の例は「host」値の予測される⼀意の値のエラー⽐率を判断します。
... | stats estdc_error(host)

ex ac tper c < X > ( Y )

説明

数値フィールドYのパーセンタイル値を返します。

使⽤法

この関数はchart、stats、timechartコマンド、さらにsparkline()グラフでも使⽤できます。

exactperc関数は正確な値を提供しますが、濃度が⾼いフィールドの場合、⾮常に多くのリソースを消費します。exactperc関数
はサーチヘッドで⼤量のメモリーを消費する場合があり、その結果、サーチの完了まで⻑い時間が掛かることがあります。

perc<X>(Y)関数を参照してください。

m ax ( X )

説明

フィールドXの最⼤値を返します。Xの値が数値でない場合、辞書的順序を使⽤して最⼤値を検索します。
可能であればフィールド値を数字として処理します。それができない場合は、フィールド値を⽂字列として処理します。

使⽤法

この関数はchart、stats、timechartコマンド、さらにsparkline()グラフでも使⽤できます。

辞書的順序はアイテムをそのアイテムをコンピューターメモリーでエンコードするのに使⽤される値に基づいて並べ替えま
す。Splunkソフトウェアでは、これはほとんど常にUTF-8エンコードで、ASCIIよりも多くの機能があります。

数字は⽂字の前に並び替えられます。⽂字は最初の桁に基づいて並び替えられます。たとえば、10, 9, 70, 100は辞書


的には10, 100, 70, 9に並べ替えられます。
⼤⽂字は⼩⽂字の前に来ます。
記号は標準ではありません。数値の前に並び替えられる記号もあります。その他の記号は⽂字の前または後に並び替え
られます。

基本的な例

この例は、「size」の最⼤値を返します。
... | max(size)

その他の例:

各領域の地震のマグニチュードの集計統計を計算します

この例では、USGS EarthquakesのWebサイトからダウンロードした最近の地震データを使⽤しています。データはカンマ区切り形式のASCIIテキス
トファイルで、記録されている各地震のマグニチュード(mag)、座標(latitude、longitude)、地域(place)が含まれています。
最新のCSVファイルをUSGS Ear thquake F e e ds からダウンロードして、ファイルをSplunkインスタンスにアップロードします。この例では過去
30⽇間のAll Ear thquake s データを使⽤します。

1. カリフォルニアおよびその周辺で起きた地震のサーチ。記録された地震の数の計算。統計関数を使⽤して、最近の地震
の最⼤マグニチュード、最⼩マグニチュード、マグニチュード範囲(最⼤と最⼩の差)、および平均マグニチュードを計
算します。値をマグニチュードタイプ別にリストします。

source=all_month.csv place=*California* | stats count, max(mag), min(mag), range(mag), avg(mag) BY magType

結果は、以下のような内容で[統計]タブに表⽰されます。

93
m agType co unt m ax(m ag) m in(m ag) range(m ag) avg(m ag)
H 123 2.8 0.0 2.8 0.549593

MbLg 1 0 0 0 0.0000000

Md 1565 3.2 0.1 3.1 1.056486

Me 2 2.0 1.6 .04 1.800000

Ml 1202 4.3 -0.4 4.7 1.226622

Mw 6 4.9 3.0 1.9 3.650000

ml 10 1.56 0.19 1.37 0.934000

m ean( X )

説明

フィールドXの算術的平均。
meanの値は、avg()関数を使って算出された値と完全に⼀致しています。

使⽤法

この関数はchart、stats、timechartコマンド、さらにsparkline()グラフでも使⽤できます。

基本的な例

この例は、「kbps」の値の平均値を返します。

... | stats mean(kbps)

その他の例:

この例では、USGS EarthquakesのWebサイトからダウンロードした最近の地震データを使⽤しています。データはカンマ区切り形式のASCIIテキス
トファイルで、記録されている各地震のマグニチュード(mag)、座標(latitude、longitude)、地域(place)が含まれています。
最新のCSVファイルをUSGS Ear thquake F e e ds からダウンロードして、ファイルをSplunkインスタンスにアップロードします。この例では過去
30⽇間のAll Ear thquake s データを使⽤します。

1. 次のサーチを実⾏して、最近の地震のマグニチュードについて、マグニチュードタイプごとに平均、標準偏差、変数を
検索します。

source=usgs place=*California* | stats count mean(mag), stdev(mag), var(mag) BY magType

結果は、以下のような内容で[統計]タブに表⽰されます。

m agType co unt m ean(m ag) st d(m ag) var(m ag)

H 123 0.549593 0.356985 0.127438

MbLg 1 0.000000 0.000000 0.000000

Md 1565 1.056486 0.580042 0.336449

Me 2 1.800000 0.346410 0.120000

Ml 1202 1.226622 0.629664 0.396476

Mw 6 3.650000 0.716240 0.513000

ml 10 0.934000 0.560401 0.314049

m edi an( X )

説明

フィールドXの中央値を返します。
94
フィールドXの中央値を返します。

使⽤法

chart、stats、timechartコマンドとともにこの関数を使⽤できます。

デフォルトでは、イベント数が偶数の場合、中央値の計算では2つの値の中で⼤きい⽅を近似値として採⽤します。イベント
数が偶数の場合に、より正確な中央値を得るには、limits.confファイルのperc_methodを変更します。

1. 『管理』マニュアルの「設定ファイルの編集⽅法」の⼿順を参照してください。
ファイルシステムにアクセスできるユーザー(システム管理者など)のみが設定ファイルを編集できます。defaultディレ
クトリにある設定ファイルは、決して変更もコピーもしないでください。defaultディレクトリ内のファイルは、その
まま保持して元の位置にある必要があります。変更は、localディレクトリで⾏ってください。

2. [stats | sistats]スタンザで、perc_methodの設定をinterpolatedに変更します。

Splunk Cloudを使⽤していて設定ファイルを編集したい場合は、サポートチケットを申請してください。

基本的な例

次の値のリストにより、昨⽇Buttercup Gamesオンラインストアーで買い物したカスタマー数をカウントします。これらの
値は、カスタマーが購⼊した製品(アクセサリ、Tシャツ、ゲーム類)のタイプごとに整理されます。

cat ego ryId co unt

ACCESSORIES 37

ARCADE 58

NULL 8

SIMULATION 34

SPORTS 13

STRATEGY 74

TEE 38

リストをソートすると、中央値は37になります。

cat ego ryId co unt

NULL 8

SPORTS 13

SIMULATION 34

ACCESSORIES 37

TEE 38

ARCADE 58

STRATEGY 74

m i n( X )

説明

フィールドXの最⼩値を返します。Xの値が数値でない場合、辞書的順序を使⽤して最⼩値を検索します。
この関数は可能であればフィールド値を数字として処理します。それができない場合は、フィールド値を⽂字列として処理
します。

使⽤法

chart、stats、timechartコマンドとともにこの関数を使⽤できます。

辞書的順序はアイテムをそのアイテムをコンピューターメモリーでエンコードするのに使⽤される値に基づいて並べ替えま
95
す。Splunkソフトウェアでは、これはほとんど常にUTF-8エンコードで、ASCIIよりも多くの機能があります。

数字は⽂字の前に並び替えられます。⽂字は最初の桁に基づいて並び替えられます。たとえば、10, 9, 70, 100は辞書


的には10, 100, 70, 9に並べ替えられます。
⼤⽂字は⼩⽂字の前に来ます。
記号は標準ではありません。数値の前に並び替えられる記号もあります。その他の記号は⽂字の前または後に並び替え
られます。

基本的な例

以下の例は_internalインデックスのHotBucketRollerコンポーネントの最⼩サイズおよび最⼤サイズを返します。
index=_internal component=HotBucketRoller | stats min(size), max(size)

以下の例はプロセッサーのリストを返し、最⼩cpu_secondsおよび最⼤cpu_secondsを返します。
index=_internal | chart min(cpu_seconds), max(cpu_seconds) BY processor

その他の例:

max()関数のその他の例を参照してください。その例では、min()関数も使⽤されています。

m o de( X )

説明

フィールドXの最も頻繁に出現する値を返します。
フィールド値を⽂字列として処理します。

使⽤法

chart、stats、timechartコマンドとともにこの関数を使⽤できます。

基本的な例

modeは、最も頻度の⾼い値を返します。次のデータを考えてみましょう。

first nam e surnam e age

Claudia Garcia 32

David Mayer 45

Alex Garcia 29

Wei Z hang 45

Javier Garcia 37

ageフィールドでモードをサーチすると、45が返されます。

...| stats mode(age)

⽂字列値を含むフィールドでモードを使⽤することもできます。surnameフィールドでモードをサーチすると、Garciaが返され
ます。
...| stats mode(surname)

別のサンプルデータセットです。

_t im e ホスト so urcet ype

04-06-2020 17:06:23.000 PM www1 access_combined


04-06-2020 10:34:19.000 AM www1 access_combined

04-03-2020 13:52:18.000 PM www2 access_combined

96
04-02-2020 07:39:59.000 AM www3 access_combined

04-01-2020 19:35:58.000 PM www1 access_combined

hostフィールドでモードを探すサーチを実⾏すると、hostフィールドで最も共通している値であるwww1が返されます。例:

... |stats mode(host)

結果は次のようになります。

m o de(ho st )
www1

per c < X > ( Y )


説明

パーセンタイル関数は、数値フィールドYの値の第X位のパーセンタイル値を返します。この値は、上位X%が開始される場所
の推定値として考えることができます。たとえば、95位パーセンタイルとは、フィールドYの値の95%が推定値より下で、
フィールドYの値の5%が推定値より上であることを意味します。

Xの有効な値は0から100の間の浮動⼩数点数(例:99.95)です。
3種類のパーセンタイル関数を使⽤できます。

関数 説明

perc<X>(Y)または
短縮系のp<X>(Y) perc関数は、フィールドY、Xパーセントの閾値未満の値など、閾値の近似値を計算します。perc関数は、要求された整数パー
センタイルの近似値範囲の下限を表す単⼀の数字を返します。

1000個を超える値がある場合、upperperc関数は要求されたパーセンタイルの上限の近似値を返します。そうでなけれ
upperperc<X>(Y)
ば、upperperc関数はperc関数と同じパーセンタイルを返します。

exactperc関数は正確な値を提供しますが、濃度が⾼いフィールドの場合、⾮常に多くのリソースを消費します。exactperc関
exactperc<X>(Y)
数は⼤量のメモリーを消費する場合があり、その結果、サーチの完了まで⻑い時間が掛かることがあります。

パーセンタイル関数はフィールド値を⽂字列として処理します。

percおよびupperperc関数は、要求された整数パーセンタイルの近似値を計算します。使⽤される近似アルゴリズムは、基数の
動的圧縮に基づき、任意のパーセンタイルに対して実際値の厳密な境界を提供します。

使⽤法

chart、stats、timechartコマンドとともにこの関数を使⽤できます。

S p l unkとExc el のパーセンタイルアルゴリズムの違い

個別値の数が1000個未満である場合、Splunkのパーセンタイル関数はNearest Rank法を使⽤します。
http://en.wikipedia.org/wiki/Percentile#Nearest_rankを参照してください。Excelは、NIST補完アルゴリズムを使⽤して
いるため、基本的にはNearest Rank法では不可能な、実際のデータには存在しないパーセンタイルの値を取得することもで
きます。

limits.confファイルの[stats]スタンザの設定を変更することで、Excel⽅式を使⽤するように指定することができま
す。perc_method設定をnearest-rankではなくinterpolatedに設定します。

1 0 0 0 個を超える個別値がある場合のS p l unkアルゴリズム

フィールドの個別値の数が1000個を超える場合は、基数⽊ダイジェストベースのアルゴリズムを使⽤して、パーセンタイル
が近似化されます。このアルゴリズムは、個別値の数とメモリー消費量が直線的な⽐例関係となる厳密計算よりも⾮常に⾼
速で、⾮常に少ない⼀定量のメモリーしか消費しません。デフォルトでは、このアルゴリズムの近似誤差はランク誤差の1%
未満に制限されています。つまり、95位パーセンタイルを要求すると、94位と96位のパーセンタイルの間の値が返されま
す。
perc関数ではなくexactperc関数を使⽤すると、個別値の数が1000個を超える場合でも常に正確なパーセンタイルを得ること

97
ができます。

基本的な例

Y = {10,9,8,7,6,5,4,3,2,1}という値のリストがあるとします。

以下の例では「5.5」を返します。
...| stats perc50(Y)

以下の例では「9.55」を返します。

...| stats perc95(Y)

その他の例:

テンポの営業時間における毎時の訪問者数を⽰す次のデータセットを考えてみましょう。

ho ur visit o rs

0800 0

0900 212

1000 367

1100 489

1200 624

1300 609

1400 492

1500 513

1600 376

1700 337

このデータはvisitor_countインデックスに存在します。streamstatsコマンドを使⽤して、訪問者数の累積合計を作成できま
す。

index=visitor_count | streamstats sum(visitors) as 'visitors total'

サーチの結果は次のようになります。

ho ur visit o rs visit o rs t o t al
0800 0 0

0900 212 212

1000 367 579

1100 489 1068

1200 624 1692

1300 609 2301

1400 492 2793

1500 513 3306

1600 376 3673

1700 337 4010

perc関数を使⽤したstatsコマンドを追加して、50位と95位のパーセンタイルを決定します。

98
index=visitor_count | streamstats sum(visitors) as 'visitors total' | stats perc50('visitors total') perc95('visitors total')

サーチの結果は次のようになります。

perc50(visit o rs t o t al) perc95(visit o rs t o t al)

1996.5 3858.35

perc50は、訪問者の50%が来店した50位パーセンタイルを推定します。50位パーセンタイルには、訪問者番号1996と1997の
間に到達しており、1200時間と1300時間の間のいつかということになります。perc95は、訪問者の95%が来店した95位パー
センタイルを推定します。95位パーセンタイルには訪問者3858で到達しており、1600時間と1700時間の間に発⽣していま
す。

r ang e( X )
説明

フィールドXの最⼤値と最⼩値の差を返します。フィールドXの値は数値である必要があります。

使⽤法

この関数はchart、stats、timechartコマンド、さらにsparkline()グラフでも使⽤できます。

基本的な例

この例では、各製品の四半期ごとの売り上げを列挙するイベントを使⽤します。例を⽰します。

pro duct s quart er sales クォータ

ProductA QTR1 1200 1000

ProductB QTR1 1400 1550

ProductC QTR1 1650 1275

ProductA QTR2 1425 1300

ProductB QTR2 1175 1425

ProductC QTR2 1550 1450

ProductA QTR3 1300 1400

ProductB QTR3 1250 1125

ProductC QTR3 1375 1475

ProductA QTR4 1550 1300

ProductB QTR4 1700 1225

ProductC QTR4 1625 1350

minとmaxの値も指定することで、rangeを最も簡単に理解できます。製品別の売上範囲を決定するには、次のように指定しま
す。

source="addtotalsData.csv" | chart sum(sales) min(sales) max(sales) range(sales) BY products

結果は、以下のような内容で[統計]タブに表⽰されます。

quart er sum (sales) m in(sales) m ax(sales) range(sales)

QTR1 4250 1200 1650 450

QTR2 4150 1175 1550 375

QTR3 3925 1250 1375 125

QTR4 4875 1550 1700 150

99
range(sales)は、max(sales)からmin(sales)を引くことで求められます。

その他の例:

max()関数のその他の例を参照してください。その例では、range()関数も使⽤されています。

s tdev ( X )

説明

フィールドXの標本標準偏差を返します。

使⽤法

この関数はchart、stats、timechartコマンド、さらにsparkline()グラフでも使⽤できます。

基本的な例

この例は、ワイルドカードが使われているフィールド「*delay」(「delay」と「xdelay」の両⽅に対応)の標準偏差を返しま
す。

... | stats stdev(*delay)

その他の例:

この例では、USGS EarthquakesのWebサイトからダウンロードした最近の地震データを使⽤しています。データはカンマ区切り形式のASCIIテキス
トファイルで、記録されている各地震のマグニチュード(mag)、座標(latitude、longitude)、地域(place)が含まれています。

最新のCSVファイルをUSGS Ear thquake F e e ds からダウンロードして、ファイルをSplunkインスタンスにアップロードします。この例では過去


30⽇間のAll Ear thquake s データを使⽤します。

1. 次のサーチを実⾏して、最近の地震のマグニチュードについて、マグニチュードタイプごとに平均、標準偏差、変数を
検索します。

source=usgs place=*California* | stats count mean(mag), stdev(mag), var(mag) BY magType

結果は、以下のような内容で[統計]タブに表⽰されます。

m agType co unt m ean(m ag) st d(m ag) var(m ag)


H 123 0.549593 0.356985 0.127438

MbLg 1 0.000000 0.000000 0.000000

Md 1565 1.056486 0.580042 0.336449

Me 2 1.800000 0.346410 0.120000

Ml 1202 1.226622 0.629664 0.396476

Mw 6 3.650000 0.716240 0.513000

ml 10 0.934000 0.560401 0.314049

s tdev p( X )

説明

フィールドXの⺟標準偏差を返します。

使⽤法

この関数はchart、stats、timechartコマンド、さらにsparkline()グラフでも使⽤できます。

基本的な例

その他の例:

100
s um ( X )

説明

フィールドXの値の合計を返します。

使⽤法

この関数はchart、stats、timechartコマンド、さらにsparkline()グラフでも使⽤できます。

基本的な例

任意の数値フィールドの合計を作成できます。例:
...| stats sum(bytes)

結果はこのようになります。

sum (byt es)

21502

ASキーワードを使⽤して列名を変更できます。
...| stats sum(bytes) AS "total bytes"

結果はこのようになります。

t o t al byt es

21502

BY句を使⽤して結果を整理できます。
...| stats sum(bytes) AS "total bytes" by date_hour

結果はこのようになります。

dat e_ho ur t o t al byt es

07 6509

11 3726

15 6569

23 4698

s um s q( X )

説明

フィールドXの値の2乗の合計を返します。

2乗の合計を使⽤して、データセットの中央値からのデータセットの分散を評価します。2乗の合計が⼤きいほど分散が⼤き
くなり、個別の値が中央値から⼤きく変動していることを⽰します。

使⽤法

この関数はchart、stats、timechartコマンド、さらにsparkline()グラフでも使⽤できます。

基本的な例

次の表には、1週間、毎朝8時に計った気温が⼊っています。

気温の中央値は摂⽒48.9度です。毎⽇の中央値からの偏差を計算するため、気温から中央値を引きます。各数値を2乗する
101
と、次の結果が得られます。

day t em p m ean deviat io n square o f t em perat ures


sunday 65 48.9 16.1 260.6

monday 42 48.9 -6.9 47.0

tuesday 40 48.9 -8.9 78.4

wednesday 31 48.9 -17.9 318.9

thursday 47 48.9 -1.9 3.4


friday 53 48.9 4.1 17.2

saturday 64 48.9 15.1 229.3

気温の2乗値の総和である954.9を6 (=1週間の⽇数-1)で除算します。これにより、⼀連の気温の2乗の合計が得られます。標
準偏差は、2乗の合計の平⽅根です。標準偏差が⼤きいほど、1週間の気温の変動が⼤きいことを意味します。
いくつかの統計関数を使⽤すると、中央値、2乗の合計、そして標準偏差を計算できます。

...|stats mean(temp), sumsq(temp), stdev(temp)

このサーチは次の結果を返します。

m ean(t em p) sum sq(t em p) st dev(t em p)

48.857142857142854 17664 12.615183595289349

upper per c < X > ( Y )

説明

数値フィールドYの要求されたパーセンタイルXに基づいて近似パーセンタイル値を返します。

1000個を超える値がある場合、upperperc関数は要求されたパーセンタイルの上限の近似値を返します。そうでなけれ
ば、upperperc関数はperc関数と同じパーセンタイルを返します。

perc<X>(Y)関数を参照してください。

使⽤法

この関数はchart、stats、timechartコマンド、さらにsparkline()グラフでも使⽤できます。

「perc関数」を参照してください。

v ar ( X )

説明

フィールドXの標本分散を返します。

使⽤法

この関数はchart、stats、timechartコマンド、さらにsparkline()グラフでも使⽤できます。

mean()関数のその他の例を参照してください。その例では、var()関数も使⽤されています。

v ar p( X )

102
説明

フィールドXの⺟分散を返します。

使⽤法

この関数はchart、stats、timechartコマンド、さらにsparkline()グラフでも使⽤できます。

基本的な例

イベント順関数
イベント順関数を使⽤すると、イベントの処理順序に基づいてフィールドの値を返すことができます。この順序は、時系列
やタイムスタンプの順であるとは限りません。

サーチから返される⼀連のイベントのタイムスタンプを以下の表に⽰します。firstおよびlastイベント順関数を使⽤した場合
に返されるイベントと、「時間関数」で説明するearliestおよびlatest関数との⽐較を下表に⽰します。

_t im e イベント順 説明
関数

2020-04-28
first このイベントは、サーチ結果の最初のイベントです。ただし、このイベントは時系列的に最
00:15:05 も早いイベントではありません。

2020-05-01
00:15:04

2020-04-30
00:15:02

2020-04-28
00:15:01

2020-05-01
00:15:05
latest このイベントは、サーチ結果の時系列的に最も遅いイベントです。

earliest
2020-04-27
このイベントは、サーチ結果の時系列的に最も早いイベントであり、最後のイベントです。
00:15:01 last

「統計・グラフ関数の概要」を参照してください。

f i r s t( X )

説明

フィールドXで初めて出現した値を返します。フィールドで最初に出現した値は、statsコマンドがイベントを認識した順序に
基づいた、このフィールドの最も新しいインスタンスになります。イベントが出現する順序は、時系列であるとは限りませ
ん。

使⽤法

最初の値を時間順に基づいて検索するには、earliest関数を使⽤します。
サーチがsortコマンドを統計またはチャートコマンドの直前に含む場合に最適に動作します。
この関数はフィールド値を⽂字列として処理します。
chart、stats、timechartコマンドとともにfirst(X)関数を使⽤できます。

基本的な例

この例では、サーチチュートリアルのサンプルデータセットを使⽤しています。Splunkインスタンスでこの例を試すには、サンプルデータをダウン
ロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。サーチを実⾏するときは、時間範囲として[全時間] を使⽤し
ます。

以下のサーチを実⾏して、特定のsshd (セキュアーシェルデーモン)に対する無効なユーザーログイン試⾏を特定しま
す。tableコマンドを使⽤して値を_time、source、_rawフィールドに表⽰します。

sourcetype=secure invalid user "sshd[5258]" | table _time source _raw

103
結果は、以下のような内容で[統計]タブに表⽰されます。

_t im e ソース _raw

2020-04-28
Mon Apr 28 2020 00:15:05 mailsv1 sshd[5258]: Failed
00:15:05
tutorialdata.zip:./mailsv/secure.log password for invalid user tomcat from 67.170.226.218 port
1490 ssh2

2020-05-01
tutorialdata.zip:./www2/secure.log Thu May 01 2020 00:15:04 www2 sshd[5258]: Failed password
00:15:04 for invalid user brian from 130.253.37.97 port 4284 ssh2

2020-04-30
tutorialdata.zip:./www3/secure.log Wed Apr 30 2020 00:15:02 www3 sshd[5258]: Failed password
00:15:02 for invalid user operator from 222.169.224.226 port 1711 ssh2

2020-04-28
tutorialdata.zip:./www1/secure.log Mon Apr 28 2020 00:15:01 www1 sshd[5258]: Failed password
00:15:01 for invalid user rightscale from 87.194.216.51 port 3361 ssh2
Thu May 01 2020 00:15:05 mailsv1 sshd[5258]: Failed
2020-05-01
00:15:05
tutorialdata.zip:./mailsv/secure.log password for invalid user testuser from 194.8.74.23 port 3626
ssh2

2020-04-27
tutorialdata.zip:./www1/secure.log Sun Apr 27 2020 00:15:01 www1 sshd[5258]: Failed password
00:15:01 for invalid user redmine from 91.208.184.24 port 3587 ssh2

first関数を使⽤して、サーチを拡張します。

sourcetype=secure invalid user "sshd[5258]" | table _time source _raw | stats first(_raw)

このサーチは、タイムスタンプが2020-04-28 00:15:05の_rawフィールド(返される値の元のリストの最初のイベント)の値を返し
ます。

first (_raw)
Mon Apr 28 2020 00:15:05 mailsv1 sshd[5258]: Failed password for invalid user tomcat from 67.170.226.218
port 1490 ssh2

その他の例:

基本の例では、_rawフィールドを使⽤してfirst関数の仕組みを⽰します。_rawフィールドにはタイムスタンプがあるため、こ
の関数は便利です。ただし、first関数はどのフィールドでも使⽤できます。

では、いくつかの結果を作成しましょう。makeresultsコマンドを使⽤すると、サーチ構⽂をテストするための⼀連の結果を作
成できます。streamstatsコマンドを追加して結果をカウントします。

| makeresults count=5 | streamstats count

結果は次のようになります。

_t im e co unt

2020-05-09 14:35:58 1

2020-05-09 14:35:58 2

2020-05-09 14:35:58 3

2020-05-09 14:35:58 4

2020-05-09 14:35:58 5

countフィールドを使⽤し、evalコマンドで_timeフィールドに異なる⽇付を作成できます。

| makeresults count=5 | streamstats count | eval _time=_time-(count*3600)

1時間の秒数である3600を使⽤して⼀連の時間を作成します。計算では、countフィールドの値に1時間の秒数を掛けます。結
果を元の_timeフィールドの値から引くことで、1時間前、2時間前などの新しい⽇付を取得できます。

結果は次のようになります。
104
_t im e co unt

2020-05-09 13:45:24 1

2020-05-09 12:45:24 2

2020-05-09 11:45:24 3

2020-05-09 10:45:24 4

2020-05-09 09:45:24 5

結果の時間は、元の⽇付(2020-05-09の14:24)より1時間早く始まっています。⽇付はサーチを実⾏するたびに更新されるた
め、分と秒は少し異なります。

evalコマンドを使⽤して、値を降順に並べたフィールドをサーチに追加します。

| makeresults count=5 | streamstats count | eval _time=_time-(count*3600) | eval field1=20-count

結果は次のようになります。

_t im e co unt field1

2020-05-09 14:45:24 1 19

2020-05-09 13:45:24 2 18

2020-05-09 12:45:24 3 17

2020-05-09 11:45:24 4 16

2020-05-09 10:45:24 5 15

結果を⾒るとわかるように、最初の結果にはfield1に最も⼤きな値が⼊っています。これは結果が処理された順序を⽰してい
ます。最初の結果は最初に処理され(20-1=19)、その後で残りの結果が順に処理されています。

first関数をサーチに追加すると、指定したフィールドの値のみが返されます。

| makeresults count=5 | streamstats count | eval _time=_time-(count*3600) | eval field1=20-count | stats first(field1)

結果は次のようになります。

first (field1)
19

las t( X )
説明

フィールドXで最後に出現した値を返します。フィールドで最後に出現した値は、statsコマンドがイベントを認識した順序に
基づいた、このフィールドの最も古いインスタンスになります。イベントが出現する順序は、時系列であるとは限りませ
ん。

使⽤法

最後の値を時間順に基づいて検索するには、latest関数を使⽤します。
サーチがsortコマンドを統計またはチャートコマンドの直前に含む場合に最適に動作します。
この関数はフィールド値を⽂字列として処理します。

chart、stats、timechartコマンドとともにlast(X)関数を使⽤できます。

基本的な例

以下の例はそれぞれの「sourcetype」に対し最初の「log_level」値を返します。

この例では、サーチチュートリアルのサンプルデータセットを使⽤しています。Splunkインスタンスでこの例を試すには、サンプルデータをダウン
ロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。サーチを実⾏するときは、時間範囲として[全時間] を使⽤し

105
ます。

以下のサーチを実⾏して、特定のsshd (セキュアーシェルデーモン)に対する無効なユーザーログイン試⾏を特定します。
tableコマンドを使⽤して値を_time、source、_rawフィールドに表⽰します。

sourcetype=secure invalid user "sshd[5258]" | table _time source _raw

結果は、以下のような内容で[統計]タブに表⽰されます。

_t im e ソース _raw

2020-04-28
Mon Apr 28 2020 00:15:05 mailsv1 sshd[5258]: Failed
00:15:05
tutorialdata.zip:./mailsv/secure.log password for invalid user tomcat from 67.170.226.218 port
1490 ssh2
2020-05-01 Thu May 01 2020 00:15:04 www2 sshd[5258]: Failed password
00:15:04
tutorialdata.zip:./www2/secure.log for invalid user brian from 130.253.37.97 port 4284 ssh2

2020-04-30
tutorialdata.zip:./www3/secure.log Wed Apr 30 2020 00:15:02 www3 sshd[5258]: Failed password
00:15:02 for invalid user operator from 222.169.224.226 port 1711 ssh2

2020-04-28
tutorialdata.zip:./www1/secure.log Mon Apr 28 2020 00:15:01 www1 sshd[5258]: Failed password
00:15:01 for invalid user rightscale from 87.194.216.51 port 3361 ssh2

2020-05-01
Thu May 01 2020 00:15:05 mailsv1 sshd[5258]: Failed
tutorialdata.zip:./mailsv/secure.log password for invalid user testuser from 194.8.74.23 port 3626
00:15:05
ssh2

2020-04-27
tutorialdata.zip:./www1/secure.log Sun Apr 27 2020 00:15:01 www1 sshd[5258]: Failed password
00:15:01 for invalid user redmine from 91.208.184.24 port 3587 ssh2

last関数を使⽤して、サーチを拡張します。

sourcetype=secure invalid user "sshd[5258]" | table _time source _raw | stats last(_raw)

このサーチでは、_timeの値が2020-04-27 00:15:01のイベント(イベントのリストの最後のイベント)が返されます。ただし、こ
れは時系列的に最後のイベントではありません。

_t im e ソース _raw

2020-04-27
tutorialdata.zip:./www1/secure.log Sun Apr 27 2020 00:15:01 www1 sshd[5258]: Failed password
00:15:01 for invalid user redmine from 91.208.184.24 port 3587 ssh2

その他の例:

基本の例では、_rawフィールドを使⽤してlast関数の仕組みを⽰します。_rawフィールドにはタイムスタンプがあるため、こ
の関数は便利です。ただし、last関数はどのフィールドでも使⽤できます。

では、いくつかの結果を作成しましょう。makeresultsコマンドを使⽤すると、サーチ構⽂をテストするための⼀連の結果を作
成できます。streamstatsコマンドを追加して結果をカウントします。

| makeresults count=5 | streamstats count

結果は次のようになります。

_t im e co unt

2020-05-09 14:35:58 1

2020-05-09 14:35:58 2

2020-05-09 14:35:58 3

2020-05-09 14:35:58 4

2020-05-09 14:35:58 5

countフィールドを使⽤し、evalコマンドで_timeフィールドに異なる⽇付を作成できます。

106
| makeresults count=5 | streamstats count | eval _time=_time-(count*86400)

1⽇の秒数である86400を使⽤して⼀連の⽇を作成します。計算では、countフィールドの値に1⽇の秒数を掛けます。結果を
元の_timeフィールドの値から引くことで、1⽇、2⽇前などの新しい⽇付を取得できます。

結果は次のようになります。

_t im e co unt

2020-05-08 14:45:24 1

2020-05-07 14:45:24 2

2020-05-06 14:45:24 3

2020-05-05 14:45:24 4

2020-05-04 14:45:24 5

結果の⽇付は、元の⽇付(2020-05-09の14:45:24)より1⽇早く始まっています。⽇付はサーチを実⾏するたびに更新されるた
め、分と秒は少し異なります。

evalコマンドを使⽤して、値を降順に並べたフィールドをサーチに追加します。

| makeresults count=5 | streamstats count | eval _time=_time-(count*86400) | eval field1=20-count

結果は次のようになります。

_t im e co unt field1

2020-05-08 14:45:24 1 19

2020-05-07 14:45:24 2 18

2020-05-06 14:45:24 3 17

2020-05-05 14:45:24 4 16

2020-05-04 14:45:24 5 15

結果を⾒るとわかるように、最後の結果にはfield1に最も⼩さい値が⼊っています。これは結果が処理された順序を⽰してい
ます。5番⽬の結果は、他のすべての結果の後で最後に(20-5=15)処理されています。

last関数をサーチに追加すると、指定したフィールドの値のみが返されます。

| makeresults count=5 | streamstats count | eval _time=_time-(count*86400) | eval field1=20-count | stats last(field1)

結果は次のようになります。

last field1)

15

関連項⽬
コマンド
eval
makeresults

マルチ値統計およびグラフ機能
li s t( X )

説明

フィールドXの最⼤100の値のリストを、複数値エントリとして返します。値の順序は、⼊⼒イベントの順序を反映していま
す。

使⽤法
107
100を超える値がフィールドXにある場合、最初の100だけが返されます。
この関数はフィールド値を⽂字列として処理します。
chart、stats、timechartコマンドとともにlist(X)関数を使⽤できます。

基本的な例

list関数の働きを⾒るため、まずは簡単な結果を⽣成してみましょう。

1. makeresultsおよびstreamstatsコマンドを使⽤して、タイムスタンプと、列番号として使⽤される結果数のみを含む結果
を⽣成します。

| makeresults count=1000 | streamstats count AS rowNumber

結果は、以下のような内容で[統計]タブに表⽰されます。

_t im e ro wNum ber

2018-04-02 20:27:11 1

2018-04-02 20:27:11 2

2018-04-02 20:27:11 3

2018-04-02 20:27:11 4

2018-04-02 20:27:11 5

それぞれの結果が別々の⾏に表⽰される点に注意してください。

2. サーチに、list関数を使⽤したstatsコマンドを追加します。数字が昇順に並んで単⼀の複数値結果に返されます。

| makeresults count=1000 | streamstats count AS rowNumber | stats list(rowNumber) AS numbers

結果は、以下のような内容で[統計]タブに表⽰されます。

数字

1
2
3
4
5

単⼀の結果である点に注意してください。⾏の背景⾊は反転しません。

3. この結果を、values関数で返される結果と⽐較します。

v alue( X )

説明

フィールドXのすべての異なる値を複数値エントリとして返します。値の順序は、辞書的順序です。

使⽤法

デフォルト設定では、返される値の数に制限はありません。適切な権限のあるユーザーは制限をlimits.confファイルで
指定できます。制限を[stats | sistats]スタンザにmaxvalues属性を使⽤して指定します。
この関数はフィールド値を⽂字列として処理します。
chart、stats、timechartコマンドとともにvalues(X)関数を使⽤できます。

辞書的順序はアイテムをそのアイテムをコンピューターメモリーでエンコードするのに使⽤される値に基づいて並べ替えま
す。Splunkソフトウェアでは、これはほとんど常にUTF-8エンコードで、ASCIIよりも多くの機能があります。
数字は⽂字の前に並び替えられます。⽂字は最初の桁に基づいて並び替えられます。たとえば、10, 9, 70, 100は辞書
的には10, 100, 70, 9に並べ替えられます。
⼤⽂字は⼩⽂字の前に来ます。
108
記号は標準ではありません。数値の前に並び替えられる記号もあります。その他の記号は⽂字の前または後に並び替え
られます。

基本的な例

values関数の働きを⾒るため、まずは簡単な結果を⽣成してみましょう。

1. makeresultsおよびstreamstatsコマンドを使⽤して、タイムスタンプと、列番号として使⽤される結果数のみを含む結果
を⽣成します。

| makeresults count=1000 | streamstats count AS rowNumber

結果は、以下のような内容で[統計]タブに表⽰されます。

_t im e ro wNum ber

2018-04-02 20:27:11 1

2018-04-02 20:27:11 2

2018-04-02 20:27:11 3

2018-04-02 20:27:11 4

2018-04-02 20:27:11 5

それぞれの結果が別々の⾏に表⽰される点に注意してください。

2. サーチに、values関数を使⽤したstatsコマンドを追加します。結果は辞書式順序で返されます。

| makeresults count=1000 | streamstats count AS rowNumber | stats values(rowNumber) AS numbers

結果は、以下のような内容で[統計]タブに表⽰されます。

数字
1
10
100
1000
101
102
103
104
105
106
107
108
109
11
110

単⼀の結果である点に注意してください。⾏の背景⾊は反転しません。

3. これらの結果を、list関数で返される結果と⽐較します。

時間関数
ear li es t( X )

説明

フィールドXの値の、時系列的にもっとも早く出現した値を返します。

使⽤法

この関数はフィールド値を⽂字列として処理します。
earliest(X)関数は、chart、mstats、stats、timechart、tstatsコマンドと⼀緒に使⽤できます。

基本的な例
109
この例では、サーチチュートリアルのサンプルデータセットを使⽤しています。Splunkインスタンスでこの例を試すには、サンプルデータをダウン
ロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。サーチを実⾏するときは、時間範囲として[全時間] を使⽤し
ます。

以下のサーチを実⾏して、sshd (セキュアーシェルデーモン)に対する無効なユーザーログイン試⾏を特定します。tableコマ
ンドを使⽤して値を_time、source、_rawフィールドに表⽰します。

sourcetype=secure invalid user "sshd[5258]" | table _time source _raw

結果は、以下のような内容で[統計]タブに表⽰されます。

_t im e ソース _raw

2018-04-30
Mon Apr 28 2018 00:15:05 mailsv1 sshd[5258]: Failed
00:15:05
tutorialdata.zip:./mailsv/secure.log password for invalid user tomcat from 67.170.226.218 port
1490 ssh2

2018-04-29
tutorialdata.zip:./www2/secure.log Thu May 01 2018 00:15:04 www2 sshd[5258]: Failed password
00:15:04 for invalid user brian from 130.253.37.97 port 4284 ssh2

2018-04-29
tutorialdata.zip:./www3/secure.log Wed Apr 30 2018 00:15:02 www3 sshd[5258]: Failed password
00:15:02 for invalid user operator from 222.169.224.226 port 1711 ssh2

2018-04-28
tutorialdata.zip:./www1/secure.log Mon Apr 28 2018 00:15:01 www1 sshd[5258]: Failed password
00:15:01 for invalid user rightscale from 87.194.216.51 port 3361 ssh2
Thu May 01 2018 00:15:05 mailsv1 sshd[5258]: Failed
2018-04-28
00:15:05
tutorialdata.zip:./mailsv/secure.log password for invalid user testuser from 194.8.74.23 port 3626
ssh2

2018-04-27
tutorialdata.zip:./www1/secure.log Sun Apr 27 2018 00:15:01 www1 sshd[5258]: Failed password
00:15:01 for invalid user redmine from 91.208.184.24 port 3587 ssh2

earliest関数を使⽤して、サーチを拡張します。

sourcetype=secure invalid user "sshd[5258]" | table _time source _raw | stats earliest(_raw)

このサーチでは、_timeの値が2018-04-27 00:15:01のイベント(最も古いタイムスタンプのイベント)が返されます。

_t im e ソース _raw

2018-04-27
tutorialdata.zip:./www1/secure.log Sun Apr 27 2018 00:15:01 www1 sshd[5258]: Failed password
00:15:01 for invalid user redmine from 91.208.184.24 port 3587 ssh2

ear li es t_ ti m e( x )

説明

指定されたフィールド値が時系列的にもっとも早く出現した時点のUNIX時を返します。

使⽤法

この関数はフィールド値を⽂字列として処理します。
stats、mstats、tstatsコマンドとともにearliest_time(X)関数を使⽤できます。
メトリックスデータの場合は、earliest_time(x)をearliest(x)、latest(x)、およびlatest_time(x)と⼀緒に使⽤すること
で、カウンターの増加レートを計算できます。代わりにrate(x)カウンターを使⽤しても、同じ結果が得られます。

基本的な例

次のサーチをメトリックスデータに対して実⾏します。deployで始まる各metric_nameの最も早いUNIX時の値を毎分返すよう
に設計されています。

| mstats earliest_time(_value) where index=_metrics metric_name=deploy* BY metric_name span=1m

結果は、以下のような内容で[統計]タブに表⽰されます。

_t im e m et ric_nam e earliest _t im e(_value)


110
2018-11-11 18:14:00 deploy-connections.nCurrent 1541988860.000000
2018-11-11 18:14:00 deploy-connections.nStarted 1541988860.000000

2018-11-11 18:14:00 deploy-server.volumeCompletedKB 1541988860.000000

2018-11-11 18:15:00 deploy-connections.nCurrent 1541988922.000000

2018-11-11 18:15:00 deploy-connections.nStarted 1541988922.000000

2018-11-11 18:15:00 deploy-server.volumeCompletedKB 1541988922.000000

lates t( X )

説明

フィールドXの値の、時系列的にもっとも早く出現した値を返します。

使⽤法

この関数はフィールド値を⽂字列として処理します。
latest(X)関数は、chart、mstats、stats、timechart、tstatsコマンドと⼀緒に使⽤できます。

基本的な例

この例では、サーチチュートリアルのサンプルデータセットを使⽤しています。Splunkインスタンスでこの例を試すには、サンプルデータをダウン
ロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。サーチを実⾏するときは、時間範囲として[全時間] を使⽤し
ます。

以下のサーチを実⾏して、特定のsshd (セキュアーシェルデーモン)に対する無効なユーザーログイン試⾏を特定します。
tableコマンドを使⽤して値を_time、source、_rawフィールドに表⽰します。

sourcetype=secure invalid user "sshd[5258]" | table _time source _raw

結果は、以下のような内容で[統計]タブに表⽰されます。

_t im e ソース _raw

2018-04-28
Mon Apr 28 2018 00:15:05 mailsv1 sshd[5258]: Failed
00:15:05
tutorialdata.zip:./mailsv/secure.log password for invalid user tomcat from 67.170.226.218 port
1490 ssh2

2018-05-01
tutorialdata.zip:./www2/secure.log Thu May 01 2018 00:15:04 www2 sshd[5258]: Failed password
00:15:04 for invalid user brian from 130.253.37.97 port 4284 ssh2

2018-04-30
tutorialdata.zip:./www3/secure.log Wed Apr 30 2018 00:15:02 www3 sshd[5258]: Failed password
00:15:02 for invalid user operator from 222.169.224.226 port 1711 ssh2

2018-04-28
tutorialdata.zip:./www1/secure.log Mon Apr 28 2018 00:15:01 www1 sshd[5258]: Failed password
00:15:01 for invalid user rightscale from 87.194.216.51 port 3361 ssh2

2018-05-01
Thu May 01 2018 00:15:05 mailsv1 sshd[5258]: Failed
00:15:05
tutorialdata.zip:./mailsv/secure.log password for invalid user testuser from 194.8.74.23 port 3626
ssh2

2018-04-27
tutorialdata.zip:./www1/secure.log Sun Apr 27 2018 00:15:01 www1 sshd[5258]: Failed password
00:15:01 for invalid user redmine from 91.208.184.24 port 3587 ssh2

latest関数を使⽤して、サーチを拡張します。

sourcetype=secure invalid user "sshd[5258]" | table _time source _raw | stats latest(_raw)

このサーチでは、_timeの値が2018-05-01 00:15:05のイベント(最新のタイムスタンプのイベント)が返されます。

_t im e ソース _raw

2018-05-01
Thu May 01 2018 00:15:05 mailsv1 sshd[5258]: Failed
tutorialdata.zip:./mailsv/secure.log password for invalid user testuser from 194.8.74.23 port 3626
00:15:05
ssh2
111
lates t_ ti m e( x )

説明

指定されたフィールド値が時系列的にもっとも遅く出現した時点のUNIX時を返します。

使⽤法

この関数はフィールド値を⽂字列として処理します。
stats、mstats、tstatsコマンドとともにlatest_time(X)関数を使⽤できます。
メトリックスデータの場合は、latest_time(x)をearliest(x)、latest(x)、およびearliest_time(x)と⼀緒に使⽤すること
で、カウンターの増加レートを計算できます。代わりにrate(x)カウンターを使⽤しても、同じ結果が得られます。

基本的な例

次のサーチをメトリックスデータに対して実⾏します。過去60分において、名前がdeployで始まるメトリックスの最も早い
UNIX時の値を返すように設計されています。

| mstats latest_time(_value) where index=_metrics metric_name=queue.* BY metric_name span=1m

結果は、以下のような内容で[統計]タブに表⽰されます。

_t im e m et ric_nam e earliest _t im e(_value)

2018-11-13 14:43:00 queue.current_size 1542149039.000000

2018-11-13 14:43:00 queue.current_size_kb 1542149039.000000


2018-11-13 14:43:00 queue.largest_size 1542149039.000000

2018-11-13 14:43:00 queue.max_size_kb 1542149039.000000

2018-11-13 14:43:00 queue.smallest_size 1542149039.000000

2018-11-13 14:44:00 queue.current_size 1542149070.000000

2018-11-13 14:44:00 queue.current_size_kb 1542149070.000000


2018-11-13 14:44:00 queue.largest_size 1542149070.000000

2018-11-13 14:44:00 queue.max_size_kb 1542149070.000000

2018-11-13 14:44:00 queue.smallest_size 1542149070.000000

per _ day ( X )

説明

各⽇のフィールドXの値、またはeval式Xを返します。

使⽤法

timechartコマンドでper_day(X)関数を使⽤します。

基本的な例

以下の例は各⽇のフィールドtotalの値を返します。

... | timechart per_day(total)

以下の例はeval式eval(method="GET")) AS Views の結果を返します。

... | timechart per_day(eval(method="GET")) AS Views

その他の例:

この例では、サーチチュートリアルのサンプルデータセットを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できま

112
す。『サーチチュートリアル』のこのトピック からデータセットをダウンロードした後、指⽰に従ってSplunk導⼊環境にアップロードしてくださ
い。

このサーチはper_day()関数とeval式を使⽤してウェブページが閲覧された回数と、品⽬が購⼊された回数を判断します。結
果が[統計]タブに表⽰されます。

sourcetype=access_* | timechart per_day(eval(method="GET")) AS Views_day, per_day(eval(action="purchase")) AS Purchases

時間、分、秒あたりのビューおよび購買回数を判断するには、その他の時間関数をサーチに追加します。例:

sourcetype=access_* | timechart per_day(eval(method="GET")) AS Views_day, per_hour(eval(method="GET")) AS Views_hour,


per_minute(eval(method="GET")) AS Views_minute, per_day(eval(action="purchase")) AS Purchases

フィールド形式オプションを使⽤して、フィールド値の数字フォーマットを変更します。

per _ ho ur ( X )

説明

各時間のフィールドXの値、またはeval式Xを返します。

使⽤法

timechartコマンドでper_hour(X)関数を使⽤します。

基本的な例

以下の例は各時のフィールドtotalの値を返します。

... | timechart per_hour(total)

以下の例はeval式eval(method="POST")) AS Views の結果を返します。

... | timechart per_hour(eval(method="POST")) AS Views

per _ m i nute( X )

説明

各分のフィールドXの値、またはeval式Xを返します。

113
使⽤法

timechartコマンドとともにper_minute(X)関数も使⽤できます。

基本的な例

以下の例は各分のフィールドtotalの値を返します。

... | timechart per_minute(total)

以下の例はeval式eval(method="GET")) AS Views の結果を返します。

... | timechart per_minute(eval(method="GET")) AS Views

per _ s ec o nd( X )

説明

各秒のフィールドXの値、またはeval式Xを返します。

使⽤法

timechartコマンドとともにper_second(X)関数も使⽤できます。

基本的な例

以下の例は各秒のフィールドkbの値を返します。

... | timechart per_second(kb)

r ate( X )
説明

フィールド値の毎秒のレート変化を返します。(latest(X) - earliest(X)) / (latest_time(X) - earliest_time(X))を表します。最低1


回のリセットが発⽣している場合は、最⼤のリセット値も処理します。

使⽤法

stats、mstats、tstatsコマンドとともにrate(X)関数を使⽤できます。
累積カウンターメトリックス の毎秒のレートの変化を返します。累積カウンターメトリックスは、最後のカウンター
リセット以降の合計カウンター値をレポートします。
フィールドのearliest(X)およびlatest(X)の値が数値であり、earliest_time(X)とlatest_time(X)の値が異なっている必要が
あります。
サーチ時間範囲内に最低2つのメトリックスデータポイントが必要です。
複数のカウンターではなく、単⼀のカウンターのレート情報の取得に使⽤してください。

基本的な例

次のサーチをメトリックスデータに対して実⾏します。受信Webトラフィックの測定を提供するメトリックスの1時間ごとの
ヒットレートを返します。processorフィルターを使⽤して、複数のメトリックスシリーズ(nameとprocessorの組み合わせ)の情
報を返さないようにしています。

| mstats rate(traffic.incoming) as rate_hits where index=_metrics name=indexerpipe processor=index_thruput span=1h

結果のグラフを⾒ると、traffic.incomingメトリックスでは午後1時、午後4時、そして午前11時にスパイクが発⽣し、他の時
間では安定していることがわかります。

114
r ate_ av g ( X )

説明

メトリックス時系列 ごとに累積カウンターメトリックス のレートを計算します。これらのレートの平均を返します。

メトリックス時系列の詳細は、『メトリックス』の「メトリックス時系列に対する統計計算の実⾏」を参照してください。

使⽤法

rate_avg(X)関数は、メトリックスデータでのみ使⽤できます。mstatsコマンドと⼀緒に使⽤できます。
累積カウンターメトリックスの平均レートを計算する場合、最も明快な⽅法は、カウンターメトリックスレートの計算
をメトリックス時系列で分割してから、すべてのメトリックス時系列の平均レートを計算することです。
rate(X)関数とは異なり、rate_avg(X)関数は、各タイムスパンの時系列ごとに単⼀のメトリックスデータポイントしか存
在しなくてもレートを計算できます。また、複数のタイムスパンからデータを取得してレートを計算できます。
rate_avg(X)関数はprestats=trueをサポートしません。分割するためのディメンションの最終的なリストが必要です。

基本的な例

_metricsインデックスに、メトリックスspl.intr.resource_usage.PerProcess.data.elapsedのデータがあるとします。これは累積
カウンターメトリックスです。多くのメトリックス時系列が含まれています。

次のサーチ例は、rate_avg関数を使⽤して、時間範囲内の各spl.mlog.thruput.thruput.total_k_processed時系列のrate(X)を計算し
ます。そして、すべての時系列の平均レートを取得します。最後に、結果をグラフに描画できるように時間で分割します。

| mstats rate_avg(spl.mlog.thruput.thruput.total_k_processed) where index=_metrics span=1h

r ate_ s um ( X )

説明

メトリックス時系列 ごとに累積カウンターメトリックス のレートを計算します。これらのレートの集計を返します。

メトリックス時系列の詳細は、『メトリックス』の「メトリックス時系列に対する統計計算の実⾏」を参照してください。

使⽤法

mstatsコマンドとともにrate_sum(X)関数も使⽤できます。
累積カウンターメトリックスの集計レートを計算する場合、最も明快な⽅法は、カウンターメトリックスレートの計算
をメトリックス時系列で分割してから、すべてのメトリックス時系列の集計レートを計算することです。
rate(X)関数とは異なり、rate_sum(X)関数は、各タイムスパンの時系列ごとに単⼀のメトリックスデータポイントしか存
在しなくてもレートを計算できます。また、複数のタイムスパンからデータを取得してレートを計算できます。
rate_sum(X)関数はprestats=trueをサポートしません。分割するためのディメンションの最終的なリストが必要です。

基本的な例

115
_metricsインデックスに、メトリックスspl.intr.resource_usage.PerProcess.data.elapsedのデータがあるとします。これは累積
カウンターメトリックスです。多くのメトリックス時系列が含まれています。

次のサーチ例は、rate_sum関数を使⽤して、時間範囲内の各spl.mlog.thruput.thruput.total_k_processed時系列のrate(X)を計算し
ます。そして、すべての時系列の集計レートを取得します。最後に、結果をグラフに描画できるように時間で分割します。

| mstats rate_sum(spl.mlog.thruput.thruput.total_k_processed) where index=_metrics span=1h

116
時間書式変数と修飾⼦
⽇付と時間の書式変数
ここでは、eval関数、strftime()およびstrptime()での時間書式の定義に使⽤可能な変数を記載しています。これらの変数は
イベントデータ内のタイムスタンプの記述にも使⽤できます。

さらに、relative_time()およびnow()の時間関数を引数として使⽤することもできます。

⽇付や時間を伴う機能に関する詳細は、『サーチ』マニュアルの「サーチの時間修飾⼦」「時間でのサーチについて」を参
照してください。

使⽤できるすべてのタイムゾーン値については、tzデータベースタイムゾーンのリストを参照してください。Splunkソフト
ウェアがタイムゾーンとtzデータベースを決定する⽅法については、『データの取り込み』マニュアルの「タイムスタンプの
タイムゾーンを指定する」を参照してください。
%Nや %Qなどの秒未満の時間変数は、タイムスタンプの分解能がミリ秒に設定されているメトリックスインデックスをサー
チする場合に使⽤できます。

メトリックスインデックスがミリ秒のタイムスタンプ分解能でメトリックスデータポイントをインデックス化できるように
する⽅法については、以下を参照してください。

Splunk Cloudを使⽤している場合は『Splunk Cloudユーザー』マニュアルの「Splunk Cloudインデックスの管


理」。
Splunk Enterpriseを使⽤している場合は、『インデクサーとインデクサークラスターの管理』の「カスタムインデッ
クスの作成」。

⽇付と時間の変数

変数 説明
サーバーのオペレーティングシステムで定義されている現在のロケールの形式での⽇付と時間。たとえば、Linuxの⽶語
%c の設定ではThu Jul 18 09:30:00 2019です。

サーバーのオペレーティングシステムで定義されている現在のロケールでのタイムゾーンの⽇付と時間。たとえば、
%+
Linuxの⽶語の設定ではThu Jul 18 09:30:00 PDT 2019です。

時間変数

変数 説明
%Ez Splunk固有のタイムゾーン(分)。

%H 10進数の時間(24時間形式)。時間は00から23の値で表されます。先頭のゼロは省略できます。

%I 00から12の値で⽰される10進数の時間。先頭のゼロは省略できます。

%k %Hと同様に、10進数の時間(24時間形式)。たとえば0から23など、先頭のゼロはスペースに置換されます。

%M 10進数の分。分は00から59の値で表されます。先頭のゼロは省略できます。

%N 1秒未満の桁数。デフォルトは %9Nです。%3N =ミリ秒、%6N =マイクロ秒、%9N =ナノ秒です。

%p AMまたはPM。

UTCタイムスタンプの1秒未満のコンポーネント。デフォルトは %3Qです。有効な値は次のとおりです。

%Q %3Q =ミリ秒、値は000〜999
%6Q =マイクロ秒、値は000000〜999999
%9Q =ナノ秒、値は000000000〜999999999

%S たとえば00から59など、⼗進数で⽰される時間(秒)。

UNIXエポック時のタイムスタンプ、またはエポック(1970-01-01 00:00:00 +0000 (UTC))からの秒数。(1484993700


%s
は1⽉21⽇⽕曜⽇10:15:00 2020)

%T 24時間表記の時刻(%H:%M:%S)。例:23:59:59。

%X 現在のロケールの形式での時間。⽶語の場合、午前9時30分は9:30:00となります。

%Z タイムゾーンの省略形。たとえば、⽶国の東部標準時ではESTとなります。

時間と分で表された(+hhmmまたは-hhmm) UTCからのタイムゾーンオフセット。たとえば、UTCの5時間前の場合、

117
値は⽶国東部標準時である-0500となります。

例:
%z
%zを使⽤して時間と分を指定します。例:-0500
%:zを使⽤して時間と分をコロンで区切って指定します。例:-5:00
%::zを使⽤して時間、分、秒をコロンで区切って指定します。例:-05:00:00
%:::zを使⽤して時間だけを指定します。例:-05

%% リテラル「%」⽂字。

⽇付変数

変数 説明
%F %Y-%m-%d (ISO 8601⽇付フォーマット)と同じ。

%x 現在のロケールの形式での⽇付。たとえば、⽶語であれば7/13/2019のようになります。

⽇、曜⽇、週の指定

変数 説明
%A 完全な曜⽇名。(Sunday、...、Saturday)。

%a 曜⽇の省略形。(Sun、...、Sat)。

%d 先頭の0が付いた10進数の⽇付。(01〜31)

%e %d のように、10進数の⽇付ですが、先頭の0はスペースに置き換えられます。(1〜31)

%j 先頭の0が付いた10進数のその年の経過⽇数(通⽇)。(001〜366)

週。%V変数は、最も⼀般的な開始番号である1からカウントを開始します。 %U変数は、0からカウントを開始します。
%V (または%U)

%w 10進数の曜⽇。(0 =⽇曜、...、6 =⼟曜)。

⽉の指定

変数 説明
%b ⽉名の省略形。(Jan、Feb、など)。

%B 完全な⽉名。(January、February、など)。

%m 10進数の⽉。(01〜12)。先頭のゼロは省略できます。

年の指定

変数 説明
%y 10進数の年(世紀なし)。(00〜99)。先頭のゼロは省略できます。

%Y 10進数の年(世紀付き)。たとえば、2020です。


いくつかの時間書式⽂字列の結果を下表に⽰します。

時間書式⽂字列 結果

%Y-%m-%d 2019-12-31

%y-%m-%d 19-12-31

%b %d, %Y Feb 11, 2020

%d%b '%y = %Y-%m-%d 23 Apr '20 = 2020-04-23

時間変数を使⽤したサーチの結果を下表に⽰します。
118
サーチ例 結果

host="www1" | eval WeekNo =


WeekNoというフィールドを作成して、_timeフィールドの⽇付に対応する週番号の値を返します。
strftime(_time, "%V")

... | eval
mytimeというフィールドを作成して、変換したタイムスタンプ値を_timeフィールドに返します。値はUNIX形式
mytime=strftime(_time,"%Y-
で保存され、指定された形式(ISO 8601形式)を使⽤して変換されます。例:2020-04-13T14:00:15.000。
%m-%dT%H:%M:%S.%Q")

時間修飾⼦
修飾⼦を使ってサーチの時間範囲をカスタマイズしたり、サーチ結果のタイムスタンプの書式を変更したりすることができ
ます。

時間とフィールドのサーチ
Splunkソフトウェアでイベントを処理する場合、そのタイムスタンプはデフォルトのフィールド_timeとして保存されます。
このタイムスタンプはイベントの発⽣時刻で、UNIX表記で保存されます。相対時間修飾⼦earliestまたはlatestを使ってサー
チすると、指定したタイムスタンプで始まる、終了する、またはその範囲内にある全イベントをサーチします。
たとえば、earliest=@dでサーチする場合、午前0時からの値が_timeの各イベントをサーチします。この例では、⽇付の書式変
数である@dを使⽤します。「⽇付と時間の書式変数」を参照してください。

時間範囲およびサブサーチ

タイムレンジピッカーで選択した時間範囲は、ベースサーチとサブサーチに適⽤されます。

ただし、ベースサーチで直接指定した時間範囲は、サブサーチには適⽤されません。また、サブサーチで直接指定した時間
範囲は、そのサブサーチにのみ適⽤されます。この時間範囲は、ベースサーチにも他のサブサーチにも適⽤されません。

タイムレンジピッカーでLast 7 days を指定し、サブサーチにearliest=2d@dが含まれている場合、最も早い時間の修飾⼦はサ


ブサーチにのみ適⽤され、Last 7 days はベースサーチに適⽤されます。

インデックス時に基づいたサーチ

インデックスが作成された時期に基づいて、イベントをサーチすることもできます。UNIX時間は_indextimeフィールドに保
存されます。_timeフィールドに対するearliestやlatestと同様に、_indextimeに基づいてイベントをサーチするには、相対時間
修飾⼦_index_earliestおよび_index_latestを使⽤します。たとえば、前の時間にインデックスが作成されたイベントをサーチ
する場合は、_index_earliest=-h@h _index_latest=@hのように指定します。

_index_earliestや_index_latestのようなインデックス時間に基づく修飾⼦を使⽤する場合は、サーチにはイベントを取得する
イベントタイムウィンドウも必要です。つまり、⾮インデックス時ウィンドウだけでなく、インデックス時ウィンドウに基
づいて、イベントチャンクを除外する可能性があります。インデックス時に基づいて各イベントを確実に取得するために、
サーチは全時間 に対して実⾏する必要があります。

時間修飾⼦の⼀覧
カスタム/相対時間範囲を指定するには、修飾⼦earliestおよびlatestを使⽤します。earliest="10/5/2016:20:00:00"などの正確
な時間、あるいはearliest=-hまたはlatest=@w6などの相対時間を指定できます。

また、相対時間を指定する際には、現在の時刻を表す修飾⼦nowを使⽤できます。

修飾⼦ 構⽂ 説明
サーチの時間範囲のもっとも早い_timeを指定します。
earliest=[+|-]
earliest <time_integer><time_unit>@<time_unit> earliest=1を使⽤して、UNIXエポック時1 (1970年1⽉1⽇午前0時0分1秒(UTC))を
指定します。

_index_earliest=[+|-]
_index_earliest サーチの時間範囲のもっとも早い_indextimeを指定します。
<time_integer><time_unit>@<time_unit>

_index_latest=[+|-]
119
_index_latest サーチの時間範囲のもっとも遅い_indextimeを指定します。
<time_integer><time_unit>@<time_unit>

latest=[+|-]
latest サーチの時間範囲のもっとも遅い_timeを指定します。
<time_integer><time_unit>@<time_unit>

now()またはnow 現在の時刻を表します。earliestに指定すると、now()はサーチの開始時刻になりま
now
す。

time time() リアルタイムサーチの場合、time()は現在のマシン時刻になります。

サーチウィンドウのカスタマイズについては、『サーチ』マニュアルの「サーチへのリアルタイム時間範囲ウィンドウの指
定」を参照してください。

相対時間修飾⼦の指定⽅法
時間の量を⽰す⽂字列を使って相対時間を指定することができます(整数と単位)。時間単位の前に@記号を付記することで、
スナップ(snap to)時間単位を指定することもできます。

時間修飾⼦を使⽤する構⽂は [+|-]<time_integer><time_unit>@<time_unit>

相対時間修飾⼦を指定するステップは:

1. 現在時間からの時間補正を⽰す。
2. 数字と単位で、時間量を定義します。
3. スナップ("snap to")時間単位を指定します。これにより時間量を切り捨てた最寄りの時間またはもっとも遅い時間を指
定することができます。

時間オフセットを⽰す

⽂字列は、現在の時刻からのオフセットを⽰すプラス(+)またはマイナス(-)記号で開始します。

時間量を定義する

時間量を数字と単位で定義します。以下の表に表⽰されている時間単位に対応しています。

時間単位 有効な単位の短縮形

subseconds マイクロ秒(us)、ミリ秒(ms)、センチ秒(cs)、またはデシ秒(ds)

second s、sec、secs、second、seconds

minute m、min、minute、minutes

hour h、hr、hrs、hour、hours

day d、day、days

week w、week、weeks

month mon、month、months

quarter q、qtr、qtrs、quarter、quarters

year y、yr、yrs、year、years

たとえば、1時間前からのサーチには、以下の時間修飾⼦のいずれかを使います。

earliest=-h

または
earliest=-60m

単⼀の時間⼊⼒を追加する場合、数字1は省略できます。つまり、「s」は「1s」、「m」は「1m」、「h」は「1h」と同じ
です。

msなどの秒未満のタイムスケールは、分解能がミリ秒のタイムスタンプが有効化されているメトリックスインデックスをサー
チする場合にのみ使⽤できます。

メトリックスインデックスがミリ秒のタイムスタンプ分解能でメトリックスデータポイントをインデックス化できるように
120
する⽅法については、以下を参照してください。

Splunk Cloudを使⽤している場合は『Splunk Cloudユーザー』マニュアルの「Splunk Cloudインデックスの管


理」。
Splunk Enterpriseを使⽤している場合は、『インデクサーとインデクサークラスターの管理』の「カスタムインデッ
クスの作成」。

スナップ("snap t o")時間単位を指定する

スナップ("snap to")時間単位を指定できます。これにより時間量を切り捨てた最寄りの時間またはもっとも遅い時間を指定す
ることができます。時間量とスナップ(snap to)時間単位を、「@」⽂字で区切ってください。

前述の任意の時間単位を使⽤できます。例:
⽇曜⽇は@w、@week、および@w0
⽉初は@month
最近の四半期の初めには@q、@qtr、または@quarter (1⽉1⽇、4⽉1⽇、7⽉1⽇、10⽉1⽇)。
曜⽇を指定できます:w0 (⽇曜⽇)、w1、w2、w3、w4、w5、およびw6 (⼟曜⽇)。⽇曜の場合は、w0およびw7で指定
できます。
より詳細な相対時間定義を⾏うために、スナップ時間からのオフセット を指定または時間修飾⼦と⼀緒に「チェー
ン」することができます。たとえば、@d-2hは、今⽇の始め(午前0時)にスナップし、-2時間のオフセットを適⽤して、昨
⽇の午後10時となります。
Splunkプラットフォームは、必ずオフセットを適⽤してからスナップを適⽤します。つまり、@記号の左側が適
⽤されてから右側が適⽤されます。
最寄りの、または⼀番遅い時間にスナップする場合、Splunkソフトウェアは常に後⽅にスナップ またはもっとも遅い
時間に切り捨てた値(指定時間以前)にスナップします。たとえば、11:59:00で時間に「スナップ」した場合、12時では
なく11時にスナップします。
スナップ量の前に時間オフセットを指定しない場合、Splunkソフトウェアは「現在の時刻を指定された時間量にスナッ
プ」するものと解釈します。たとえば、現在時刻が⾦曜⽇の午後11時59分で、⼟曜⽇にスナップするために@w6を使⽤
した場合、結果は前の⼟曜⽇の午前12時01分になります。

1.全時間のサーチの実⾏

UNIX時間の開始からイベントをサーチする場合は、earliest=1を使⽤します。

earliest=1およびlatest=now()が使⽤される場合、サーチは全時間実⾏されます。

...earliest=1 latest=now()

latest=now()を指定した場合、将来のイベントは返されません。

将来のイベントを返すには、latest=<a_big_number>を指定します。将来のイベントは、現在の時刻now()よりも後のタイムスタ
ンプを持つイベントです。

2.現在の週の初めからイベントをサーチする

earliest=@w0

3.最後の完全な稼働週からイベントをサーチする

earliest=-5d@w1 latest=@w6

4.境界として正確な⽇付をサーチする

11⽉15⽇の8 PMから11⽉22⽇の8 PMなどの境界では、時間形式%m/%d/%Y:%H:%M:%Sを使⽤します。

earliest="11/15/2017:20:00:00" latest="11/22/2017:20:00:00"

5.固定⽇付/時刻形式を使⽤した複数の時間ウィンドウの指定

複数の時間ウィンドウは、時間形式%m/%d/%Y:%H:%M:%Sを使⽤して指定できます。たとえば、特定の⽇付の午後5〜6時または午
後7〜8時のイベントを検索するには、以下の構⽂を使⽤します。

(earliest="1/22/2018:17:00:00" latest="1/22/2018:18:00:00") OR (earliest="1/22/2018:19:00:00" latest="1/22/2018:20:00:00")

121
6.相対時間形式を使⽤した複数の時間ウィンドウの指定

時間修飾⼦を使⽤して複数の時間ウィンドウを指定し、相対時間でスナップできます。たとえば、直近24時間のうち午前0時
から1時までの1時間のイベント以外を探すには、次の構⽂を使⽤します。

((earliest=-24h latest<@d) OR (earliest>=@d+1h))

その他の時間修飾⼦
以下のサーチ時間修飾⼦は有効ですが、今後のリリースで削除され、関数がサポートされなくなる可能性があります 。

修飾⼦ 構⽂ 説明
daysago daysago=<int> 過去「整数値 」⽇間のイベントをサーチします。

enddaysago enddaysago=<int> 現在から「整数」⽇前の終了時間を設定します。

endhoursago endhoursago=<int> 現在から「整数」時間前の終了時間を設定します。

endminutesago endminutesago=<int> 現在から「整数」分前の終了時間を設定します。

endmonthsago endmonthsago=<int> 現在から「整数」ヶ⽉前の終了時間を設定します。

endtime=<string> 指定した時間より前のイベントをサーチします(指定時間は除外)。タイムスタンプの書
endtime
式設定には、tim e f o r m at を使⽤します。

endtimeu endtimeu=<int> 特定のUNIX時間より前のイベントをサーチします。

hoursago hoursago=<int> 過去「整数値 」時間内のイベントをサーチします。

minutesago minutesago=<int> 過去「整数値 」分内のイベントをサーチします。

monthsago monthsago=<int> 過去「整数値 」か⽉内のイベントをサーチします。

searchtimespandays searchtimespandays=<int> 指定した⽇数範囲(整数表記)内をサーチします。

searchtimespanhours searchtimespanhours=<int> 指定した時間範囲(整数表記)内をサーチします。

searchtimespanminutes searchtimespanminutes=<int> 指定した分範囲(整数表記)内をサーチします。

searchtimespanmonths searchtimespanmonths=<int> 指定した⽉数範囲(整数表記)内をサーチします。

startdaysago startdaysago=<int> 現在の時刻から、指定⽇数前をサーチします。

starthoursago starthoursago=<int> 現在の時刻から、指定時間数前をサーチします。

startminutesago startminutesago=<int> 現在の時刻から、指定分数前をサーチします。

startmonthsago startmonthsago=<int> 現在の時刻から、指定⽉数前をサーチします。

starttime starttime=<timestamp> 指定⽇時から現在までをサーチします(指定時刻を含む)。

starttimeu starttimeu=<int> 特定のUNIX時間から開始されるイベントをサーチします。

s tar ttim e とe ndtim e 修飾⼦の時間書式を設定します。デフォル


timeformat timeformat=<string>
ト:timeformat=%m/%d/%Y:%H:%M:%S

122
サーチコマンド
a bst r a ct
説明
各サーチ結果のテキストのサマリーまたは概要を作成します。元のテキストはサマリーに置き換えられます。

サマリーはスコアリング機能によって作成されます。選択されたmaxlinesより⼤きなイベント、隣接する⾏により多くのテキ
スト⽤語や単語があるものは、単語の少ないものより優先されます。⾏にサーチ単語が存在している場合、その隣接⾏も部
分⼀致となり、コンテキストが返される場合があります。選択⾏間にギャップがある場合、⾏の前に省略記号「...」が付けら
れます。

イベントのテキストの⾏数がmaxlines以下の場合は変更されません。

構⽂
abstract [maxterms=<int>] [maxlines=<int>]

省略可能な引数

maxterms
構⽂ :maxterms=<int>
説明 :⼀致する単語の最⼤数です。1〜1000の値を指定できます。
maxlines
構⽂ :maxlines=<int>
説明 :⼀致する⾏の最⼤数です。1〜500の値を指定できます。


例1:各サーチ結果の5⾏までのサマリーを表⽰します。

... |abstract maxlines=5

関連項⽬
highlight

a ccu m
説明
fieldが数値であるそれぞれのイベントでは、accumコマンドによって現在までの合計、または数値の合計が計算されます。累
積の合計値は同じフィールドに返されるか、または指定するnewfieldに返されます。

構⽂
accum <field> [AS <newfield>]

必須引数

field
構⽂ :<string>
説明 :累積の合計を計算するフィールドの名前です。フィールドには数値が含まれる必要があります。

省略可能な引数

newfield
構⽂ :<string>
説明: 結果を保存する新しいフィールドの名前です。

基本的な例

1.フィールドの現在までの合計を作成する

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
123
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏するときは、時間範囲として[全時間] を使⽤します。

次のサーチは、戦略ゲームの正常なビューであるWebアクセスログファイルからイベントを探します。製品IDごとのイベン
ト数が返されます。

sourcetype=access_* status=200 categoryId=STRATEGY | chart count AS views by productId

結果は、以下のような内容で[統計]タブに表⽰されます。

製品ID views

DB-SG-G01 1796

DC-SG-G02 1642

FS-SG-G03 1482

PZ -SG-G05 1300

accumコマンドを使⽤して、現在までのビューの合計を⽣成し、「TotalViews」という新しいフィールドに表⽰します。

sourcetype=access_* status=200 categoryId=STRATEGY | chart count AS views by productId | accum views as TotalViews

結果は、以下のような内容で[統計]タブに表⽰されます。

製品ID views To t alViews

DB-SG-G01 1796 1796

DC-SG-G02 1642 3438

FS-SG-G03 1482 4920

PZ -SG-G05 1300 6220

関連項⽬
Autoregress、delta、streamstats、trendline

a ddcol t ot a l s
説明
addcoltotalsコマンドは、サーチ結果の最後に新しい結果を追加します。結果にはそれぞれの数値フィールドの合計が含まれ
ます。または合計するフィールドを指定できます。結果は[統計]タブに表⽰されます。labelfield引数が指定されている場
合、統計結果テーブルに指定した名前で列が追加されます。

構⽂
addcoltotals [labelfield=<field>] [label=<string>] [<fieldlist>]

省略可能な引数

<fieldlist>
構⽂ :<field> ...
説明 :有効なフィールド名のスペース区切りリストです。addcoltotalsコマンドは、指定したリストにあるフィールドの
合計だけを計算します。フィールド名には、ワイルドカードとしてアスタリスク(*)を使⽤できます。
デフォルト :すべてのフィールドの合計を算出します。
labelfield
構⽂ :labelfield=<fieldname>
説明 :結果に追加するフィールドの名前を指定します。
デフォルト :なし
label
構⽂ :label=<string>
説明 :labelfield引数と⼀緒に使⽤し、サマリーイベントにラベルを追加します。labelfield引数がない場合、label引数
は無効となります。
デフォルト :Total
124
基本的な例

1.すべてのフィールドの合計を算出する

すべてのフィールドの合計を算出し、合計をサマリーイベント「change_name」に保存します。

... | addcoltotals labelfield=change_name label=ALL

2.2つの固有のフィールドに対して、列合計を追加します。

テーブル内の2つの固有のフィールドに対して、列合計を追加します。
sourcetype=access_* | table userId bytes avgTime duration | addcoltotals bytes duration

3.フィールド名パターンと⼀致するフィールドの合計を作成する

2つの名前パターンに対してフィールドをフィルタリングして、いずれかの合計を取得します。

... | fields user*, *size | addcoltotals *size

4.列合計のフィールド名を指定する

グラフに値の合計を表⽰します。

index=_internal source="metrics.log" group=pipeline | stats avg(cpu_seconds) by processor | addcoltotals labelfield=processor

その他の例:

1.列の合計を⽣成する

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏するときは、時間範囲として[全時間] を使⽤します。

次のサーチは、戦略ゲームの正常なビューであるWebアクセスログファイルからイベントを探します。製品IDごとのイベン
ト数が返されます。

sourcetype=access_* status=200 categoryId=STRATEGY | chart count AS views by productId

結果は、以下のような内容で[統計]タブに表⽰されます。

製品ID views

DB-SG-G01 1796

DC-SG-G02 1642

FS-SG-G03 1482

PZ -SG-G05 1300

addcoltotalsコマンドを使⽤して、ビューの合計を⽣成し、列の⼀番下に表⽰します。

sourcetype=access_* status=200 categoryId=STRATEGY | chart count AS views by productId | addcoltotals

結果は、以下のような内容で[統計]タブに表⽰されます。

製品ID views

DB-SG-G01 1796

DC-SG-G02 1642

FS-SG-G03 1482

PZ -SG-G05 1300

6220

125
合計のラベルとなるフィールドを結果に追加できます。

sourcetype=access_* status=200 categoryId=STRATEGY | chart count AS views by productId | addcoltotals labelfield="Total views"

結果は、以下のような内容で[統計]タブに表⽰されます。

製品ID views 合計ビュー

DB-SG-G01 1796

DC-SG-G02 1642

FS-SG-G03 1482

PZ -SG-G05 1300

6220 Total

関連項⽬
コマンド
addtotals
stats

a ddinfo
説明
サーチに関するグローバルな共通の情報を含む各イベントにフィールドを追加します。このコマンドは、主にサマリーイン
デックスの作成のために内部で使⽤されるコンポーネントです。

構⽂
addinfo

addinfoコマンドを使⽤すると、各イベントに以下のフィールドが追加されます。

フィールド 説明
info_min_time サーチの最も早い時間境界。

info_max_time サーチの最も遅い時間境界。

info_sid イベントを⽣成したサーチID。

info_search_time サーチが実⾏された時間。

使⽤法
addinfoコマンドは、分散可能ストリーミングコマンド です。「コマンドタイプ」を参照してください。

1.各イベントに情報を追加する

サーチに関する情報を各イベントに追加します。

... | addinfo

2.どのハートビートが予想よりも遅いかを判断する

この例を使⽤して、ホスト、フォワーダー、インデクサーのtcpin_connections、または任意の数のシステムコンポーネント
からのハートビートを追跡できます。この例では、ホストを使⽤します。

ルックアップファイルにexpected_hostsというホスト名のリストがあります。予想される時間の後にホストからハートビート
をサーチしたいとします。addinfoコマンドを使⽤して、時間範囲を評価するのに役⽴つ情報を各イベントに追加します。

126
... | stats latest(_time) AS latest_time BY host | addinfo | eval latest_age = info_max_time - latest_time | fields - info_* |
inputlookup append=t expected_hosts | fillnull value=9999 latest_age | dedup host | where latest_age > 42

statsコマンドを使⽤して、ホストによる最新のハートビートを計算します。addinfoコマンドは、各結果に情報を追加しま
す。この検索は、検索の最新の時間境界であるinfo_max_timeを使⽤します。evalコマンドは、latest_ageと呼ばれるフィールド
を作成し、時間範囲の終わりに対するハートビートの経過時間を計算するために使⽤されます。これにより、-11m@mから-
m@mの時間範囲が可能になります。これは、開始分の11分前から、開始分の1分前ということです。info_max_timeは+無限に設
定されるため、最新= null /すべての時間を指定するとサーチは機能しません。

ルックアップファイルを使⽤してexpected_hosts、ホストのリストを結果に追加します。このリストを使⽤すると、予想され
る時間帯にハートビートを送信していないホストを特定できます。フィールドにnull値を持つホストの場合
は、latest_ageフィールドに値9999を⼊⼒します。dedupコマンドで重複したホストイベントを削除します。whereコマンドを
使⽤して結果をフィルタリングし、42秒を超えるハートビートを返します。

この例では、statsコマンドの代わりにtstatsコマンドを使⽤することで、サーチのパフォーマンスを改善できます。

関連項⽬
search

a ddt ot a l s
説明
addtotalsコマンドは、各結果のすべての数値フィールドの合計を算出します。結果が[統計]タブに表⽰されます。

すべての数値フィールドを計算する代わりに、合計するフィールドのリストを指定できます。合計は新しいフィールドにス
トアーされます。

col=trueの場合、addtotalsコマンドは列の合計を計算し、各フィールドの合計の後に新しい結果を追加します。 labelfield指
定された場合、このサマリーイベントに追加されるフィールドです。その値は「label」オプションで設定されます。サマ
リーイベントの計算では、addtotals col=trueコマンドを使う代わりにaddcoltotalsコマンドを使うこともできます。

構⽂
addtotals [row=<bool>] [col=<bool>] [labelfield=<field>] [label=<string>] [fieldname=<field>] [<field-list>]

必須引数

無し。

省略可能な引数

field-list
構⽂ :<field> ...
説明 :スペースで区切られた1つ以上の数値フィールドです。<field-list>に指定されたフィールドだけが合計されま
す。<field-list>が指定されていない場合、すべてのフィールドは合計に含まれます。
使⽤法 :フィールド名にワイルドカードを使⽤できます。たとえば、フィールド名がcount1、count2、count3の場
合、count*と指定して「count」で始まるすべてのフィールドを表⽰できます。
デフォルト :すべての数値フィールドは合計に含まれます。


構⽂ :row=<bool>
説明 :各イベントごとの<field-list>の合計を計算するかどうかを指定します。これは、テーブルの各⾏の合計の計算に
類似しています。合計は新しいフィールドにストアーされます。このフィールドのデフォルトの名前はTotalです。他の
名前を指定する場合は、fieldname引数を使います。
使⽤法 :デフォルトはrow=trueであるため、イベントごとの合計が不要なときのみrow引数にrow=falseを指定します。
デフォルト :真(True)
col
構⽂ :col=<bool>
説明 :イベントのリストの最後に、サマリーイベントと呼ばれる新しいイベントを追加するかどうかを指定します。
テーブルの列の合計の計算と同様に、サマリーイベントにはイベントの各フィールドの合計が表⽰されます。
デフォルト :偽(False)

fieldname
構⽂ :fieldname=<field>
説明 :各イベントごとのfield-list 合計を含むフィールドの名前を指定します。fieldname引数はrow=trueの場合のみ有効で
す。
デフォルト :Total
127
labelfield
構⽂ :labelfield=<field>
説明 :サマリーイベントのラベルにフィールドを指定します。labelfield引数はcol=trueの場合のみ有効です。
*結果で既存のフィールドを使⽤するには、その名前をlabelfield引数に設定します。たとえば、フィールドの名前
がIPの場合は、labelfield=IPを指定します。
*結果にlabelfieldに⼀致するフィールドがない場合は、labelfield値を使って新しいフィールドが追加されます。
デフォルト :なし

label
構⽂ :label=<string>
説明 :サマリーイベントの⾏ラベルを指定します。
* labelfield引数が結果の既存のフィールドである場合は、その⾏にlabel値が表⽰されます。
* labelfield引数によって新しいフィールドが作成された場合、サマリーイベントの⾏の新しいフィールドにlabelが表⽰
されます。
デフォルト :Total

使⽤法
addtotalsコマンドは、列の合計の計算に使⽤する場合を除いて、分散可能ストリーミングコマンド となります。列の合計を
計算する場合は、addtotalsコマンドは変換コマンド となります。「コマンドタイプ」を参照してください。

1.各イベントの数値フィールドの合計を算出する

この例では、各製品の四半期ごとの売り上げを列挙するイベントを使⽤します。例を⽰します。

pro duct s quart er sales クォータ

ProductA QTR1 1200 1000

ProductB QTR1 1400 1550

ProductC QTR1 1650 1275

ProductA QTR2 1425 1300

ProductB QTR2 1175 1425

ProductC QTR2 1550 1450

ProductA QTR3 1300 1400

ProductB QTR3 1250 1125

ProductC QTR3 1375 1475

ProductA QTR4 1550 1300

ProductB QTR4 1700 1225

ProductC QTR4 1625 1350

chart コマンドを使⽤したデータの集計
各四半期の製品ごとにデータを集計するには、以下のサーチを実⾏します。

source="addtotalsData.csv" | chart sum(sales) BY products quarter

この例では、chartコマンドのBY句で2つのフィールドが指定されています。

productsフィールドは、<row-split>フィールドとして参照されています。
quarterフィールドは、<column-split>フィールドとして参照されています。

結果は、以下のような内容で[統計]タブに表⽰されます。

pro duct s QTR1 QTR2 QTR3 QTR4

ProductA 1200 1425 1300 1550

ProductB 1400 1175 1250 1700

128
ProductC 1650 1550 1375 1625

各⾏の合計を⽣成する列を追加するには、以下のサーチを実⾏します。

source="addtotalsData.csv" | chart sum(sales) BY products quarter | addtotals

結果は、以下のような内容で[統計]タブに表⽰されます。

pro duct s QTR1 QTR2 QTR3 QTR4 To t al

ProductA 1200 1425 1300 1550 5475

ProductB 1400 1175 1250 1700 5525

ProductC 1650 1550 1375 1625 6200

st at sコマンドを使⽤した合計の計算
各製品の合計のみが必要である場合は、statsコマンドを使⽤した⽅が簡単です。

source="addtotalsData.csv" | stats sum(sales) BY products

結果は、以下のような内容で[統計]タブに表⽰されます。

pro duct s sum (sales)

ProductA 5475

ProductB 5525

ProductC 6200

2.各イベントの合計を保存するフィールドの名前を指定する

addtotalsコマンドが⽣成したデフォルト名を使⽤せずに、⾃分でフィールド名を指定することができます。

... | addtotals fieldname=sum

3.合計するフィールドの名前の指定にワイルドカードを使⽤する

amountで始まるフィールド、またはフィールド名にsizeが含まれるフィールドの合計を算出します。合計をTotalAmountという
名前のフィールドに保存します。

... | addtotals fieldname=TotalAmount amount* *size*

4.特定のフィールドの合計を算出する

この例では、⾏の計算がオフ、列の計算がオンです。ここでは、sum(quota)フィールドの合計のみを計算しています。

source="addtotalsData.csv" | stats sum(quota) by quarter| addtotals row=f col=t labelfield=quarter sum(quota)

labelfield引数は、合計ラベルを表⽰するフィールドを指定します。デフォルトのラベルは「合計」 です。

結果は、以下のような内容で[統計]タブに表⽰されます。

quart er sum (quo t a)


QTR1 3825

QTR2 4175

QTR3 4000

QTR4 3875

Total 15875

5.フィールドの合計を計算して、合計にカスタムラベルを追加する

129
各四半期の製品ごとの合計と、総計を計算します。
source="addtotalsData.csv" | chart sum(sales) by products quarter| addtotals col=t labelfield=products label="Quarterly Totals"
fieldname="Product Totals"

labelfield引数は、合計ラベルを表⽰するフィールドを指定します。この例ではpro duct s フィールドです。


label引数を使⽤して、デフォルトの「合計」 ではなく「四半期合計」 というラベルをlabelfieldで指定されたフィール
ドに表⽰します。
fieldname引数を使⽤して、⾏の合計に「製品合計」 というラベルを追加します。

結果は、以下のような内容で[統計]タブに表⽰されます。

pro duct s QTR1 QTR2 QTR3 QTR4 Pro duct To t als

ProductA 1200 1425 1300 1550 5475

ProductB 1400 1175 1250 1700 5525

ProductC 1650 1550 1375 1625 6200

Quarterly Totals 4250 4150 3925 4875 17200

関連項⽬
stats

a na l yz efiel ds
説明
fieldを離散型確率変数として使⽤するこのコマンドはすべての数値フィールドを分析し、それぞれのフィールドがpredictの
値をclassfieldできるかどうかを決定します。ここでは、対象のclassfieldとその他のフィールドの数値との関係の安定性が決
定されます。

レポートコマンドであるanalyzefieldsは、すべての⼊⼒結果を読み込み、出⼒結果の各数値フィールドに1つの⾏を⽣成しま
す。この⾏に含まれる値は、classfieldの値を予測するanalyzefieldsコマンドのパフォーマンスを⽰します。最⼤のz確率の数
値フィールドの条件付き配布が実際のクラスに⼀致する場合、イベントは正確なものと⾒なされます。最⼤のz確率
は、classfieldに基づきます。

構⽂
analyzefields classfield=<field>

analyzefieldsコマンドには省略形であるafを使⽤できます。

analyzefieldsコマンドは、5つの列を持つテーブルを返します。

フィー 説明
ルド
field ⼊⼒サーチ結果の数値フィールドの名前。

count サーチ結果でのフィールドの発⽣数。

cocur フィールドの共起性。classfieldが存在する結果では、fieldも存在する結果の⽐率となります。classfieldがあるイベントにfieldが存
在する場合、cocurは1になります。

acc フィールドの値を使ってclassfieldの値を予測する際の精度です。これは、fieldがあるイベントの合計数に対して正確に予測される件数
の⽐率です。この引数は数値フィールドに対してのみ有効です。

balacc Balanced accuracyとは、classfieldの各値を予測する際の、⾮加重平均です。これは数値フィールドに対してのみ有効になります。

必須引数

classfield
構⽂ :classfield=<field>
説明 :複数クラス分析も可能ですが、最良の結果を得るためにはclassfieldに2つの異なる値が必要です。

130

例1:

「is_activated」の値を予測するために、数値フィールドを分析します。

... | analyzefields classfield=is_activated

関連項⽬
anomalousvalue

a noma l ies
説明
anomaliesコマンドを使⽤して、異常、または想定外の値を持つイベントやフィールドを検索します。

anomaliesコマンドは、各イベントに意外性スコアを割り当て、そのスコアをunexpectednessという新しいフィールドにセット
します。イベントが異常と考えられる、またはthreshold値に依存しないかどうか。thresholdの値は意外性スコアと⽐較されま
す。意外性スコアがthresholdを超えた場合、イベントは想定外、または異常とみなされます。

サーチでanomaliesコマンドを使⽤した後は、[サーチレポート]ウィンドウの[関連するフィールド ]のリストを確認してくだ
さい。unexpectednessフィールドを選択し、イベントの値に関する情報を確認します。

イベントの意外性スコアは、過去のイベント(P)に対するイベント(X)の類似性に基づいて計算されます。

意外性の計算式を以下に⽰します。

unexpectedness = [s(P and X) - s(P)] / [s(P) + s(X)]

この式で、s( )はデータの類似性または均⼀性を表す測定基準です。この式は、Xの追加が⼀連のイベントの類似性にどれだ
け影響するかの評価基準を提供します。ここでは、異なるサイズのイベントの結果が正規化されます。

構⽂
太字 は必須構⽂です。

ano m alies
[threshold=<num>]
[labelonly=<bool>]
[normalize=<bool>]
[maxvalues=<num>]
[field=<field>]
[denylist=<filename>]
[denylistthreshold=<num>]
[by-clause]

省略可能な引数

threshold
構⽂: threshold=<num>
説明 :想定される、または正常なイベントの上限を⽰す数値です。イベントの意外性がこの閾値の制限を上回ると、イ
ベントは想定外、または異常と⾒なされます。
デフォルト :0.01
labelonly
構⽂: labelonly=<bool>
説明 :すべてのイベントを含む結果を出⼒するか、または閾値を超えたイベントだけを出⼒するかを指定します。すべ
てのイベントにunexpectednessフィールドが追加されます。labelonly=trueの場合、イベントは除外されませ
ん。labelonly=falseの場合、意外性スコアが閾値に満たないイベントが出⼒結果から除外されます。
デフォルト :偽(False)
normalize
構⽂: normalize=<bool>
説明 :フィールドの数値テキストを正規化するかどうかを指定します。アルゴリズムの⽬的上、フィールドにある0か
ら9の数字はすべて同⼀と⾒なされます。数値の配置と分量は引き続き重要です。正規化すべきでないものの、カテゴ
リとして処理する数値データがフィールドに存在する場合は、normalize=falseを設定します。
デフォルト :真(True)

131
maxvalues
構⽂: maxvalues=<num>
説明 :フィールド値の意外性の決定の際に含める、過去のスライディングセットのサイズを指定します。デフォルトの
計算では、過去100件のイベントが⽐較に使⽤されます。現在のイベント番号が1,000であれば、計算では900から999
までのイベントが使⽤されます。現在のイベント番号が1500であれば、計算では1400から1499までのイベントが使⽤
されます。10から10,000までの番号を指定できます。maxvaluesの値が増加すると、イベント当たりの合計CPUコスト
も線形的に増加します。⼤きな値を設定すると、サーチに時間がかかります。
デフォルト :100

field
構⽂ :field=<field>
説明 :イベントの意外性を判断する際の分析対象フィールドです。
デフォルト :_raw

denylist
構⽂: denylist=<filename>
説明 :想定されるものの無視されるべきイベントのリストを含むCSVファイルの名前です。拒否リストのイベントに類
似する到着イベントは、異常ではない、または想定内として処理され、意外性スコアが0.0となります。CSVファイル
は、サーチヘッドの$SPLUNK_HOME/var/run/splunk/ディレクトリに保管する必要があります。Splunk Cloudを使⽤してい
て拒否リストファイルを設定したい場合は、サポートチケットを申請します。

denylistthreshold
構⽂: denylistthreshold=<num>
説明 :到着イベントを拒否リストイベントとして判断するための類似度スコアの閾値を指定します。到着イベントの類
似度スコアがdenylistthresholdを超える場合、イベントは想定外としてマークされます。
デフォルト :0.05

by-clause
構⽂ :by <fieldlist>
説明 :意外性検出の結果を分離するための、フィールドのリストを指定するために使⽤します。指定したフィールドの
各値の組み合わせに対して、それらの値を持つイベントが別個に取り扱われます。

1.無視するイベントの拒否リストファイルを指定する

この例では、拒否リスト「boring events」にあるイベントを無視し、関連するイベントを表⽰します。イベントリストを降
順にソートします。ここでは、意外性フィールドの最も⾼い値が⼀番上に表⽰されます。
... | anomalies list=boringevents | sort -unexpectedness

2.トランザクションの異常を探す

この例では、トランザクションを使⽤して、異常な時間領域を探します。

... | transaction maxpause=2s | anomalies

3.ソース別に異常を特定する

各ソースの異常を個別に探します。あるソースのパターンが、別のソースの意外性スコアに影響することはありません。

... | anomalies by source

4.異常を特定する際の閾値を指定する

この例では、thresholdの値を使って、異常なイベントのサーチを調整する⽅法を⽰します。サーチはデフォルトのthreshold値
から開始します。

index=_internal | anomalies BY group | search group=*

このサーチは、_internalインデックス内のイベントに注⽬して、同じgroup値を持つイベントセットのunexpectednessスコアを
算出します。

⼀意のgroup値のunexpectednessを算出するために使⽤されたイベントのスライディングセットには、同じgroup値がある
イベントだけが含まれています。
searchコマンドを使って、groupフィールドを含むイベントのみを表⽰します。

[ 関連するフィールド] のリストには、unexpectednessフィールドとgroupフィールドが含まれています。フィールド名をクリッ
クしてから[ はい] をクリックして、フィールドを[ 選択されたフィールド] リストに移動します。フィールドが移動し、サー
チ結果にも表⽰されます。結果は次のイメージのようになります。

132
最初のイベントのキー/値のペアには、group=pipeline、name=indexerpipe、processor=indexer、cpu_seconds=0.022などがありま
す。

デフォルトのthreshold (0.01)では、これらのイベントの⼀部が⼤きく類似していることがわかります。次のサーチで
は、thresholdを少し増やしています。

index=_internal | anomalies threshold=0.03 by group | search group=*

thresholdの値を⾼くすると、各イベントのタイムスタンプとキー/値のペア違いが⼀⽬でわかります。

意外性が低い(異常ではない)イベントを⾮表⽰にしたくないような場合もあります。このような場合は、代わりに注⽬するイ
ベントかどうかを知らせる別のフィールドを追加できます。たとえば、evalコマンドを使⽤します。

index=_internal | anomalies threshold=0.03 labelonly=true by group | search group=* | eval threshold=0.03 | eval
score=if(unexpectedness>=threshold, "anomalous", "boring")

このサーチはlabelonly=trueを使って、注⽬する必要がないイベントも結果リストに保持しています。evalコマンド
133
は、thresholdフィールドの定義と閾値の設定に⽤いられています。anomaliesコマンドのthreshold属性はフィールドではないた
め、この処理は明⽰的に⾏う必要があります。

2つ⽬のevalコマンドを使⽤して、他の新規フィールドscoreを定義します。このフィールドの値は、unexpectednessによ
るthreshold値の⽐較に基づいて、「anomalous」(異常)または「boring」(注⽬は不要)になります。以下のイメージは、結果
のスナップショットを⽰しています。

関連項⽬
anomalousvalue、cluster、kmeans、outlier

a noma l ou sv a l u e
説明
anomalousvalueコマンドは、他のイベントでのフィールドの値と⽐較して、各イベントのそれぞれのフィールドの意外性スコ
アを計算します。数値フィールドに対して、発⽣頻度や平均からの標準偏差から異常と判断できるデータ値を識別または要
約します。

異常と判断されたフィールドに対して、以下の⽅法で新しいフィールドが追加されます。フィールドがsizeなどの数値の場
合、新しいフィールドはAnomaly_Score_Num(size)となります。フィールドがnameなどの数値以外の場合、新しいフィールド
はAnomaly_Score_Cat(name)となります。

構⽂
anomalousvalue <av-options>... [action] [pthresh] [field-list]

必須引数

無し。

省略可能な引数

<av-options>
構⽂ :minsupcount=<int> | maxanofreq=<float> | minsupfreq=<float> | minnormfreq=<float>
説明 :異常性の判別で考慮されるフィールドを制御する1つ以上のオプションを指定します。

av-o pt io n引数の説明

maxanofreq
構⽂ :maxanofreq=<float>
説明 :最⼤異常頻度を0〜1の浮動⼩数点数で⽰します。異常が頻繁な場合、フィールドを検討から除外します。
フィールドの発⽣頻度合計に対するフィールド異常の発⽣率がmaxanofreqの値を超えると、フィールドは検討から
除外されます。
デフォルト :0.05

minnormfreq
134
構⽂ :minnormfreq=<float>
説明 :最⼤正常頻度を0〜1の浮動⼩数点数で⽰します。異常がさほど頻繁ではないフィールドを検討から除外し
ます。フィールドの発⽣頻度合計に対するフィールド異常の発⽣⽐率がpを下回ると、そのフィールドは検討から
除外されます。
デフォルト :0.01
minsupcount
構⽂ :minsupcount=<int>
説明 :最⼩対応件数は正の整数でなければなりません。⼊⼒結果で発⽣数が少ないフィールドを破棄します。⼊
⼒イベントでフィールドの発⽣件数がNに満たない場合、フィールドは検討から除外されます。
デフォルト :100

minsupfreq
構⽂ :minsupfreq=<float>
説明 :最低対応頻度を0〜1の浮動⼩数点数で⽰します。発⽣頻度が低いフィールドを破棄します。minsupfreq引数
は、イベントの合計数に対するフィールドの発⽣数の⽐率をチェックします。この率がpに満たない場合、フィー
ルドは検討から除外されます。
デフォルト :0.05

action
構⽂ :action=annotate | filter | summary
説明 :異常値を返す(annotate)、異常値ではないイベントをフィルタリングする(filter)、または異常統計のサマリーを
返す(summary)のいずれかを指定します。
デフォルト :filter

アクション引数の説明

annotate
構⽂ :action=annotate
説明 :annotateアクションは、異常値を含むイベントに新しいフィールドを追加します。追加されるフィールド
は、Anomaly_Score_Cat(field)、Anomaly_Score_Num(field)のいずれか、または両⽅です。

フィルター
構⽂ :action=filter
説明 :filterアクションは、異常な値を持つイベントを返します。異常な値を持たないイベントは破棄されます。
返されるイベントはaction=annotateの場合と同様に注釈が付加されます。

summary
構⽂ :action=summary
説明 :summaryアクションは、⽣成された各フィールドの異常統計を要約したテーブルを返します。テーブルに
は、フィールドに含まれるイベントの数、異常なイベントの⽐率、どのような判定だったか(カテゴリによる、ま
たは数値による判定)などが⽰されています。

Out put field 説明


fieldname フィールドの名前。

count フィールドの表⽰件数。

distinct_count フィールド内の⼀意の値数。

mean フィールドの値の算出平均。

catAnoFreq% 分類されたフィールドの異常頻度。

catNormFreq% 分類されたフィールドの正常頻度。

numAnoFreq% 数値フィールドの異常頻度。

stdev フィールドの値の標準偏差。

supportFreq% フィールドの対応頻度。

useCat カテゴリによる異常検出を使⽤。rare値を検索するカテゴリ別の異常検出。

useNum 数値による異常検出を使⽤。平均値から⼤きくかい離した値を検索する数値での異常検出。この異常検出は
ガウス分布に基づいています。

isNum 数値フィールドかどうか。

field-list
構⽂ :<field> ...
説明 :考慮するフィールドのリストです。
デフォルト :フィールドリストが指定されていない場合は、すべてのフィールドが考慮されます。

135
pthresh
構⽂ :pthresh=<num>
説明 :異常と⾒なされるために満たす必要がある確度閾値(10進数)。
デフォルト :0.01。

使⽤法
デフォルトでは、最⼤50,000件の結果が返されます。この最⼤値は、limits.confファイルの[anomalousvalue]スタンザ
のmaxresultrows設定で制御します。この制限を⼤きくすると、より多くのメモリーが使⽤されます。

ファイルシステムにアクセスできるユーザー(システム管理者など)のみが設定ファイルを編集できます。defaultディレクト
リにある設定ファイルは、決して変更もコピーもしないでください。defaultディレクトリ内のファイルは、そのまま保持し
て元の位置にある必要があります。変更は、localディレクトリで⾏ってください。

設定ファイルの編集⽅法を参照してください。

基本的な例

1.サーチ結果から異常な値のみを返す

... | anomalousvalue

これは、以下のサーチを実⾏する場合と同じです。

...| anomalousvalue action=filter pthresh=0.01

2.ホスト「report s」からの異常な値を返す

host="reports" | anomalousvalue action=filter pthresh=0.02

その他の例:

1.各数値フィールドに対して、異常統計の要約を返す

この例では、USGS EarthquakesのWebサイトからダウンロードした最近の地震データを使⽤しています。データはカンマ区切り形式のASCIIテキス
トファイルで、記録されている各地震のマグニチュード(mag)、座標(latitude、longitude)、地域(place)が含まれています。

最新のCSVファイルをUSGS Ear thquake F e e ds からダウンロードして、ファイルをSplunkインスタンスにアップロードします。この例では過去


30⽇間のAll Ear thquake s データを使⽤します。

地震データから異常値を探します。

source="all_month.csv"| anomalousvalue action=summary pthresh=0.02 | search isNum=YES

136
数値の結果は、複数の⼩数位で返されています。フィールド形式アイコン(鉛筆の形)を使⽤して、数字をフォーマットし、表
⽰する⼩数位数を指定します。

関連項⽬
Analyzefields、anomalies、cluster、kmeans、outlier

a noma l ydet ect ion


説明
各イベントで確率を計算し、極端に確率が低い異常なイベントを特定するストリーミングとレポートコマンドです。確率
は、イベントの個別のフィールド値の頻度の積として定義されます。

カテゴリのフィールドでは、Xの発⽣回数をすべてのイベントの件数で割って値Xの頻度が算出されます。
数値フィールドでは、まずすべての値のヒストグラムが作成され、Xを含むビンのサイズをイベントの件数で割ってXの
頻度が算出されます。

anomalydetectionコマンドには既存のanomalousvalueとoutlierコマンドの機能が含まれ、ヒストグラムに基づく異常検出が⾏わ
れます。

構⽂
anomalydetection [<method-option>] [<action-option>] [<pthresh-option>] [<cutoff-option>] [<field-list>]

省略可能な引数

<method-option>
構⽂ :method = histogram | zscore | iqr
説明 :異常検出の⽅法を選択します。method=zscoreの場合、anomalousvalueコマンドのように実⾏します。method=iqrの場
合、outlierコマンドのように実⾏します。「使⽤法」を参照してください。
デフォルト :method=histogram

<action-option>
m et ho d=hist o gram またはm et ho d=z sco reの構⽂ :action = filter | annotate | summary
m et ho d=iqrの構⽂ :action = remove | transform
説明 :指定された⽅法に基づくアクションとデフォルトです。以下の各⽅法に対するアクションの詳細をご覧くださ
い。

<pthresh-option>
構⽂ :pthresh=<num>
説明: method=histogramまたはmethod=zscoreと使⽤されます。イベントを異常と⾒なすために満たす必要のある確度閾値
(10進数)を設定します。
デフォルト :method=histogramの場合、コマンドは分析中に各データセットのpthreshを計算します。method=zscoreでは、
137
デフォルトは0.01です。method=iqrの場合にこれを使⽤すると、無効な引数のエラーが返されます。

<cutoff-option>
構⽂ :cutoff=<bool>
説明 :以上数値の閾値上限を設定します。このオプションは、ヒストグラム⼿法にのみ適⽤されます。cutoff=falseの場
合、アルゴリズムは公式threshold = 1st-quartile - 1.5 * IRQを変更することなく使⽤します。cutoff=trueの場合、異常
検出を低減するためにこの公式を変更します。
デフォルト :真(True)

<field-list>
構⽂: <string> <string> ...
説明 :フィールド名のリスト。

ヒストグラムの動作

<action-option>
構⽂ :action=annotate | filter | summary
説明 :追加フィールドのあるすべてのイベントを返す(annotate)、異常値を⽰すフィールドを除外する(filter)、異常統
計のサマリーを返す(summary)のいずれかを指定します。
デフォルト :filter

action=filterの場合、コマンドは異常なイベントを返し、他のイベントを除外します。各出⼒イベントには新しい4つの
フィールドが含まれます。action=annotateの場合、コマンドはaction=filterの際に追加される4つの新しいフィールドを付加
し、元のすべてのイベントを返します。

フィールド 説明
log_event_prob イベントの確率の⾃然対数。

probable_cause イベントが異常な理由を最適に説明するフィールドの名前。ひとつのフィールド⾃体が異常の原因になることはないも
のの、⾮常に稀な値によってイベントの確率が低下する場合があります。

probable_cause_freq probable_causeフィールドの値の頻度。

max_freq イベントのすべてのフィールド値の最⼤頻度。

action=summaryの場合、コマンドは6つのフィールドを持つ単⼀のイベントを返します。

Out put field 説明


num_anomalies 異常イベントの件数。

thresh 異常イベントを分離するイベント確率の閾値。

max_logprob すべてのログ(event_prob)の最⼤値。

min_logprob すべてのログ(event_prob)の最低値。

1st_quartile すべてのログ(event_prob)の第1四分位。

3rd_quartile すべてのログ(event_prob)第3四分位。

z scoreの動作

<action-option>
構⽂ :action=annotate | filter | summary
説明 :異常値を返す(annotate)、異常値を⽰すフィールドをフィルタリングする(filter)、または異常統計のサマリーを
返す(summary)のいずれかを指定。
デフォルト :filter

action=filterの場合、コマンドは異常な値を持つイベントを返し、他のイベントを破棄します。維持されたイベントに
は、annotateアクションのように注釈が付けられます。

action=annotateの場合、コマンドは異常な値を含むイベントに新しいフィール
ドAnomaly_Score_Cat(field)とAnomaly_Score_Num(field)を追加します。

action=summaryの場合、各フィールドの異常統計を要約したテーブルが⽣成されます。テーブルには、フィールドに含まれる
イベントの数、異常なイベントの⽐率、どのような判定だったか(カテゴリによる、または数値による判定)などが⽰されてい
ます。

IQRの動作
138
<action-option>
構⽂ :action=remove | transform
説明 :外れ値の処理を設定します。removeアクションは、数値の外れ値を持つイベントを削除します。transformアク
ションは、範囲外の値をその閾値に切り詰めてイベントを変換します。mark=trueの場合、transformアクションは値の前
に「000」を追加します。
省略形 :削除を表す省略形はrmです。変換を表す省略形はtfです。
デフォルト :action=transform

使⽤法
anomalydetectionコマンドはストリーミングコマンド です。「コマンドタイプ」を参照してください。

zscoreメソッド

method=zscoreを指定すると、anomalydetectionコマンドはanomalousvalueコマンドのように実施します。anomalydetectionコマンド
をmethod=zscoreと⼀緒に使⽤する場合、anomalousvalueコマンドの構⽂コンポーネントを指定できます。異常な値を参照してく
ださい。

iqrメソッド

method=iqrを指定すると、anomalydetectionコマンドはoutlierコマンドのように実施します。method=iqrをanomalydetectionコマン
ドと⼀緒に指定する場合、outlierコマンドの構⽂コンポーネントを指定できます。たとえば、outlierオプション<action>、
<mark>、<param>、および<uselower>を指定できます。Outlierコマンドを参照してください。

例1.異常なイベントのみを返す

これらの2つのサーチは同じ結果を返します。2つ⽬のサーチに指定されている引数はデフォルト値です。

... | anomalydetection

... | anomalydetection method=histogram action=filter

例2.異常件数に関する簡単なサマリーを返す

異常件数に関する簡単なサマリーのほか、検出に使⽤された閾値など、その他のいくつかの統計を返します。
... | anomalydetection action=summary

例3.異常値を持つイベントを返す

この例では、method=zscoreと指定して異常値を返しています。サーチでは、filterアクションを使⽤して、異常値を持たない
イベントをフィルタリングしています。確度閾値pthreshを満⾜するイベントが、異常値を持つと⾒なされます。

... | anomalydetection method=zscore action=filter pthresh=0.05

例4.外れ値を返す

この例は、outlierコマンドからのoutlierオプションを使⽤します。省略形tfは、この例の変換アクションに使⽤されます。

... | anomalydetection method=iqr action=tf param=4 uselower=true mark=true

関連項⽬
Analyzefields、anomalies、anomalousvalue、cluster、kmeans、outlier

a ppend
説明
サブサーチ の結果を現在の結果に追加します。appendコマンドは履歴データのみに使⽤します。リアルタイムのサーチで使⽤
しても正しい結果となりません。

appendコマンドの使⽤法については、『サーチ』マニュアルの「イベントのグループ化と相関について」にあるフロー
チャートを参照してください。
139
SQLを理解していてSPLを初めて使う場合は、「SQLユーザー向けのSplunk SPL」を参照してください。

構⽂
append [<subsearch-options>...] <subsearch>

必須引数

subsearch
構⽂ :[subsearch]
説明 :追加するイベントのソースを指定するセカンダリサーチ。サブサーチは⾓括弧で囲む必要があります。『サー
チ』マニュアルの「サブサーチ」を参照してください。

省略可能な引数

subsearch-options
構⽂ :extendtimerange=<boolean> | maxtime=<int> | maxout=<int> | timeout=<int>
説明 :サブサーチの処理⽅法を指定します。

サブサーチのオプション

extendtimerange
構⽂ :extendtimerange=<boolean>
説明 :サーチ全体の時間範囲にサブサーチの時間範囲を含めるかどうかを指定します。サブサーチの時間範囲がメイン
サーチの時間範囲を超える場合、extendtimerange引数を使⽤します。この引数は、サーチのappendコマンドの後に変換コ
マンド (chart、timechart、statsなど)が続き、そのサーチで時間ベースのビンが使⽤されている場合に使⽤します。
デフォルト :偽(False)

maxtime
構⽂ :maxtime=<int>
説明 :サブサーチを⾃動的に終了するまでの最⻑時間(秒)。
デフォルト :60

maxout
構⽂ :maxout=<int>
説明 :サブサーチが返す結果の最⼤⾏数。
デフォルト :50000

timeout
構⽂ :timeout=<int>
説明 :サブサーチが完全に終了するまでの最⻑待機時間(秒)。
デフォルト :60

使⽤法
appendコマンドはストリーミングコマンド です。「コマンドタイプ」を参照してください。

1:appendコマンドを使⽤して列の合計を追加する。

この例では、USGS EarthquakesのWebサイトからダウンロードした最近の地震データを使⽤しています。データはカンマ区切り形式のASCIIテキス
トファイルで、記録されている各地震のマグニチュード(mag)、座標(latitude、longitude)、地域(place)が含まれています。

最新のCSVファイルをUSGS Ear thquake F e e ds からダウンロードして、ファイルをSplunkインスタンスにアップロードします。この例では過去


30⽇間のAll Ear thquake s データを使⽤します。

昨⽇カリフォルニア州周辺で発⽣した地震数を算出して、次に地震発⽣回数合計を計算します。
source=usgs place=*California* | stats count by magType | append [search index=usgs_* source=usgs place=*California* | stats
count]

この例では、サブサーチを使⽤して、すべてのカリフォルニア地域(place="*California")での地震をサーチし、次にメインサー
チを使⽤して、サーチでのマグニチュードタイプに基づいて地震の数をカウントします。

イベントの合計数と特定のフィールドのイベントの数を同時にカウントするためにstatsコマンドを使⽤することはできませ
ん。サブサーチは、発⽣した地震の合計数をカウントするために使います。このカウント数は、appendコマンドを使って前の
サーチ結果に追加されます。

両⽅のサーチがcountフィールドを共有するため、サブサーチの結果はcount列の最終の⾏に⼀覧化されます。
140
結果は、以下のような内容で[統計]タブに表⽰されます。

m agType co unt

H 123

MbLg 1

Md 1565

Me 2

Ml 1202

Mw 6

ml 10

2909

このサーチでは、列の合計を追加するためにaddcoltotalsコマンドを使⽤するのと同様の⽅法で、appendコマンドが使⽤されま
す。

2.アイテムを購⼊した⼀意の顧客数を数える。各製品タイプのトップ購⼊者を追加する。

この例では、サーチチュートリアルのサンプルデータセットを使⽤しています。Splunkインスタンスでこの例を試すには、サンプルデータをダウン
ロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。サーチを実⾏する際には、時間範囲として「昨⽇」 を指定し
てください。

Buttercup Gamesオンラインストアーで昨⽇何か商品を購⼊した⼀意の顧客数をカウントして、次にそれを購⼊した商品種
別(accessories、t-shirts、およびtype of games)ごとに分類します。また、各商品種別の購⼊が多い顧客、および商品の購
⼊量を記載したリストも⽣成します。

sourcetype=access_* action=purchase | stats dc(clientip) BY categoryId | append [search sourcetype=access_* action=purchase |


top 1 clientip BY categoryId] | table categoryId, dc(clientip), clientip, count

この例では、まず最初に購⼊イベント(action=purchase)をサーチしています。これらの結果がパイプ⽂字でstatsコマンドに渡
され、dc()またはdistinct_count()関数を使って、商品を購⼊した個別のユーザー数が算出されます。商品カテゴリ(categoryId)
に基づいてこの数量を分類するために、BY句を使⽤しています。

この例では、append コマンドの引数としてサブサーチが含まれています。

...[search sourcetype=access_* action=purchase | top 1 clientip BY categoryId]

購⼊イベントのサーチと各商品カテゴリの上位商品購⼊者のカウント(clientipを使⽤)には、サブサーチが使われています。
これらの結果が、appendコマンドを使って前のサーチ結果に追加されます。

ここで、tableコマンドは、商品カテゴリ(categoryId)、各種商品を購⼊した個別の(⼀意の)ユーザー数(dc(clientip))、各種商品
を最も多く購⼊した実ユーザー(clientip)、およびそのユーザーが購⼊した各商品数(count)のみを表⽰するために使⽤されてい
ます。

141
結果が同じフィールド値を共有しているのに、appendコマンドは単純に、前のサーチ結果の最後にサブサーチの結果を追加し
ていることがお分かりでしょうか。出⼒の加⼯やフォーマットはできません。

3.追加コマンドを使⽤してW ebサーバーにアクセスした⼀意のIPアドレスの数を特定する。

stats、count、およびtopコマンドと共にappendコマンドを使⽤して、Webサーバーにアクセスした⼀意のIPアドレス数を特定
します。ページ要求タイプごとにwebサーバーに最もアクセスしたユーザーを特定する。

この例では、サーチチュートリアルのサンプルデータセットを使⽤しています。Splunkインスタンスでこの例を試すには、サンプルデータをダウン
ロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。サーチを実⾏する際には、時間範囲として「昨⽇」 を指定し
てください。

Webサーバーにアクセスした⼀意のIPアドレス数をカウントし、各ページ要求タイプ(method)でもっともアクセス数が多い
ユーザーを検索します。

sourcetype=access_* | stats dc(clientip), count by method | append [search sourcetype=access_* | top 1 clientip by method]

Webアクセスイベントはパイプ⽂字でstatsコマンドに渡され、dc() or distinct_count()関数を使って、サイトにアクセスした
個別の(⼀意の)ユーザー数が算出されます。count()関数は、サイトにアクセスされた合計回数をカウントするために⽤いられ
ています。これらの数が、ページ要求(method)別に分類されます。

各ページ要求タイプ(method)に対して、アクセス数が多いユーザーを検索するために、サブサーチが使⽤されていま
す。appendコマンドは、テーブルの最後にサブサーチの結果を追加するために使⽤されています。

結果は、以下のような内容で[統計]タブに表⽰されます。

m et ho d dc(client ip) co unt client ip ⽐率


GET 173 2666

POST 168 1727

GET 83 87.194.216.51 3.113278

POST 64 87.194.216.51 3.705848

最初の2⾏は、最初のサーチの結果です。最後の2⾏は、サブサーチの結果です。両⽅の結果セットが、methodおよ
びcountフィールドを共有しています。

4.サブサーチの最⼤実⾏時間と、サブサーチからの最⼤結果⾏数を指定する

appendコマンドを使⽤してWebサーバーにアクセスした⼀意のIPアドレスの数を特定します。ページ要求タイプごとにweb
サーバーに最もアクセスしたユーザーを特定する。
142
この例では、サーチチュートリアルのサンプルデータセットを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できま
す。『サーチチュートリアル』のこのトピック からデータセットをダウンロードした後、指⽰に従ってSplunk導⼊環境にアップロードしてくださ
い。このサーチを実⾏する際には、時間範囲として「昨⽇」 を指定してください。

Webサーバーにアクセスした⼀意のIPアドレス数をカウントし、各ページ要求タイプ(method)でもっともアクセス数が多い
ユーザーを検索します。サブサーチの実⾏時間を30秒、サブサーチからの結果件数を1000件に制限します。

sourcetype=access_* | stats dc(clientip), count by method | append maxtime=30 maxout=1000 [search sourcetype=access_* | top 1
clientip by method]

5.ext endt im erange引数の使⽤

extendtimerange引数を使⽤して、サーチで使⽤される時間範囲にメインサーチとサブサーチの両⽅の時間範囲が含まれるよう
にします。

index=_internal earliest=11/20/2017:00:00:00 latest=11/30/2017:00:00:00 |append extendtimerange=true [search index=_audit


earliest=11/1/2017:00:00:00 latest=11/25/2017:00:00:00] |timechart span=1d count

サーチに使⽤される時間範囲は、11/1/2017:00:00:00 (サブサーチの最も早い時間)〜11/30/2017:00:00:00 (メインサーチ


の最も遅い時間)です。

関連項⽬
appendcols、appendpipe、join、set

a ppendcol s
説明
サブサーチ の結果フィールドに⼊⼒のサーチ結果を追加します。アンダースコアー( _ )から始まらず、最新の結果に追加さ
れないサブサーチの外部フィールド。最初のサブサーチの結果は最初のメインサーチの結果に連結され、2番⽬のサブサーチ
の結果は2番⽬のメインサーチの結果に連結されます。以降同様にして連結されます。

構⽂
appendcols [override= <bool> | <subsearch-options>...] <subsearch>

必須引数

subsearch
説明 :メインサーチに追加される⼆次的なサーチ。サブサーチの仕組みについては、『サーチ』マニュアルを参照して
ください。

省略可能な引数

override
構⽂ :override=<bool>
説明 :override引数が偽(False)で、フィールドがサブサーチとメインサーチの結果の両⽅にある場合は、メインサーチ
の結果が使⽤されます。override=trueの場合、サブサーチの結果が使⽤されます。
デフォルト :override=false

subsearch-options
構⽂ :maxtime=<int> | maxout=<int> | timeout=<int>
説明 :サブサーチの実⾏⽅法を指定します。

サブサーチのオプション

maxtime
構⽂ :maxtime=<int>
説明 :サブサーチを⾃動的に終了するまでの最⻑時間(秒)。
デフォルト :60

maxout
構⽂ :maxout=<int>
説明 :サブサーチが返す結果の最⼤⾏数。
デフォルト :50000

timeout
構⽂ :timeout=<int>
143
説明 :サブサーチが完全に終了するまでの最⻑待機時間(秒)。
デフォルト :60

例1:

「404」イベントをサーチして、各イベントのフィールドを前のサーチ結果に追加します。

... | appendcols [search 404]

例2:

このサーチは、appendcolsを使って特定サーバー上の特定フィールドの発⽣回数をカウントし、その値を使って他のフィー
ルドを算出します。
specific.server | stats dc(userID) as totalUsers | appendcols [ search specific.server AND "text" | addinfo | where _time >=
info_min_time AND _time <=info_max_time | stats count(field) as variableA ] | eval variableB = exact(variableA/totalUsers)

まず、このサーチはstatsを使って特定のサーバー上の個別のユーザー数をカウントし、その変数に名前「totalUsers」
を指定します。
apendcolを使ってサーバーをサーチし、そのサーバー上での特定のフィールドの発⽣回数をカウントします。このカ
ウントの名前は「VariableA」に変更されます。addinfoコマンドは、このサブサーチをinfo_min_timeと
info_max_timeの範囲内に制限します。
evalコマンドは、「variableB」の定義に⽤いられます。

結果は、totalUsers、variableA、variableBフィールドを含むテーブルになります。

関連項⽬
append、appendpipe、join、set

a ppendpipe
説明
サーチ結果にサブパイプラインの結果を追加します。サブサーチとは異なり、サブパイプラインは先に実⾏されません。サ
ブパイプラインは、サーチがappendpipeコマンドに達した時点で実⾏されます。appendpipeコマンド
は、chart、timechart、stats、およびtopなどの変換コマンドの出⼒を追加します。

構⽂
appendpipe [run_in_preview=<bool>] [<subpipeline>]

省略可能な引数

run_in_preview
構⽂ :run_in_preview=<bool>
説明 :appendpipeコマンドの影響をプレビューに表⽰するかしないかを指定します。FALSEに設定されて、サーチが実
⾏されるとappendpipeコマンドがサーチの⼀部でないかの様に、プレビューに結果が表⽰されます。しかし、サーチが終
了すると、結果にはappendpipeコマンドの影響が含まれます。
デフォルト :真(True)

サブパイプライン
構⽂ :<subpipeline>
説明: サーチにおいてappendpipeコマンドの前に実⾏されたコマンドのサーチ結果に適⽤されるコマンドのリスト。

使⽤法
appendpipeコマンドは、すべてのデータセットのサマリー、合計、または説明の⾏を提供するため、テーブルやチャートの作
成に便利です。このコマンドは、追加の計算のために元の結果が必要になる場合にも便利です。

例1:

すべてのユーザーの各アクションの⼩計を追加します。

144
index=_audit | stats count by action user | appendpipe [stats sum(count) as count by action | eval user = "TOTAL - ALL USERS"]
| sort action

結果は、以下のような内容で[統計]タブに表⽰されます。

act io n user co unt

accelerate_search 管理者 209

accelerate_search buttercup 345

accelerate_search can-delete 6

accelerate_search TOTAL - ALL USERS 560

add N/A 1

add TOTAL - ALL USERS 1

change_authentication 管理者 50

change_authentication buttercup 9

change_authentication can-delete 24

change_authentication TOTAL - ALL USERS 83

関連項⽬
append、appendcols、join、set

a r u l es
説明
arulesは、フィールド値間の連合関係を探します。コマンドはGivenフィールド、Impliedフィールド、Givenフィールドサ
ポート、Impliedフィールドサポートをもつテーブルを返します。[Given fields]と[Implied fields]の値は、⾃分が提供した
フィールドの値です。[Strength]の値は、[Given fields]と[Implied fields]の値間の関係を表しています。

Michael Hahsler、Bettina Gruen、およびKurt Hornik (2012)による『arules: Mining Association Rules and Frequent
Itemsets』に記載されているように、arulesアルゴリズムを実装しています。R package version 1.0-12。このアルゴリズ
ムは、他の顧客が参照または購⼊した商品に基づいて、関連する商品を提案する、オンラインショッピングWebサイトで使
われているアルゴリズムと似ています。

構⽂
arules [<arules-option>... ] <field-list>...

必須引数

field-list
構⽂ :<field> <field> ...
説明 :フィールド名のリスト。少なくとも2つのフィールドを指定する必要があります。

省略可能な引数

<arules-option>
構⽂ :<support> | <confidence>
説明 :arulesコマンドのオプション。

arulesのオプション

support
構⽂ :sup=<int>
説明 :サポート限度を指定します。算出されたサポートレベルとの関係がこの値未満の場合、出⼒結果には含まれませ
ん。サポートオプションは正の整数でなければなりません。
デフォルト :3
confidence
構⽂ :conf=<float>
説明 :信頼区間限度を指定します。信頼区間(Strengthフィールドが表します)との関係により、出⼒結果に含まれるかど
145
うかが決まります。0〜1でなければなりません。
デフォルト :.5

使⽤法
arulesコマンドはストリーミングコマンド です。「コマンドタイプ」を参照してください。


例1:フィールド間の関係の度合いをサーチします。

... | arules field1 field2 field3

例2:

... | arules sup=3 conf=.6 field1 field2 field3

関連項⽬
associate、correlate

a ssocia t e
説明
associateコマンドはフィールド間の相関関係を識別します。このコマンドは、値に基づいてエントロピの変化を計算すること
により、フィールドペア間の関係を探します。エントロピは、あるフィールドの値を知ることが、もう⼀⽅のフィールドの
値を予測するために役⽴つかどうかを表しています。

情報理論において、エントロピは乱数に関連付けられた不確実性の測定と定義されています。この場合、フィールドに1つの
⼀意の値のみが存在していると、そのエントロピは0になります。複数の値がある場合は、それらの値がより均等に分散して
いるため、エントロピが⾼くなります。
associateコマンドは、Shannonのエントロピ(ログベース2)を使⽤します。ユニットはbitsにあります。

構⽂
associate [<associate-options>...] [field-list]

必須引数

無し。

省略可能な引数

associate-option
構⽂ :supcnt | supfreq | improv
説明 :associateコマンドのオプション。「関連オプション 」のセクションを参照してください。

field-list
構⽂ :<field> ...
説明 :1つ以上のフィールドの名前です。フィールドのリストではワイルドカードを使⽤しないでください。フィール
ドのリストを指定すると、分析はそれらのフィールドに限定されます。
デフォルト :すべてのフィールドが分析されます。

associat e-opt ion

supcnt
構⽂ :supcnt=<num>
説明 :「参照キー=参照値」の組み合わせが現れる最低回数を指定します。正の整数でなければなりません。
デフォルト :100

supfreq
構⽂ :supfreq=<num>
説明 :「参照キー=参照値」の組み合わせの最低登場頻度(合計イベント数に対する割合)を指定します。
デフォルト :0.1

improv
構⽂ :improv=<num>
説明 :「対象キー」の限度、またはエントロピ改善の最⼩値を指定します。計算されたエントロピの改善は、この値以
上でなければなりません。
146
デフォルト :0.5

出⼒テーブルの列

associateコマンドは、次のフィールドを含む列を持つテーブルを出⼒します。

フィールド 説明
Reference_Key ⼀対のフィールドの最初のフィールドの名前。

Reference_Value ⼀対のフィールドの最初のフィールドの値。

Target_Key ⼀対のフィールドの2番⽬のフィールドの名前。

Unconditional_Entropy 対象キーのエントロピ。

Conditional_Entropy 参照キーが参照値である場合の対象キーのエントロピ。

Entropy_Improvement 条件なしのエントロピと条件付きエントロピの差。

エントロピの計算に基づくフィールド値の関係を要約したメッセージ。Descriptionは結果をテキストで⽰しています。こ
Description れは、「「Reference_Key」に「Reference_Value」の値がある場合、「Target_Key」のエントロピ
はUnconditional_EntropyからConditional_Entropyに低下します」という形式になります。

Support イベントの合計数に関連して、参照フィールドが参照値になる頻度を指定します。たとえば、イベントの合計数でフィール
ドAが値Xになる頻度などです。

1.W ebアクセスログファイルのフィールド間の関係を分析する

この例では、サーチチュートリアルのサンプルデータセットを使⽤しています。Splunkインスタンスでこの例を試すには、サンプルデータをダウン
ロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。サーチを実⾏する際には、時間範囲として「昨⽇」 を指定し
てください。

この例は、Webアクセスログのフィールド内の関係の分析⽅法を表しています。

sourcetype=access_* status!=200 | fields method, status | associate improv=0.05 | table Reference_Key, Reference_Value,
Target_Key, Top_Conditional_Value, Description

サーチの最初の部分は、200以外のステータスを返したWebアクセスイベントを取得します。Webアクセスデータには多数
のフィールドが含まれています。associateコマンドを使って、データ内のフィールドと値のすべてのペアの関係を参照するこ
とができます。単純化するために、この例ではmethodおよびstatusの2つのフィールドのみをサーチします。

associateコマンドは出⼒に多くの列を追加するため、このサーチではtableコマンドを使⽤して⼀部の列のみを表⽰していま
す。
結果は、以下のような内容で[統計]タブに表⽰されます。

Reference_Key Reference_Value Target _Key To p_Co ndit io nal_Value 説明

「method」の値が「POST」で
method POST status 503 (17.44% -> 33.96%) あれば、「status」のエントロピ
は2.923から2.729に減少しま
す。

「status」の値が「400」であれ
status 400 method GET (76.37% -> 83.45%) ば、「method」のエントロピは
0.789から0.647に減少します。

「status」の値が「404」であれ
status 404 method GET (76.37% -> 81.27%) ば、「method」のエントロピは
0.789から0.696に減少します。
「status」の値が「406」であれ
status 406 method GET (76.37% -> 81.69%) ば、「method」のエントロピは
0.789から0.687に減少します。

「status」の値が「408」であれ
status 408 method GET (76.37% -> 80.00%) ば、「method」のエントロピは
0.789から0.722に減少します。
147
「status」の値が「500」であれ
status 500 method GET (76.37% -> 80.73%) ば、「method」のエントロピは
0.789から0.707に減少します。

結果には、method値が1つとstatus値が5つあります。

最初の結果⾏から、method=POSTの場合に、それらのイベントのstatusフィールドが503であることが分かります。associateコマ
ンドを使⽤した結果、method=POSTの場合、Top_Conditional_Valueは503であり、時間の33%に達すると考えられます。

Reference_KeyとReference_ValueはTarget_Keyと相関しています。
Top_Conditional_Valueフィールドには、3つのセクションがあります。

特定のReference_Valueに最も共通する値
データセットのフィールドでのReference_Valueの頻度
Reference Keyに特定のReference_ValueをもつイベントのTarget_Keyで最も関連する値の頻度。

これは、「CV (FRV% -> FCV%)」のように書式設定されています。ここで、CVは条件値、FRVは参照値の登場割合(パーセ


ント)、そしてFCVは参照値の場合に、条件値の登場割合(パーセント)になります。

2.お互いに少なくとも3つのリファレンスを持つ結果を返す

相互に関係している結果を返します(相互に3つ以上の参照が存在している)。

index=_internal sourcetype=splunkd | associate supcnt=3

3.ホストからのイベントを分析する

ホスト「reports」からのすべてのイベントを分析し、相互に関係している結果を返します。
host="reports" | associate supcnt=50 supfreq=0.2 improv=0.5

関連項⽬
Arules、correlate、contingency

a u dit
説明
ローカル監査インデックスに保管されている、監査証跡情報を返します。このコマンドは、ギャップや改ざんのチェックを⾏
うと同時に、署名されている監査イベントを検証します。

構⽂
audit


例1:「監査」インデックスの情報を表⽰します。

index="_audit" | audit

a u t or egr ess
説明
⾃⼰回帰または移動平均の計算の準備として、過去の1つ以上のfieldの値をそれぞれのイベントにコピーします。

最初の数件のイベントは、前の値が存在しないため、前の値による処理は⾏われません。

構⽂
autoregress <field> [AS <newfield>] [ p=<int> | p=<int>-<int> ]

必須引数

field
148
構⽂ :<string>
説明 :フィールド名です。数値を持つフィールドが多いです。

省略可能な引数

p
構⽂ :p=<int> | p=<int>-<int>
説明 :値をコピーする元となる過去のイベントを指定。単⼀の整数、または数値の範囲を指定できます。たとえば単⼀
値が3の場合、autoregressコマンドは3つ前のイベントのフィールド値を新しいフィールドへコピーします。範囲を指定
すると、autoregressコマンドは過去のイベントの範囲のフィールド値をコピーします。たとえば、p=2-4を指定すると、
2つ、3つ、4つ前のイベントのフィールド値が新しいフィールドへコピーされます。
デフォルト :1

newfield
構⽂ :<field>
説明 :pに単⼀の整数を設定する場合、newfield引数には単⼀のフィールド値をコピーするフィールドの名前が指定され
ます。pに範囲が設定されている場合、無効になります。

newfield引数が指定されていない場合は、単⼀または複数の値が<field>_p<num>という名前のフィールドにコピーされま
す。たとえば、p=2-4とfield=countの場合、フィールド名はcount_p2、count_p3、count_p4になります。

使⽤法
autoregressコマンドは、集中ストリーミングコマンド です。「コマンドタイプ」を参照してください。

例1:

各イベントで、3つ前の「ip」フィールドの値を「old_ip」フィールドにコピーします。

... | autoregress ip AS old_ip p=3

例2:

各イベントで、2つ、3つ、4つ、5つ前の「count」フィールドの値をコピーします。
... | autoregress count p=2-5

new field引数が指定されていないため、値は「count_p2」、「count_p3」、「count_p4」、および「count_p5」という
名前のフィールドにコピーされます。

例3:

現在のイベントと4つ前までのイベントのイベントサイズの移動平均を算出します。このサーチでは最初のイベントの
moving_averageを除外します(NULLフィールドの合計はNULLとみなされ、フィールド値が誤っているため)。

... | eval rawlen=len(_raw) | autoregress rawlen p=1-4 | eval moving_average=(rawlen + rawlen_p1 + rawlen_p2 + rawlen_p3
+rawlen_p4 ) /5

関連項⽬
accum、delta、streamstats、trendline

a w ssnsa l er t
awssnsalertコマンドは、Splunk Add-on for AWSで使⽤します。

このコマンドの詳細については、『Splunk Add-on for AWS』の「awssnsalertサーチコマンドの使⽤」を参照してくださ


い。

bin
説明
特定のセット内のすべての項⽬が同じ値を持つように<field>の値を調整することで、連続した数値を離散型セット(ビン)に
保管します。

149
binコマンドは、chartおよびtimechartコマンドによって⾃動的に呼び出されます。binコマンドは、chartコマンドやtimechartコ
マンドが処理できない統計だけに使⽤してください。すべてのイベントをCSVまたはJSONファイル形式でエクスポートする
予定がある場合は、binコマンドは使⽤しないでください。

構⽂
bin [<bin-options>...] <field> [AS <newfield>]

必須引数

field
構⽂ :<field>
説明: フィールド名を指定します。

省略可能な引数

bins-options
構⽂ :bins | minspan | span | <start-end> | aligntime
説明 :離散化オプション。これらの各オプションの構⽂や説明については、このマニュアルの「binsのオプション」を
参照してください。

newfield
構⽂ :<string>
説明 :フィールドの新しい名前。

binのオプション

bins
構⽂ :bins=<int>
説明 :離散化処理でのビンの最⼤数。

minspan
構⽂ :minspan=<span-length>
説明: 計算で使⽤するスパンをデータの時間範囲から⾃動的に推測する際、スパンが取ることのできる最低値を指定し
ます。

span
構⽂ :span = <log-span> | <span-length>
説明 :時間に基づくスパンまたは対数(log)に基づくスパンを使って、各ビンのサイズを設定します。

<start-end>
構⽂ :start=<num> | end=<num>
説明 :数値ビンの最⼩/最⼤範囲を設定します。フィールドのデータの分析によって、開始と終了の値が決定されま
す。開始と終了の値の引数は、スパンの値が指定されない場合に使⽤されます。

これらの引数は、範囲を拡⼤するために使⽤します。縮⼩には使うことができません。たとえば、秒数を⽰すフィール
ドの値が0-59だとします。スパンを10に設定すると、ビンは10単位で計算されます。つまり、ビンは0-9、10-19、20-
29などとなります。スパンを指定せず、終了の値を1,000と指定すると、実際の開始の値と終了の値である1,000に基
づいてビンが計算されます。

終了の値を10に設定し、値が> 10となると、終了の引数は無効となります。
aligntime
構⽂ :aligntime=(earliest | latest | <time-specifier>)
説明 :ビンの時間をベースUTC時間(エポック0)以外の時間に合わせます。aligntimeオプションは、時間ベースの離散
化を⾏う場合にのみ有効です。spanの単位が⽇、⽉、年の場合は無視されます。

spanオプション

log-span
構⽂ :[<num>]log[<num>]
説明 :対数に基づくスパンを設定します。最初の数値は係数です。2番⽬の数値が底です。最初の数値を指定する場合
は、実数>= 1.0かつ、実数<底でなければなりません。底を指定する場合、> 1.0の実数でなければなりません(厳密に1
より⼤きい)。
例 :span=2log10
span-length
構⽂ :<int>[<timescale>]
説明 :各ビンのスパン。_timeフィールドに基づいて離散化、またはtimescaleと⼀緒に使⽤した場合、これは時間範囲
として取り扱われます。そうでない場合、これは絶対ビンの⻑になります。
<timescale>
構⽂ :<sec> | <min> | <hr> | <day> | <month> | <subseconds>
150
説明 :タイムスケールの単位。_timeフィールドに基づいて離散化する場合に使⽤します。
デフォルト :sec

タイムスケールの単 構⽂ 説明

s | sec | secs | second |
<sec> タイムスケール(秒)。
seconds

m | min | mins | minute |


<min> タイムスケール(分)。
minutes

<hr> h | hr | hrs | hour | hours タイムスケール(時)。

<day> d | day | days タイムスケール(⽇)。

<month> mon | month | months タイムスケール(⽉)。

タイムスケール(マイクロ秒(us)、ミリ秒(ms)、センチ秒(cs)、デシ秒
<subseconds> us | ms | cs | ds
(ds) )

使⽤法
bucketコマンドはbinコマンドのエイリアスです。

binコマンドは、通常はデータセット処理コマンド です。コマンドでspan引数が指定されている場合、binコマンドはスト
リーミングコマンド になります。「コマンドタイプ」を参照してください。

秒未満のビンタイムスパン

デシ秒(ds)、センチ秒(cs)、ミリ秒(ms)、マイクロ秒(us)で構成される秒未満のspanタイムスケールタイムスパンは、1秒を等
分した数値である必要があります。例:1s = 1000ms。つまり、有効なミリ秒のspan値は、1、2、4、5、8、10、20、25、
40、50、100、125、200、250、または500msです。また、span = 1000msとは指定できません。代わりにspan = 1sを使⽤し
ます。

例1:

各5分間の期間の各「host」の平均スループット(thruput)を返します。

... | bin _time span=5m | stats avg(thruput) by _time host

例2:

ビンのサーチの結果、ビンの数が10となり、各ビンのrawイベント数が返されます。

... | bin size bins=10 | stats count(_raw) by size

例3:

終了の値を必要な値より⼤きくし、すべての値が使⽤されるようにビンを作成します。
... | bin amount end=1000

例4:

時間ビンを午前3時(ローカル時間)に合わせます。スパンを12時間に設定します。ビンは、午前3時〜午後3時、午後3時〜午
前3時(翌⽇)などを表します。
...| bin _time span=12h aligntime=@d+3h

例5:

ビンを特定のUTC時間(1500567890)に合わせます。

...| bin _time aligntime=1500567890

関連項⽬

151
chart、timechart

bu cket
bucketコマンドはbinコマンドのエイリアスです。構⽂と例は「binコマンド」を参照してください。

bu cket dir
説明
フィールド値を上位レベルのグループに置換します(ファイル名をディレクトリで置換するなど)。

到着イベントを取得して、複数のソースをディレクトリにまとめ、ファイル数が多くイベント数が少ないディレクトリを優
先して、maxcountのイベントを返します。パスを持つフィールドはPATHFIELD (例:source)で、⽂字列は区切り⽂字で区切
られます。オペレーションシステムにより、デフォルトの値はpathfield=source、sizefield=totalCount、maxcount=20、
countfield=totalCount、sep="/"または"\\"となります。

構⽂
bucketdir pathfield=<field> sizefield=<field> [maxcount=<int>] [countfield=<field>] [sep=<char>]

必須引数

pathfield
構⽂ :pathfield=<field>
説明 :パスの値があるフィールドの名前を指定。
sizefield
構⽂ :sizefield=<field>
説明 :バケツのサイズを定義する数値フィールドを指定。

省略可能な引数

countfield
構⽂ :countfield=<field>
説明 :イベントカウントを記述する数値フィールドを指定。

maxcount
構⽂ :maxcount=<int>
説明 :バケツに合計イベント数を指定。

sep
構⽂ :<char>
説明 :区切り⽂字。OSにより、フォワードスラッシュ「/」またはダブルバックスラッシュ「\\」を指定。

使⽤法
bucketdirコマンドはストリーミングコマンド です。「コマンドタイプ」を参照してください。

例1:

上位10個のソース、ディレクトリを返します。
... | top source | bucketdir pathfield=source sizefield=count maxcount=10

関連項⽬
cluster、dedup

cefou t
cefoutコマンドは、Splunk App for CEFで使⽤します。

このコマンドの詳細については、『Splunk App for CEFのデプロイと使⽤』の「技術的な実装」を参照してください。

ch a r t
152
説明
chartは結果をテーブル形式で返す変換コマンドです。結果はデータを、縦棒、折れ線、⾯、および円グラフなどに表⽰する
のに使⽤できます。詳しくは『ダッシュボードと視覚エフェクト』マニュアルの「視覚エフェクトリファレンス」を参照し
てください。

Chartコマンドを使⽤する際は統計関数を指定する必要があります。「統計およびグラフ関数」を参照してください。

構⽂
太字 は必須構⽂です。
chart
[<chart-options>]
[agg=<stats-agg-term>]
( <st at s-agg-t erm > | <sparkline-agg-t erm > | "("<eval-expressio n>")" )...
[ BY <row-split> <column-split> ] | [ OVER <row-split> ] [BY <column-split>]
[<dedup_splitvals>]

必須引数

chartコマンドを使⽤する場合は、次のいずれかの引数を含める必要があります。

stats-agg-term
構⽂ :<stats-func> (<evaled-field> | <wc-field>) [AS <wc-field>]
説明 :統計集計関数。「Stats関数のオプション」を参照してください。この関数は、eval式、フィールド、または⼀
連のフィールドに適⽤できます。AS句を使⽤して、結果を⾃分が名前をつけた新しいフィールドに⼊れることができま
す。フィールド名ではワイルドカードを使⽤できます。

sparkline-agg-term
構⽂ :<sparkline-agg> [AS <wc-field>]
説明 :スパークライン集計関数。AS句を使⽤して、結果を⾃分が名前をつけた新しいフィールドに⼊れることができ
ます。フィールド名にワイルドカードが使⽤できます。スパークラインのオプションを参考にしてください。

eval式
構⽂ :<eval-math-exp> | <eval-concat-exp> | <eval-compare-exp> | <eval-bool-exp> | <eval-function-call>
説明 :宛先フィールドの値を表す、リテラル、フィールド、演算⼦、および関数の組み合わせ。詳細については「評価
関数」を参照してください。「使⽤法」を参照してください。

これらの評価が正常に機能するためには、操作の種類に応じて有効な値を使⽤する必要があります。たとえば、追加の
例外処理では、値が数値でないと算術操作で有効な結果を得ることはできません。両⽅の演算対象が⽂字列である場
合、連結できます。ピリオドが値を連結する場合は、実際の種類に関係なく両⽅の値が⽂字列として処理されます。

省略可能な引数

agg
構⽂ :agg=<stats-agg-term>
説明 :集計⼦、関数を指定します。統計関数のほか、その説明と例を含む⼀覧については、「統計およびグラフ関数」
を参照してください。

chart-options
構⽂ :cont | format | limit | sep
説明: 結果表⽰の変更に指定できるオプション。このトピックの「グラフのオプション」のセクションを参照してくだ
さい。
デフォルト:

column-split
構⽂ :<field> [<tc-options>]... [<where-clause>]
説明 :結果のテーブルの列に使⽤するフィールドを指定します。デフォルトで、結果が可視化されている場合は、列は
グラフのデータシリーズになります。フィールドが数値の場合、tc-options引数を使⽤して離散化が適⽤されます。この
トピックの、「tcオプションおよびwhere句」のセクションを参照してください。
デフォルト :デフォルトで、列の数は10に制限されています。where句を指定して、列の数を変更できます。
column-splitフィールドを使⽤すると、各列がsplit-byフィールドの個別の値を⽰す表が出⼒されます。これは、各⾏
がgroup-byフィールドの⼀意の単⼀値の組み合わせとなるby-clauseコマンドと対照的です。詳細については、このト
ピックの「使⽤法」のセクションを参照してください。

dedup_splitvals
構⽂: dedup_splitvals=<boolean>
説明: 複数値のBY句フィールドで重複する値を削除するかどうかを指定します。
デフォルト :偽(False)

row-split
153
構⽂ :<field> [<bin-options>]...
説明: 指定するフィールドが、結果テーブル最初の列となります。field値は、結果テーブルの⾏ラベルとなります。グ
ラフでは、field値がX軸のラベルとして使⽤されます。field値はX軸の値となります。このトピックの「binのオプショ
ン」のセクションを参照してください。
デフォルト :なし。

グラフのオプション

cont
構⽂ :cont=<bool>
説明 :binが連続している場合に指定します。cont=falseの場合は、出⼒内でx値ビンの⾮連続シーケンスが隣接して表
⽰されるように、X軸を再描画します。cont=trueの場合は、値を持たないビンは、カウント0またはヌル値を伴って表
⽰されます。
デフォルト :真(True)

format
構⽂ :format=<string>
説明: 複数のデータシリーズをsplit-byフィールドと共に使⽤する場合に出⼒フィールドの名前の作成に使⽤しま
す。format はsepに優先し、stats集計⼦、関数($AGG$)およびsplit-byフィールドの値($VAL$)を使って、パラメーター
化した式を指定することができます。

limit
構⽂: limit=(top | bottom) <int>
説明: column-splitフィールドが指定された場合にのみ有効です。limitオプションを使⽤して出⼒に表⽰されるべき
結果の数を指定します。limit=Nを設定すると、各シリーズの合計と選択したプレフィックスに基づいて上位または下位
N件の値が保持されます。limit=0を指定した場合は、すべての結果が返されます。プレフィックスを付けないと、
Splunkソフトウェアは上位の結果を返します。
デフォルト: top 10

sep
構⽂ :sep=<string>
説明: 複数のデータシリーズをsplit-byフィールドと共に使⽤する場合の出⼒フィールドの名前の作成に使⽤します。
これは、formatに$AGG$<sep>$VAL$を設定したのと同等の意味を持ちます。

St at s関数のオプション

stats-func
構⽂: 構⽂は使⽤する関数によって異なります。次の表を参照してください。
説明: chartコマンドで使⽤できる統計およびグラフ関数です。chartコマンドの起動時に1つまたは複数の関数を使⽤で
きます。ただし、BY句は1つだけ使⽤できます。「使⽤法」を参照してください。

次の表に、関数のタイプ別にサポートされる関数を⽰します。各関数の説明と例を⾒るには、表にあるリンクを使⽤し
てください。コマンドで関数を使⽤する⽅法については、「統計およびグラフ関数」を参照してください。

関数の種類 対応している関数と構⽂

avg() exactperc<int>() sum()


perc<int>()
count() max() sumsq()
range()
集計関数 distinct_count() median() upperperc<int>()
stdev()
estdc() min() var()
stdevp()
estdc_error() mode() varp()

イベント順関数 earliest() first() last() latest()

マルチ値統計およびグラ list(X) values(X)


フ機能

Sparklineのオプション

スパークラインはテーブルのセル内に表⽰されるインライングラフで、各⾏のプライマリキーに関連する時間ベースの傾向
を表⽰します。

sparkline-agg
構⽂: sparkline (count(<wc-field>), <span-length>) | sparkline (<sparkline-func>(<wc-field>), <span-length>)
説明 :フィールドのaggregation関数の最初の引数、および必要に応じて、期間(timespan)指定⼦(任意)を取る、ス
パークライン(sparkline)指定⼦です。timespan指定⼦を使⽤しない場合は、サーチの時間範囲に基づいて適切な期間
が選択されます。スパークラインの対象外フィールドについては、count集計関数のみ使⽤できます。フィールド名に
ワイルドカードが使⽤できます。
span-length
このトピックの「spanのオプション」のセクションを参照してください。
154
sparkline-func
構⽂ :c() | count() | dc() | mean() | avg() | stdev() | stdevp() | var() | varp() | sum() | sumsq() | min() | max() |
range()
説明 :スパークラインに必要な値を返す集計関数です。各スパークラインの値は、特定の時間ビンに該当するイ
ベントにこの集計を適⽤することにより⽣成されます。

スパークラインのサイズは、limits.confファイルの設定によって定義されます。sparkline_maxsize設定は、スパークライ
ン⽤に出⼒される要素の最⼤数を定義します。
詳細は、『サーチ』マニュアルの「サーチ結果へのスパークラインの追加」を参照してください。

binのオプション

ビンのオプションは、サーチ結果を分離(離散化)するビンの数とサイズを制御します。

構⽂ :bins | span | <start-end> | aligntime


説明 :離散化オプション。
デフォルト :bins=300

bins
構⽂ :bins=<int>
説明 :離散化処理でのビンの最⼤数。たとえば、ビンが300の場合、サーチでは300までの個別のビンとなる最⼩のビ
ンのサイズが特定されます。
デフォルト :300

span
構⽂ :span=<log-span> | span=<span-length>
説明: 時間に基づくスパンまたは対数(log)に基づくスパンを使って、各ビンのサイズを設定します。このトピックの
「spanのオプション」のセクションを参照してください。

<start-end>
構⽂ :end=<num> | start=<num>
説明 :数値ビンの最⼩/最⼤範囲を設定します。[start, end]の範囲外のデータは破棄されます。

aligntime
構⽂ :aligntime=(earliest | latest | <time-specifier>)
説明 :ビンの時間をベースUNIX時間(エポック0)以外の時間に合わせます。aligntimeオプションは、時間ベースの離散
化を⾏う場合にのみ有効です。spanの単位が⽇、⽉、年の場合は無視されます。

spanオプション

<log-span>
構⽂ :[<num>]log[<num>]
説明 :対数に基づくスパンを設定します。最初の数値は係数です。2番⽬の数値が底です。最初の数値を指定する場合
は、実数>= 1.0かつ、実数<底でなければなりません。底を指定する場合、> 1.0の実数でなければなりません(厳密に1
より⼤きい)。

span-length
構⽂ :<span>[<timescale>]
説明 :時間上のスパンの幅。

<span>
構⽂ :<int>
説明 :各ビンのスパン。タイムスケールを使⽤する場合、これは時間範囲として使⽤されます。使⽤しない場
合、これは絶対バケツ「length」になります。

<timescale>
構⽂ :<sec> | <min> | <hr> | <day> | <month> | <subseconds>
説明 :タイムスケールの単位。

タイムスケールの単位 構⽂ 説明
<sec> s | sec | secs | second | seconds タイムスケール(秒)。

<min> m | min | mins | minute | minutes タイムスケール(分)。

<hr> h | hr | hrs | hour | hours タイムスケール(時)。

<day> d | day | days タイムスケール(⽇)。

<month> mon | month | months タイムスケール(⽉)。

<subseconds> us | ms | cs | ds タイムスケール(マイクロ秒(us)、ミリ秒(ms)、センチ秒(cs)、デシ秒(ds) )

155
t cオプション

タイムチャートオプションは、<column-split>引数の⼀部で、フィールドによるサーチ結果の分割を制御します。いくつか
のオプションは、サーチ結果を分離するためのビンの数とサイズを制御します。他のオプションは、イベントが分割フィー
ルドを持たない場合や<where-clause>の条件を満たさない場合の動作を制御します。

tc-options
構⽂ :<bin-options> | usenull=<bool> | useother=<bool> | nullstr=<string> | otherstr=<string>
説明 :フィールドによる分割の⽅法を指定するオプション。

bins-options
このトピックの「binのオプション」のセクションを参照してください。
nullstr
構⽂ :nullstr=<string>
説明: 分割フィールドを持たないイベント向けのデータシリーズのフィールド名を指定します。nullstriオプショ
ンは、usenullオプションがtrueに設定されている場合にのみ有効です。
デフォルト :NULL

otherstr
⽂字列 :otherstr=<string>
説明: <where-clause>の条件を満たさないデータシリーズのフィールド名を指定します。otherstrオプション
は、useotherオプションがtrueに設定されている場合にのみ有効です。
デフォルト :OTHER
usenull
構⽂ :usenull=<bool>
説明: シリーズが分割フィールドを持たないイベント向けに作成されるかどうか指定します。
デフォルト :真(True)
useother
構⽂ :useother=<bool>
説明 :<where-clause>の基準を満たさないためグラフに含まれていないデータシリーズに対して、シリーズを
追加するかどうかを指定します。
デフォルト :真(True)

where句

<where-clause>は<column-split>属性の⼀部です。

where句
構⽂ :<single-agg> <where-comp>
説明 :tc-by-clauseにフィールドが指定されている場合に、特定のデータシリーズを含めるかどうかの基準を指定しま
す。⼀般的にこのオプションは、シリーズ内の質量分布を選択するのではなく、スパイクを選択するために⽤いられま
す。デフォルトでは、濃度曲線下⾯積別上位10件のシリーズを探します。代わりに、sumをmaxに変更して、⾼さが上
位10件のスパイクを持つシリーズを探すことも可能です。whereコマンドとは無関係です。

single-agg
構⽂ :count | <stats-func>(<field>)
説明 :評価フィールドなど、単⼀フィールドに適⽤される単⼀の集計。ワイルドカードは使⽤できません。イベントに
まとめて適⽤する集計⼦「count」を使⽤する場合を除き、フィールドを指定する必要があります。

<stats-func>
このトピックの「統計関数」のセクションを参照してください。

<where-comp>
構⽂ :<wherein-comp> | <wherethresh-comp>
説明 :<where-clause>に設定する条件。
<wherein-comp>
構⽂ :(in | notin) (top | bottom)<int>
説明 :<where-clause>に設定するグループ化の条件。上位または下位のグループ化に含められる、または含め
られない集計シリーズ値。
<wherethresh-comp>
構⽂ :( < | > ) <num>
説明 :<where-clause>に設定する閾値。集計したシリーズ値は、指定した数値の閾値を上回る、または下回る
必要があります。

使⽤法
chartコマンドは、変換コマンド です。「コマンドタイプ」を参照してください。

評価式
156
chartコマンドは、評価式とともに使⽤できます。split-by句を指定しない場合は、eval式の名前を変更する必要があります。

関数とメモリー使⽤量

メモリーの観点から⾒ると、いくつかの関数は他の関数よりも本質的に⾼価です。たとえば、distinct_count関数はcount関数
よりもはるかに多くのメモリーを必要とします。values関数とlist関数もまた多くのメモリーを消費する可能性があります。

スプリットバイ(split-by)フィールドを使⽤せずに、またはカーディナリティの低いカーディナリティ(split-by by)フィールド
を使⽤してdistinct_count関数を使⽤する場合は、distinct_count関数をestdc関数(推定個体数)で置き換えることを検討してく
ださい。estdc関数により、メモリー使⽤量と実⾏時間が⼤幅に低下する可能性があります。

すべての使⽤可能フィールドへの統計関数の適⽤

⼀部の統計コマンド(statsなど)は、1つ以上のフィールドと組み合わされていない関数を、ワイルドカードが指定されている
かのように処理し、その関数をすべての使⽤可能フィールドに適⽤します。たとえば、| stats sumは| stats sum(*)と同じよう
に扱われます。

chartコマンドでは、count関数でのみ、このような処理が⾏われます。countでフィールドを指定しないと、chartは、サーチか
ら返されたすべてのイベントにこの関数を適⽤します。他の関数をすべてのフィールドに適⽤するには、| chart sum(*) のよ
うに明⽰的にワイルドカードを指定する必要があります。

X軸

グラフのX軸に使⽤するフィールドを指定できます。X軸の変数はbyフィールドで指定され、必要に応じて離散化されます。
グラフ化されたフィールドは、必要に応じて数量に変換されます。

_timeフィールドをX軸としてチャートを⽣成するtimechartコマンドと違い、chartコマンドは任意のフィールドをX軸として表
を作成します。
すべてのby、およびそれ以降のsplit-by句の前、overキーワードの後に、X軸のフィールドを指定することもできま
す。limitとaggオプションにより、シリーズのフィルタリングを簡単に指定することができます。where句が明⽰的に指定さ
れている場合、limitとaggオプションは無視されます。

row-split およびcolum n-split フィールドの使⽤

split-byフィールドを使⽤すると、各列がcolumn-splitフィールドの個別の値を⽰す表が出⼒されます。これは、各⾏が
group-byフィールドの⼀意の単⼀値の組み合わせとなるstatsコマンドと対照的です。デフォルトで、列の数は10に制限され
ています。where句を指定して、列の数を変更できます。

chartおよびtimechartコマンドを使⽤して、row-splitとして関数で同じフィールドを指定することはできません。

たとえば、以下のようなサーチは実⾏できません 。sum関数とrow-split引数にフィールドAが指定されています。

... | chart sum(A) by A span=log2

この場合、row-split引数には別のフィールドを指定する必要があります。

eval式を使うことで、この問題を回避できます。例:

... | eval A1=A | chart sum(A) by A1 span=log2

秒未満のビンタイムスパン

デシ秒(ds)、センチ秒(cs)、ミリ秒(ms)、マイクロ秒(us)で構成される秒未満のspanタイムスケールタイムスパンは、1秒を等
分した数値である必要があります。例:1s = 1000ms。つまり、有効なミリ秒のspan値は、1、2、4、5、8、10、20、25、
40、50、100、125、200、250、または500msです。また、span = 1000msとは指定できません。代わりにspan = 1sを使⽤し
ます。

基本的な例

1.fooの各値のm ax(delay)をグラフ化する

fooの各値のmax(delay)を返します。

... | chart max(delay) OVER foo

2.barの値によるfoo分割の各値のm ax(delay)をグラフ化する
157
barの値によるfoo分割の各値のmax(delay)を返します。

... | chart max(delay) OVER foo BY bar

3.⼀意の各ホスト(host )、ユーザー(user)のペアに対して、最⼤遅延(delay)の平均の⽐率をグラフ化する

⼀意の各ホスト(host)ユーザー(user)のペアに対して、最⼤遅延(delay)に対する平均サイズ(size)の⽐率を返します。

... | chart eval(avg(size)/max(delay)) AS ratio BY host user

4.最⼤の遅延(delay)をサイズ(siz e)ごとにグラフ化し、サイズ(siz e)をビンに分離する

サイズ(size)による最⼤遅延(delay)を返します。ここで「size」は、最⼤10個の同じサイズのビンに分類されます。

... | chart max(delay) BY size bins=10

5.⼀意の各ホスト(host )に対して、平均サイズ(siz e)をグラフ化する

⼀意の各ホスト(host)に対して、平均サイズ(size)を返します。

... | chart avg(size) BY host

6.イベント数を⽇付と時間でグループ化してグラフにする

イベント数を⽇付と時間でグループ化して返します。spanを使って7⽇間および半⽇単位にグループ化します。spanは、コ
マンド直前のフィールドに適⽤されます。

... | chart count BY date_mday span=3 date_hour span=12

7.ローカル時間に合わせたグラフの時間ビンの調整

時間ビンを午前5時(ローカル時間)に合わせます。スパンを12時間に設定します。ビンは、午前5時〜午後5時、午後5時〜午
前5時(翌⽇)などを表します。

...| chart _time span=12h aligntime=@d+5h

8.複数値BYフィールドで重複する値を削除する

mvfieldの⼀意の値のそれぞれについて、fieldの平均値をグラフにします。mvfieldの値を複製します。

...| chart avg(field) BY mvfield dedup_splitval=true

その他の例

1.chart コマンドで<row-split >および<colum n-split >値を指定する

この例では、各製品の四半期ごとの売り上げを列挙するイベントを使⽤します。例を⽰します。

pro duct s quart er sales

ProductA QTR1 1200

ProductB QTR1 1400

ProductC QTR1 1650

ProductA QTR2 1425

ProductB QTR2 1175

ProductC QTR2 1550

ProductA QTR3 1300

ProductB QTR3 1250

ProductC QTR3 1375

ProductA QTR4 1550

158
ProductB QTR4 1700

ProductC QTR4 1625

各四半期の製品ごとにデータを集計するには、以下のサーチを実⾏します。

source="addtotalsData.csv" | chart sum(sales) BY products quarter

この例では、chartコマンドのBY句で2つのフィールドが指定されています。

productsフィールドは、<row-split>フィールドとして参照されています。グラフでは、このフィールドの値がX軸とな
ります。
quarterフィールドは、<column-split>フィールドとして参照されています。グラフでは、このフィールドの値がデー
タシリーズとなります。

結果は、以下のような内容で[統計]タブに表⽰されます。

pro duct s QTR1 QTR2 QTR3 QTR4

ProductA 1200 1425 1300 1550

ProductB 1400 1175 1250 1700

ProductC 1650 1550 1375 1625

結果をグラフとして表⽰するには、[ 視覚エフェクト] タブをクリックします。


各製品の合計列を追加する例については、addtotalsコマンドを参照してください。

2.各W ebサーバーに対して⾏われた、異なるページ要求の件数をグラフ化する

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏するときは、時間範囲として[全時間] を使⽤します。

各Webサーバーに対して⾏われた、異なるページ要求GETとPOSTの数をグラフ化します。

sourcetype=access_* | chart count(eval(method="GET")) AS GET, count(eval(method="POST")) AS POST by host

この例では、eval式を使ってstatsコマンドのカウント対象となる異なるフィールド値を指定しています。最初の句
はcount()関数を使って、methodフィールドの値がGETのWebアクセスイベントをカウントしています。そして、ASキーワード
を使⽤して、これらの結果を表すフィールドが名前が変更されたGETであることを⽰します。

次に2番⽬の句では、POSTイベントに対して同様の処理を⾏います。次にBY句でhostフィールドを使⽤して、両⽅のタイプ
のイベント数がWebサーバー別に分割されます。

結果は、以下のような内容で[統計]タブに表⽰されます。

ホスト GET POST

www1 8431 5197

www2 8097 4815

www3 8338 4654

[ 視覚エフェクト] タブをクリックします。必要であれば結果を棒グラフにフォーマットします。このグラフには、各イベン
トタイプ(GETとPOST)のイベント数合計が、hostの値に基づいて表⽰されます。

159
3.トランザクション数を期間ごとにグラフ化する

この例では、サーチチュートリアルのサンプルデータセットを使⽤しています。Splunkインスタンスでこの例を試すには、サンプルデータをダウン
ロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。サーチを実⾏するときは、時間範囲として[全時間] を使⽤し
ます。

期間(秒)に基づいてトランザクション数を表⽰するグラフを作成します。
sourcetype=access_* status=200 action=purchase | transaction clientip maxspan=10m | chart count BY duration span=log2

このサーチでは、transactionコマンドを使って、トランザクションをclientipフィールドを共有する10分間のタイムスパンで
のイベントをとして定義しています。transactionコマンドは、トランザクション内の最初のイベントと最後のイベントのタイ
ムスタンプの差を表す、新しいフィールドdurationを作成します。(maxspan=10sのため、durationの値をこれより⼤きくするこ
とはできません)。
次にトランザクションが、パイプ⽂字でchartコマンドに渡されます。count()関数は、トランザクション数のカウントと、各
トランザクションの期間によるカウント値の分割に使⽤されています。期間は秒単位で、多くの値が存在していると考えら
れるため、このサーチではspan引数を使って期間をlog2 (span=log2)のビンにバケット化しています。

結果は、以下のような内容で[統計]タブに表⽰されます。

durat io n co unt

0 970

1〜2 593

2〜4 208

4〜8 173

8〜16 26

64〜128 3

128〜256 3

256〜512 12

512〜1024 2

[ 視覚エフェクト] タブをクリックします。必要であれば結果を棒グラフにフォーマットします。

160
このデータセットでは、⼤半のトランザクションは0〜2秒間で完了しています。

4.トランザクションの期間に基づいて、トランザクションの平均イベント数をグラフ化する

この例では、サーチチュートリアルのサンプルデータセットを使⽤しています。Splunkインスタンスでこの例を試すには、サンプルデータをダウン
ロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。サーチを実⾏するときは、時間範囲として[全時間] を使⽤し
ます。

トランザクションの期間に基づいて、トランザクション内の平均イベント数を表⽰するグラフを作成します。

sourcetype=access_* status=200 action=purchase | transaction clientip maxspan=30m | chart avg(eventcount) by duration span=log2

transactionコマンドは結果にdurationおよびeventcountの2つのフィールドを追加します。eventcountフィールドは、単⼀のトラ
ンザクション内のイベント数を追跡します。

このサーチでは、トランザクションがchartコマンドに渡されます。avg()関数は、各期間におけるイベントの平均数を計算す
るために使⽤されます。期間は秒単位で、多くの値が存在していると考えられるため、このサーチではspan引数を使⽤して、
期間を基数2の対数のビンにバケツ化しています。

フィールド形式オプションを使⽤すると、数字のフォーマットを有効化できます。

表⽰を円グラフに変更するには、[ 視覚エフェクト] タブをクリックします。

161
円グラフの各くさび形(ウェッジ)は、イベントトランザクションの期間を表しています。ウェッジにマウスオーバーすると、
平均数を⾒ることができます。

5.顧客による購⼊をグラフ化する

この例では、サーチチュートリアルのサンプルデータセットを使⽤しています。Splunkインスタンスでこの例を試すには、サンプルデータをダウン
ロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。サーチを実⾏する際には、時間範囲として「昨⽇」 を指定し
てください。

Buttercup Gamesオンラインストアーで昨⽇商品を購⼊した個別の⼈の数、および購⼊商品をグラフ化します。

sourcetype=access_* status=200 action=purchase | chart dc(clientip) OVER date_hour BY categoryId usenull=f

このサーチは、購⼊イベント数を取得して、パイプ⽂字を使ってそれをchartコマンドに渡します。dc()また
はdistinct_count()関数は、⼀意のビジター数(clientipフィールドで特徴化)をカウントするために⽤いられます。この値がそ
の⽇の各時間に対してグラフ化され、購⼊のcategory_idに基づいて分割されます。また、これらは数値なので、usenull=f引数
を使って値を持たないフィールドを除外しています。

結果は、以下のような内容で[統計]タブに表⽰されます。

dat e_ho ur ACCESSORIES ARCADE SHOOTER SIMULATION SPORTS STRATEGY TEE

0 2 6 0 4 0 4 4

1 4 7 2 3 0 10 5

2 2 2 2 1 1 2 0

3 3 5 3 5 0 7 1

4 3 4 0 0 1 4 0

5 3 0 3 0 1 6 1

[ 視覚エフェクト] タブをクリックします。必要であれば結果を折れ線グラフにフォーマットします。

162
各折れ線グラフは、Buttercup Gamesオンラインストアーで販売された各商品のタイプを表しています。各折れ線の⾼さ
は、その時間帯に商品を購⼊した⼀意の⼈々の数を表しています。⼀般的に、オンラインショップでもっとも⼈気の商品
は、アーケード(Arcade)ゲームのようです。

レポートを、その⽇の各時間の購⼊数合計を表すスタック縦棒グラフとして書式設定することができます。

1. グラフの種類を[ 棒グラフ] へ変更します。


2. [ フォーマット] メニューを使⽤して、[ 全般] タブで[ スタック] を選択します。

6.地震の数とそれぞれのマグニチュードをグラフ化する

この例では、USGS EarthquakesWebサイトからダウンロードした最近の地震データを使⽤しています。データはカンマ区切り形式のASCIIテキスト
ファイルで、記録されている各地震のマグニチュード(mag)、座標(latitude、longitude)、地域(place)が含まれています。

最新のCSVファイルをUSGS Ear thquake F e e ds からダウンロードして、それを⼊⼒として追加できます。

アラスカ州周辺での地震発⽣回数およびそのマグニチュードを表すグラフを作成します。時間範囲に[ 全時間] を指定してこ


のサーチを実⾏します。

source=all_month.csv place=*alaska* mag>=3.5 | chart count BY mag place useother=f | rename mag AS Magnitude

このサーチは、アラスカ地域で発⽣した地震数をカウントします。次にこの値が、マグニチュードに基づいて各placeに分割
されます。place値は数値ではないため、useother=f引数を使って⼀致しないイベントを除外しています。

結果は、以下のような内容で[統計]タブに表⽰されます。

145km
ENE o f 225km 250km 252km 254km 255km 259km 264km 265km Gulf
Magnit ude Chiriko f SE o f SE o f SE o f SE o f SE o f SE o f SE o f SE o f of
Ko diak, Ko diak, Ko diak, Ko diak, Ko diak, Ko diak, Ko diak, Ko diak,
Island, Alaska Alaska Alaska Alaska Alaska Alaska Alaska Alaska Alaska
Alaska

3.5 1 1 0 1 0 1 0 0 2 2

3.6 0 0 1 0 0 0 0 1 0 1

3.7 0 0 0 0 1 0 0 0 0 2

3.8 0 1 0 0 0 0 1 1 0 3

3.9 0 0 1 0 1 0 0 0 0 0

163
4 0 0 0 0 1 1 0 0 0 1

4.1 0 0 0 0 0 0 0 0 0 1

4.2 0 0 0 1 0 0 0 0 0 1

4.3 0 0 0 0 0 0 0 0 0 1

4.4 0 0 0 0 0 0 1 0 0 1

4.6 1 0 0 0 0 0 0 0 0 0

5 0 0 0 0 0 0 0 0 0 1

結果をグラフとして表⽰するには、[ 視覚エフェクト] タブをクリックします。このグラフは、マグニチュード別に地震の発


⽣数を⽰しています。

関連項⽬
コマンド
timechart
bin
sichart

ブログ
サーチコマンド> stats、chart、timechart

cl u st er
説明
clusterコマンドは、相互の類似度に基づいてイベントをグループ化します。別のフィールドを指定しない限
り、clusterは_rawフィールドの内容に基づいてイベントをグループ化します。デフォルトのグループ化⼿法では、イベントを
⽤語(match=termlist)に分割し、イベント間のベクトルを算出します。どのイベントを⼀緒にグループ化するかをより際⽴たせ
る場合は、tに⾼い閾値を設定してください。

clusterコマンドの結果は、各イベントに2つの新しいフィールドを追加します。countfieldおよびlabelfieldパラメーター使っ
てこれらのフィールド名を指定することができます。デフォルトは、cluster_countおよびcluster_labelになりま
す。cluster_countの値は、クラスターの⼀部となるイベント数、またはクラスターサイズになります。クラスター内の各イベ
ントには、所属するクラスターのcluster_label値が割り当てられます。たとえば、サーチが10件のクラスターを返す場合、ク
ラスターには1〜10のラベルが付けられます。

構⽂
cluster [slc-options]...

省略可能な引数
164
slc-options
構⽂ :t=<num> | delims=<string> | showcount=<bool> | countfield=<field> | labelfield=<field> | field=<field>
| labelonly=<bool> | match=(termlist | termset | ngramset)
説明 :単純なログクラスター(slc)を設定するオプション。

SLCオプション

t
構⽂ :t=<num>
説明 :クラスタリングの感度を制御するクラスターの閾値を指定します。この値は、0.0より⼤きく、1.0未満でなけれ
ばなりません。閾値が1に近いほど、より類似性が⾼いイベントが同じクラスターであるとみなされます。
デフォルト :0.8
delims
構⽂ :delims=<string>
説明 :raw⽂字列をトークン化するために使⽤する⼀連の区切り⽂字を設定します。デフォルトでは、0〜9、A〜Z、a
〜z、および「_」を除くすべての⽂字が区切り⽂字となります。
showcount
構⽂ :showcount=<bool>
説明 :showcount=falseの場合、インデクサーはサーチヘッドでクラスタリングする前に独⾃のイベントをクラスタリン
グします。showcount=falseで、この場合イベントにはイベントカウントが追加されません。showcount=trueの場合、各ク
ラスターのイベントカウントが記録され、各イベントにはカウントが付加されます。
デフォルト :showcount=false

countfield
構⽂ :countfield=<field>
説明 :showcount=trueがtrueの場合にクラスターサイズを書き込むためのフィールドの名前です。クラスターサイズは、
クラスター内のイベント数です。
デフォルト :cluster_count。

labelfield
構⽂ :labelfield=<field>
説明 :クラスター番号を書き込むためのフィールドの名前です。イベントはクラスターにグループ化されるため、各ク
ラスターは番号でカウントされラベルされます。
デフォルト :cluster_label

field
構⽂ :field=<field>
説明 :各イベントで分析するフィールドの名前。
デフォルト: _raw

labelonly
説明 :labelonly=<bool>
構⽂ :到着したイベントを保持し、それらが属するクラスター(labelonly=true)を注記するか、またはクラスター
フィールドだけを新しいイベント(labelonly=false)として出⼒するかを選択します。labelonly=falseの場合、説明付
きのイベントと、組み合わされるイベントの件数とともにクラスターのリストが出⼒されます。
デフォルト :false

match
構⽂ :match=(termlist | termset | ngramset)
説明 :イベント間の類似度を判断するために使⽤する⼿段を選択します。termlist は、フィールドを単語に分割し、同
じ⽤語順序を必要とします。termsetは、順序付けられない⽤語セットを受け付けます。ngramsetは、trigram (3⽂字のサ
ブ⽂字列)のセットを⽐較します。ngramsetは、フィールド値が⼤きい場合に⼤幅に遅くなり、punctのような短い⾮テキ
ストフィールドに適しています。
デフォルト :termlist

使⽤法
clusterコマンドは、ストリーミングコマンド またはデータセット処理コマンド になります。これは、コマンドで指定する
引数によって決まります。「コマンドタイプ」を参照してください。

clusterコマンドを使って、データ内のイベントが⼀般的であるか、そうでないかを特定します。たとえば、IT上の問題を調
査する場合は、clusterコマンドを使って異常を特定します。この場合、異常なイベントとは⼤きな集団にグループ化されて
いないイベント、またはわずかなイベントしか含まない集団です。また、エラーを探している場合は、clusterコマンドを
使っておよそどの位の種類のエラーが存在しているか、またデータ内で多く⾒られるエラータイプを確認します。

例1

165
Splunk導⼊環境内の不具合がある所を素早く返します。⾃分のロールが内部インデックスにアクセスするための権限を持っ
ている必要があります。
index=_internal source=*splunkd.log* log_level!=info | cluster showcount=t | table cluster_count _raw | sort -cluster_count

このサーチは、Splunkソフトウェアが_internalインデックス内に記録している操作に関するログを活⽤しています。
log_levelがDEBUG、WARN、ERROR、FATALのすべてのログをクラスター化して返します。次に各クラスター内のイベ
ント数で、クラスターをソートします。

結果は、以下のような内容で[統計]タブに表⽰されます。

clust er_co unt raw

03-20-2018 09:37:33.806 -0700 ERROR HotDBManager - Unable to create directory


303010 /Applications/Splunk/var/lib/splunk/_internaldb/db/hot_v1_49427345 because No such file or
directory
03-20-2018 09:37:33.811 -0700 ERROR pipeline - Uncaught exception in pipeline execution (indexer)
151506
- getting next event

16390
04-05-2018 08:30:53.996 -0700 WARN SearchResultsMem - Failed to append to multival.Original
value not converted successfully to multival.

03-20-2018 09:37:33.811 -0700 ERROR BTreeCP - failed: failed to mkdir


486 /Applications/Splunk/var/lib/splunk/fishbucket/splunk_private_db/snapshot.tmp: No such file or
directory
03-20-2018 09:37:33.814 -0700 WARN DatabaseDirectoryManager - idx=_internal Cannot open
216 file='/Applications/Splunk/var/lib/splunk/_internaldb/db/.bucketManifest99454_1652919429_tmp'
for writing bucket manifest (No such file or directory)

03-20-2018 09:37:33.814 -0700 ERROR SearchResultsWriter - Unable to open output file:


216 path=/Applications/Splunk/var/lib/splunk/_internaldb/db/.bucketManifest99454_1652919429_tmp
error=No such file or directory

例2

⼤きなグループにクラスター化されていないイベントをサーチします。

... | cluster showcount=t | sort cluster_count

この場合、イベントのクラスターが返され、sortコマンドを使ってクラスターサイズの昇順(cluster_countの値)に表⽰されま
す。これらは、⼤きなグループにはクラスター化されないため、それらを希な(⼀般的ではない)イベントとみなすことができ
ます。

例3

類似のイベントをクラスター化して、もっとも頻繁に登場するエラータイプをサーチします。

error | cluster t=0.9 showcount=t | sort - cluster_count | head 20

これは、インデックス内の「error」を含むイベントをサーチして、それらが類似している場合はグループ化します。sortコ
マンドは、クラスターサイズ、cluster_countに基づいて、イベントの降順に表⽰するために⽤いられます。⼤きなクラスター
が最初に表⽰されます。次にheadコマンドを使って、上位20件の⼤きなクラスターを表⽰します。データ内に頻繁に登場す
るエラータイプが分かったら、より詳細な調査を⾏ってエラーの原因を発⾒することができます。

例4

clusterコマンドを使って、データの概要を確認します。⼤量のデータがある場合は、⼩さな時間範囲(15分や1時間など)に対
して以下のサーチを実⾏するか、またはサーチをソースタイプやインデックスに制限します。

... | cluster labelonly=t showcount=t | sort - cluster_count, cluster_label, _time | dedup 5 cluster_label

類似度に基づいてイベントをグループ化し、各クラスターからいくつかのイベントを表⽰するこのサーチは、データの詳細
を理解するために役⽴ちます。ここでは、クラスター内の各イベントを保持するためにlabelonly=tを使⽤し、それ
をcluster_labelで追加しています。sortコマンドは、結果をサイズ(cluster_count)の降順、次にcluster_labelの降順、次にイベ
ントのインデックス作成されたタイムスタンプ(_time)の降順に表⽰するために使⽤されます。次にdedupコマンドを使って各
クラスターの最初の5件のイベントを表⽰し、cluster_labelを使って各クラスターを区別します。

関連項⽬
anomalies、anomalousvalue、kmeans、outlier
166
anomalies、anomalousvalue、kmeans、outlier

cofil t er
説明
このコマンドは、field1とfield2の値が⼀緒に発⽣する回数を判断します。

このコマンドは協調フィルタリング分析のひとつのプロセスを実⾏し、推奨事項を提案します。ユーザーフィールド(field1)
とアイテムフィールド(field2)を踏まえ、アイテムのペアがどれほど共通しているかを特定します。つまり、XとYが個別のア
イテムで、Aが個別のユーザーである場合、合計(Aが持つXとY )が計算されます。

構⽂
cofilter <field1> <field2>

必須引数

field1
構⽂ :<field>
説明 :フィールド名。

field2
構⽂ :<field>
説明 :フィールド名です。

使⽤法
cofilterコマンドは、変換コマンド です。「コマンドタイプ」を参照してください。

例1

userとitemのcofilterを特定します。userフィールドを先に指定し、次にitemフィールドを指定します。出⼒はアイテムの各ペ
アのイベントで、最初のアイテムとその頻度、2つめのアイテムとその頻度、アイテムのペアの頻度が含まれます。

まず、簡単なサーチでいくつかの結果を作成します。

| makeresults | eval user="a b c a b c a b c" | makemv user | mvexpand user | streamstats count

結果は、以下のような内容で[統計]タブに表⽰されます。

_t im e co unt user

2020-02-19 21:17:54 1 a

2020-02-19 21:17:54 2 b

2020-02-19 21:17:54 3 c

2020-02-19 21:17:54 4 a

2020-02-19 21:17:54 5 b

2020-02-19 21:17:54 6 c

2020-02-19 21:17:54 7 a

2020-02-19 21:17:54 8 b

2020-02-19 21:17:54 9 c

evalコマンドでモジュロ( % )演算⼦を使⽤してitemフィールドフィールドを作成します。

| makeresults | eval user="a b c a b c a b c" | makemv user | mvexpand user | streamstats count | eval item = count % 5

結果はこのようになります。

167
_t im e co unt it em user

2020-02-19 21:17:54 1 1 a

2020-02-19 21:17:54 2 2 b

2020-02-19 21:17:54 3 3 c

2020-02-19 21:17:54 4 4 a

2020-02-19 21:17:54 5 0 b

2020-02-19 21:17:54 6 1 c

2020-02-19 21:17:54 7 2 a

2020-02-19 21:17:54 8 3 b

2020-02-19 21:17:54 9 4 c

cofilterコマンドをサーチに追加して、item値の各ペアでのuser値の発⽣回数を決定します。

| makeresults | eval user="a b c a b c a b c" | makemv user | mvexpand user | streamstats count | eval item = count % 5 |
cofilter user item

結果はこのようになります。

項⽬1 項⽬1のユーザーカウント 項⽬2 項⽬2のユーザーカウント ペアカウント

1 2 2 2 1

1 2 3 2 1

1 2 4 2 2

2 2 3 2 1

2 2 4 2 1

2 2 0 1 1

3 2 4 2 1

3 2 0 1 1

関連項⽬
associate、correlate

col l ect
説明
指定するサマリーインデックス にサーチの結果を追加します。collectコマンドを実⾏する前に、サマリーインデックスを作
成する必要があります。

collectの使い⽅を知らなくてもサマリーインデックスを作成できますが、知っておいた⽅が便利です。サマリーインデック
スの概要については、『ナレッジ管理』マニュアルの「サマリーインデックスを使ったレポート効率の向上」を参照してく
ださい。

構⽂
collect index=<string> [<arg-options>...]

必須引数

インデックス
構⽂ :index=<string>
説明 :イベントを追加するサマリーインデックスの名前です。インデックスはイベントが追加される前に存在している
必要があります。インデックスは⾃動で作成されません。

168
省略可能な引数

arg-options
構⽂: addtime=<bool> | file=<string> | spool=<bool> | marker=<string> | output_format [raw | hec] |
testmode=<bool> | run_in_preview=<bool> | host=<string> | source=<string> | sourcetype=<string>
説明 :collectコマンドの省略可能な引数。各オプションの説明はarg-o pt io ns セクションをご覧ください。

arg-opt ions

addtime
構⽂ :addtime=<bool>
説明: このオプションを使⽤して各イベントの時間フィールドにプレフィックスするかどうかを指定しま
す。_rawフィールドのない結果を返す、stats、chart、timechartコマンドなどのコマンドもあります。addtime=falseを
指定すると、Splunkソフトウェアはフィールドのサマリー⾏への任意の登場順序に対して、汎⽤データ検出を使⽤しま
す。addtime=trueを指定すると、Splunkソフトウェアはサーチ時間範囲info_min_timeを使⽤します。この時間範囲は
sistats)コマンドまたは_timeにより追加されます。Splunkソフトウェアは最初にinfo_min_time、_time、またはnow()を検
索したフィールドに基づいて時間フィールドを追加します。
このオプションは、output_format=hecの場合には無効です。
デフォルト :真(True)
file
構⽂ :file=<string>
説明 :イベントを出⼒したいファイル名。「file=$timestamp$」または「file=$random$」を指定して、ファイル名
にタイムスタンプまたは乱数を使⽤することができます。
使⽤法 :「index=」が使⽤されると、「.stash」をファイル名の終わりに追加する必要があります。そうでない場合
は、データはメインインデックスに追加されます。
デフォルト :<random-number>_events.stash
ホスト
構⽂ :host=<string>
説明 :イベントに指定するホストの名前。
このオプションは、output_format=hecの場合には無効です。

marker
構⽂ :marker=<string>
説明 :各イベントに追加する⽂字列で、通常はキーと値のペアです。キーと値のペアは、カンマとスペースで区切る必
要があります。
値にスペースやカンマが含まれている場合は、エスケープ処理をしなければなりません。たとえば、キーと値のペア
がsearch_name=vpn starts and stopsの場合は、search_name=\"vpn starts and stops\"に変更する必要があります。
このオプションは、output_format=hecの場合には無効です。

output_format
構⽂: output_format=[raw | hec]
説明 :サマリーインデックスの出⼒形式を指定します。rawに設定されている場合は、従来の⾮構造化ログスタイルの
サマリーインデックス処理を⾏うstashの出⼒形式を使⽤します。
hecに設定されている場合は、HTTPイベントコレクター(HEC) JSON形式の出⼒を⽣成します。

stashファイルがインデックス化されていれば、すべてのフィールドは⾃動的にインデックス化されます。
var/spool/splunkパスに書き込まれるファイル名の末尾は.stashではなく.stash_hecになります。
元のデータのsource、sourcetype、およびhostフィールドをサマリーインデックスで直接使⽤できるようにし
ます。これらのフィールドをextract_host/extracted_sourcetype/...パスに再マッピングしません。
元のデータのindexフィールドとsplunk_serverフィールドは無視されます。
output_format=hecである場合は、addtime、host、marker、source、またはsourcetypeオプションは使⽤できません。

デフォルト :raw

run_in_preview
構⽂ :run_in_preview=<bool>
説明 :プレビュー⽣成の最中にcollectコマンドを有効にするかどうかを指定します。⼀般的には、サマリーインデック
スにプレビュー結果を挿⼊しません(run-in-preview=false)。サーチの⼀環としてカスタムサーチコマンドが使⽤され
ている場合など、⼀部の事例では、このオプションを有効にして正確なサマリーインデックス可能プレビューが⽣成さ
れるように設定することもできます。
デフォルト :偽(False)

spool
構⽂ :spool=<bool>
説明 :真(True)に設定すると、サマリーのインデックスファイルはSplunkスプールディレクトリに書き込まれ、そこで
⾃動的にインデックスされます。偽(False)に設定すると、ファイルは$SPLUNK_HOME/var/run/splunkディレクトリに書き込
まれます。何らかの⾃動化や管理がされない限り、ファイルはこのディレクトリに残ります。Splunk Enterpriseがあ
る場合は、このコマンドを使⽤して、出⼒ファイルをデータとして取り込まれないディスク上の場所にダンプすること
で、サマリーインデックスをトラブルシューティングできます。
デフォルト :真(True)

source
169
source
構⽂ :source=<string>
説明 :イベントに指定するソースの名前。
このオプションは、output_format=hecの場合には無効です。

sourcetype
構⽂ :sourcetype=<string>
説明 :イベントに指定するソースタイプの名前。stash以外のソースタイプを指定すると、ライセンスの使⽤が発⽣ し
ます。
このオプションは、output_format=hecの場合には無効です。
デフォルト :stash

testmode
構⽂ :testmode=<bool>
説明 :テストモードとリアルモードを切り替えます。テストモードでは、結果は新しいインデックスには書き込まれま
せん。ただし、サーチ結果はインデックスに送信されたかのように表⽰が変更されます。
デフォルト :偽(False)

使⽤法
上書きされる場合を除き、イベントはSplunk導⼊環境が監視しているディレクトリ内で、random-num_events.stashの名前形
式のファイルに書き込まれます。イベントに_rawフィールドが含まれている場合は、このフィールドが保存されます。イベン
トに_rawフィールドがない場合は、すべてのフィールドをキー=値ペアのカンマ区切りリストに連結したフィールドが作成さ
れます。

collectコマンドは時間範囲全時間 を持つリアルタイムサーチでも動作します。

タイムスタンプのないイベント

タイムスタンプを持たないイベントにcollectコマンドを適⽤した場合、コマンドはサーチ範囲の最も早い(または最⼩の)時間
を使ってすべてのイベントの時間を指定します。たとえば、collectコマンドを過去4時間使⽤した場合(範囲:-4h〜+0h)、コ
マンドはサーチが起動した時間よりも4時間前のタイムスタンプを割り当てます。そのタイムスタンプはタイムスタンプのな
いすべてのイベントに適⽤されます。

collectコマンドを時間範囲全時間 で使⽤して、イベントにタイムスタンプがない場合は、現在のシステム時間がタイムスタ
ンプに使⽤されます。

タイムスタンプを持たないデータのサマリーインデックス作成の詳細は、『ナレッジ管理』』マニュアルの「サマリーイン
デックスを使ったレポート効率の向上」を参照してください。

別のインデックスへのイベントのコピー

collectコマンドを使⽤すると、サーチ結果を別のインデックスにコピーできます。コピーするデータを返すサーチを構築
し、その結果をcollectコマンドにパイプします。例:

index=foo | ... | collect index=bar

このサーチは結果をbarインデックスに書き込みます。ソースタイプはstashに変更されます。

collectコマンドでソースタイプを指定できます。ただし、データを再度インデックスした場合と同様に、ソースタイプを指
定するとライセンスに不利に働きます。

1.downloadイベントを、インデックス「downloadcount 」に保管します

eventtypetag="download" | collect index=downloadcount

2.VPN接続と切断に関する統計データを収集します

国ごとのVPN接続と切断に関する時間別の統計データを収集します。
index=mysummary | geoip REMOTE_IP | eval country_source=if(REMOTE_IP_country_code="US","domestic","foreign") | bin _time
span=1h | stats count by _time,vpn_action,country_source | addinfo | collect index=mysummary marker="summary_type=vpn,
summary_span=3600, summary_method=bin, search_name=\"vpn starts and stops\""

addinfoコマンドにより、特定のインデックス値を追加するためのサーチがいつ実⾏されたかを指定するフィールドがサーチ
結果に含まれます。

関連項⽬

170
コマンド
overlap
sichart
sirare
sistats
sitimechart
sitop
tscollect

A ns w er s
何か質問がありますか? 「Splunk Answers」では、Splunkコミュニティに寄せられた、collectコマンドの使⽤⽅法に関す
る質問と回答をご覧いただけます。

concu r r ency
説明
concurrencyは、各イベントの開始とオーバーラップする期間があるイベント数を測定します。また、測定は特定の各イベ
ントが開始された時間内に処理中であった項⽬数の合計を⽰します。これにはイベント⾃体も含まれます。このコマンド
は、合計期間中にオーバーラップする特定のイベント数合計を測定するのではありません。

構⽂
concurrency duration=<field> [start=<field>] [output=<field>]

必須引数

duration
構⽂ :duration=<field>
説明 :期間を表すフィールドです。このフィールドは、start フィールドと同じ単位の数値でなければなりません。たと
えば、トランザクションコマンドで⽣成されたdurationフィールドは「秒」で(例1を参照)、単位が同じ秒であ
る_timeのデフォルトと⼀緒に利⽤することができます。

省略可能な引数

start
構⽂ :start=<field>
説明 :開始時間を⽰すフィールド。
デフォルト :_time

output
構⽂ :output=<field>
説明 :結果となる同時イベント数を書き込むフィールド。
デフォルト :"concurrency"

使⽤法
イベントXは、X.startがY.startと(Y.start + Y.duration)の間にある場合にイベントYと同時発⽣になります。

イベントにその完了の時刻と完了前の実⾏時間がある場合は、(startに終了時刻が⼊ってしまうため)concurrencyコマンド
を呼び出す前にstartから実⾏時間を減算しておく必要があります。
... |eval new_start = start - duration | concurrency start=new_start duration=duration

制限事項

オーバーラップする項⽬の数量については、制限事項があります。追跡する最⼤同時発⽣がlimits.confの[concurrency]スタ
ンザにあるmax_countを超えた場合、UI/サーチ出⼒で警告が⽣成され値が固定されます。その結果、値が不正確になる可能
性があります。この制限のデフォルト値は10000000です。

基本的な例

1.重複するHTTPリクエストの数を判断する

各HTTPリクエストの開始時にブラウザーからsplunkdにアクセスしている、オーバーラップするHTTPリクエスト数を判断
します。

これは、記録されているメッセージのタイムスタンプが、リクエストが来た時点の時間で、spentフィールドがリクエストの
処理に費やされた時間(ミリ秒)であることを前提にしています。この作業を⾏うには、adminユーザーまたは_internalイン
デックスにアクセスできるロールを持つユーザーである必要があります。
171
index=_internal sourcetype=splunkd_ui_access | eval spent_in_seconds = spent / 1000 | concurrency duration=spent_in_seconds

2.同時イベントの数を算出する

各イベントに対する同時イベント数を算出して、それをfooフィールドに出⼒します。
... | concurrency duration=total_time output=foo

3.既存のフィールドを使⽤して、開始時刻と期間を指定する

etフィールドを開始時刻、lengthを期間として、同時イベント数を算出します。

... | concurrency duration=length start=et

その他の例

1.同時に発⽣したトランザクション数をカウントする

この例では、サーチチュートリアルのサンプルデータセットを使⽤しています。Splunkインスタンスでこの例を試すには、サンプルデータをダウン
ロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。サーチを実⾏するときは、時間範囲として[全時間] を使⽤し
ます。

トランザクションの期間またはスパンを使って、同時に発⽣した他のトランザクション数をカウントします。

sourcetype=access_* | transaction JSESSIONID clientip startswith="view" endswith="purchase" | concurrency duration=duration |


eval duration=tostring(duration,"duration")

このサーチでは、JSESSIONIDとclientipに同じ値をもつイベントがトランザクションにグループ化されています。イベン
トに「view」という⽂字列が含まれる場合、そのイベントはトランザクションの最初のイベントです。イベントに
「purchase」という⽂字列が含まれる場合、そのイベントはトランザクションの最後のイベントです。
transactionコマンドは、durat io n というフィールドを返します。
次にトランザクションは、パイプ⽂字でconcurrencyコマンドに渡されます。このコマンドは、トランザクションのタイ
ムスタンプとdurationに基づいて、同時に発⽣したイベント数をカウントします。
このサーチは、evalコマンドとtostring()関数を使って、durationフィールドの値をより分かりやすい形式HH:MM:SSに
変換します。

各トランザクションでのJSESSIONID、clientip、concurrency、およびdurationフィールドの値を⾒るには:

1. [関連するフィールド]リストでフィールド名をクリックします。
172
2. [ 選択済み] の情報ボックスで[ はい] をクリックします。
3. [関連するフィールド]リストで次のフィールドを選択します。情報ボックスが⾃動的に更新されます。[ 選択済み] で[ は
い] をクリックします。
4. 値を⾒たいフィールドがすべて結果リストに表⽰されるまで、この⼿順を繰り返します。結果は次のイメージのように

なります。

2.同時に発⽣した購⼊数をカウントする

この例では、サーチチュートリアルのサンプルデータセットを使⽤しています。Splunkインスタンスでこの例を試すには、サンプルデータをダウン
ロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。サーチを実⾏するときは、時間範囲として[全時間] を使⽤し
ます。

同時に発⽣した個別の購⼊数をカウントするために、各購⼊間の時間を使⽤します。

sourcetype=access_* action=purchase | delta _time AS timeDelta p=1 | eval timeDelta=abs(timeDelta) | concurrency


duration=timeDelta

このサーチでは、deltaコマンドと_timeフィールドを使って、ある購⼊イベント(action=purchase)とその直前の購⼊イベ
ント間の時間を算出しています。
サーチは、この時間の変更をtimeDeltaとして名前を変更します。
⼀部のtimeDeltaの値は負です。負の値ではconcurrencyコマンドは機能しないため、evalコマンドを使ってtimeDeltaをそ
の絶対値(abs(timeDelta))に再定義します。
timeDeltaが同時イベントを算出するためのdurationとして使⽤されます。

3.連続するトランザクション間の時間を使⽤してトランザクションを計算する

この例では、サーチチュートリアルのサンプルデータセットを使⽤しています。Splunkインスタンスでこの例を試すには、サンプルデータをダウン
ロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。サーチを実⾏するときは、時間範囲として[全時間] を使⽤し

173
ます。

連続する各トランザクションの時間を使って、同時に発⽣したトランザクション数を算出します。
sourcetype=access_* | transaction JSESSIONID clientip startswith="view" endswith="purchase" | delta _time AS timeDelta p=1 |
eval timeDelta=abs(timeDelta) | concurrency duration=timeDelta | eval timeDelta=tostring(timeDelta,"duration")

このサーチでは、JSESSIONIDとclientipに同じ値をもつイベントがトランザクションにグループ化されています。イベン
トに「view」という⽂字列が含まれる場合、そのイベントはトランザクションの最初のイベントです。イベントに
「purchase」という⽂字列が含まれる場合、そのイベントはトランザクションの最後のイベントです。
transactionコマンドは、durat io n というフィールドを返します。
トランザクションはパイプ⽂字でdeltaコマンドに渡されます。このコマンドは、_timeフィールドを使って、あるトラン
ザクションとその直前のトランザクション間の時間を算出します。
サーチは、この時間の変更をtimeDeltaとして名前を変更します。
⼀部のtimeDeltaの値は負です。負の値ではconcurrencyコマンドは機能しないため、evalコマンドを使ってtimeDeltaをそ
の絶対値(abs(timeDelta))に再定義します。
このtimeDeltaが同時トランザクションを算出するためのdurationとして使⽤されます。

関連項⽬
timechart

cont ingency
説明
統計学で分割表は、複数の変数(通常はカテゴリ)間の関係を記録、分析するために⽤いられます。分割表に基づいて、ファイ
係数やクラメールのVなどの、各種関連や⾮依存性などを算出できます。
contingencyコマンドを使って分割表を作成することができます(この場合は、データ内の2つのフィールドの値の共起相関関係
マトリックス)。このマトリックス内の各セルは、両⽅のクロス表フィールド値が存在しているイベント数を表⽰します。つ
まり、この表の最初の⾏と列は、2つのフィールドの値で構成されています。表内の各セルには、イベントカウントを表す数
字が含まれています。その⾏と列の組み合わせとなるフィールドの2つの値が含まれています。

2つのフィールド間の関係またはパターンが存在している場合は、テーブルの情報を分析して簡単にそれを特定できます。た
とえば、⾏間で列値が⼤幅に異なっている場合(またはその反対)、2つのフィールド間には偶発性が存在しています(独⽴して
いない)。偶発性がない場合、2つのフィールドは独⽴しています。

構⽂

174
contingency [<contingency-options>...] <field1> <field2>

必須引数

<field1>
構⽂ :<field>
説明 :任意のフィールド。フィールド名にはワイルドカードを使⽤できません。

<field2>
構⽂ :<field>
説明 :任意のフィールド。フィールド名にはワイルドカードを使⽤できません。

省略可能な引数

contingency-option
構⽂ :<maxopts> | <mincover> | <usetotal> | <totalstr>
説明 :分割表のオプション。

分割のオプション

maxopts
構⽂ :maxrows=<int> | maxcols=<int>
説明 :表⽰する最⼤の⾏数または列数を指定。フィールドの⼀意の値の数がこの最⼤値を超えた場合は、最も共通して
いない値が無視されます。0は、⾏数/列数の制限が最⼤値であることを表します。この制限は、limits.confファイルの
[ctable]スタンザのmaxvalues設定から取得されます。
デフォルト :1000

mincover
構⽂ :mincolcover=<num> | minrowcover=<num>
説明 :出⼒テーブルに表⽰する列または⾏あたりの値の割合(パーセント)を指定します。テーブルが作成されると、表
⽰される値と、⾏と列それぞれの合計値の割合に届く⼗分な⾏と列が含まれます。値が最⼤数に達した場合は、最⼤⾏
数/列数が優先されます。
デフォルト :1.0

usetotal
構⽂ :usetotal=<bool>
説明 :⾏、列を追加し、合計を集計するかどうかを設定します。
デフォルト :真(True)

totalstr
構⽂ :totalstr=<field>
説明 :⾏合計と列合計のフィールド名。
デフォルト :TOTAL

使⽤法
contingencyコマンドは、変換コマンド です。「コマンドタイプ」を参照してください。

このコマンドは、2つのフィールドの分割表を作成します。多くの値を持つフィールドがある場合、maxrowsおよびmaxcols引数
を使って、⾏/列数を制限することができます。

Tot als

デフォルトでは、分割表に⾏合計、列合計、および表内に記載されているイベントカウントの総計が表⽰されます。結果に
合計が表⽰されないようにする場合は、contingencyコマンドにusetotal=false引数を含めます。

空の値

空⽂字列("")の値は、結果テーブル内ではEMPTY_STRとして表されます。

制限事項

maxrowsまたはmaxcolsの値には制限があります。フィールドで値が1000個を超える場合、使⽤されません。

1.最新のデータの分割表の作成

この例では、USGS EarthquakesのWebサイトからダウンロードした最近の地震データを使⽤しています。データはカンマ区切り形式のASCIIテキス
トファイルで、記録されている各地震のマグニチュード(mag)、座標(latitude、longitude)、地域(place)が含まれています。

175
最新のCSVファイルをUSGS Ear thquake F e e ds からダウンロードして、ファイルをSplunkインスタンスにアップロードします。この例では過去
30⽇間のAll Ear thquake s データを使⽤します。サーチを実⾏するときは、時間範囲として[全時間] を使⽤します。

分割表を作成して、最近の地震のマグニチュードと深度間の関係を確認します。単純なサーチから始めます。

source=all_month.csv | contingency mag depth | sort mag

MagnitudeおよびDepthフィールドの値の範囲はとても幅広いため、結果は巨⼤なテーブルとなってしまいます。マグニチュー
ドの値は最初の列に表⽰されます。深度の値は最初の⾏に表⽰されます。リストは、マグニチュードでソートされます。

結果が[統計]タブに表⽰されます。以下のテーブルには、サーチから返される結果のテーブルのほんの⼀部が表⽰されていま
す。

マグニ
チュー
ド 10 0 5 35 8 12 15 11.9 11.8 6.4 5.4 8.2 6.5 8.1 5.6 10.1 9 8.5 9.8 8.7 7.9
(m ag)

-0.81 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

-0.59 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

-0.56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

-0.45 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

-0.43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

ご覧のとおり、地震のマグニチュードはマイナスになることもあります。マグニチュードと深度が⼀致する地震が発⽣した
場合にのみテーブルにカウントが表⽰されます。
より使いやすい分割表を作成するには、マグニチュードと深度のフィールドの値を再フォーマットする必要があります。マ
グニチュードと深度を各範囲にグループ化します。

source=all_month.csv | eval Magnitude=case(mag<=1, "0.0 - 1.0", mag>1 AND mag<=2, "1.1 - 2.0", mag>2 AND mag<=3, "2.1 - 3.0",
mag>3 AND mag<=4, "3.1 - 4.0", mag>4 AND mag<=5, "4.1 - 5.0", mag>5 AND mag<=6, "5.1 - 6.0", mag>6 AND mag<=7, "6.1 - 7.0",
mag>7,"7.0+") | eval Depth=case(depth<=70, "Shallow", depth>70 AND depth<=300, "Mid", depth>300 AND depth<=700, "Deep") |
contingency Magnitude Depth | sort Magnitude

このサーチでは、evalコマンドとcase()関数を使ってマグニチュード(Magnitude)と深度(Depth)の値を再定義し、それを値の
範囲に分割します。たとえば、深度の値を「Shallow」(浅)、「Mid」(中)、または「Deep」(深)に定義し直します。sortコマ
ンドを使⽤して、マグニチュードで結果をソートします。このようにしないと、結果は⾏の合計でソートされます。

結果は、以下のような内容で[統計]タブに表⽰されます。

Magnit ude Shallo w Mid Deep TOTAL

0.0〜1.0 3579 33 0 3612

1.1〜2.0 3188 596 0 3784

2.1〜3.0 1236 131 0 1367

3.1〜4.0 320 63 1 384

4.1〜5.0 400 157 43 600

5.1〜6.0 63 12 3 78

6.1〜7.0 2 2 1 5

TOTAL 8788 994 48 9830

この⽉には、多数の地震が発⽣しています。マグニチュードの⼤きな地震は、⼩さな地震と⽐べてより深い場所で発⽣して
いるでしょうか? そうではないようです。このテーブルからは、最近の地震の⼤半がどの範囲のマグニチュードでも浅めの場
所で発⽣していることがわかります。中〜深場で発⽣している地震は⼤幅に少なくなっています。このデータセットの場合
は、深発地震のマグニチュードはすべて中の範囲になっています。

2.Splunk導⼊環境の潜在的なコンポーネントの問題の特定

Splunk導⼊環境の問題の原因となっているコンポーネントがあるかどうかを判断します。log_levelとcomponentの値の間に関

176
係が存在するかどうかを確認するために、分割表を作成します。[ 全時間] 時間範囲を使⽤してこのサーチを実⾏し、返され
る列数を制限します。

index=_internal | contingency maxcols=5 log_level component

結果はこのようになります。

これらの結果は、Splunk導⼊環境の問題の原因となっているコンポーネントを⽰します。componentフィールドには、50を超
える値があります。このサーチでは、maxcols引数が使⽤されて、最も⾼い値のある5つのコンポーネントが表⽰されます。

関連項⽬
associate、correlate

conv er t
説明
convertコマンドは、サーチ結果のフィールド値を数値に変換します。AS句を使⽤しない限り、元の値は新しい値に置換され
ます。

代わりにstrftime()、strptime()、tonumber()などの評価関数を使⽤してフィールド値を変換することもできます。

構⽂
convert [timeformat=string] (<convert-function> [AS <field>] )...

必須引数

<convert-function>
構⽂ :auto() | ctime() | dur2sec() | memk() | mktime() | mstime() | none() | num() | rmcomma() | rmunit()
説明 :変換に使⽤する関数。

省略可能な引数

timeformat
構⽂ :timeformat=<string>
説明 :変換された時間フィールドの出⼒形式を指定します。timeformatオプションは、ctimeおよびmktime関数によって使
⽤されます。書式設定のオプションの⼀覧と説明については、『サーチ』マニュアルの「共通の時間書式設定変数」を
参照してください。
デフォルト :%m/%d/%Y %H:%M:%S。このデフォルトはロケール設定に準拠していないことに注意してください。

<field>
構⽂ :<string>
説明 :変換後の値を⼊れるために指定した名前をもつ新しいフィールドを作成します。元のフィールドと値はそのまま
保持されます。

Convert の関数

auto()
構⽂ :auto(<wc-field>)
説明 :フィールドから数への最適な変換を⾏います。既知の変換タイプを使って特定フィールド内のすべての値を変換
177
できない場合、そのフィールドは放置され変換処理は⾏われません。フィールド名にワイルドカードが使⽤できます。

ctime()
構⽂ :ctime(<wc-field>)
説明 :エポック時をASCII⽂字による判読可能な時間に変換します。変換形式を指定するには、timeformatオプションを
使⽤します。フィールド名にワイルドカードが使⽤できます。

dur2sec()
構⽂ :dur2sec(<wc-field>)
説明 :期間の形式「[D+]HH:MM:SS」を秒数に変換します。フィールド名にワイルドカードが使⽤できます。

memk()
構⽂ :memk(<wc-field>)
説明 :正の数字(整数または浮動⼩数点数)を受け付けます。必要に応じて、その後に「k」、「m」、または「g」を付
けます。「k」はキロバイト、「m」はメガバイト、「g」はギガバイトという意味です。何もタイプを指定しない場合
は、キロバイトが仮定されます。出⼒フィールドは、キロバイト量を表す数値です。負の値を指定すると、⾮⼲渉デー
タになります。フィールド名にワイルドカードが使⽤できます。

mktime()
構⽂ :mktime(<wc-field>)
説明 :判読可能な時間をエポック時に変換します。変換元時刻の形式を正しく指定するには、timeformatオプションを
使⽤します。フィールド名にワイルドカードが使⽤できます。

mstime()
構⽂ :mstime(<wc-field>)
説明 :[MM:]SS.SSS形式を秒数に変換。フィールド名にワイルドカードが使⽤できます。

none()
構⽂ :none(<wc-field>)
説明 :他のワイルドカードが存在する場合は、フィールドを変換しません。フィールド名にワイルドカードが使⽤でき
ます。

num()
構⽂ :num(<wc-field>)
説明 :auto()と同じですが、変換できない値は除かれます。フィールド名にワイルドカードが使⽤できます。

rmcomma()
構⽂ :rmcomma(<wc-field>)
説明 :値からすべてのカンマを削除します。たとえば、rmcomma(1,000,000.00)と指定すると、1000000.00が返さ
れます。フィールド名にワイルドカードが使⽤できます。

rmunit()
構⽂ :rmunit(<wc-field>)
説明 :値の先頭から数字を取得し、続くテキストを削除します。フィールド名にワイルドカードが使⽤できます。

使⽤法
convertコマンドは、分散可能ストリーミングコマンド です。「コマンドタイプ」を参照してください。

基本的な例

1.すべてのフィールド値の数値への変換

auto変換関数を使⽤して、すべてのフィールド値を数値に変換します。

... | convert auto(*)

2.指定したフィールドの値を除くフィールド値の変換

fooフィールドの値を除いて、各フィールド値を数値に変換します。none変換関数を使⽤して、無視するフィールドを指定し
ます。
... | convert auto(*) none(foo)

3.指定したフィールドの期間値の秒への変更

指定したフィールドの期間値の秒への変更

... | convert dur2sec(xdelay) dur2sec(delay)

4.sendm ail syslogの期間の形式の秒への変更

178
sendmail syslogの期間の形式(D+HH:MM:SS)を秒に変更します。たとえば、delay="00:10:15"の場合、結果の値
はdelay="615"になります。この例では、dur2sec変換関数を使⽤します。

... | convert dur2sec(delay)

5.数値と⽂字列値が含まれるフィールド値の変換

数値と⽂字列値が含まれるdurationフィールドの値の⽂字列部分を削除して数値に変換します。たとえば、duration="212
sec"の場合、結果の値はduration="212"になります。この例では、rmunit変換関数を使⽤します。

... | convert rmunit(duration)

6.メモリー値のキロバイトへの変更

virtフィールドのすべてのメモリー値をKBに変更します。この例では、memk変換関数を使⽤します。

... | convert memk(virt)

その他の例

1.UNIX時間のより分かりやすい形式への変換

UNIX時間をより分かりやすい形式に変換して、時、分、秒を表⽰します。

source="all_month.csv" | convert timeformat="%H:%M:%S" ctime(_time) AS c_time | table _time, c_time

ctime()関数はCSVファイルのイベントの_timeの値を、timeformat引数で指定されている形式に変換します。
timeformat="%H:%M:%S"引数により、_timeの値がHH:MM:SS形式でフォーマットされます。
変換された時間のctimeフィールドは、c_timeという名前に変更されます。
tableコマンドを使⽤して、元の_timeの値とctimeフィールドを表⽰します。

結果は、以下のような内容で[統計]タブに表⽰されます。

_t im e c_t im e

2018-03-27 17:20:14.839 17:20:14

2018-03-27 17:21:05.724 17:21:05

2018-03-27 17:27:03.790 17:27:03

2018-03-27 17:28:41.869 17:28:41

2018-03-27 17:34:40.900 17:34:40

2018-03-27 17:38:47.120 17:38:47

2018-03-27 17:40:10.345 17:40:10

2018-03-27 17:41:55.548 17:41:55

ctime()関数は、タイムスタンプを⾮数値に変換します。これは、レポート内でイベントリストの視認性を向上するために役
⽴ちます。

2.MM:SS.SSS形式の時間を秒数に変換する

MM:SS.SSS (分、秒、およびミリ秒などの秒未満の単位)形式の時間を、秒数に変換します。

sourcetype=syslog | convert mstime(_time) AS ms_time | table _time, ms_time

mstime()関数は_timeフィールドの値を、分と秒から秒数に変換します。

変換された時間フィールドは、ms_timeという名前に変更されます。

tableコマンドを使⽤して、元の_timeの値と変換された時間を表⽰します。

_t im e m s_t im e

2018-03-27 17:20:14.839 1522196414.839

179
2018-03-27 17:21:05.724 1522196465.724

2018-03-27 17:27:03.790 1522196823.790

2018-03-27 17:28:41.869 1522196921.869

2018-03-27 17:34:40.900 1522197280.900

2018-03-27 17:38:47.120 1522197527.120

2018-03-27 17:40:10.345 1522197610.345

2018-03-27 17:41:55.548 1522197715.548

mstime()関数は、タイムスタンプを数値に変換します。これは、値を計算に使⽤するような場合に役⽴ちます。

3.HH:MM:SS形式の⽂字列時間を数字に変換する

HH:MM:SS形式を含む⽂字列フィールドtime_elapsedを数字に変換する。time_elapsedをuser_idフィールドで合計します。この
例では、evalコマンドを使⽤して変換済結果を秒から分に変換します。

...| convert num(time_elapsed) | stats sum(eval(time_elapsed/60)) AS Minutes BY user_id

関連項⽬
コマンド
eval
fieldformat
関数
tonumber
strptime

cor r el a t e
説明
異なるフィールドの相関関係を算出します。

correlateコマンドを使って、データ内のフィールドの共起性の概要を確認することができます。結果は、2つのフィールドの
クロス表がセルの値となっているマトリックス形式で表⽰されます。セルの値は2つのフィールドが同じイベントに存在する
回数の割合を⽰します。
結果が固有となるフィールドの名前はRowFieldフィールドの値で指定されます。それに対して⽐較されるフィールドは、他
のフィールド名になります。

注意 :このコマンドは、⼀連のサーチ結果内のすべてのフィールドにまたがって関係を探します。フローチャートの値間の
関係を分析する場合は、contingencyコマンドを使⽤してください。このコマンドは、イベント内のフィールドペアの共起を
カウントします。

構⽂
correlate

制限事項
correlateがサーチで検討するフィールドの数には制限があります。limits.confのスタンザ[correlate]で、maxfieldsにこの上
限値が設定されています。デフォルトは1000です。

これ以上のフィールドがある場合、correlateコマンドは最初のn (たとえば1000)件のフィールド名のデータを処理しますが、
それ以降のフィールドのデータは無視します。この場合、サーチからの通知またはアラートには「correlate: input fields
limit (N) reached. Some fields may have been ignored.」というメッセージが含まれます。

他の設計上の制限と同様に、これを調整すると、メモリーやCPUコストに⼤きな影響を与える可能性があります。

例1:

_internalインデックス内のすべてのフィールド間の共起性を探します。

180
index=_internal | correlate

結果の例を以下に⽰します。

_internal内には異なる種類のログが存在しているため、多くのフィールドが共起していないことが予測できます。

例2:

Webアクセスイベント内のすべてのフィールド間の共起性を計算します。

sourcetype=access_* | correlate

すべてのWebアクセスイベントが同じフィールド(clientip、referer、methodなど)を共有していることが予測されます。し
かし、sourcetype=access_*にはApacheログ形式のaccess_commonとaccess_combinedの両⽅が含まれているため、⼀部の
フィールドは1.0未満になるはずです。

例3:

ダウンロードイベント内のすべてのフィールド間の共起性を計算します。

eventtype=download | correlate

結果をcorrelateに渡す前に、サーチを絞り込めば、すべてのフィールドと値のペアの相関が1.0 (サーチ結果の100%で共起)に
なる可能性が⾼くなります。相関1.0は、サーチ結果の値が100%共起していることを⽰します。これらのダウンロードイベ
ントから、どのペアの共起性が1.0未満なのかに基づいて、問題を特定できる可能性があります。

関連項⽬
associate、contingency

ct a bl e
ctable、またはcounttableコマンドはcontingencyコマンドのエイリアスです。「contingencyコマンド」の構⽂と例を参照して
ください。

da t a model
説明
データモデルデータセットを調べてサーチします。

datamodelコマンドを使って、すべてまたは指定されたデータモデルとそのデータセットのJSONを返します。指定したデータ
モデルやそのデータモデルのデータセットに対してサーチを実⾏することもできます。
データモデルは1つまたは複数のデータセットに関する、意味的ナレッジのサーチ時マッピングで、階層構造になっていま
す。データモデルは、データセットに対するさまざまな特殊サーチを作成するために必要な、ドメインナレッジを符号化し
ています。詳細については、『ナレッジ管理』マニュアルの「データモデルについて」および「データモデルの設計」を参
照してください。
datamodelサーチコマンドにより、既存のデータモデルおよびそのデータセットをサーチインターフェイスでサーチすることが
できます。

datamodelコマンドは⽣成コマンドで、サーチにおける最初のコマンドでなければなりません。⽣成コマンドでは、先頭のパイ
プ⽂字が使⽤されます。

構⽂
| datamodel [<data model name>] [<dataset name>] [<data model search mode>] [strict_fields=<bool>]
181
[allow_old_summaries=<bool>] [summariesonly=<bool>]

必須引数

なし

省略可能な引数

data model name


構⽂ :<string>
説明 :サーチするデータモデルの名前です。データモデルのみが指定されると、サーチは単⼀のデータモデルのJSON
を返します。

データセット名
構⽂ :<string>
説明 :サーチするデータモデルデータセットの名前です。データモデル名の後に指定する必要があります。サーチは単
⼀のデータセットのJSONを返します。

データモデルサーチモード
構⽂: <data model search result mode> | <data model search string mode>
説明: datamodelを使⽤して、データモデルやデータモデルデータセットに対して、結果またはサーチ⽂字列を返すサー
チを実⾏できます。この場合は<data model search mode>を指定する必要があります。<data model search mode>には2つの
サブカテゴリがあり、⽚⽅のモードは結果、他⽅はサーチ⽂字列を返します。「<data model search mode>のオプ
ション」を参照してください。

allow_old_summaries
構⽂: allow_old_summaries=<bool>
説明: この引数は、⾼速化データモデルにのみ適⽤されます。データモデルを定義する制約を変更した後で、Splunk
ソフトウェアがサマリーを完全に更新しておらず、その変更が反映されていない場合は、古い定義に⼀致するデータと
新しい定義に⼀致するデータの両⽅がサマリーに存在することがあります。デフォルト設定のallow_old_summaries =
falseでは、サーチヘッドは新しいサマリー定義よりも古いサマリーディレクトリは使⽤しません。これによ
り、datamodelサーチの結果は常に現在の設定を反映することになります。allow_old_summaries = trueに設定する
と、datamodelは現在のサマリーデータと、定義変更前に⽣成されたサマリーデータの両⽅を使⽤します。古いサマリー
データが新しいサマリーデータと類似していて、その結果が信頼できる場合は、サーチでallow_old_summaries=trueに設
定できます。
デフォルト :偽(False)

summariesonly
構⽂ :summariesonly=<bool>
説明: この引数は、⾼速化データモデルにのみ適⽤されます。falseに設定すると、datamodelサーチは、選択されたデー
タモデルについて、サマリーが作成されているデータとサマリーが作成されていないデータの両⽅を返します。trueに
設定すると、サーチは、選択されたデータモデルについて、TSIDX形式でサマリーが作成されているデータのみから結
果を返します。この引数を使⽤することで、特定のデータモデルについてサマリーが作成されているデータを特定した
り、特定のデータモデルサーチが効率的に実⾏されることを保証したりできます。
デフォルト :偽(False)

strict_fields
構⽂: strict_fields=<bool>
説明: datamodelサーチの範囲を、返されるフィールドで指定します。strict_fields=trueの場合、サーチはデフォルトの
フィールドと、指定されたデータモデルデータセットの制約に含まれるフィールドのみを返しま
す。strict_fields=falseに設定すると、データモデルサーチは、親データモデルデータセットから継承したフィールド、
抽出されたフィールド、計算済みフィールド、ルックアップから派⽣したフィールドなど、データモデルで定義されて
いるすべてのフィールドを返します。

特定のデータモデルに対して、strict_fieldsをデフォルトのfalseに設定することもできます。『ナレッジ管理』マニュ
アルの「データモデル」を参照してください。
デフォルト :真(True)

<dat a m odel search m ode>のオプション

データモデルサーチ結果モード
構⽂: search | flat | acceleration_search
説明: データモデルまたはデータモデルデータセットに対してサーチを実⾏して結果を返すモードです。

モード 説明
search 定義されている通りに結果を返します。

フィールド名から階層情報を削除する以外は、searchと同じ結果を返します。たとえば、searchモード
flat でdmdataset.serverという名前のフィールドが返される場合、flatモードではserverという名前のフィールドが返
されます。

182
acceleration_search サーチヘッドがデータモデルを⾼速化するために使⽤するサーチを実⾏します。このモードは、ストリーミングコマ
ンドだけを使⽤するルートイベントデータセットとルートサーチデータセットでのみ機能します。

データモデルサーチ⽂字列モード
構⽂: search_string | flat_string | acceleration_search_string
説明: これらのモードは、対応する<data model search result mode>でSPLを実⾏したときにSplunkソフトウェアが実際
にデータモデルに対して実⾏するサーチの⽂字列を返します。たとえば、acceleration_search_stringを選択する
と、acceleration_searchモードでSPLを実⾏するときにSplunkソフトウェアが実際にデータモデルに対して使⽤する
サーチ⽂字列が返されます。

使⽤法
datamodelコマンドはレポート⽣成コマンドです。「コマンドタイプ」を参照してください。

⽣成コマンドの先頭にはパイプ⽂字が付けられ、サーチの最初のコマンドである必要があります。

1.すべてのデータモデルのJSONを返す

現在のAppコンテキスト内で利⽤できるすべてのデータモデルのJSONを返します。

| datamodel

2.特定のデータモデルのJSONを返す

モデルIDがint ernal_audit _lo gs であるSplunk's Int ernal Audit Lo gs - SAMPLE データモデルのJSONを返します。


| datamodel internal_audit_logs

183
3.特定のデータセットのJSONを返す

Buttercup GamesのClient_errorsデータセットのJSONを返します。

| datamodel Tutorial Client_errors

4.特定のデータセットでサーチを実⾏する

Buttercup GamesのClient_errorsに対するサーチを実⾏します。

| datamodel Tutorial Client_errors search

5.特定の条件でデータセットに対してサーチを実⾏する

Buttercup GamesのClient_errorsデータセットに対して、404エラーとイベント数をサーチします。

| datamodel Tutorial Client_errors search | search Tutorial.status=404 | stats count

6.⾼速化データモデルで、選択された時間範囲においてサマリーが作成されたデータを表⽰する

チュートリアルデータモデルを⾼速化した後で、次のサーチはsummariesonly引数をtimechartと⼀緒に使⽤して、選択された時
間範囲においてClient_errorsデータセットでサマリーが作成されたデータを表⽰します。

| datamodel Tutorial summariesonly=true search | timechart span=1h count

関連項⽬
pivot

da t a model simpl e
datamodelsimpleコマンドは、Splunk Common Information Model Add-onで使⽤します。

このコマンドの詳細については、『Common Information Model Add-on Manual』の「datamodelsimpleコマンドの使


⽤」を参照してください。

dbinspect
説明
指定されたインデックスのバケツに関する情報を返します。Splunk Enterpriseをお使いの場合、このコマンドはデータがど
こにあるかを理解する⼿助けになるので、必要に応じてディスク使⽤量を最適化できます。インデクサークラスター上の
サーチは、プライマリバケットのみから結果を返します。

Splunkインデックス は、Splunkソフトウェアが取り込んだデータのリポジトリです。受信データのインデックスが作成さ
れるか、受信データがイベント に変換されると、Splunkソフトウェアはrawデータ とメタデータのファイル(インデックス
ファイル )を作成します。⼀連のディレクトリに保管されているファイルは、その経過時間で管理されています。これらの
ディレクトリは、バケツ と呼ばれています。

詳細は、『インデクサーとインデクサーのクラスターの管理』の「インデックス、インデクサー、およびクラスター」と、
「インデクサーによるインデックスの保管⽅法」を参照してください。

184
構⽂
太字 は必須構⽂です。

| dbinspect
[index=<wc-string>]...
[<span> | <timeformat>]
[corruptonly=<bool>]
[cached=<bool>]

必須引数

無し。

省略可能な引数

インデックス
構⽂ :index=<wc-string>...
説明 :調査するインデックスの名前を指定します。1つ以上のインデックスを指定することができます。すべての⾮内
部インデックスについては、インデックス名にアスタリスク(*)を指定できます。
デフォルト :デフォルトインデックス(⼀般的にはm ain )。

<span>
構⽂ :span=<int> | span=<int><timescale>
説明 :バケツのスパン⻑を指定します。タイムスケール単位( second、minute、hour、day、month、または
subseconds )を使⽤した場合、これは時間範囲として⽤いられます。使⽤しない場合、これは絶対バケツ「length」
になります。

dbinspectコマンドにバケツのスパンを指定して呼び出すと、各バケツのスパンのテーブルが返されます。spanが指定さ
れない場合は、インデックスのバケツに関する情報が返されます。「バケツのスパンを指定しない場合に返される情
報」を参照してください。

<timeformat>
構⽂ :timeformat=<string>
説明 :modTimeフィールドの時間フォーマットを設定。
デフォルト :timeformat=%m/%d/%Y:%H:%M:%S

<corruptonly>
構⽂ :corruptonly=<bool>
説明 :各バケツがチェックされ、バケツが破損しているかどうかを判断し、破損したバケツのみを表⽰するように指定
します。バケツ内のファイルの⼀部が間違っているか、Hosts.dataまたはtsidxなどのファイルが⾒つからない場合、バ
ケツが壊れています。破損したバケットは不正なデータを返すか、バケットを⾒つけられなくする可能性があります。
ほとんどの場合、ソフトウェアは破損したバケツを⾃動修復します。
corruptonly=trueの場合、各バケツがチェックされ、以下の情報メッセージが表⽰されます。

INFO: The "corruptonly" option will check each of the specified buckets. This search might be slow and will take
time.

デフォルト :偽(False)

cached
構⽂: cached=<bool>
説明: cached=trueに設定されている場合、dbinspectコマンドはバケットのマニフェストから統計を取得しま
す。cached=falseに設定すると、dbinspectコマンドはバケット⾃⾝を調べます。SmartStoreバケットの場
合、cached=falseに設定すると、コマンドはインデクサーにあるバケットのローカルコピーを調べます。ただ
し、cached=trueに設定すると、コマンドはリモートストアーに存在するバケットの正規バージョンに関する情報が含ま
れているバケットのマニフェストを調べます。詳細は、『インデクサーとインデクサークラスターの管理』の
「SmartStoreのトラブルシューティング」を参照してください。
デフォルト: ⾮SmartStoreインデックスのデフォルトはfalseです。SmartStoreインデックスのデフォルトはtrueで
す。

タイムスケールの単位

これらは、バケツのスパンのタイムスケールを指定するオプションです。
<timescale>
構⽂ :<sec> | <min> | <hr> | <day> | <month> | <subseconds>
説明 :タイムスケールの単位。

タイムスケールの単 構⽂ 説明

s | sec | secs | second |
185
s | sec | secs | second |
<sec> タイムスケール(秒)。
seconds

<min> m | min | mins | minute | minutes タイムスケール(分)。

<hr> h | hr | hrs | hour | hours タイムスケール(時)。

<day> d | day | days タイムスケール(⽇)。

<month> mon | month | months タイムスケール(⽉)。

<subseconds> us | ms | cs | ds タイムスケール(マイクロ秒(us)、ミリ秒(ms)、センチ秒(cs)、デシ秒(ds) )

スパンを指定しない場合に返される情報

span属性を指定せずにdbinspectコマンドを呼び出すと、インデックスのバケツに関する以下の情報が返されます。

フィールド名 説明
<index>~<id>~<guId>で構成される⽂字列。ここで、区切り⽂字は波形記号です。例:summary~2~4491025B-8E6D-48DA-A90E-
bucketId
89AC3CF2CE80。

endEpoch バケツ内の最後のイベントのタイムスタンプ(未来に向けたバケツの時間境界)。UNIXエポック時の秒数でタイムスタンプを指定し
ます。

eventCount バケツ内のイベント数。

guId インデックスを提供するサーバーのグローバル⼀意識別⼦(GUID)。これはインデックスレプリケーションに関係しています。

hostCount バケツ内の⼀意のホスト数。

id 元のバケツが存在しているインデクサーが⽣成した、バケツのローカルID番号。

サーチに指定されているインデックス名。すべてのインデックスを対象にする場合、index=*と指定します。また、インデックス
index
フィールドはそれぞれ異なります。

modTime 最後にバケツが変更された時のタイムスタンプ。フォーマットはtimeformatフラグで指定します。

バケツの場所。バケツpathの命名規則は、インデクサーがクラスターピアーとして動作している間に、バケツがウォームに移⾏さ
れたかどうかによって、わずかに異なっています。
⾮クラスターバケツの場合: db_<newest_time>_<oldest_time>_<localid>
path クラスター化された元のバケツコピーの場合: db_<newest_time>_<oldest_time>_<localid>_<guid>
クラスター化された複製バケツコピーの場合: rb_<newest_time>_<oldest_time>_<localid>_<guid>

詳細は、『インデクサーとインデクサーのクラスターの管理』の「インデクサーによるインデックスの保管⽅法」と「インデク
サークラスターのアーキテクチャー」を参照してください。

rawSize 各バケツ内のrawデータファイルの量(バイト)。この値は、圧縮およびインデックスファイルの追加を⾏う前の量を表していま
す。

sizeOnDiskMB 浮動⼩数点数で表される、バケツが使⽤しているディスクスペースサイズ(MB)。この値は、圧縮されたrawデータファイルとイン
デックスファイルの量を表しています。

sourceCount バケツ内の⼀意のソース数。

sourceTypeCount バケツ内の⼀意のソースタイプ数。

splunk_server 分散環境でインデックスを提供しているSplunkサーバー名。

startEpoch UNIXエポック時からの秒数で表される、バケツ内の最初のイベントのタイムスタンプ(過去に向けたバケツの時間境界)。

state バケツがウォーム、ホット、またはコールドかどうか。

corruptReason バケツが破損している理由を指定します。corruptonly=trueの時にのみ、corruptReasonフィールドは表⽰されます。

使⽤法
dbinspectコマンドは⽣成コマンドで、サーチにおける最初のコマンドでなければなりません。⽣成コマンドでは、先頭のパイ
プ⽂字が使⽤されます。

データおよびセキュリティへのアクセス

dbinspectコマンドで指定したインデックスからデータが返されない場合は、そのインデックスへのアクセス権を持っていない

186
可能性があります。Splunkインデックスのデータへのアクセスは、各ロールに与えられている権限によって制御されていま
す。『Splunk Enterpriseのセキュリティ』の「アクセス制御を使⽤してSplunkデータを保護する」を参照してください。

サーチ不可能なバケツのコピー

対象ピアー上のサーチ不可能なホットバケツのコピーに対しては、tsidxや他のメタデータファイルは維持されません。正確
な情報をレポートすることができないため、以下のフィールドはNULLとなります。

eventCount
hostCount
sourceCount
sourceTypeCount
startEpoch
endEpoch

1. dbinspectコマンドのCLIによる使⽤

コマンドラインインターフェイス(CLI)を使って、グラフを期間1⽇で表⽰します。
myLaptop $ splunk search "| dbinspect index=_internal span=1d"

_time hot-3 warm-1 warm-2


--------------------------- ----- ------ ------
2015-01-17 00:00:00.000 PST 0
2015-01-17 14:56:39.000 PST 0
2015-02-19 00:00:00.000 PST 0 1
2015-02-20 00:00:00.000 PST 2 1

2.デフォルトのdbinspect の出⼒

local _internalインデックスのデフォルトのdbinspect出⼒。

| dbinspect index=_internal

このスクリーンショットには、出⼒テーブルのすべての列が表⽰されているわけではありません。コンピューターを右⽅向
にスクロールして他の列を確認してください。

3.破損したバケツを確認する

corruptonly引数を使⽤して、すべてのバケツに関する情報の代わりに破損したバケツに関する情報を表⽰します。表⽰される
出⼒フィールドは、corruptonly引数の有無と同じです。

| dbinspect index=_internal corruptonly=true

4.各Splunkサーバーのバケツ数のカウント

このコマンドを使⽤して、お使いの分散環境のSplunkサーバーがdbinspectコマンドに含まれていることを確認します。各
サーバーのバケツ数をカウントします。
187
| dbinspect index=_internal | stats count by splunk_server

5.バケツのインデックスサイズをGB単位で特定

dbInspectを使って、バケツのインデックスサイズをGBで特定します。細⼼の数値については、このサーチを最近の時間範
囲で実⾏します。
| dbinspect index=_internal | eval GB=sizeOnDiskMB/1024| stats sum(GB)

dbxqu er y
dbxqueryコマンドは、Splunk DB Connectで使⽤します。
このコマンドの詳細は、『Splunk DB Connectのデプロイと使⽤』の「dbxqueryコマンドでのSQLステートメントとスト
アドプロシージャの実⾏」を参照してください。

dedu p
説明
指定したフィールドと同じ値の組み合わせを含むイベントを除外します。
単⼀フィールドの値、または複数のフィールドで組み合わせられる値を維持するために、dedupコマンドを使って重複イベン
ト数を指定できます。dedupによって返されるイベントは、サーチの順序に基づきます。履歴サーチ では、最新のイベントが
最初にサーチされます。リアルタイムサーチ では、最新のイベントに限らず、最初に受信したイベントからサーチされま
す。

重複した値、または値の組み合わせを持つイベントを維持する件数を指定できます。フィールドをソートして、どのイベン
トを保持するかを決定することができます。他のオプションを活⽤することで、重複フィールドが除外したイベントを維持
することも、定されたフィールドが存在しないイベントを維持することもできます。

構⽂
太字 は必須構⽂です。

dedup
[<int>]
<field-list >
[keepevents=<bool>]
[keepempty=<bool>]
[consecutive=<bool>]
[sortby <sort-by-clause>]

必須引数

<field-list>
構⽂: <string> <string> ...
説明: 重複する値を削除するフィールドのリスト。

省略可能な引数

consecutive
構⽂ :consecutive=<bool>
説明 :真(True)の場合、連続して重複した値の組み合わせを持つイベントのみを削除します。
デフォルト :偽(False)

keepempty
構⽂ :keepempty=<bool>
説明 :真(True)の場合、指定されたフィールドが1つ以上存在しない(NULL)イベントを保持します。
デフォルト :偽(False)。選択されたフィールドのいずれかがNULLのイベントが廃棄されます。

keepempty=true引数は、フィールドリストに1つ以上のフィールドがないすべてのイベントを保持します。NULL値も含
め、フィールド値の組み合わせに対してn件のイベントを保持する場合は、fillnullコマンドを使ってそれらのフィール
ドに対する⾮NULL値を指定します。例:

...| fillnull value="MISSING" field1 field2 | dedup field1 field2

keepevents
構⽂ :keepevents=<bool>
説明 :真(True)の場合、すべてのイベントを保持しますが、特定の値の組み合わせを持つ最初のイベントより後のイベ
ントから、選択されたフィールドを削除します。
188
デフォルト :偽(False)。特定の組み合わせを持つ最初のイベント以降のイベントが破棄されます。

<N>
構⽂ :<int>
説明 :dedupを指定した場合、Nコマンドはそれぞれの組み合わせに対して複数のイベントを維持します。Nの値は0より
⼤きな値でなければなりません。値を指定しない場合、最初のイベントだけが維持されます。他のすべての重複は結果
から除外されます。

<sort-by-clause>
構⽂: sortby ( - | + ) <sort-field> [(- | +) <sort_field> ...]
説明 :ソート順にソートされるフィールドのリスト。降順にはダッシュ( - )、昇順にはプラス( + )を使⽤します。
<sort-by-clause>で指定した各フィールドについて、ソート順序を指定する必要があります。<sort-by-clause>は、
重複イベントのどれを保持するかを決定します。イベントリストをソートすると、重複するイベントの中でソート後の
リストで⼀番上に来るイベントが保持されます。

sort -fieldのオプション

<sort-field>
構⽂ :<field> | auto(<field>) | str(<field>) | ip(<field>) | num(<field>)
説明 :イベントのソートに指定できるオプション。

<field>
構⽂ :<string>
説明 :ソートするフィールドの名前。

auto (⾃動)
構⽂ :auto(<field>)
説明 :フィールド値のソート⽅法を⾃動で決定します。

ip
構⽂ :ip(<field>)
説明 :フィールド値をIPアドレスとして解釈。
num
構⽂ :num(<field>)
説明 :フィールド値を数値として解釈。

str
構⽂ :str(<field>)
説明 :辞書式順序でフィールド値をソート。

使⽤法
dedupコマンドは、ストリーミングコマンド またはデータセット処理コマンド になります。これは、コマンドで指定する引
数によって決まります。たとえば、<sort-by-clauseを指定すると、dedupコマンドはデータ処理コマンドとして機能します。
ソートの実⾏前にすべての結果を収集する必要があります。「コマンドタイプ」を参照してください。
⼤量のデータをサーチする場合は、_rawフィールドでdedupコマンドを使⽤しないでください。_rawフィールドをサーチする場
合、メモリー内の各イベントのテキストが維持されることでサーチのパフォーマンスに影響が及びます。これは想定されて
いる動作です。この動作は濃度が⾼くサイズが⼤きなフィールドに当てはまります。

複数値フィールド

複数値フィールドでdedupコマンドを使⽤するには、フィールドが重複除去するすべての値と⼀致する必要があります。

辞書的順序

辞書的順序はアイテムをそのアイテムをコンピューターメモリーでエンコードするのに使⽤される値に基づいて並べ替えま
す。Splunkソフトウェアでは、これはほとんど常にUTF-8エンコードで、ASCIIよりも多くの機能があります。

数字は⽂字の前に並び替えられます。⽂字は最初の桁に基づいて並び替えられます。たとえば、10, 9, 70, 100は辞書


的には10, 100, 70, 9に並べ替えられます。
⼤⽂字は⼩⽂字の前に来ます。
記号は標準ではありません。数値の前に並び替えられる記号もあります。その他の記号は⽂字の前または後に並び替え
られます。

1.1つのフィールドに基づいて重複する結果を削除する

同じhost値を持つ重複するサーチ結果を削除します。

... | dedup host


189
2.重複する結果を削除して、結果を昇順にソートする

同じsource値を持つ重複するサーチ結果を削除して、結果を_timeフィールドの昇順に並べ替えます。

... | dedup source sortby +_time

3.重複する結果を削除して、結果を降順にソートする

同じsource値を持つ重複するサーチ結果を削除して、結果を_sizeフィールドの降順に並べ替えます。

... | dedup source sortby -_size

4.最初の3つの重複する結果を保持する

同じsource値を持つサーチ結果に対しては、最初に発⽣した3件を保持して、それ以降の結果をすべて削除します。

... | dedup 3 source

5.複数のフィールド値の同じ組み合わせを持つ結果を保持する

同じsource値とhost値を持つサーチ結果に対しては、最初に発⽣した2件を保持して、それ以降の結果をすべて削除します。

... | dedup 2 source host

6.連続した重複イベントのみを削除する

連続した重複イベントのみを削除します。連続していない重複イベントは保持します。次の例では、sourceフィールド値
とhostフィールド値の組み合わせが同じでなければ重複とは⾒なされません。

... | dedup consecutive=true source host

関連項⽬
uniq

del et e
説明
deleteコマンドは、サーチが返すすべてのイベントを削除済みとしてマークします。以降のサーチではマークされたイベント
が返されません。削除後にこのデータを参照できるユーザーは存在しません(管理権限を持つユーザーを含む)。delet eコマ
ンドを使っても、ディスクスペースは解放されません。
削除したデータを元に戻すことはできません。データを削除後に取り戻したい場合は、適切なデータソースを再度インデッ
クス作成する必要があります。

deleteコマンドをリアルタイムサーチで実⾏して、イベントを到着時に削除することはできません。

構⽂
delete

使⽤法
deleteコマンドは、「delete_by_keyword」権限 を持つユーザーのみが実⾏できます。デフォルトにより、「can_delete」
ロールだけがイベントを削除することができます。管理者ロールを含むその他のロールにはこの機能がありません。イン
デックスデータを削除する際にログインする、特別なuseridを作成してください。
deleteコマンドを使⽤するには、削除対象のイベントを返すサーチを実⾏します。このサーチは削除対象イベントのみを返
し、その他のイベントは返さないことを⼊念に確認してください。これらのデータが⽬的の削除データだと確認できたら、
パイプ⽂字を使ってサーチをdeleteコマンドに渡します。

deleteコマンドは、影響するインデックスをウォームするために、ホットバケツを使⽤します。

deleteコマンドの出⼒は、フィールドsplunk_server
(インデクサーまたはサーチヘッド名)により削除されたイベント数量、
インデックス、およびインデックス「__ALL__」による各サーバーのロールアップレコードのテーブルになります。削除さ
れたイベント数量はdeletedフィールドにあります。errorsフィールドも⽣成されます。通常このフィールドは0になりま
190
す。

注意 :すべてのイベントに提供されるデフォルトのdeleteフィールドに加え、イベントにindexという名前のフィールドが含ま
れる場合、indexコマンドは機能しません。イベントにデフォルトと追加のindexフィールドがある場合は、例にあるよう
にdeleteを呼び出す前にevalを使⽤します。

index=fbus_summary latest=1417356000 earliest=1417273200 | eval index = "fbus_summary" | delete

インデックスからデータを永久的に削除する

deleteコマンドはデータをディスク領域から削除しません。データを永久的に削除するにはCLIからcleanコマンドを使⽤する
必要があります。cleanコマンドは1つのインデックスのデータすべてを削除します。削除したい特定のデータを選択するこ
とはできません。 『インデクサーとインデクサーのクラスターの管理』の「インデックスとインデックスデータの削除」を
参照してください。

1.社会保障番号のイベントを削除する

insecureインデックスから、社会保障番号のような⽂字列を含むイベントを削除します。regexコマンドを使⽤して、⼀致させ
る⽂字列を含むイベントを特定します。

1. 次のサーチを実⾏して、insecureインデックスから正しいデータを検索していることを確認します。

index=insecure | regex _raw = "\d{3}-\d{2}-\d{4}"

2. 必要に応じて、サーチを調整して正しいデータを取得します。次に、サーチの最後にdeleteコマンドを追加して、イベ
ントを削除します。

index=insecure | regex _raw = "\d{3}-\d{2}-\d{4}" | delete

2.特定の単語を含むイベントを削除する

invalidを含むイベントをimapインデックスから削除します。

index=imap invalid | delete

3.サーチチュートリアルイベントを削除する

インデックスからすべてのSplunkサーチチュートリアルイベントを削除してください。
1. adminロールを持つユーザーとしてログインします。
2. [ 設定] 、[ アクセス制御] をクリックしてcan_deleteロールを持つ新規ユーザーを作成します。
3. 管理者としてログアウトし、can_deleteロールを持つユーザーとしてログインし直します。
4. タイムレンジピッカーをAll timeに設定します。
5. 次のサーチを実⾏して、すべてのサーチチュートリアルイベントを取得します。
source=tutorialdata.zip:*

6. サーチが正しいデータを取得していることを確認します。
7. deleteコマンドをサーチ条件の最後に追加してサーチを再度実⾏します。

source=tutorialdata.zip:* | delete

イベントはインデックスから削除されます。
8. can_deleteロールを持つユーザーとしてログアウトします。

del t a
説明
特定の数値フィールドを使⽤して、隣接する結果の差を算出します。<field>が数値のイベントでは、deltaコマンドによって
イベントの<field>値と過去のイベントの<field>値の差がサーチ順に計算されます。deltaコマンドはこの差を<newfield>に
書き込みます。

構⽂
太字 は必須構⽂です。
191
delt a
<field> [AS <newfield>]
[p=int]

必須引数

field
構⽂ :<field-name>
説明 :分析するフィールドの名前。<field>が数値フィールドではない場合、出⼒フィールドは⽣成されません。

省略可能な引数

newfield
構⽂ :<string>
説明 :出⼒を書き込む新しいフィールドの名前。
デフォルト: delta(<field>)
p
構⽂ :p=<int>
説明 :現在の結果のfieldの値と⽐較するために、現在の結果より前の結果の数を指定します。前の結果は、サーチ順序
によって決定されますが、必ずしも時系列ではありません。p=1の場合、現在の結果値と、現在の結果より前の、最初の
結果の値を⽐較します。p=2の場合、現在の結果値と、現在の結果より前の、2つある結果の値とを⽐較します。
デフォルト :1

使⽤法
deltaコマンドは、サーチから返された順序でイベントを処理します。デフォルトでは、履歴サーチから取得するイベントは
時間の逆順で、新しいイベントから古いイベントの順に取得されます。
時間ごとに増加する値にはマイナスのデルタが表⽰されます。

リアルタイムサーチの場合、イベントは受け取った順番で⽐較されます。
deltaは任意のコマンドシーケンスの後に適⽤できます。そのため、⼊⼒順序は保証されません。たとえば、結果を独⽴した
フィールドでソートした後、deltaコマンドを使⽤した場合、⽣成される値はその特定の順序内の差分になります。

基本的な例

1.アクティビティの差を算出する

ケーブルテレビ業者のログであるsourcetype=tvを使って、放送局の格付けや顧客の嗜好などを分析できます。最も視聴されて
いるチャネルはどれか(activity=view)、または視聴時間はどれくらいか。

sourcetype=tv activity="View" | sort - _time | delta _time AS timeDeltaS | eval timeDeltaS=abs(timeDeltaS) | stats
sum(timeDeltaS) by ChannelName

2.現在の値と3つ前の値の差を算出する

現在のcount値と3つ前の値の差異を算出して、結果をデフォルトフィールドであるdelta(フィールド名)に保存します。この
例ではdelt a(co unt )となります。
... | delta count p=3

3.現在の値と1つ前の値の差を算出し、結果フィールドの名前を変更する

「count」が存在する各イベントに対して、countとその前の値の差を算出して、結果をco unt diff フィールドに保存しま


す。
... | delta count AS countdiff

その他の例
1.上位10⼈の購⼊者間での購⼊数の差を算出する

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏する際には、時間範囲として「昨⽇」 を指定してください。

192
昨⽇何か商品を購⼊した上位10⼈の顧客を検索し、それぞれの購⼊商品数と各購⼊者の購⼊数の差を算出します。
sourcetype=access_* status=200 action=purchase | top clientip | delta count p=1

購⼊イベント(action=purchase)がtopコマンドに渡されて、何か商品を購⼊した上位10⼈のユーザー(clientip)が検索され
ます。
各clientipのcountを含むこれらの結果は、deltaコマンドに渡され、p=1引数を使⽤して、あるイベントのcount値とその直
前のイベントのcount値の差が算出されます。
デフォルトでは、この差がdelt a(co unt )という新しいフィールドに保存されます。
最初のイベントにはdelt a(co unt )値がありません。
結果はこのようになります。

client ip co unt ⽐率 delt a(co unt )


87.194.216.51 134 2.565084

128.241.220.82 95 1.818530 -39

211.166.11.101 91 1.741960 -4

107.3.146.207 72 1.378254 -19

194.215.205.19 60 1.148545 -12

109.169.32.135 60 1.148545 0

188.138.40.166 56 1.071975 -4

74.53.23.135 49 0.937979 -7

187.231.45.62 48 0.918836 -1

91.208.184.24 46 0.880551 -2

2.最近のトランザクション間の時間差を算出する

この例では、USGS EarthquakesWebサイトからダウンロードした最近の地震データを使⽤しています。データはカンマ区切り形式のASCIIテキスト
ファイルで、記録されている各地震のマグニチュード(mag)、座標(latitude、longitude)、地域(place)が含まれています。

最新のCSVファイルをUSGS Ear thquake F e e ds からダウンロードして、それを⼊⼒として追加できます。

アラスカの最近の地震発⽣時刻の差を算出します。時間範囲に[ 全時間] を指定してこのサーチを実⾏します。


source=all_month.csv place=*alaska* | delta _time p=1 | rename delta(_time) AS timeDeltaS | eval timeDeltaS=abs(timeDeltaS) |
eval "Time Between Quakes"=tostring(timeDeltaS,"duration") | table place, _time, "Time Between Quakes"

この例ではアラスカで発⽣した地震を検索します。
deltaコマンドを使⽤して、各地震とその1つ前の地震のタイムスタンプ(_time)の差を算出します。デフォルトでは、この差
がdelt a(_t im e)という新しいフィールドに格納されます。時間の単位は秒です。
renameコマンドを使⽤して、デフォルトの名前をt im eDelt aS に変更します。
evalコマンドでabs関数を使⽤して、時間を時間の最⼤値に変換します。ある地震とその前の地震の時間差は負の値とな
るため、この変換が必要になります。
別のevalコマンドでtostring関数を使⽤して、秒単位の時間を⽂字列値に変換します。tostring関数のduration引数は、値
を読みやすい時刻フォーマットであるHH:MM:SSに変換するように指⽰します。
結果はこのようになります。

場所 _t im e Tim e Bet ween Quakes


32km N of Anchor Point, Alaska 2018-04-04 19:51:19.147

6km NE of Healy, Alaska 2018-04-04 16:26:14.741 03:25:04.406

34km NE of Valdez, Alaska 2018-04-04 16:21:57.040 00:04:17.701

23km NE of Fairbanks, Alaska 2018-04-04 16:10:05.595 00:11:51.445

53km SSE of Cantwell, Alaska 2018-04-04 16:07:04.498 00:03:01.097

193
254km SE of Kodiak, Alaska 2018-04-04 13:57:06.180 02:09:58.318

114km NNE of Arctic Village, Alaska 2018-04-04 12:08:00.384 01:49:05.796

13km NNE of Larsen Bay, Alaska 2018-04-04 11:49:21.816 00:18:38.568

109km W of Cantwell, Alaska 2018-04-04 11:25:36.307 00:23:45.509

107km NW of Talkeetna, Alaska 2018-04-04 10:26:21.610 00:59:14.697

3.連続するトランザクション間の時間差を算出する

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏する際には、時間範囲として「昨⽇」 を指定してください。

連続するトランザクション間の時間差を計算します。
sourcetype=access_* | transaction JSESSIONID clientip startswith="view" endswith="purchase" | delta _time AS timeDelta p=1 |
eval timeDelta=abs(timeDelta) | eval timeDelta=tostring(timeDelta,"duration")

この例では、JSESSIONIDとclientipに同じ値をもつイベントがトランザクションにグループ化されています。
トランザクションの開始は、view という⽂字列を含むイベントによって定義されます。トランザクションの終了
は、purchase という⽂字列を含むイベントによって定義されます。キーワードのview とpurchase は、actionフィー
ルドの値に対応しています。actionフィールドの値にはaddt o cart やrem o ve などもあります。
トランザクションはパイプ⽂字でdeltaコマンドに渡されます。このコマンドは、_timeフィールドを使って、あるトラン
ザクションとその直前のトランザクション間の時間を算出します。具体的には、トランザクションの最後のイベントの
タイムスタンプと、1つ前のトランザクションの最後のイベントのタイムスタンプの時間差です。
サーチでは、この時間差の名前をtimeDeltaに変更します。
evalコマンドでabs関数を使⽤して、時間を時間の最⼤値に変換します。あるトランザクションとその前のトランザク
ションの時間差は負の値となるため、この変換が必要になります。
別のevalコマンドでtostring関数を使⽤して、秒単位の時間を⽂字列値に変換します。tostring関数のdurat io n 引数は、
値を読みやすい時刻フォーマットであるHH:MM:SSに変換するように指⽰します。

関連項⽬

194
コマンド
accum
autoregress
streamstats
trendline

diff
説明
2つのサーチ結果を⾏ごとに⽐較して、それらの差を返します。⽐較する2つのサーチ結果は2つの位置(position)の
値position1とposition2で指定します。これらの値はデフォルトで1と2で、最初の2つの結果を⽐較します。

デフォルトでは、2つのサーチ結果のテキスト(_rawフィールド)が⽐較されます。attributeを使⽤する別のフィールドを指定す
ることで、他のフィールドを⽐較できます。

構⽂
diff [position1=int ] [position2=int ] [attribute=string] [diffheader=bool] [context=bool] [maxlen=int ]

省略可能な引数

position1
データタイプ :<int>
説明 :⼊⼒サーチ結果のテーブルから、position2と⽐較するサーチ結果を選択します。
デフォルト :position1=1で、最初のサーチ結果を指します。

position2
データタイプ :<int>
説明 :⼊⼒サーチ結果のテーブルから、position1と⽐較するサーチ結果を選択します。この値はposition1より⼤きな
値でなければなりません。
デフォルト :position2=2で、2番⽬のサーチ結果を指します。

attribute
データタイプ :<field>
説明 :2つのサーチ結果で⽐較するフィールドの名前です。
デフォルト :attribute=_rawで、イベントまたは結果のテキストを参照します。

diffheader
データタイプ :<bool>
説明 :真(True)の場合、従来のdiffヘッダーを表⽰し、⽐較対象ファイル名を⽰します。diffヘッダーは出⼒を、プログ
ラマー⽤コマンドラインpatchコマンドが予期する有効なdiffにします。
デフォルト :diffheader=false。

context
データタイプ :<bool>
説明 :真(True)の時、デフォルトのユニファイドdiff出⼒ではなく、コンテキストモードのdiff出⼒を選択します。
デフォルト :context=false、つまりユニファイド出⼒。

maxlen
データタイプ :<int>
説明 :真(True)の場合、デフォルトの統合型diff出⼒ではなく、コンテキストモードのdiff出⼒を選択しま
す。maxlen=0の場合、制限はありません。
デフォルト :maxlen=100000、つまり100KBです。

例1:

最初のサーチ結果と3番⽬のサーチ結果の「ip」値を⽐較します。
... | diff pos1=1 pos2=3 attribute=ip

例2:

9番⽬のサーチ結果を10番⽬のサーチ結果と⽐較します。

... | diff position1=9 position2=10

関連項⽬
195
set

er ex
説明
正規表現がわからない場合、erexコマンドを使⽤してフィールドからデータを抽出します。このコマンドは、指定した例の値
に類似するフィールド値を⾃動的に抽出します。
field引数を指定すると、fromfield引数から抽出された値がfieldに保存されます。そうでない場合、rexコマンドとともに
フィールドの抽出で使⽤できる正規表現が返されます。

構⽂
太字 は必須構⽂です。
erex
[<field>]
exam ples=<st ring>
[counterexamples=<string>]
[fromfield=<field>]
[maxtrainers=<integer>]

必須引数


構⽂ :examples=<string>,<string>...
説明 :抽出して新しいフィールドに保存する情報の例となる値のカンマ区切りリストです。リストにスペースが含まれ
る場合、リストで引⽤符を使⽤します。たとえば、"port 3351, port 3768"です。

省略可能な引数

counterexamples
構⽂ :counterexamples=<string>,<string>,...
説明 :抽出しない情報を⽰す例となる値のカンマ区切りリスト。
field
構⽂ :<string>
説明 :fromfield引数から抽出した値を保管する新しいフィールドの名前です。fieldを指定しない場合、値は抽出されま
せんが、結果となる正規表現が⽣成され、Splunk Webの[ジョブ]メニュー下にメッセージが表⽰されます。その正規
表現をrexコマンドで使⽤して、より効率的な抽出を⾏うことができます。

fromfield
構⽂ :fromfield=<field>
説明 :情報の抽出元フィールドとなる既存のフィールド名(新しいフィールドに保存)。
デフォルト :_raw

maxtrainers
構⽂ :maxtrainers=<int>
説明 :学習する値の最⼤数です。1〜1000でなければなりません。
デフォルト :100

使⽤法
examplesとcounterexample引数に指定する値は、erexにコマンドパイプで渡されるイベントに存在している必要があります。値
が存在しないとコマンドは機能しません。
erexコマンドを確実に機能させるために、必要なイベントを返すサーチをerexコマンドを使⽤せずに実⾏します。次に、抽出
するフィールドの値をコピーし、exampleの値として使⽤します。[ジョブ]メニューをクリックして、サンプルに基づいて⽣成
された正規表現を表⽰します。

正規表現の表⽰

Splunk WebのJobメニューをクリックすると、erexコマンドに基づいて⽣成された正規表現を表⽰できます。例3を参照して
ください。

erexコマンドの出⼒は、search.logファイルで取得されます。出⼒を⾒るには、「Successfully learned regex」をサーチし


ます。search.logファイルは$SPLUNK_HOME/var/run/splunk/dispatch/ディレクトリにあります。デフォルトでは、サーチログはイ
ンデックス化されません。『サーチ』マニュアルの「ディスパッチディレクトリと過去のサーチ結果」を参照してくださ
い。
196

1.サンプルに基づく値の抽出

以下のサーチでは、7/01のような⽉と⽇の値を抽出して、その値をmonthday属性に保管します。

... | erex monthday examples="7/01"

2.サンプルおよびカウンターサンプルに基づく値の抽出

以下のサーチでは、99/2のようなパターンではない、7/01や7/02のような⽉と⽇の値を抽出します。抽出された値はmonthday属
性に保管されます。
... | erex monthday examples="7/01, 07/02" counterexamples="99/2"

3.サンプルに基づいて値を抽出して⼀番多い値を返す

この例では、サーチチュートリアルのサンプルデータセットを使⽤しています。Splunkインスタンスでこの例を試すには、サンプルデータをダウン
ロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。サーチを実⾏するときは、時間範囲として[全時間] を使⽤し
ます。

潜在的な攻撃者が⼀番多く使⽤するポートを判断します。
1. サーチを実⾏して、ログイン試⾏に失敗したポートの値のサンプルを⾒つけます。

sourcetype=secure* port "failed password"

2. 次に、erexコマンドを使⽤してポート(port)フィールドを抽出します。erexコマンドを使⽤して、いくつかのサンプルを
指定する必要があります。⼀番多いポート値を返すには、topコマンドを使⽤します。デフォルトでは、topコマンドは
上位10件の結果を返します。
sourcetype=secure* port "failed password" | erex port examples="port 3351, port 3768" | top port

このサーチはサーチに⼀致する上位のポート数を返します。

結果は、以下のような内容で[統計]タブに表⽰されます。

po rt co unt ⽐率

port 2444 20 0.060145

port 3281 19 0.057138

port 2842 19 0.057138

port 2760 19 0.057138

port 1174 19 0.057138

port 4955 18 0.054130

port 1613 18 0.054130

port 1059 18 0.054130

197
port 4542 17 0.051123

port 4519 17 0.051123

3. [ ジョブ] メニューをクリックして、サンプルに基づいて⽣成された正規表現を表⽰します。erexコマンドを使⽤する代
わりに、この正規表現とともにrexコマンドを使⽤できます。このサーチ例の正規表現を以下に⽰します。
このサーチ例では| rex (?i)^(?:[^\.]*\.){3}\d+\s+(?P<port>\w+\s+\d+)。

サーチでは、erexコマンドをrexコマンドと⽣成された正規表現に置き換えることができます。例:

sourcetype=secure* port "failed password" | rex (?i)^(?:[^\.]*\.){3}\d+\s+(?P<port>\w+\s+\d+) | top port

正規表現とともにrexコマンドを使⽤する⽅が、erexコマンドを使⽤するよりもコスト効率が⾼くなります。

関連項⽬
コマンド
extract
kvform
multikv
正規表現
rex
xmlkv

ev a l
説明
evalコマンドは式を計算し、結果値をサーチ結果フィールドに保管します。

指定したフィールド名が出⼒のフィールドと⼀致しない場合、新しいフィールドがサーチ結果に追加されます。
指定したフィールド名がサーチ結果にすでに存在するフィールドと⼀致する場合、eval式の結果でそのフィールドの値
が上書きされます。
evalコマンドは、数式、⽂字列式、論理式を評価します。

カンマを使って後続の式と区切ることで、1つのサーチにある複数のeval式を連結できます。複数のeval式は左から右へと処
理され、過去に評価されたフィールドを後続の式で参照できます。

eval式とst at 式の違い

statsコマンドはイベントのフィールドに基づく統計を⾏います。evalコマンドは、既存のフィールドと任意の式を使って、イ
ベントに新しいフィールドを作成します。

198
構⽂
eval <field>=<expression>["," <field>=<expression>]...

必須引数

field
構⽂ :<string>
説明 :計算結果の値の宛先フィールドの名前です。フィールド名がイベントに存在する場合は、evalが値を上書きしま
す。

expression
構⽂ :<string>
説明 :宛先フィールドの値の位置を判断するために実⾏される、値、変数、演算⼦、および関数の組み合わせ。
サーチの実⾏前にeval式の構⽂がチェックされ、無効な式の場合には例外が⽣成されます。

* eval式の結果は、論理値になることはできません。
サーチ時間で、指定されたイベントに対して式を正常に評価できなかった場合、evalコマンドは結果フィールドを
消去します。
式がアンダースコアー(_)を除く英数字以外の⽂字を含むフィールド名 を参照する場合は、フィールド名を⼀重引
⽤符 で囲む必要があります。たとえば、フィールド名がserver-1の場合、new=count+'server-1'のように指定しま
す。
*式がリテラル⽂字列 を参照する場合は、⽂字列を⼆重引⽤符 で囲む必要があります。たとえば、⽂字
列server-を使⽤する場合、new="server-".hostのように指定します。

使⽤法
evalコマンドは、分散可能ストリーミングコマンド です。「コマンドタイプ」を参照してください。

全般

evalコマンド式から返される結果のフィールド名を指定する必要があります。新しいフィールドまたは既存のフィールドの名
前を指定できます。

既存のフィールド名を指定した場合、既存のフィールドの値がeval式の結果に置換されます。
数字と⽂字列はフィールドに割り当てることができます。論理値は割り当てられないことがあります。ただし、tostring()関
数を使って論理値やNULLを⽂字列に変換すれば、フィールドに割り当てられることがあります。
サーチをevalコマンドや関数の引数として使⽤する場合、保存済みサーチ名は使⽤できません。リテラルサーチ⽂字列または
リテラルサーチ⽂字列を含むフィールド(index=_audit eventsから抽出されたsearchフィールドなど)を渡す必要がありま
す。

数値計算

計算時、数値は倍精度浮動⼩数点数として扱われ、通常の浮動⼩数点数のすべての動作に従います。計算結果が特殊な浮動
⼩数点値のNaNである場合、結果では「nan」と表されます。正と負の無限⼤を表す特殊な値は、結果ではそれぞれ「inf」
および「-inf」と表されます。0で除算すると、NULLフィールドになります。
計算の結果が浮動⼩数点値として表現できる桁数を超える場合があります。この場合、最⼩位付近の桁の精度が失われるこ
とがあります。この問題の修正⽅法の例は、sigfig(X)関数の基本の例の例2を参照してください。

関数

evalコマンドと共に多くの関数を使⽤できます。関数の使⽤についての説明は、「評価関数」を参照してください。

カテゴリ別の評価関数のリストは、「関数のカテゴリ別リスト」を参照してください。
アルファベット順の評価関数のリストは、「関数のアルファベット順リスト」を参照してください。

演算⼦

evalコマンドを使って実⾏できる基本的な操作を以下の表に⽰します。これらの評価が正常に機能するためには、操作の種類
に応じて有効な値を使⽤する必要があります。たとえば、追加の例外処理では、値が数値でないと算術操作で有効な結果を
得ることはできません。値を連結する場合は、Splunkソフトウェアは値に関係なく、値を⽂字列として読み取ります。

タイプ 演算⼦
算術 + - * / %

連結 .

199
ブール値 AND OR NOT XOR <><= >= != = == LIKE

数値を⽣成する演算⼦

+演算⼦は追加する2つの数字、または連結する2つの⽂字列を受け付けます。
引き算( - )、掛け算( * )、割り算( / )、係数( % )演算⼦は、2つの数を受け⼊れます。

⽂字列を⽣成する演算⼦

ピリオド( . )演算⼦は⽂字列と数字の両⽅を連結します。数字は、その⽂字列を表す形で連結されます。

論理値を⽣成する演算⼦

AND、OR、XOR演算⼦は、2つの論理値を受け付けます。
<、>、<=、>=、!=、=、==演算⼦は2つの数または2つの⽂字列を受け⼊れます。
式では、単⼀の等号(=)と2つの等号(==)は同じ意味を持ちます。
LIKE演算⼦は2つの⽂字列を受け付けます。ここではSQLと同様に、パターンの照合が⾏われます。たとえば、string
LIKE patternです。パターン演算⼦は、リテラルテキスト、ワイルドカードのパーセント記号( % )、単⼀⽂字の照合での
アンダースコアー( _ )に対応しています。たとえばフィールドLIKE "a%b_"は、aで始まり、その後に任意の⽂字、b、1つ
の⽂字が続く⽂字列を照合します。

フィールド名

フィールド名を複数の単語で指定するには、単語を連結するか、名前を指定するときに⼀重引⽤符を使⽤します。たとえ
ば、フィールド名のアカウントID を指定するには、AccountIDまたは'Account ID'を指定します。

ピリオドなどの特殊⽂字を含むフィールド名を指定するには、⼀重引⽤符を使⽤します。たとえば、フィールド
名Last .Nam e を指定するには、'Last.Name'を使⽤します。

中括弧{ }を利⽤することで、宛先フィールド名として、他のフィールドの値を使⽤することもできます。たとえば、次の
フィールドaName=counterとaValue=1234を持つイベントがあるとします。| eval {aName}=aValueを使ってcounter=1234を返します。

計算済みフィールド

evalステートメントを使って計算済みフィールドを定義できます。ここでは、props.confでevalステートメントが定義されま
す。Splunk Cloudを使⽤している場合、Splunk Webを使⽤し[ 設定] > [ フィールド] > [ 計算済みフィールド] を選択す
ることで計算済みフィールドを定義できます。サーチを実⾏すると、Splunkソフトウェアはステートメントを評価し、サー
チ時のフィールド抽出と同様にフィールドを作成します。計算済みフィールドを設定すると、サーチ⽂字列にevalステート
メントを定義する必要がなくなります。ここでは、⽣成された計算済みフィールドを直接サーチできます。

計算済みフィールドを使って、頻繁に使われるevalステートメントをサーチからprops.confに移動して、サーチ時に裏側で処
理を⾏うことができます。計算済みフィールドで、サーチを以下のように変更することができます。
sourcetype="cisco_esa" mailfrom=* | eval accountname=split(mailfrom,"@"), from_user=mvindex(accountname,0),
from_domain=mvindex(accountname,-1) | table mailfrom, from_user, from_domain

このサーチに:
sourcetype="cisco_esa" mailfrom=* | table mailfrom, from_user, from_domain

この例では、抽出されたフィールドmailfromフィールドを含むイベントに対してサーチを実⾏する
と、accountname、from_user、およびfrom_domainフィールドを定義していた、サーチ内の3つのevalステートメントが裏側で実
⾏されるようになっています。また、これらのフィールドを計算済みフィールドとしてprops.confに設定したら、フィールド
を別個にサーチすることもできます。たとえば、from_domain=email.comに対してサーチを⾏うことができます。

計算済みフィールドの詳細は、ナレッジ管理マニュアルの「計算済みフィールドについて」を参照してください。

サーチイベントトークン

イベントトークンのサーチでevalコマンドを使⽤する場合、⼀部の評価関数は使⽤できません。またはこれらの関数が別の動
作をします。イベントトークンのサーチで使⽤できる評価関数については、『ダッシュボードと視覚エフェクト』の「トー
クンのサーチのためのカスタムロジック」を参照してください。

基本的な例
1.計算結果を含む新しいフィールドを作成する

各イベントで、velocityという新しいフィールドを作成します。距離フィールドの値を時間フィールドの値で割って、速度を
200
計算します。
... | eval velocity=distance/time

2.if関数を使⽤してフィールド値を分析する

各イベントで、errorというフィールドを作成します。if関数を使⽤して、status値が200の場合にerrorフィールドの値をOK
に設定します。そうでない場合はerrorフィールドの値をProblemに設定します。

... | eval error = if(status == 200, "OK", "Problem")

3.値を⼩⽂字に変換する

各イベントにlow-userという新しいフィールドを作成します。lower関数を使⽤して、フィールドにusernameフィールドの値を
⼩⽂字にしたものを⼊⼒します。フィールド名にダッシュ(-)が含まれるため、フィールド名を⼀重引⽤符で囲む必要がありま
す。
... | eval 'low-user' = lower(username)

4.1つのフィールドの値を新しいフィールドの名前として使⽤する

この例では、フィールドcounterの各値を使⽤して新しいフィールド名を作成します。新しいフィールドにValueフィールドの
値を割り当てます。「使い⽅」セクションの「フィールド名」を参照してください。
index=perfmon sourcetype=Perfmon* counter=* Value=* | eval {counter} = Value

5.sum _of_areasに、2つの円領域の合計を設定する

... | eval sum_of_areas = pi() * pow(radius_a, 2) + pi() * pow(radius_b, 2)

6.単純なht t pエラーコードにステータスを設定する

... | eval error_msg = case(error == 404, "Not found", error == 500, "Internal Server Error", error == 200, "OK")

7.2つのフィールドの値を連結する

ピリオド(. )は、first_nameフィールドの値をlast_nameフィールドの値と連結します。2つの名前の間にスペースを⼊れたいと
きは、引⽤符で囲みます。連結するときは、実際の値には関係なく、値は⽂字列として読み取られます。
... | eval full_name = first_name." ".last_name

8.複数のevalオペレーションをカンマで区切る

カンマを使って後続のオペレーションと区切ることで、複数のevalオペレーションを指定できます。以下のサーチで
は、full_nameの評価でピリオド(. )を使って、first_nameフィールドの値をlast_nameフィールドの値と連結していま
す。low_nameの評価では、lower関数を使⽤してfull_nameの評価結果を⼩⽂字に変換します。

... | eval full_name = first_name." ".last_name, low_name = lower(full_name)

9.数値フィールドの値を、カンマと2桁の⼩数を含む⽂字列に変換する

xの元の値が1000000の場合、返される値は1,000,000になります。

... | eval x=tostring(x,"commas")

⽂字列の先頭に通貨記号を付けるには:
... | eval x="$".tostring(x,"commas")

これによって、xは$1,000,000として返されます。

その他の例
1.異なる2つのソースタイプからのフィールドを融合し、それを使ってイベントのトランザクションを作成する

この例は、異なる2つのソースタイプからのフィールドを融合し、それを使ってイベントのトランザクションを作成する⽅法
を表しています。sourcetype=Aには、numberフィールドがあり、sourcetype=BのsubscriberNumberフィールドには同じ情報が存在
しています。
201
sourcetype=A OR sourcetype=B | eval phone=coalesce(number,subscriberNumber) | transaction phone maxspan=2m

evalコマンドを使⽤して共通のフィールドphoneを追加し、各イベントがsourcetype=Aからなのか、sourcetype=Bからなのかを⽰
す情報を追加します。coalesce()関数を使ってphoneの値を定義しています(numberおよびsubscriberNumberの値とし
て)。coalesce()関数は、最初のNULLではない(イベント内に存在している)フィールドの値を取ります。

これで、同じphone値を保有している場合、ソースタイプAまたはBからのイベントをグループ化できるようになりました。

2.イベントをカテゴリに分類し、最⼤値と最低値をカウントして表⽰する

この例では、USGS EarthquakesWebサイトからダウンロードした最近の地震データを使⽤しています。データはカンマ区切り形式のASCIIテキスト
ファイルで、記録されている各地震のマグニチュード(mag)、座標(latitude、longitude)、地域(place)などが含まれています。
この例を実際に試したい場合は、最新のCSVファイルをUSGS Ear thquake F e e ds からダウンロードして、ファイルをSplunkインスタンスにアッ
プロードします。

⼀般的に深度70km未満で発⽣した地震は、浅発 地震、70〜300kmの震源域で発⽣した地震は中発 地震として分類されま


す。沈み込み帯では、より深い所で深発 地震が発⽣することもあります(300〜700 km)。
地震を震源の深さで分類するには、次のサーチを使⽤します。

source=all_month.csv | eval Description=case(depth<=70, "Shallow", depth>70 AND depth<=300, "Mid", depth>300, "Deep") | stats
count min(mag) max(mag) by Description

evalコマンドを使ってDescriptionフィールドを作成します。このフィールドは、地震のDepthに基づいて、「Shallow」(浅)、
「Mid」(中)、または「Deep」(深)の値を取ります。case()関数は、各説明に適合する深さの範囲を指定するために⽤いられ
ています。たとえば、深度が70 km未満の場合、その地震は浅発地震として分類され、DescriptionにはShallowが設定されま
す。
また、このサーチはevalコマンドの結果をstatsコマンドに渡して、地震数をカウントし、各説明(Description)にマグニ
チュードの最⼩値と最⼤値を表⽰します。
結果は、以下のような内容で[統計]タブに表⽰されます。

説明 co unt m in(Mag) m ax(Mag)


Deep 35 4.1 6.7

Mid 635 0.8 6.3


Shallow 6236 -0.60 7.70

3.IPアドレスを特定し、eval関数のcidrm at chとifを使ってネットワークごとに分類する

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏する際には、時間範囲として「昨⽇」 を指定してください。

このサーチでは、IPアドレスを検索し、それが所属するネットワークに応じて分類します。
sourcetype=access_* | eval network=if(cidrmatch("182.236.164.11/16", clientip), "local", "other")

この例は、cidrmatch()関数を使って、clientipフィールド内のIPアドレスをサブネット範囲と⽐較します。このサーチ
はif()関数も使⽤して、clientipの値がサブネット範囲内に該当する場合、networkフィールド値はlocalです。それ以外の場合
は、network=otherになります。

evalコマンドは、結果に対して特別なフォーマットを⾏いません。このコマンドは、指定されたeval式に基づいて新しい
フィールドを作成します。
[フィールド]サイドバーでnetworkフィールドをクリックします。ポップアップで、[ 選択済み] の隣にある[ はい] をクリックし
てポップアップを閉じます。これで、サーチ結果内でlocalネットワークに所属しているIPアドレスと、所属していないIPア
ドレスを識別できるようになりました。イベントリストは次のようになります。

202
結果をフォーマットする別の⽅法として、evalの結果をtableコマンドに渡して、注⽬するフィールドのみを表⽰することがで
きます。
注意 :この例はcidrmatch関数の使い⽅を説明すものです。イベントを分類して、それらのイベントを早くサーチしたい場合
は、イベントタイプを使⽤することをお勧めします。詳細は、『ナレッジ管理』マニュアルの「イベントタイプについ
て」 を参照してください。

4.イベントから情報を個別のフィールドに抽出し、複数値フィールドを作成する

この例では、サンプルのメールデータを使⽤します。このサーチをどのメールデータに対しても実⾏できるようにするため
に、sourcetype=cisco:esaをsourcetypeの値に置き換え、mailfromフィールドをデータ内のメールアドレスフィールド名に置き換えてください。た
とえば、メールはTo、From、またはCcのいずれかです。

メールアドレスフィールドを使って、名前とドメインを抽出します。このサーチのevalコマンドには、カンマ区切りの複数の
式が含まれます。
sourcetype="cisco:esa" mailfrom=* | eval accountname=split(mailfrom,"@"), from_user=mvindex(accountname,0),
from_domain=mvindex(accountname,-1) | table mailfrom, from_user, from_domain

split()関数は、mailfromフィールドを複数値フィールドaccountnameに分割するために使⽤されます。accountnameの最初の
値は、「@」記号の前にあるすべての⽂字列で、2番⽬の値はこの記号の後にある⽂字列です。
mvindex()関数を使って、from_userをaccountnameの最初の値に設定し、from_domainをaccountnameの2番⽬の値に設定しま
す。
eval式の結果はtableコマンドに渡されます。

結果テーブルでは、元のmailfrom値と、新しいfrom_userおよびfrom_domainの値を確認できます。結果は、以下のような内容で
[統計]タブに表⽰されます。

m ailfro m fro m _user fro m _do m ain


na.lui@sample.net na.lui sample.net

MAILER-DAEMON@hcp2mailsec.sample.net MAILER-DAEMON hcp2mailsec.sample.net


M&MService@example.com M&MService example.com
AlexMartin@oursample.de AlexMartin oursample.de

Exit_Desk@sample.net Exit_Desk sample.net


buttercup- buttercup- groups.com
forum+SEMAG8PUC4RETTUB@groups.com forum+SEMAG8PUC4RETTUB

eduardo.rodriguez@sample.net eduardo.rodriguez sample.net


VC00110489@techexamples.com VC00110489 techexamples.com

注意: この例は、eval関数を使った、複数値フィールド内の個別の値の識別⽅法をデモンストレーションする⽬的で作成され

203
ています。このメールデータセットには複数値フィールドが存在していないため、この例では単⼀値フィールド(accountname)
から複数値フィールド(mailfrom)を作成しました。

5.m at ch関数を使ってイベントを分類する

この例では、サンプルのメールデータを使⽤します。このサーチをどのメールデータに対しても実⾏できるようにするため
に、sourcetype=cisco:esaをsourcetypeの値に置き換え、mailfromフィールドをデータ内のメールアドレスフィールド名に置き換えてください。た
とえば、メールはTo、From、またはCcのいずれかです。

この例では、メールアドレスのドメインに基づいて、メールの発信元を分類します。.com、.net、および.orgのアドレス
はlo cal 、それ以外はabro ad と⾒なされます。ドメイン名は多数存在します。もちろんですが、.com、.net、.org以外のド
メインが必ずしもabro ad からのものであるとは限りません。これは例にすぎません。

このサーチのevalコマンドには、カンマ区切りの複数の式が含まれます。

sourcetype="cisco:esa" mailfrom=*| eval accountname=split(mailfrom,"@"), from_domain=mvindex(accountname,-1),


location=if(match(from_domain, "[^\n\r\s]+\.(com|net|org)"), "local", "abroad") | stats count BY location

このサーチの前半は、前の例と似ています。split()関数は、mailfromフィールド内のメールアドレスの分割に⽤いられま
す。mvindex関数はfrom_domainを、mailfromフィールドの@記号の後の部分として定義しています。

その後、if()およびmatch()関数が使⽤されています。

from_domain値が.com, .net., or .orgで終わっている場合、locationフィールドには、local値が割り当てられます。


from_domainが⼀致しない場合は、locationにabroad値が割り当てられます。

evalの結果はstatsコマンドに渡されて、各location値の結果数がカウントされます。

結果は、以下のような内容で[統計]タブに表⽰されます。

lo cat io n co unt
abroad 3543

local 14136

注意 :これはmatch()を使⽤する⼀例にすぎません。イベントを分類して、それらのイベントを早くサーチしたい場合は、イ
ベントタイプを使⽤することをお勧めします。詳細は、『ナレッジ管理』マニュアルの「イベントタイプについて」 を参照
してください。

6.トランザクションの時間を読みやすい⽂字列形式に変換する

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏する際には、時間範囲として「昨⽇」 を指定してください。

次のサーチのようにtransactionコマンドを使⽤すると、トランザクションの実⾏に掛かった時間を算出します。結果に
はdurationという新しいフィールドが⾃動的に追加されます。durationは、トランザクション内の最初のイベントと最後のイ
ベント間の時間差です。
sourcetype=access_* | transaction clientip maxspan=10m

[ 関連するフィールド] リストでdurationフィールドをクリックし、上位10件のduration値を確認します。値の単位は秒で
す。[ はい] をクリックして、フィールドを[ 選択されたフィールド] リストに追加します。
evalコマンドを使⽤して、数値フィールドを読みやすい⽂字列形式にフォーマットすることができます。次のサーチで
は、tostring()関数でdurationオプションを使⽤して、durationフィールドの値をHH:MM:SSの形式にフォーマットしていま
す。
sourcetype=access_* | transaction clientip maxspan=10m | eval durationstr=tostring(duration,"duration")

このサーチは、変換したduration値⽤の新規フィールドdurationstrを定義しています。[ 関連するフィールド] リスト


でdurationstrフィールドをクリックし、[ はい] をクリックしてフィールドを[ 選択されたフィールド] リストに追加します。
フィールドの値が、各トランザクションの下にあるフィールドセットに表⽰されます。以下のイメージは、サーチ結果がど
のようになるかを⽰しています。

204
関連項⽬
関数
評価関数

コマンド
where

ev ent cou nt
説明
指定したインデックス内のイベント数を返します。

構⽂
太字 は必須構⽂です。

| event co unt
[index=<string>]...
[summarize=<bool>]
[report_size=<bool>]
[list_vix=<bool>]

必須引数

無し。

省略可能な引数

インデックス
構⽂ :index=<string>
説明 :レポートするインデックス名、またはレポートする複数のインデックスに⼀致するワイルドカード。たとえ
ば、index=* index=_*のように、この引数を複数指定できます。
デフォルト: インデックスが指定されない場合、デフォルトインデックスに関する情報が返されます。
list_vix
構⽂ :list_vix=<bool>
説明 :仮想インデックスを記載するかどうかを指定します。list_vix=falseの場合は、仮想インデックスが⼀覧化されま
せん。
デフォルト :真(True)
report_size
構⽂ :report_size=<bool>
説明 :インデックスのサイズを報告するかどうかを指定します。report_size=trueの場合、インデックスのサイズがバイ
ト数で返されます。
デフォルト :偽(False)

summarize
構⽂ :summarize=<bool>
説明 :すべてのピアーとインデックスにまたがってイベントを要約するかどうかを指定します。summarize=falseの場合
205
は、インデックスとサーチピアー別にイベント数を分割します。
デフォルト :真(True)

使⽤法
eventcountコマンドはレポート⽣成コマンドです。「コマンドタイプ」を参照してください。

⽣成コマンドの先頭にはパイプ⽂字が付けられ、サーチの最初のコマンドである必要があります。

時間範囲を指定しても、eventcountコマンドが返す結果には影響しません。指定したインデックス上のすべてのイベントがカ
ウントされます。

インデックスの指定

結果から除外するインデックスを指定することはできません。たとえば、index!=fooは有効な構⽂ではありません。

index引数は複数回指定できます。例:

|eventcount summarize=false index=_audit index=main


例1:

すべてのサーチピアーからデフォルトインデックスのイベントカウントを表⽰します。1つのカウントが返されます。

| eventcount

例2:

内部のデフォルトインデックス内のイベント数のみを返します。結果には、インデックスサイズ(バイト)が含まれます。
| eventcount summarize=false index=_* report_size=true

結果は[統計]タブに表⽰され、下表のような内容になります。

co unt インデックス server siz e_byt es


52550 _audit buttercup-mbpr15.sv.splunk.com 7217152

1423010 _internal buttercup-mbpr15.sv.splunk.com 122138624

22626 _introspection buttercup-mbpr15.sv.splunk.com 98619392

10 _telemetry buttercup-mbpr15.sv.splunk.com 135168

0 _thefishbucket buttercup-mbpr15.sv.splunk.com 0

summarize=falseを指定すると、コマンドはcount、index、およびserverの3つのフィールドを返します。report_size=trueを指定
すると、コマンドはsize_bytesフィールドを返します。size_bytesフィールドの値は、ディスク上のインデックスサイズと同
じではありません。

例3:

各インデックス/サーバーペアについてイベントカウントを返します。外部インデックスのみが返されます。
| eventcount summarize=false index=*

内部インデックスを含むすべてのインデックスのカウントを返すには、内部インデックスと外部インデックスを別々に指定
206
する必要があります。

| eventcount summarize=false index=* index=_*

関連項⽬
metadata、fieldsummary

ev ent st a t s
説明
イベント内のフィールドからサマリー統計を⽣成して、新しいフィールドに保存します。

サマリー統計の⽣成では、集計に関連するフィールドを持つイベントのみが使⽤されます。⽣成されたサマリー統計は、
サーチの後続コマンドの計算で使⽤できます。「使⽤法」を参照してください。

構⽂
太字 は必須構⽂です。

event st at s
[allnum=<bool>]
<st at s-agg-t erm > ...
[<by-clause>]

必須引数

<stats-agg-term>
構⽂ :<stats-func>( <evaled-field> | <wc-field> ) [AS <wc-field>]
説明 :統計集計関数。「Stats関数のオプション」を参照してください。この関数は、eval式、フィールド、または⼀
連のフィールドに適⽤できます。AS句を使⽤して、結果を⾃分が名前をつけた新しいフィールドに⼊れることができま
す。フィールド名にワイルドカードが使⽤できます。

省略可能な引数

allnum
構⽂ :allnum=<bool>
説明 :trueに設定されている場合、各フィールドについてフィールドのすべての値が数値である場合に限り、統計計算
を⾏います。BY句がある場合は、allnum引数が各グループに別々に適⽤されます。
デフォルト :偽(False)
<by-clause>
構⽂ :BY <field-list>
説明 :グループに分類する1つ以上のフィールドの名前です。

St at s関数のオプション

stats-func
構⽂: 構⽂は使⽤する関数によって異なります。次の表を参照してください。
説明: eventstatsコマンドで使⽤できる統計およびグラフ関数です。eventstatsコマンドの起動時に1つまたは複数の関
数を使⽤できます。ただし、BY句は1つだけ使⽤できます。「使⽤法」を参照してください。

次の表に、関数のタイプ別にサポートされる関数を⽰します。各関数の説明と例を⾒るには、表にあるリンクを使⽤し
てください。コマンドで関数を使⽤する⽅法については、「統計およびグラフ関数」を参照してください。

関数の種類 対応している関数と構⽂

avg() exactperc<int>() sum()


perc<int>()
count() max() sumsq()
range()
集計関数 distinct_count() median() upperperc<int>()
stdev()
estdc() min() var()
stdevp()
estdc_error() mode() varp()

イベント順関数 earliest() first() last() latest()

マルチ値統計およびグラ list(X) values(X)


フ機能

207
使⽤法
eventstatsサーチプロセッサーは、2つのlimits.conf設定を使⽤して、統計を計算するためにメモリーに格納できる結果の最⼤
数を決定します。

maxresultrows設定は、eventstatsコマンドプロセッサーが集計フィールドを⽣成するためにメモリーに格納できる結果⾏数の
上限を指定します。max_mem_usage_mb設定は、eventstatsコマンドが情報の追跡で消費できるメモリーを制限します。

どちらかの設定による上限に達した場合、eventstatsコマンドプロセッサーは、他⽅の設定による上限に達するまで引き続き
結果を返します。両⽅の上限に達すると、eventstatsコマンドプロセッサーは、サーチ結果への要求されたフィールドの追加
を停⽌します。
max_mem_usage_mb=0に設定すると、eventstatsサーチが使⽤できるメモリー量は無制限になります。この場合、eventstatsコマン
ドプロセッサーはmaxresultrows設定のみを閾値として使⽤します。結果数がmaxresultrows設定に達すると、eventstatsコマンド
プロセッサーは、サーチ結果への要求されたフィールドの追加を停⽌します。
前提条件

設定ファイルを使⽤してmaxresultrowsとmax_mem_usage_mbの設定値を⼤きくできるのは、システム管理者など、ファイル
システムにアクセスできるユーザーのみです。
Splunk Enterpriseの『管理』マニュアルの「設定ファイルの編集⽅法」の⼿順を確認してください。
同名の設定ファイルを、default、local、およびappディレクトリに保管できます。Splunk Enterpriseの『管理』マ
ニュアルの「変更した設定ファイルの保管場所」を参照してください。
defaultディレクトリにある設定ファイルは、決して変更もコピーもしないでください。defaultディレクトリ内のファイルは
そのまま保持して元の位置にある必要があります。ファイルの変更はローカルディレクトリで⾏ってください。

Splunk Cloudを使⽤している場合、これらの制限を変更するにはサポートチケットを申請します。

event st at sとst at sの違い

eventstatsコマンドはstatsと同様のコマンドです。どちらのコマンドでも、平均、合計、最⼤などの集計を⽣成できます。

これらのコマンドの違いを下表に⽰します。

st at sコマンド event st at sコマンド

イベントは集計サーチ結果のテーブルに変換される 出⼒の各イベントに追加される新しいフィールドに集計が書き込まれる

サーチ内の後続コマンドでは集計結果のフィールドのみを イベントが変換されていないため、サーチ内の後続コマンドではイベントのフィールド
使⽤できる を使⽤できる

event st at sによる集計の⽣成⽅法

eventstatsコマンドは、集計の⽣成に使⽤するフィールドを含むイベントを探します。このコマンドは、すべてのイベントで
新しいフィールドを作成し、そのフィールドに集計を書き込みます。集計は、集計の⽣成に使⽤されなかったイベントも含
めて、すべてのイベントに追加されます。

たとえば、5件のイベントがあり、そのうちの3件のフィールドを集計するとします。この場合、eventstatsコマンドは、これ
ら3件のイベントのデータに基づいて集計を⽣成します。すべてのイベントに新しいフィールドが追加され、すべてのイベン
トのそのフィールドに集計が書き込まれます。

特定のフィールドに適⽤されない統計関数

count関数を除き、特定のフィールドやフィールドに解決されるeval式に適⽤されない関数をeventstatsコマンドと組み合わせ
ると、サーチヘッドは関数がすべてのフィールドを表すワイルドカードに適⽤されたかのように処理します。たとえば、
サーチ内に| eventstats avgがある場合は、| eventstats avg(*)の結果が返されます。

ただし、この「暗黙的なワイルドカード」構⽂は、正式には廃⽌されています。ワイルドカードを葉明⽰的に指定してくだ
さい。すべてのフィールドに関数を適⽤するには、| eventstats <function>(*)と指定します。

関数とメモリー使⽤量

メモリーの観点から⾒ると、いくつかの関数は他の関数よりも本質的に⾼価です。たとえば、distinct_count関数はcount関数
よりもはるかに多くのメモリーを必要とします。values関数とlist関数もまた多くのメモリーを消費する可能性があります。

スプリットバイ(split-by)フィールドを使⽤せずに、またはカーディナリティの低いカーディナリティ(split-by by)フィールド
を使⽤してdistinct_count関数を使⽤する場合は、distinct_count関数をestdc関数(推定個体数)で置き換えることを検討してく
ださい。estdc関数により、メモリー使⽤量と実⾏時間が⼤幅に低下する可能性があります。

208
イベント順関数

時間に基づいてサーチするときにfirstとlastの関数を使⽤しても、正確な結果は得られません。

最初の値を時間順に基づいて検索するには、first関数の代わりにearliest関数を使⽤します。
最後の値を時間順に基づいて検索するには、last関数の代わりにlatest関数を使⽤します。

たとえば、以下のサーチを参照します。
index=test sourcetype=testDb | eventstats first(LastPass) as LastPass, last(_time) as mostRecentTestTime BY testCaseId | where
startTime==LastPass OR _time==mostRecentTestTime | stats first(startTime) AS startTime, first(status) AS status, first(histID)
AS currentHistId, last(histID) AS lastPassHistId BY testCaseId

statsおよびeventstatsコマンドを使⽤してイベントを時間に基づいて順序付ける場合、earliestおよびlatest関数を使⽤しま
す。

以下のサーチは、firstおよびlast関数がearliestおよびlatest関数に置換されているのを除き、以前のサーチと同じです。

index=test sourcetype=testDb | eventstats latest(LastPass) AS LastPass, earliest(_time) AS mostRecentTestTime BY testCaseId |


where startTime==LastPass OR _time==mostRecentTestTime | stats latest(startTime) AS startTime, latest(status) AS status,
latest(histID) AS currentHistId, earliest(histID) AS lastPassHistId BY testCaseId

基本的な例
1.全体的な平均期間を計算する

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏するときは、時間範囲として[全時間] を使⽤します。

トランザクションセットの全体的な平均期間を計算して、計算結果をavgdurという新しいフィールドに書き込みます。

host=www1 | transaction clientip host maxspan=30s maxpause=5s | eventstats avg(duration) AS avgdur

BY句が指定されていないため、単⼀の集計が⽣成され、すべてのイベントのavgdurという新しいフィールドに追加されま
す。
[関連するフィールド]のリストを⾒ると、avgdurには値が1つしかないことがわかります。

2.特定のフィールドでグループ化された平均期間を計算する

この例は、date_minuteフィールドの異なる各値に対して平均を計算している点以外は、前の例と同じです。新しいフィールド
のavgdurは、date_minuteの特定の値に基づいた平均値を持つ各イベントに追加されます。

host=www1 | transaction clientip host maxspan=30s maxpause=5s | eventstats avg(duration) As avgdur BY date_minute

[関連するフィールド]のリストを⾒ると、avgdurにはタイムスタンプ、期間、そしてdate_minuteの値に基づいて79個の値が
あります。

209
3.エラーボリューム内でスパイクをサーチする

エラーボリューム内のスパイクをサーチします。このサーチを利⽤して、エラー数が平均を超えた場合にアラートを⽣成す
ることができます。以下に例を⽰します。

eventtype="error" | eventstats avg(bytes) AS avg | where bytes>avg

その他の例:
次の例は、eventstatsコマンドの仕組みをわかりやすく⽰しています。この例は、実際には⼩さい例の段階的な集まりであ
り、1つの例は前の例に基づいているか、または前の例を拡張しています。

単純なイベントのセットを使⽤した例を⾒た⽅が、eventstatsコマンドの働きをより簡単に理解できます。

これらの例では、makeresultsコマンドを使⽤してイベントのセットを作成します。また、streamstatsコマンドとevalコマンド
を使⽤して、イベントの追加フィールドを作成します。

イベントセットの作成

まず、4つのイベントのセットを作成します。イベントの1つのageフィールドにはNULL値があります。

| makeresults count=4 | streamstats count | eval age = case(count=1, 25, count=2, 39, count=3, 31, count=4, null()) | eval city
= case(count=1 OR count=3, "San Francisco", count=2 OR count=4, "Seattle")

streamstatsコマンドを使⽤してcountフィールドを作成します。streamstatsコマンドは、イベントの処理時に、各イベン
トの累積カウントを計算します。
evalコマンドを使⽤して、ageとcityという2つの新しいフィールドを作成します。evalコマンドは、countフィールドの
値を使⽤します。
case関数は、count=1, 25のように引数のペアを取ります。最初の引数は論理演算式である必要があります。式が真
(True)になると、対応する2番⽬の引数が返されます。
サーチの結果は次のようになります。

_t im e age cit y co unt

2020-02-05 18:32:07 25 サンフランシスコ 1

2020-02-05 18:32:07 39 Seattle 2

2020-02-05 18:32:07 31 サンフランシスコ 3

2020-02-05 18:32:07 Seattle 4

event st at sでのBY句の使⽤
210
eventstatsコマンドでのBY句の使⽤は任意ですが、このコマンドではよく使⽤されます。BY句は、⽣成された統計をフィー
ルドの値でグループ化します。eventstatsコマンドでは、任意の統計関数を使⽤して統計を⽣成できます。「統計・グラフ関
数」を参照してください。

次の例では、eventstatsコマンドは各都市の平均年齢を計算しています。⽣成された平均はavg(age)という新しいフィールドに
保存されます。
次のサーチは前のサーチと同じですが、最後にeventstatsコマンドを追加しています。

| makeresults count=4 | streamstats count | eval age = case(count=1, 25, count=2, 39, count=3, 31, count=4, null()) | eval city
= case(count=1 OR count=3, "San Francisco", count=2 OR count=4, "Seattle") | eventstats avg(age) BY city

San Franciscoの平均年齢は28 = (25 + 31) / 2です。


Seattleでは、値を持つイベントは1つだけです。平均は39
= 39 / 1です。eventstatsコマンドは、ageの値を持たないイ
ベントも含めて、その平均をSeattleのすべてのイベントに書き込みます。

サーチの結果は次のようになります。

_t im e age avg(age) cit y co unt

2020-02-05 18:32:07 25 28 サンフランシスコ 1

2020-02-05 18:32:07 39 39 Seattle 2

2020-02-05 18:32:07 31 28 サンフランシスコ 3

2020-02-05 18:32:07 39 Seattle 4

新しいフィールド名の変更

デフォルトでは、⽣成される新しいフィールドには、統計計算の名前が付けられます。これらの例では、名前はavg(age)で
す。新しいフィールドの名前は、ASキーワードを使⽤して変更できます。
次のサーチでは、eventstatsコマンドを編集して、新しいフィールド名をaverage age by cityに変更しています。

| makeresults count=4 | streamstats count | eval age = case(count=1, 25, count=2, 39, count=3, 31, count=4, null()) | eval city
= case(count=1 OR count=3, "San Francisco", count=2 OR count=4, "Seattle") | eventstats avg(age) AS "average age by city" BY
city

サーチの結果は次のようになります。

_t im e age average age by cit y cit y co unt


2020-02-05 18:32:07 25 28 サンフランシスコ 1

2020-02-05 18:32:07 39 39 Seattle 2

2020-02-05 18:32:07 31 28 サンフランシスコ 3

2020-02-05 18:32:07 39 Seattle 4

テキスト値を持つイベント

上の例では、ageフィールドに値がないイベントの処理⽅法を⽰しました。統計の⽣成に使⽤するフィールドに英⽂字の値が
含まれているイベントがどのように処理されるかを⾒てみましょう。

次のサーチでは、ageフィールドの値としてtestという単語が含まれています。

| makeresults count=4 | streamstats count | eval age = case(count=1, 25, count=2, 39, count=3, 31, count=4, "test") | eval city
= case(count=1 OR count=3, "San Francisco", count=2 OR count=4, "Seattle")

サーチの結果は次のようになります。

_t im e age cit y co unt


2020-02-05 18:32:07 25 サンフランシスコ 1

211
2020-02-05 18:32:07 39 Seattle 2

2020-02-05 18:32:07 31 サンフランシスコ 3

2020-02-05 18:32:07 テスト Seattle 4

eventstatsコマンドをサーチに追加しましょう。

| makeresults count=4 | streamstats count | eval age = case(count=1, 25, count=2, 39, count=3, 31, count=4, "test") | eval city
= case(count=1 OR count=3, "San Francisco", count=2 OR count=4, "Seattle") | eventstats avg(age) BY city

英⽂字はNULL値と同じように扱われます。サーチの結果は次のようになります。

_t im e age avg(age) cit y co unt


2020-02-05 18:32:07 25 28 サンフランシスコ 1

2020-02-05 18:32:07 39 39 Seattle 2

2020-02-05 18:32:07 31 28 サンフランシスコ 3

2020-02-05 18:32:07 テスト 39 Seattle 4

allnum 引数の使⽤

フィールドに英⽂字が含まれていたり、フィールドが空だったりする場合には統計を⽣成しないようにするにはどうしたら
よいでしょうか。
allnum引数は、eventstatsコマンドによるフィールド値の処理⽅法を制御します。allnum引数のデフォルト値はfalseです。この
場合には、統計の⽣成に使⽤されるすべてのフィールドの値が数値である必要はありません。空のフィールドや英⽂字が含
まれているフィールドは無視されます。これは前の例で⾒ました。
すべてのフィールドに数値が含まれている場合にのみ統計を⽣成するようにeventstatsコマンドに指⽰することもできます。
そのためには、allnum引数をtrueに設定する必要があります。

| makeresults count=4 | streamstats count | eval age = case(count=1, 25, count=2, 39, count=3, 31, count=4, "test") | eval city
= case(count=1 OR count=3, "San Francisco", count=2 OR count=4, "Seattle") | eventstats allnum=true avg(age) BY city

サーチの結果は次のようになります。

_t im e age avg(age) cit y co unt

2020-02-05 18:32:07 25 28 サンフランシスコ 1

2020-02-05 18:32:07 39 Seattle 2

2020-02-05 18:32:07 31 28 サンフランシスコ 3

2020-02-05 18:32:07 テスト Seattle 4

ageフィールドにはSeattleの値が含まれており、数値以外もあるため、Seattleの値はすべて無視されます。平均は計算され
ません。

allnum=true引数は、空の値や英⽂字の値にも適⽤されます。

関連項⽬
コマンド
stats
streamstats
ブログ
サーチコマンド> stats、eventstats、streamstats

ext r a ct
説明
212
サーチ結果から、フィールドと値のペアを抽出します。extractコマンドは_rawフィールドでのみ機能します。別のフィールド
から抽出したい場合は、extractコマンドを実⾏する前に、フィールド名を変更する必要があります。

構⽂
extract [<extract-options>... ] [<extractor-name>...]

必須引数

無し。

省略可能な引数

<extract-options>
構⽂ :clean_keys=<bool> | kvdelim=<string> | limit=<int> | maxchars=<int> | mv_add=<bool> |
pairdelim=<string> | reload=<bool> | segment=<bool>
説明 :抽出を定義するオプション。このトピックの「抽出オプション」のセクションを参照してください。
<extractor-name>
構⽂ :<string>
説明 :transforms.confファイルのスタンザ。props.confファイルによりこのソース、ソースタイプ、またはホストに対し
て明⽰的に抽出が⾏われない場合に使⽤されます。

抽出オプション

clean_keys
構⽂ :clean_keys=<bool>
説明 :キーを消去するかどうかを指定します。transforms.confファイルのCLEAN_KEYSを上書きします。
デフォルト :transforms.confファイルのCLEAN_KEYSに指定された値。

kvdelim
構⽂ :kvdelim=<string>
説明 :キーと値を分離する区切り⽂字のリスト。

limit
構⽂ :limit=<int>
説明 :⾃動的に抽出するキーと値のペアの数を指定します。
デフォルト :50

maxchars
構⽂ :maxchars=<int>
説明 :イベントで探す⽂字数を指定します。
デフォルト :10240

mv_add
構⽂ :mv_add=<bool>
説明 :複数値フィールドを作成するかどうかを指定します。transforms.confファイルのMV_ADDの値を上書きし
ます。
デフォルト :偽(False)

pairdelim
構⽂: pairdelim=<string>
説明 :キーと値のペアを分離する区切り⽂字のリスト。
reload
構⽂ :reload=<bool>
説明 :props.confおよびtransforms.confファイルの再読み込みを強制するかどうかを指定。
デフォルト :偽(False)
segment
構⽂ :segment=<bool>
説明 :キー/値のペアの場所に結果に記録するかどうかを指定します。
デフォルト :偽(False)

使⽤法
extractコマンドは、分散可能ストリーミングコマンド です。「コマンドタイプ」を参照してください。

エイリアス

extractコマンドのエイリアスはkvです。

213

1.フィールドと値の抽出で使⽤する区切り⽂字を指定する

パイプまたはセミコロン( |; )で区切られているキーと値のペアを抽出します。等号またはコロン( =: )で区切られているフィー


ルドを抽出します。こうした区切り⽂字は個別の⽂字です。この例では「=」または「:」が、キー/値を区切るために使⽤
されています。同様に、「|」や「;」はフィールド/値のペア⾃体を区切るために使⽤されています。
... | extract pairdelim="|;", kvdelim="=:"

2.フィールド/値のペアを抽出して、フィールド抽出設定を再読み込みする

フィールド/値のペアを抽出して、ディスクからフィールド抽出設定を再読み込みします。
... | extract reload=true

3.フィールド名を_rawに変更して、そのフィールドから抽出する

_rawフィールドの名前を⼀時的な名前に変更します。抽出死体フィールドの名前を_rawに変更します。この例では、フィール
ド名はuri_queryになります。

... | rename _raw AS temp uri_query AS _raw | extract pairdelim="?&" kvdelim="=" | rename _raw AS uri_query temp AS _raw

4.t ransform s.confファイルからフィールド/値のペアを抽出する

transforms.confファイルの「access-extractions」スタンザ内で定義されているフィールド/値のペアを抽出します。

... | extract access-extractions

関連項⽬
kvform、multikv、rex、spath、xmlkv、xpath

fiel dfor ma t
説明
fieldformatコマンドでは、結果の⽣成時に<eval-expression>を使⽤することで、フィールド値の形式を変更できます。この
コマンドは、フィールドの基礎となる値を変更せずに結果の外観を変更します。

サーチパイプラインの後続のコマンドでは、フォーマットされた結果を変更できないため、fieldformatコマンドはサーチパイ
プラインのできる限り後に使⽤します。

fieldformatコマンドは、データをエクスポートするoutputcsvやoutputlookupなどのコマンドには適⽤されません。エクスポー
トでは変更された形式ではなく元のデータ形式が維持されます。エクスポートするデータに形式を適⽤する場合
は、fieldformatコマンドではなくevalコマンドを使⽤します。

構⽂
fieldformat <field>=<eval-expression>

必須引数

<field>
説明 :eval式の出⼒⽤の、ワイルドカードを使⽤しない新しいまたは既存のフィールド名。
<eval-expression>
構⽂ :<string>
説明 :宛先フィールドの値を表す、値、変数、演算⼦、および関数の組み合わせ。fieldformatコマンドでは、1つの
<eval-expression>のみを指定できます。複数の形式を指定するには、複数のfieldformatコマンドを使⽤する必要があ
ります。例をご覧ください。
詳細は、「evalコマンド」を参照してください。
サポートされる関数については、「使⽤法」を参照してください。

使⽤法
fieldformatコマンドは、分散可能ストリーミングコマンド です。「コマンドタイプ」を参照してください。
214
時間書式変数はしばしばfieldformatコマンドと共に使⽤されます。「⽇付と時間の書式変数」を参照してください。

関数

fieldformatコマンドと共に多くの関数を使⽤できます。関数の使⽤についての説明は、「評価関数」を参照してください。

次の表に、関数のタイプ別にサポートされる関数を⽰します。表内のリンクを使⽤すると、各関数の詳細と例を⾒ることが
できます。

関数の種類 対応している関数と構⽂
case(X,"Y",...)
in(VALUE-LIST) nullif(X,Y)
cidrmatch("X",Y)
like(TEXT, PATTERN) searchmatch(X)
⽐較関数と条件関数 coalesce(X,...)
match(SUBJECT, "REGEX") true()
false()
null() validate(X,Y,...)
if(X,Y,Z)

変換関数 printf("format",arguments) tonumber(NUMSTR,BASE) tostring(X,Y)

md5(X)
暗号化関数 sha256(X) sha512(X)
sha1(X)

now() strftime(X,Y)
⽇付と時間の関数 time()
relative_time(X,Y) strptime(X,Y)

isbool(X)
isnull(X) isstr(X)
情報関数 isint(X)
isnum(X) typeof(X)
isnotnull(X)

abs(X) floor(X) pow(X,Y)

ceiling(X) ln(X) round(X,Y)


数学関数
exact(X) log(X,Y) sigfig(X)
exp(X) pi() sqrt(X)

commands(X) mvfilter(X)
mvrange(X,Y,Z)
mvappend(X,...) mvfind(MVFIELD,"REGEX")
多値評価関数 mvsort(X)
mvcount(MVFIELD) mvindex(MVFIELD,STARTINDEX,ENDINDEX)
mvzip(X,Y,"Z")
mvdedup(X) mvjoin(MVFIELD,STR)

統計的評価関数 max(X,...) min(X,...) random()

len(X) rtrim(X,Y)
trim(X,Y)
lower(X) spath(X,Y)
テキスト関数 upper(X)
ltrim(X,Y) split(X,"Y")
urldecode(X)
replace(X,Y,Z) substr(X,Y,Z)

acos(X) atan2(X,Y)
sin(X)
acosh(X) atanh(X)
sinh(X)
三⾓関数と双曲線関数 asin(X) cos(X)
tan(X)
asinh(X) cosh(X)
tanh(X)
atan(X) hypot(X,Y)

基本的な例

1.カンマを表⽰するための数値のフォーマット

この例では、metadataコマンドを使⽤して、メイン インデックス内のソースタイプの結果を返します。

215
| metadata type=sourcetypes | table sourcetype totalCount

metadataコマンドは、多くのフィールドを返します。tableコマンドを使⽤して、sourcetypeフィールドとtotalCountフィー
ルドのみが返されるようにします。
結果は、以下のような内容で[統計]タブに表⽰されます。

so urcet ype t o t alCo unt


access_combined_wcookie 39532

cisco:esa 112421

csv 9510

secure 40088

vendor_sales 30244

fieldformatコマンドを使⽤してフィールド値の外観を再フォーマットします。totalCountフィールドの値がフォーマットさ
れ、値がカンマ付きで表⽰されます。
| metadata type=sourcetypes | table sourcetype totalCount | fieldformat totalCount=tostring(totalCount, "commas")

結果は、以下のような内容で[統計]タブに表⽰されます。

so urcet ype t o t alCo unt


access_combined _wcookie 39,532

cisco:esa 112,421

csv 9,510

secure 40,088

vendor_sales 30,244

2.分かりやすい形式のUNIX時間の表⽰

start_timeフィールドにUNIX時間が含まれているとします。UNIX時間に対応する時間、分、秒のみ表⽰するよう
にstart_timeフィールドをフォーマットします。

... | fieldformat start_time = strftime(start_time, "%H:%M:%S")

3.数値への通貨記号の追加

フィールドの数値に通貨記号を付けてフォーマットするには、通貨記号をリテラルとして指定し、引⽤符で囲む必要があり
ます。ここでは2値の連結演算⼦としてピリオドを使⽤し、その後に⽂字⾦額の値にカンマを表⽰するtostring関数を使⽤し
ます。
...| fieldformat totalSales="$".tostring(totalSales,"commas")

その他の例:
1.複数フィールドのフォーマット

この例は、数値にカンマが表⽰されて、⽇付が分かりやすい形式で表⽰されるようにサーチ結果の外観を変更する⽅法を⽰
しています。
まず、metadataコマンドを使⽤して、メイン インデックス内のソースタイプの結果を返します。
|metadata type=sourcetypes | table sourcetype totalCount |fieldformat totalCount=tostring(totalCount, "commas")

| metadata type=sourcetypes | rename totalCount as Count firstTime as "First Event" lastTime as "Last Event" recentTime as
"Last Update" | table sourcetype Count "First Event" "Last Event" "Last Update"

metadataコマンドは、firstTime、lastTime、recentTime、totalCount、およびtypeフィールドを返します。
さらに、サーチではtypes=sourcetypesが指定されているため、sourcetypeというフィールドも返されます。
216
totalCount、firstTime、lastTime、およびrecentTimeフィールドは、Count、First Event、Last Event、およびLast Updateに名
前が変更されます。
First Event、Last Event、およびLast Updateフィールドは、UNIX時間の値を表⽰します。

結果は、以下のような内容で[統計]タブに表⽰されます。

so urcet ype カウント F irst Event Last Event Last Updat e

access_combined_wcookie 39532 1520904136 1524014536 1524067875

cisco:esa 112421 1521501480 1521515900 1523471156

csv 9510 1520307602 1523296313 1523392090

secure 40088 1520838901 1523949306 1524067876

vendor_sales 30244 1520904187 1524014642 1524067875

fieldformatコマンドを使⽤してこれらのフィールドの出⼒の外観を再フォーマットします。Countフィールドは、値をカンマ
付きで表⽰するようにフォーマットします。First Event、Last Event、およびLast Updateフィールドは、値を読みやすい形式
で表⽰するようにフォーマットされます。

| metadata type=sourcetypes | rename totalCount as Count firstTime as "First Event" lastTime as "Last Event" recentTime as
"Last Update" | table sourcetype Count "First Event" "Last Event" "Last Update" | fieldformat Count=tostring(Count, "commas") |
fieldformat "First Event"=strftime('First Event', "%c") | fieldformat "Last Event"=strftime('Last Event', "%c") | fieldformat
"Last Update"=strftime('Last Update', "%c")

結果は、以下のような内容で[統計]タブに表⽰されます。

カウン
so urcet ype ト F irst Event Last Event Last Updat e

access_combined
39,532
Mon Mar 12 18:22:16 Tue Apr 17 18:22:16 2018 Wed Apr 18 09:11:15
_wcookie 2018 2018

cisco:esa 112,421
Mon Mar 19 16:18:00 Mon Mar 19 20:18:20 Wed Apr 11 11:25:56
2018 2018 2018
csv 9,510 Mon Mar 5 19:40:02 2018 Mon Apr 9 10:51:53 2018 Tue Apr 10 13:28:10 2018

secure 40,088
Mon Mar 12 00:15:01 Tue Apr 17 00:15:06 2018 Wed Apr 18 09:11:16
2018 2018

vendor_sales 30,244
Mon Mar 12 18:23:07 Tue Apr 17 18:24:02 2018 Wed Apr 18 09:11:15
2018 2018

関連項⽬
eval、where
⽇付と時間の書式変数

フィールド
説明
フィールドのリスト基準に基づいて、サーチ結果のフィールドを維持または除外します。

デフォルトでは、Splunk Webの出⼒に内部フィールド_raw and _timeが含まれます。追加の内部フィールドはoutputcsvコマン


ドで出⼒に含まれます。「使⽤法」を参照してください。

構⽂
fields [+|-] <wc-field-list>

必須引数

<wc-field-list>
構⽂ :<string>, <string>, ...
217
説明 :保持または削除するフィールドのカンマ区切りリスト。フィールド名にはワイルドカードが使⽤できます。

省略可能な引数

+|-
構⽂: (|)( )?
説明: プラス(+)記号を指定すると、wc-field-listにあるフィールドのみが結果に保持されます。マイナス(-)記号を指定
すると、wc-field-listにあるフィールドは結果から削除されます。
デフォルト: +

使⽤法
fieldsコマンドは、分散可能ストリーミングコマンドです。「コマンドタイプ」を参照してください。

内部フィールドおよびSplunk W eb

先頭のアンダースコアーは、_rawおよび_timeなどの、内部フィールド名⽤に予約されています。デフォルトでは、Splunk
Webのサーチ結果に内部フィールド_rawおよび_timeが含まれます。fieldsコマンドは、このフィールドがSplunk Webの出⼒
に現れないように明⽰的に指定しない限り、これらの内部フィールドを削除しません。

たとえば、すべての内部フィールドを削除するには、以下のように指定します。
... | fields - _*

_rawなどの特定のフィールドを除外するには、以下を指定します:

... | fields - _raw

_timeフィールドの削除には注意してください。_timeフィールドがない場合、timechartやchartなどの統計コマンドでは⽇付と
時刻の情報を表⽰できません。

Splunk W ebで内部フィールドを表⽰する

_rawおよび_timeフィールドを除いては、そのフィールドをサーチで明⽰的に指定しても、他の内部フィールドはSplunk Web
に表⽰されません。たとえば、以下のサーチは_bktフィールドを結果に表⽰しません。

index=_internal | head 5 | fields + _bkt | table _bkt

内部フィールドを結果に表⽰するには、フィールドは、先頭の下線⽂字を含まないフィールド名にコピーまたは名前を変更
する必要があります。例:

index=_internal | head 5 | fields + _bkt | eval bkt=_bkt | table bkt

内部フィールドとout put csvコマンド

outputcsvがサーチで使⽤されている場合、CSVファイルに⾃動的に追加される追加の内部フィールドがあります。追加され
る最も⼀般的な内部フィールドは次の通りです。
_raw
_time
_indextime

内部フィールドを出⼒から除外するには、除外したい各フィールドを指定します。例:

... | fields - _raw _indextime _sourcetype _serial | outputcsv MyTestCsvFile

例1:

hostおよびipフィールドを結果から取り除きます。

... | fields - host, ip

例2:

hostおよびipフィールドのみを維持します。内部フィールドはすべて削除します。たとえば、_timeなど、内部フィールドはア
ンダースコアーから始まります。
218
... | fields host, ip | fields - _*

例3:

不要な内部フィールドを出⼒CSVファイルから除外します。除外するフィールド
は_raw、_indextime、_sourcetype、_subsecond、および_serialです。

index=_internal sourcetype="splunkd" | head 5 | fields - _raw _indextime _sourcetype _subsecond _serial | outputcsv
MyTestCsvfile

例4:

フィールドsource、sourcetype、host、およびerrorで始まるすべてのフィールドは維持します。

... | fields source, sourcetype, host, error*

関連項⽬
rename、table

fiel dsu mma r y


説明
fieldsummaryコマンドは、イベント内のすべて、または⼀部のフィールドのサマリー統計を計算します。サマリー情報は結果
テーブルとして表⽰されます。

構⽂
fieldsummary [maxvals=<unsigned_int>] [<wc-field-list>]

省略可能な引数

maxvals
構⽂: maxvals=<unsigned_int>
説明 :各フィールドに対して返す⼀意の値の最⼤値を指定します。負の値は指定できません。maxvals = 0と指定する
と、各フィールドで使⽤できるすべての個別値が返されます。
デフォルト :100

wc-field-list
説明 :フィールドまたはフィールドのリスト。アスタリスク( * )のワイルドカードを使⽤して、複数の類似するフィー
ルド名を指定できます。

使⽤法
fieldsummaryコマンドは、サマリー情報を結果テーブルに表⽰します。結果テーブルには以下の情報が表⽰されます。

サマリー
フィールド 説明

field イベント内のフィールド名。

count そのフィールドを持つイベント/結果数。

distinct_count フィールド内の⼀意の値数。

フィールドが厳密かどうか。これは、フィールド値の⼀意のカウントに関連しています。フィールドの値数がmaxvalsを超えた場
is_exact 合、fieldsummaryはすべての値の保持を中⽌して、完全な⼀意の値ではなく⼀意の近似値を算出します。1は厳密を、0はそうでは
ないことを表しています。

max フィールドが数値の場合に、値の最⼤値。

mean フィールドが数値の場合に、値の平均値。

min フィールドが数値の場合に、値の最⼩値。

numeric_count フィールド内の数値数。これにNULL値を含めることはできません。

219
stdev フィールドが数値の場合に、値の標準偏差。

values フィールドの⼀意の値数とそれぞれの値のカウント数。


1.すべてのフィールドのサマリーを返す

この例では、_internalインデックスですべてのフィールドの過去15分間のサマリーを返します。

index=_internal earliest=-15m latest=now | fieldsummary

この例では、⼩数点以下4桁まで表⽰されるようにmax、min、stdevフィールドの結果がフォーマットされます。

2.特定のフィールドのサマリーを返す

この例では、_internalインデックスで名前に「size」と「count」を含むフィールドのサマリーを返します。サーチでは、過
去15分間における各フィールドの上位10件の値のみを返します。

index=_internal earliest=-15m latest=now | fieldsummary maxvals=10 *size* *count*

関連項⽬
analyzefields、anomalies、anomalousvalue、stats

fil l dow n
説明
あるフィールドまたは⼀連のフィールドに対して、NULL値を最新の⾮NULL値に置換します。フィールドのリストが指定さ
れない場合、filldownコマンドがすべてのフィールドに適⽤されます。フィールドに対して前の値が存在していない場合は、

220
そのまま空(NULL)で放置されます。

構⽂
filldown <wc-field-list>

必須引数

<wc-field-list>
構⽂ :<string>, <string>, ...
説明: filldownコマンドを適⽤するフィールドのカンマ区切りリスト。ワイルドカード⽂字を使⽤して、類似した名前
を持つ複数のフィールドを指定することができます。


例1:

すべてのフィールドのNULL値に対して、filldownを実施します。

... | filldown

例2:

countフィールドのみNULL値に対してfilldownを実施します。
... | filldown count

例3:

countフィールドおよび先頭が「score」で始まる任意のフィールドのnull値に対してfilldownを実施します。
... | filldown count score*

関連項⽬
fillnull

fil l nu l l
説明
NULL値を特定の値に置き換えます。NULL値は、特定の結果には存在していないけれども、他の結果には存在している
フィールド値です。NULL値を⽂字列で置換するには、fillnullを使⽤します。フィールドリストを指定しない場合
は、fillnullはすべてのNULL値を0 (デフォルト)またはユーザー指定⽂字列で置換します。

構⽂
fillnull [value=string] [<field-list>]

省略可能な引数

field-list
構⽂ :<field> ...
説明 :スペースで区切られた1つ以上のフィールドです。指定しない場合、すべてのフィールドにfillnullが適⽤されま
す。
value
データタイプ :value=<string>
説明 :NULL値を置換する⽂字列値の指定。
デフォルト :0

使⽤法
field-listが指定されている場合、fillnullコマンドは分散可能ストリーミングコマンドになります。field-listが指定されて
いない場合、fillnullコマンドはデータセット処理タイプに分類されます。「コマンドタイプ」を参照してください。

221
例1:

現在のサーチ結果に対して、すべての空のフィールドにNULLを記⼊します。
... | fillnull value=NULL

例2:

現在のサーチ結果に対して、「foo」および「bar」のすべての空フィールドにNULLを記⼊します。

... | fillnull value=NULL foo bar

例3:

現在のサーチ結果に対して、すべての空のフィールドに0を記⼊します。

... | fillnull

例4:

Webイベントのホスト別時系列グラフを作成します。空のフィールドにはNULLを記⼊します。

sourcetype="web" | timechart count by host | fillnull value=NULL

関連項⽬
filldown
streamstats

findt ypes
説明
サーチの結果を取得し、イベントタイプとして使⽤できる可能性がある有望なサーチのリストを⽣成します。発⾒されたイ
ベントタイプに対して、最⾼で5000件のイベントが分析されます。

構⽂
findtypes max=<int> [notcovered] [useraw]

必須引数

max
データタイプ :<int>
説明 :返されるイベントの最⼤数。
デフォルト :10

省略可能な引数

notcovered
説明 :このキーワードが使⽤されると、findtypesコマンドはまだカバーされていないイベントタイプのみ返します。

useraw
説明 :このキーワードが使⽤された場合、findtypesコマンドはイベントの_rawテキストに含まれるフレーズを使⽤して
イベントタイプを⽣成します。


例1:

10件の共通なイベントタイプを発⾒します。

... | findtypes

例2:

50件の⼀般的なイベントタイプを探し、注⽬するテキストフレーズに対するサポートを追加します。

222
... | findtypes max=50 useraw

関連項⽬
typer

fol der iz e
説明
上位レベルのグループを作成します(ファイル名をディレクトリで置換するなど)。attr属性の値をより汎⽤的な値に置き換え
ます。これは、他の結果からの他の値でattr値をグループ化した結果となります。グループ化は、sepセパレーター値に対し
てattr値をトークン化することにより⾏われます。

たとえば、folderizeコマンドは、Splunk Webホームページ上で使⽤されるようなサーチ結果をグループ化し、(ディレクト
リやカテゴリといった)階層型バケツを⼀覧表⽰できます。200のソースを⼀覧表⽰するのではなく、folderizeコマンドは
ソース⽂字列をセパレーター(つまり/)で分け、要求された結果数でディレクトリ結果だけを⾒るかどうかを決定します。

構⽂
folderize attr=<string> [sep=<string>] [size=<string>] [minfolders=<int>] [maxfolders=<int>]

引数

attr
構⽂ :attr=<string>
説明 :attr属性の値をより汎⽤的な値に置き換えます。これは、他の結果からの他の値でグループ化した結果となりま
す。グループ化は、セパレーター(sep)値に対して属性(attr)値をトークン化することにより⾏われます。

sep
構⽂ :sep=<string>
説明 :複数のデータシリーズとsplit-byフィールドが⼀緒に使⽤されている場合に、出⼒フィールド名の構築に使⽤す
るセパレーター⽂字を指定。
デフォルト : ::

size
構⽂ :size=<string>
説明 :フォルダーのサイズに使⽤する名前を指定。
デフォルト :totalCount

minfolders
構⽂ :minfolders=<int>
説明 :グループに最低フォルダー数を設定。
デフォルト :2

maxfolders
構⽂ :maxfolders=<int>
説明 :グループの最⼤フォルダー数を設定。
デフォルト :20

1.結果をURIに基づいてフォルダーにグループ化する

この迫のサーチを検討します。
index=_internal | stats count(uri) by uri

以下のイメージは、[ 全時間] 時間範囲を使⽤して実⾏したサーチの結果を⽰しています。多くの結果は/en-US/accountで始


まっています。⼀部のURLは⾮常に⻑いため、イメージでは右端の2番⽬の列が表⽰されていません。この列は、statsコマン
ドで作成されたcount(uri)です。

223
folderizeコマンドを使⽤すれば、URI値をより管理しやすいグループに分けて集計できます。

index=_internal | stats count(uri) by uri | folderize size=count(uri) attr=uri sep="/"

以下のイメージは、結果セットのグループ化されたURIを⽰しています。

この例では、count(uri)列にはstatsコマンドで返された⼀意のURIのカウントが⽰されています。memberCount列には、各グ
ループのURIカウントが⽰されています。たとえば、/en-US/ URIはイベントで22回⾒つかったことがcount(uri)列に⽰されて
います。folderizeコマンドでURIをグループ分けすると、/en-US/グループには1件のメンバーのみが含まれます。イベントで
は/services/で始まるURIが10088回発⽣しているのに対して、/services/*グループに⼀意のメンバーが1648件しかありませ
ん。

for ea ch
説明
ワイルドカード指定されたフィールドリスト内の各フィールドに対して、テンプレートされたストリーミングサブサーチを
実⾏します。

224
構⽂
foreach <wc-field>... [fieldstr=<string>] [matchstr=<string>] [matchseg1=<string>] [matchseg2=<string>]
[matchseg3=<string>] <subsearch>

必須引数

wc-field
構⽂ :<field> ...
説明 :フィールド名のリスト。フィールド名にはワイルドカードが使⽤できます。

subsearch
構⽂ :[ subsearch ]
説明 :ワイルドカードが使⽤されているフィールドの値を置換する、テンプレートを含むサブサーチ。

省略可能な引数

fieldstr
構⽂ :fieldstr=<string>
説明 :<<FIELD>>トークンをフィールド名全体で置き換えます。

matchstr
構⽂ :matchstr=<string>
説明 :<<MATCHSTR>>を指定⼦のワイルドカードに⼀致するフィールド名の⼀部と置換します。

matchseg1
構⽂ :matchseg1=<string>
説明 :<<MATCHSEG1>>を、1番⽬のワイルドカードに⼀致するフィールド名の⼀部と置換します。
matchseg2
構⽂ :matchseg2=<string>
説明 :<<MATCHSEG2>>を、2番⽬のワイルドカードに⼀致するフィールド名の⼀部と置換します。
matchseg3
構⽂ :matchseg3=<string>
説明 :<<MATCHSEG3>>を、指定されている3番⽬のワイルドカードに⼀致するフィールド名の⼀部と置換します。

使⽤法
フィールド名に英数⽂字以外の⽂字(ダッシュ、アンダースコアー、ピリオドなど)が含まれている場合は、サーチのevalコマ
ンド部分で<<FIELD>>トークンを単⼀引⽤符で囲む必要があります。
たとえば、次のサーチは同様の名前で始まるすべてのフィールドの値を追加します。

... | eval total=0 | eval test_1=1 | eval test_2=2 | eval test_3=3 | foreach test* [eval total=total + '<<FIELD>>']

foreachサブサーチ内の<<FIELD>>トークンは、単なるフィールド名(test*)の⽂字列置換です。フィールド名に英数字以外の
⽂字が含まれている場合、単⼀引⽤符でそれを囲まないとeval式はその名前を認識できません。eval式を有効にするには、
<<FIELD>>トークンを単⼀引⽤符で囲む必要があります。

1.同様の名前で始まるすべてのフィールドの値を追加する

次のサーチは同様の名前で始まるすべてのフィールドの値を追加します。このサーチは、⾃分のSplunkインスタンスで実⾏
できます。
|makeresults 1| eval total=0 | eval test1=1 | eval test2=2 | eval test3=3 | foreach test* [eval total=total + <<FIELD>>]

このサーチは、makeresultsコマンドを使⽤して1件の結果を作成します。
その後、サーチはevalコマンドを使⽤してtotal、test1、test2、およびtest3フィールドを作成し、対応する値を格納し
ます。
foreachコマンドを使⽤して、「test」で始まるすべてのフィールドのサブサーチを実⾏します。サブサーチが実⾏され
るたびに、それまでの合計がtestフィールドに追加されて、新しい合計が算出されます。すべてのtestフィールドが処
理された後の総計は「6」です。
「test」フィールドに対してサブサーチがどのように反復されるかを下表に⽰します。この表では、サブサーチの実⾏ごとの
「total」フィールドの開始値と、「test」フィールドの値に基いて集計された合計が⽰されています。

サブサーチの反復 t est フィールド t o t alフィールドの開始値 t est フィールド値 「t o t al」フィールドの算出


1 test1 0 1 0+1=1

225
2 test2 1 2 1+2=3

3 test3 3 3 3+3=6

2.ライセンス使⽤状況をモニターする

foreachコマンドを使って、ライセンスの使⽤状況を監視します。

まず、ソースタイプ別の⽇次ライセンス使⽤状況(バイト )を返すには、ライセンスマスター上で以下のサーチを実⾏します。

index=_internal source=*license_usage.log type!="*Summary" earliest=-30d | timechart span=1d sum(b) AS daily_bytes by st

各フィールドの⽇次ライセンス使⽤状況をギガバイト で算出するには、foreachコマンドを使⽤します。
index=_internal source=*license_usage.log type!="*Summary" earliest=-30d | timechart span=1d sum(b) AS daily_bytes by st |
foreach * [eval <<FIELD>>='<<FIELD>>'/1024/1024/1024]

3.<<MATCHSTR>>を使⽤する

foo*に⼀致する各フィールドを対応するbar*に追加して、結果をnew_* フィールドに書き込みます。たとえば、new_X = fooX


+ barXのようになります。
... | foreach foo* [eval new_<<MATCHSTR>> = <<FIELD>> + bar<<MATCHSTR>>]

4.

同等:... | eval foo="foo" | eval bar="bar" | eval baz="baz"

... | foreach foo bar baz [eval <<FIELD>> = "<<FIELD>>"]

5.

フィールドfooXbarYに対して、これは... | eval fooXbarY = "Y"と同等です。

... | foreach foo*bar* fieldstr="#field#" matchseg2="#matchseg2#" [eval #field# = "#matchseg2#"]

関連項⽬
eval、map

for ma t
説明
このコマンドはサブサーチで暗黙的に使⽤されます。このコマンドはサブサーチ の結果をフォーマットして1つの結果にまと
め、新しいフィールドsearchに保存します。

構⽂
format [mvsep="<mv separator>"] [maxresults=<int>] ["<row prefix>" "<column prefix>" "<column separator>"
"<column end>" "<row separator>" "<row end>"]
⾏または列のオプションを指定する場合は、それらすべてのオプションを指定する必要があります。

省略可能な引数

mvsep
構⽂ :mvsep="<string>"
説明 :複数値フィールドで使⽤するセパレーター。
デフォルト:OR
maxresults
構⽂ :maxresults=<int>
説明 :返す結果の最⼤数。
デフォルトは0で、この場合、返す結果の数に制限はありません。

226
<row prefix>
構⽂ :"<string>"
説明 :⾏のプレフィックスの値。
デフォルト :左括弧⽂字「(」
<column prefix>
構⽂ :"<string>"
説明 :列のプレフィックスの値。
デフォルト :左括弧⽂字「(」
<column separator>
構⽂ :"<string>"
説明 :列のセパレーターの値。
デフォルト :AND
<column end>
構⽂ :"<string>"
説明 :⾏の終端の値。
デフォルト :右括弧⽂字「)」
<row separator>
構⽂ :"<string>"
説明 :⾏のセパレーターの値。
デフォルト :OR
<row end>
構⽂ :"<string>"
説明 :⾏の終端の値。
デフォルト :右括弧⽂字「)」

使⽤法
⾏や列の引数(任意)を指定しない場合、形式出⼒のデフォルトはformatコマンドで、デフォルトは"(" "(" "AND" ")" "OR" ")"で
す。
⾏または列のオプションを指定するのは、異なる形式化が必要な別のシステムにクエリーをエクスポートするためです。

1.省略可能なパラメーターのない例

次のような結果があるとします。

so urce so urcet ype ho st


syslog.log syslog my_laptop

bob-syslog.log syslog bobs_laptop


laura-syslog.log syslog lauras_laptop

次のサーチは、上位2件の結果を返し、host、source、およびsourcetypeフィールドに基づいてサーチを作成します。デ
フォルトのフォーマット設定を使⽤します。
... | head 2 | fields source, sourcetype, host | format

次のサーチは、上位2件の結果のフィールド値に基づいたサーチの構⽂を返します。構⽂は「search 」という名前の新しい
フィールドに格納されます。

so urce so urcet ype ho st search


( ( host="mylaptop" AND source="syslog.log" AND sourcetype="syslog" ) OR (
host="bobslaptop" AND source="bob-syslog.log" AND sourcetype="syslog" ) )

2.省略可能なパラメーターの使⽤例

外部のシステムで使⽤するために形式化された出⼒を作成したいとします。
... | format "[" "[" "&&" "]" "||" "]"

例1でデータを使⽤すると、結果は:

227
so urce so urcet ype ho st search

[ [ host="mylaptop" && source="syslog.log" && sourcetype="syslog" ] | | [


host="bobslaptop" && source="bob-syslog.log" && sourcetype="syslog" ] ]

3.複数値セパレーターの例

以下のサーチはevalコマンドを使⽤して1つの値「eventtype,log_level」を含む「foo」と呼ばれるフィールドを作成しま
す。makemvコマンドはfooフィールドをマルチ値フィールドにするために使⽤され、カンマを値の区切り⽂字として指定しま
す。次に、サーチはfooフィールドだけを出⼒しそのフィールドをフォーマットします。
index=_internal |head 1 |eval foo="eventtype,log_level" | makemv delim="," foo | fields foo | format mvsep="mvseparator" "{"
"[" "AND" "]" "AND" "}"

これより次の出⼒がされます。

fo o search

[ ( foo="eventtype" mvseparator foo="log_level" ) ] }

関連項⽬
search

開始
説明
fromコマンドはデータモデルデータセット、CSVルックアップ、KVストアールックアップ、保存済みサーチ、またはテーブ
ルデータセットなどのデータセットからデータを取得します。
fromコマンドを使⽤してデータセットを参照するサーチを設計します。ルックアップ、eval式、変換コマンドなどの追加SPL
をサーチに任意で追加します。結果をレポート、アラート、またはダッシュボードパネルとして保存します。Splunk Cloud
またはSplunk Enterpriseを使⽤していてSplunk Datasets Add-onを追加している場合は、サーチをテーブルデータセット
としても保存できます。

使⽤法 のセクションを参照してください。

構⽂
太字 は必須構⽂です。

| fro m
<dat aset _t ype>:<dat aset _nam e> | <dat aset _t ype> <dat aset _nam e>
<dataset_type>と<dataset_name>の間にはコロン( : )またはスペースを指定できます。

必須引数

<dataset_type>
構⽂: <dataset_type>
説明: データセットのタイプ。利⽤可能な値はdatamodel、lookupとsavedsearchです。
datamodelデータセットタイプはデータモデルデータセットまたはテーブルデータセットのいずれかです。Data Model
Editorでデータモデルデータセットを作成します。Splunk CloudまたはSplunk Enterpriseを使⽤していてSplunk
Datasets Add-onを使⽤している場合、テーブルデータセットをTable Editorで作成できます。
lookupデータセットタイプは、CSVルックアップまたはKVストアールックアップのいずれかです。
savedsearchデータセットタイプは保存済みサーチです。fromを使⽤してデータセットとして保存されたサーチを参照で
きます。
詳細は、『ナレッジ管理』マニュアルの「データセットについて」を参照してください。
<dataset_name>
構⽂: <dataset_name>
説明 :データの取得元であるデータセットの名前です。dataset_typeがデータモデルである場合、構⽂
は<datamodel_name>.<dataset_name>です。データセットの名前にスペースが含まれている場合、データセット名を引⽤符
で囲います。
例: データモデル名がinternal_serverで、データセット名がsplunkdaccessである場合、dataset_name向け
のinternal_server.splunkdaccessを指定します。

旧バージョンのSplunkソフトウェアでは、「データモデルオブジェクト」という⽤語が使⽤されていました。この⽤語は現
228
在「データモデルデータセット」に置き換えられています。

省略可能な引数

無し。

使⽤法
The fromコマンドは⽣成コマンドです。コマンドが参照するサーチまたはナレッジオブジェクトによりレポート⽣成またはイ
ベント⽣成のいずれかである場合があります。「コマンドタイプ」を参照してください。

⽣成コマンドの先頭にはパイプ⽂字が付けられ、サーチの最初のコマンドである必要があります。ただし、fromコマンド
をappendコマンドの中で使⽤することができます。

fromコマンドを使⽤する場合、既存のデータセットを参照する必要があります。データセット⼀覧ページ(データモデルデー
タセット、CSVルックアップファイル、CSVルックアップ定義、テーブルデータセットなど)にリストされているデータセッ
トを参照できます。保存済みサーチとKVストアーのサーチ定義を参照することもできます。『ナレッジ管理』マニュアルの
「データセットの表⽰と管理」を参照してください。

ナレッジオブジェクトの依存関係

レポート、アラート、ダッシュボードパネル、またはテーブルデータシートなどのナレッジオブジェクトを作成すると、そ
のナレッジオブジェクトは参照先のデータセットへの依存関係を持ちます。これをデータセット拡張と呼びます。元のデー
タセットにフィールドの削除や追加などの変更を加えると、その変更は元のデータセットから拡張したレポート、アラー
ト、ダッシュボードパネル、およびテーブルに伝播します。詳細は、『ナレッジ管理』マニュアルの「データセットの拡
張」を参照してください。

データモデルでフィールドフィルタリングが無効化されている場合

fromコマンドを使⽤してデータモデルのコンテンツをサーチする場合は、デフォルトでは厳密にフィルタリングされたフィー
ルドセットが返されます。この場合は、デフォルトフィールドと、データモデルを定義する制約サーチで明確に特定されて
いるフィールドのみが返されます。

datamodel.confファイルへの編集アクセス権がある場合は、各データモデルのスタンザにstrict_fields=falseを設定すること
で、それらのデータモデルのフィールドフィルタリングを無効化できます。このように設定されたデータモデルに対して|
fromサーチを実⾏すると、親データモデルから継承したフィールド、サーチ時に抽出されたフィールド、計算済みフィール
ド、ルックアップから派⽣したフィールドなど、データモデルに関連するすべてのフィールドが返されます。


1.データモデルをサーチします

REST APIコールの内部サーバーログイベントを含むデータモデルをサーチします。この例では、internal_serverはデータモ
デル名で、splunkdaccessはinternal_serverデータモデル内部のデータセットです。

| from datamodel:internal_server.splunkdaccess

2.ルックアップファイルをサーチします

⼤陸、2桁のISOコード、およびサブ地域などの各国の地理的属性を含むルックアップファイルをサーチします。

| from lookup geo_attr_countries.csv

3.ルックアップファイルを使⽤してデータを取得します

KVストアーコレクションkvstorecoll内容のうち、CustIDの値が500を上回り、CustNameの値がPで始まるものをサーチしま
す。コレクションはkvstorecoll_lookupというルックアップテーブルで参照されています。statsコマンドを使⽤して、テーブ
ルから受け取るイベント数を指定します。
| from lookup:kvstorecoll_lookup | where (CustID>500) AND (CustName="P*") | stats count

4.保存済みサーチを使⽤してデータを取得します

タイムスタンプおよびクライアントIPをmysecurityqueryという名前の保存済みサーチから取得します。

| from savedsearch:mysecurityquery | fields _time clientip ...

5.スペースを含むデータセット名を指定します
229
データセットの名前にスペースが含まれている場合、データセット名を引⽤符で囲います。
| from savedsearch "Top five sourcetypes"

関連項⽬
コマンド
datamodel
inputlookup
inputcsv
lookup

ga u ge
説明
gaugeコマンドを使⽤して、サーチ結果をゲージグラフで使⽤できるフォーマットに変換します。ゲージグラフは、単⼀の集
計メトリックス(カウントや合計など)の視覚エフェクトです。
gaugeコマンドの出⼒は単⼀数値で、xというフィールドに保存されます。ゲージに表⽰する範囲を指定することも、デフォル
トの範囲(0〜100)を使⽤することもできます。
ゲージのグラフの種類を使ったgaugeコマンドの使⽤についての詳細は、『ダッシュボードと視覚エフェクト』の「ゲージ」
セクションの「ゲージの使⽤」を参照してください。

構⽂
gauge <value> [<range_val1> <range_val2> ...]

必須引数

value
構⽂ :field_name | <num>
説明 :ゲージの現在値となる数値フィールドまたはリテラル値です。数値フィールドを指定すると、gaugeコマンドはそ
のフィールドの最初の値をゲージの値として使⽤します。

省略可能な引数

範囲値
構⽂ :<range_val1> <range_val2> ...
説明 :ゲージに表⽰される全体的な数値範囲として使⽤する複数の数値フィールドまたは数値を含む、スペース区切り
のリストです。各範囲値は、数値フィールド名またはリテラル数になります。フィールド名を指定すると、そのフィー
ルドの最初の値が範囲値として使⽤されます。ゲージの全範囲は、最初のrange_valから最後のrange_valまでとなりま
す。使⽤法を参照してください。
デフォルトの範囲 :0〜100

使⽤法
サーチの結果が単⼀値になる限り、gaugeコマンドを使⽤せずにゲージグラフを作成できます。gaugeコマンドを使⽤する利点
は、デフォルトの範囲値(0〜100)を使⽤する代わりに⼀連の範囲値を指定できることです。

範囲の指定

範囲値を指定する場合、2つ以上の値を指定する必要があります。ゲージは最初の値から開始し、指定した最後の値で終わり
ます。

3つ以上のrange_val引数を指定すると、中間の範囲値を使⽤して全範囲がサブ範囲に分割されます。各サブ範囲は、⾒分けら
れるように異なる⾊で表⽰されます。

範囲値は、y1、y2のような⼀連のフィールドとして返されます。

範囲値を指定しないと、デフォルトで範囲の下限値は0、上限値は100となります。
単⼀の範囲値を指定した場合、無視されます。

ゲージの⾊

ゲージグラフでは、単⼀数値は⼀連の⾊にマップされます。これらの⾊は、特定のビジネス上の意味やロジックを持ってい
る場合があります。時間の経過に伴い値が変化すると、ゲージマーカーの位置がその範囲内で変化します。

230
ゲージグラフの⾊の範囲は、gaugeコマンドで指定する範囲値に基づきます。範囲値を指定する場合、ゲージで表される全体
的な数値範囲を定義します。その範囲内のカラーバンドのサイズを定義できます。カラーバンドを使⽤する場合は、サーチ
⽂字列に4つの範囲値を追加します。範囲の値は範囲の始まりと終わりを⽰します。また、範囲内の該当するカラーバンドの
サイズも表します。


1.複数範囲のゲージの作成

イベント数をカウントして、4つの範囲(0〜750、750〜1000、1000〜1250、1250〜1500)を持つゲージにカウントを表⽰
します。

まず、このサーチを使⽤して結果テーブルを⽣成します。[ 過去15分] 時間範囲を使⽤してサーチを実⾏します。


index=_internal | stats count as myCount | gauge myCount 750 1000 1250 1500

結果は、以下のような内容で[統計]タブに表⽰されます。

x y1 y2 y3 y4
3321 750 1000 1250 1500

[ 視覚エフェクト] タブをクリックします。放射状ゲージ、フィラーゲージ、およびマーカーの3種類のゲージを選択できま
す。以下のイメージは、サーチ結果に基づいて作成された放射状ゲージを⽰しています。

ゲージのグラフタイプを使ったgaugeコマンドの使⽤については、『ダッシュボードと視覚エフェクト』の「ゲージ」のセク
ションを参照してください。

関連項⽬
コマンド
eval
stats

gent imes
説明
gentimesコマンドはmapコマンドと⼀緒に使⽤すると便利です。

開始時刻として指定されたその時刻から開始する、タイムスタンプ結果を⽣成します。各結果には、指定した増分値で表⽰
される重複しない隣接する時間範囲が記載されます。これは、endtime値を通過するだけの結果が⽣成されると終了します。

このコマンドでは、将来の期間は利⽤できません。

構⽂
| gentimes start=<timestamp> [end=<timestamp>] [increment=<increment>]

必須引数

231
start
構⽂ :start=<timestamp>
説明 :開始時刻を指定します。
<timestamp>
構⽂ :MM/DD/YYYY[:HH:MM:SS] | <int>
説明: 時刻を指定します(例:2017年10⽉1⽇は10/1/2017、2017年4⽉1⽇の12時34分56秒は4/1/2017:12:34:56、5⽇
前は-5)。

省略可能な引数

end
構⽂ :end=<timestamp>
説明 :終了時刻を指定。
デフォルト :ローカル時間の現在時刻より前の午前0時

increment
構⽂ :increment=<int>(s | m | h | d)
説明 :開始時間から終了時間への、期間の増分を指定します。サポートされている増分は、秒、分、時間、⽇です。
デフォルト :1d

使⽤法
gentimesコマンドはイベント⽣成コマンドです。「コマンドタイプ」を参照してください。

⽣成コマンドの先頭にはパイプ⽂字が付けられ、サーチの最初のコマンドである必要があります。

gentimesコマンドは、4つのフィールドを返します。

フィールド 説明
starttime UNIX時間の開始時間範囲。

starthuman DDD MMM DD HH:MM:SS YYYYフォーマットの判読可能な時間範囲。例:Sun Apr 1 00:00:00 2018。

endtime UNIX時間の終了時間範囲。

endhuman DDD MMM DD HH:MM:SS YYYYフォーマットの判読可能な時間範囲。例:Fri Apr 13 23:59:59 2018。


1.⽇付を指定した⽇次時間範囲の⽣成

2018年4⽉1⽇から4⽉5⽇までの⽇次時間範囲を⽣成します。このサーチは、2018年4⽉1、2、3、4⽇の隣接する暦⽇期間
について、1⽇単位で4つの区間を⽣成します。

| gentimes start=4/1/18 end=4/5/18

結果は、以下のような内容で[統計]タブに表⽰されます。

st art t im e st art hum an endt im e endhum an


1522566000 Sun Apr 1 00:00:00 2018 1522652399 Sun Apr 1 23:59:59 2018

1522652400 Mon Apr 2 00:00:00 2018 1522738799 Mon Apr 2 23:59:59 2018
1522738800 Tue Apr 3 00:00:00 2018 1522825199 Tue Apr 3 23:59:59 2018

1522825200 Wed Apr 4 00:00:00 2018 1522911599 Wed Apr 4 23:59:59 2018

2.相対時間を指定した⽇次時間範囲の⽣成

30⽇前から27⽇前までの⽇次時間範囲を⽣成します。
| gentimes start=-30 end=-27

3.毎時間範囲の⽣成

2017年12⽉1⽇から12⽉5⽇までの毎時間範囲を⽣成します。

232
| gentimes start=12/1/17 end=12/5/17 increment=1h

4.開始⽇のみを指定した時間範囲の⽣成

9⽉25⽇から今⽇までの⽇次時間範囲を⽣成します。

| gentimes start=9/25/17

5.週次時間範囲の⽣成

週次の増分はサポートされていませんが、increment=7dを指定して週次の増分を⽣成できます。

この例では、2017年12⽉1⽇から2018年4⽉30⽇までの週次時間範囲を⽣成します。

| gentimes start=12/1/17 end=4/30/18 increment=7d

関連項⽬
makeresults、map

geom
説明
geomコマンドは各結果に「geo m 」というフィールドを追加します。このフィールドには、JSONのポリゴン図形に使⽤する
地理データ構造が含まれます。これらの地理データ構造は、コロプレスマップの視覚エフェクトの作成に使⽤できます。

詳細は、『ダッシュボードと視覚エフェクト』マニュアルの「データのマッピング」を参照してください。

構⽂
geom [<featureCollection>] [allFeatures=<boolean>] [featureIdField=<string>] [gen=<double>]
[min_x=<double>] [min_y=<double>] [max_x=<double>] [max_y=<double>]

必須引数

無し。

省略可能な引数

featureCollection
構⽂ :<geo_lookup>
説明 :使⽤する地域ルックアップファイルを指定します。以下2つの地域ルックアップファイルがSplunkソフトウェア
に含まれています:geo_us_states、geo_countries。KMZまたはKLMファイルを使⽤して、独⾃の地域ルックアップを導
⼊することができます。詳細は使⽤例を参照してください。
allFeatures
構⽂ :allFeatures=<bool>
説明 :出⼒に、特徴コレクション内のすべての幾何学的特徴が含まれるように指定します。図形に値がない場
合、averageまたはcountなどの集約フィールドは、この引数が使⽤されたときにゼロを表⽰します。この引数が使⽤され
ている場合、サーチ結果にまだ存在していない機能ごとに追加の⾏が追加されます。例をご覧ください。
デフォルト :偽(False)
featureIdField
構⽂: featureIdField = <field>
説明 :「featureId」以外の名前を持つフィールドにfeaturedIdがある場合、このオプションを使⽤してフィールド名
を指定します。
233
gen
構⽂ :gen=<double>
説明 :データ単位で概括を指定します。たとえばgen=0.1では、0.1単位のパラメーターがあるポリゴンでDouglass
Puiker Ramerアルゴリズムを実⾏することで、図形の概括(サイズの縮⼩)が⾏われます。
デフォルト :0.1

min_x
構⽂ :min_x=<double>
説明 :図形の境界ボックスの左下の隅にあるX座標。座標の範囲は[-180, 180]。詳細は使⽤例を参照してください。
デフォルト :-180

min_y
構⽂ :min_y=<double>
説明: 図形の境界ボックスの左下の隅にあるY座標。座標の範囲は[-90, 90]。
デフォルト :-90

max_x
構⽂ :max_x=<double>
説明 :図形の境界ボックスの右上の隅にあるX座標。座標の範囲は[-180, 180]。
デフォルト :180

max_y
構⽂ :max_y=<double>
説明: 図形の境界ボックスの右上の隅にあるY座標。座標の範囲は[-90, 90]。
デフォルト :90

使⽤法

ルックアップの指定

⾃分のルックアップファイルを使⽤するために、ルックアップをSplunk Webで定義するか、またはtransforms.confファイル
を編集します。

管理されたSplunk Cloudデプロイを使⽤している場合、ルックアップを定義するにはSplunk Webを使⽤する必要がありま


す。
Splunk W ebでの地理空間ルックアップの定義

1. Splunk Webで地理空間ルックアップを定義するには、[ 設定] メニューの[ ルックアップ] オプションを使⽤します。


ルックアップファイルを追加し、ルックアップ定義を作成し、ルックアップが⾃動的に実⾏するように設定できま
す。『ナレッジ管理』マニュアルの「Splunk Webでの地理空間ルックアップの定義」を参照してください。

t ransfo rm s.co nf内での地理空間ルックアップの設定


1. ファイルがまだない場合は、%SPLUNK_HOME%\etc\system\local\transforms.confファイルを編集するか、transforms.confとい
う名前の新しいファイルを%SPLUNK_HOME%\etc\system\localディレクトリに作成します。『管理』マニュアルの「設定ファ
イルの編集⽅法」の⼿順を参照してください。
2. featureCollection引数のtransforms.confファイルにあるルックアップスタンザの名前を指定します。
3. external_type=geoをスタンザに設定します。詳細は、『ナレッジ管理』マニュアルの「地理空間ルックアップの設定」
を参照してください。

省略可能な引数を指定しない

引数が指定されない場合、geomコマンドはイベント内でfeatureCollectionという名前のフィールドとfeatureIdFieldという名前
のフィールドを探します。これらのフィールドはgeoindexの検索からのデフォルトの出⼒に含まれます。

形状のクリッピング

min_x、min_y、max_x、max_y引数は、形状のクリッピングに使⽤できます。これらの引数で図形の境界ボックスを定義します。
ここでは⻑⽅形の最低値(min_x、min_y)と⻑⽅形の最⼤値(max_x、max_y)を指定できます。座標を指定することで、これらの座
標にあるデータだけを返します。

ルックアップファイルのテスト

このinputlookupコマンドを使⽤して、マップ上の幾何学的特徴が正しいことを確認できます。構⽂は| inputlookup
<your_lookup>です。

たとえば、内蔵geo_us_statesルックアップの幾何学的特徴がコロプレスマップに正確に表⽰されるかを検証するには:

1. 以下のサーチを実⾏します。
| inputlookup geo_us_states
234
2. [ 視覚エフェクト] タブで[コロプレスマップ]に変更します。
3. 幾何学的特徴がわかるまで拡⼤します。この例では、アメリカ合衆国の州です。

幾何学的特徴のテスト

幾何学的特徴をテストするために任意の結果を作成することができます。

allFeatures引数で出⼒がどのように表⽰されるかを⽰すために、次のサーチでは単純なフィールドと値のセットを作成しま
す。

| stats count | eval featureId="California" | eval count=10000 | geom geo_us_states allFeatures=true

サーチでは、statsコマンドを使⽤してcountフィールドを指定します。countフィールド内にゼロ( 0 )の値を持つ単⼀の
結果が作成されます。
evalコマンドは、カリフォルニアの値にfeatureIdフィールドを結果に追加するために使⽤されます。
別のevalコマンドを使⽤して、countフィールドの値10000を指定します。これで、countとfeatureIdの2つのフィールド
を持つ単⼀の結果が得られました。
geomコマンドが追加されると、2つのフィールドfeatureCollectionとgeomが追加されます。

次のイメージは、[ 統計] タブのサーチの結果を⽰しています。

次のイメージは、[ 資格エフェクト] タブのサーチの結果を⽰しています。地図が[ コロプレスマップ] であることを確認しま


す。このイメージは、詳細部を⽰すために拡⼤されています。

235

1.デフォルトの設定を使⽤する

引数が指定されない場合、geomコマンドはイベント内でfeat ureCo llect io n という名前のフィールドとfeat ureId という名


前のフィールドを探します。これらのフィールドはgeospatialの検索からのデフォルトの出⼒に含まれます。
...| geom

2.組み込み地理空間ルックアップを使⽤する

この例ではfeatureCollectionの内蔵geo_us_statesルックアップファイルを使⽤します。

...| geom geo_us_states

3.feat ureIdを含むフィールドを指定する

この例では内蔵geo_us_statesルックアップを使⽤しstateをfeatureIdFieldとして使⽤します。ほとんどの地理空間ルックアッ
プファイルでは、Feature IDはfeatureIdと呼ばれるフィールドに保管されます。イベントがFeature IDを「featureId」以
外の名前のフィールドに含む場合は、featureIdField引数を使⽤します。

...| geom geo_us_states featureIdField="state"

4.すべての幾何学的特徴を出⼒に表⽰する

次の例は、出⼒に特徴コレクション内のすべての幾何学的特徴が含まれるように指定します。幾何学的特徴に何の値も⽰さ
れていない場合は、ゼロがデフォルト値です。allFeatures引数を使⽤すると、コロプレスマップの視覚化によってすべての図
形がレンダリングされます。

...| geom geo_us_states allFeatures=true

5.内蔵のcount riesルックアップの使⽤

以下の例では内蔵geo_countriesルックアップを使⽤しています。サーチはlookupコマンドを使⽤して緯度および経度フィール
ドに短いフィールド名を指定します。statsコマンドはFeature IDのカウントに使⽤され、featureIdFieldフィールドの名前
をcountryに変更します。geomコマンドは名前変更済フィールドcountryを使⽤してコロプレスマップの情報を⽣成します。

... | lookup geo_countries latitude AS lat, longitude AS long | stats count BY featureIdField AS country | geom geo_countries
featureIdField="country"
236
6.幾何学形状の境界ボックスを指定する

この例では、境界ボックスを指定して形状をクリップするgeomコマンド属性を使⽤します。

... | geom geo_us_states featureIdField="state" gen=0.1 min_x=-130.5 min_y=37.6 max_x=-130.1 max_y=37.7

関連項⽬
『ダッシュボードと視覚エフェクト』マニュアルの「マッピングデータ」。

geomfil t er
説明
geomfilterコマンドで、コロプレスマップをクリッピングする境界ボックスの座標を指定します。
詳細は、『ダッシュボードと視覚エフェクト』マニュアルの「データのマッピング」を参照してください。

構⽂
geomfilter [min_x=<float>] [min_y=<float>] [max_x=<float>] [max_y=<float>]

省略可能な引数

min_x
構⽂ :min_x=<float>
説明 :境界ボックスの左下の隅にあるx座標。範囲は[-180, 180]。
デフォルト :-180
min_y
構⽂ :min_y=<float>
説明 :境界ボックスの左下の隅にあるy座標。範囲は[-90, 90]。
デフォルト :-90
max_x
構⽂ :max_x=<float>
説明 :境界ボックスの右上の隅にあるx座標。範囲は[-180, 180]。
デフォルト :180
max_y
構⽂ :max_y=<float>
説明 :境界ボックスの右上の隅にあるy座標。範囲は[-90, 90]。
デフォルト :max_y=90

使⽤法
geomfilterコマンドは2つの座標を使って、コロプレスマップをクリッピングする境界ボックスを指定します。境界ボックス
から外れる座標は除外されます。


例1:この例ではデフォルトの境界ボックスを使⽤して、マップ全体をクリッピングします。

...| geomfilter

例2:この例では、マップ全体の半分をクリッピングします。
...| geomfilter min_x=-90 min_y=-90 max_x=90 max_y=90

関連項⽬
geom

geost a t s
237
説明
geostatsコマンドを使⽤し、地理情報データを表⽰してマップ上のデータを要約するための統計を⽣成します。

このコマンドは、世界地図に表⽰される地域ビンにクラスター化される統計情報を⽣成します。緯度/経度フィールドに基づ
いてイベントをクラスター化します。⽣成されたクラスターで統計情報が評価されます。統計は、BY句を使⽤したフィールド
により、グループ化または分割ができます。

地図の表⽰とズームを効率的に⾏うために、geostatsコマンドは1つのサーチでさまざまなズームレベルのクラスター統計を
⽣成し、それらの中から視覚エフェクトを選択します。ズームレベルの数量はbinspanlat、binspanlong、maxzoomlevelオプショ
ンで調整することができます。最初の解像度はbinspanlatとbinspanlongによって選択されます。ズームの各レベルで、ビン数
が両⽅の次元で倍加されます(各ズームインに対して合計4倍のビン)。

構⽂
太字 は必須構⽂です。

geo st at s
[ translatetoxy=<bool> ]
[ latfield=<string> ]
[ longfield=<string> ]
[ globallimit=<int> ]
[ locallimit=<int> ]
[ outputlatfield=<string> ]
[ outputlongfield=<string> ]
[ binspanlat=<float> binspanlong=<float> ]
[ maxzoomlevel=<int> ]
<st at s-agg-t erm >...
[ <by-clause> ]

必須引数

stats-agg-term
構⽂ :<stats-func> (<evaled-field> | <wc-field>) [AS <wc-field>]
説明 :統計集計関数。「Stats関数のオプション」を参照してください。この関数は、eval式、フィールド、または⼀
連のフィールドに適⽤できます。AS句を使⽤して、結果を⾃分が名前をつけた新しいフィールドに⼊れることができま
す。フィールド名にワイルドカードが使⽤できます。eval式の詳細は、『サーチ』マニュアルの「eval式の詳細」を参
照してください。

省略可能な引数

binspanlat
構⽂ :binspanlat=<float>
説明 :最⼩ズームレベルにおけるビンのサイズ(緯度)。
デフォルト :22.5binspanlatおよびbinspanlongのデフォルト値が使⽤されている場合、8x8のグリッドサイズが⽣成され
ます。

binspanlong
構⽂ :binspanlong=<float>
説明 :最⼩ズームレベルにおけるビンのサイズ(経度)。
デフォルト :45.0binspanlatおよびbinspanlongのデフォルト値が使⽤されている場合、8x8のグリッドサイズが⽣成され
ます。
by-clause
構⽂ :BY <field>
説明 :グループ化するフィールドの名前。
globallimit
構⽂ :globallimit=<int>
説明 :各円グラフに追加する名前付きカテゴリ数を指定します。もう1つ「OTHER (その他)」カテゴリが存在してお
り、ここには他のすべてのsplit-by値がグループ化されます。globallimit=0を設定すると、すべての制限が解除され、
すべてのカテゴリが表⽰されます。現在の所、「その他」へのグループ化は、countおよびadditive統計情報に対して
のみ機能します。
デフォルト :10

locallimit
構⽂ :locallimit=<int>
説明:シリーズへのフィルタリング適⽤の限界数を設定します。locallimit=Nを設定すると、先頭からN個の値が各シ
リーズの合計に基づいてフィルターされます。locallimit=0の場合は、フィルタリングされません。
デフォルト :10
latfield
構⽂ :latfield=<field>
238
説明 :分析で使⽤する緯度座標を表す、事前サーチのフィールドを指定します。
デフォルト :lat
longfield
構⽂ :longfield=<field>
説明 :分析で使⽤する経度座標を表す、事前サーチのフィールドを指定します。
デフォルト :lon
maxzoomlevel
構⽂ :maxzoomlevel=<int>
説明: クワッドツリー内に作成するレベルの最⼤数。
デフォルト :9。0から9の10のズームレベルが作成されるように指定します。
outputlatfield
構⽂: outputlatfield=<string>
説明 :geostats出⼒データの緯度フィールドの名前を指定します。
デフォルト :latitude
outputlongfield
構⽂: outputlongfield=<string>
説明 :geostats出⼒データの経度フィールドの名前を指定します。
デフォルト: longitude

translatetoxy
構⽂ :translatetoxy=<bool>
説明 :真(True)の場合、geostatsは位置的に区分された各場所あたり1つの結果を⽣成します。このモードは地図上に
描画する場合に適しています。偽(False)の場合は、位置的に区分された場所あたりの、カテゴリ(または多重分割デー
タセットのタプル)あたり1つの結果が⽣成されます。これにより、基本的にはデータがカテゴリ別に分割されます。こ
のモードでは、地図上に描画することはできません。
デフォルト :真(True)

St at s関数のオプション

stats-func
構⽂: 構⽂は使⽤する関数によって異なります。次の表を参照してください。
説明: geostatsコマンドで使⽤できる統計およびグラフ関数です。geostatsコマンドの起動時に1つまたは複数の関数を
使⽤できます。

次の表に、関数のタイプ別にサポートされる関数を⽰します。各関数の説明と例を⾒るには、表にあるリンクを使⽤し
てください。コマンドで関数を使⽤する⽅法については、「統計およびグラフ関数」を参照してください。

関数の種類 対応している関数と構⽂

avg() exactperc<int>() sum()


perc<int>()
count() max() sumsq()
range()
集計関数 distinct_count() median() upperperc<int>()
stdev()
estdc() min() var()
stdevp()
estdc_error() mode() varp()

イベント順関数 earliest() first() last() latest()

マルチ値統計およびグラ list(X) values(X)


フ機能

使⽤法
地図上の情報を表⽰するには、geostatsコマンドでレポートサーチを実⾏する必要があります。

geostatsコマンドの前にlookupコマンドを使⽤している場合は、「ルックアップサーチの最適化」を参照してください。

メモリーとgeost at sサーチパフォーマンス

limits.confの2つの設定により、geostatsサーチのパフォーマンスと、これらのコマンドがサーチプロセスで使⽤するメモリー
量(RAMとディスクスペース)のバランスを調整できます。geostatsサーチの完了に常に時間がかかる場合は、これらの設定を
調整することでパフォーマンスを⾼めることができますが、サーチ時のメモリー使⽤量が増えるため、サーチエラーの原因
になることもあります。

詳細は、『サーチ』マニュアルの「メモリーとstatsサーチパフォーマンス」を参照してください。

基本的な例

239
1.デフォルト設定を使⽤してカウントを計算する

デフォルトの緯度/経度フィールド「lat」および「lon」でイベントをクラスター化します。イベントカウントを算出しま
す。

... | geostats count

2.hat fieldとlongfieldを指定し、フィールドの平均を計算する

「eventlat」および「eventlong」の値でイベントをクラスター化/グループ化した後に、各性別の平均レーティングを計算
します。

... | geostats latfield=eventlat longfield=eventlong avg(rating) by gender

その他の例

3.販売された各商品数をベンダー別に数え、情報を地図上に表⽰する

この例では、サーチチュートリアルのサンプルデータセットを使⽤しています。Splunkインスタンスでこの例を試すには、サンプルデータをダウン
ロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。サーチを実⾏するときは、時間範囲として[全時間] を使⽤し
ます。

さらに、この例ではいくつかのルックアップファイルを使⽤しますが、これらはダウンロードして展開する必要があります(prices.csv.zipと
vendors.csv.zip)。prices.csvおよびvendors.csvファイルを使⽤するには、チュートリアルの「フィールドルックアップの有効化」セクションで説
明されている⼿順を完了する必要があります。チュートリアルの⼿順はprices.csvファイル特有のものです。vendors.csvファイルの場合は、ルック
アップ定義にve ndo r s _ lo o kup という名前を使⽤してください。チュートリアルにある、ルックアップを⾃動化する⼿順はスキップしてください。

このサーチでは、lookupコマンドとgeostatsコマンドが処理する必要があるイベントの数を絞り込むstatsコマンドが使⽤され
ます。

次のサーチを使⽤して販売された各商品数をベンダー別にカウントし、情報を地図上に表⽰します。
sourcetype=vendor_sales | stats count by Code VendorID | lookup prices_lookup Code OUTPUTNEW product_name | table product_name
VendorID | lookup vendors_lookup VendorID | geostats latfield=VendorLatitude longfield=VendorLongitude count by product_name

この例では、sourcetype=vendor_salesが「サーチチュートリアル」のサンプルデータに含まれるログファイルに関連付け
られています。このログファイルには、次のようなベンダー情報が⼊っています。

[10/Apr/2018:18:24:02] VendorID=5036 Code=B AcctID=6024298300471575

vendors_lookupファイルを使⽤して、vendor_sales.logファイルのVendorIDと⼀致するvendors.csvファイル内のすべて
のフィールドを出⼒します。vendors.csvファイルにあるフィールドは、 Vendor、VendorCity、VendorID、
VendorLatitude、VendorLongitude、VendorStateProvince、およびVendorCountryです。
prices_lookupは、各イベントのCodeフィールドを、テーブル内のproduct_nameと照合するために使⽤されます。

このサーチでは、CSVファイルがアップロードされ、ルックアップが定義されていますが、⾃動ではありません。

このサーチは[統計 ]タブにテーブルを⽣成します。

240
[ 視覚エフェクト] タブをクリックします。結果が世界地図上に描画されます。結果の各ベンダーが円グラフで⽰されます。
円グラフが⼤きいほど、カウント値が⼤きくなります。

このスクリーンショットでは、⽶国北東部の地域のマウスポインターが円グラフの上にあります。ポップアップ情報ボック
スには、各ベンダーの緯度と経度、およびベンダーが販売した各製品の数が表⽰されます。
地図を拡⼤することで詳細を確認することができます。

関連項⽬
コマンド
iplocation
stats
xyseries

参考情報
『ダッシュボードと視覚エフェクト』の「マッピングデータ」

h ea d
241
説明
サーチの順序に指定した結果の最初のn件を返します。これは、履歴サーチの直近のnイベント、またはリアルタイムサーチ
で最初に捕捉したnイベントという意味になります。サーチ結果はサーチ順の最初の結果に限定されます。
適⽤できる制限のタイプには、結果の絶対数、または偽(False)になるまですべての結果を返す式の2種類があります。

構⽂
太字 は必須構⽂です。
head
[<N> | (<eval-expression>)]
[limit=<int>]
[null=<bool>]
[keeplast=<bool>]

必須引数

無し。
どちらの⽅法も指定しない場合は、headコマンドでは最初の10件が返されます。

省略可能な引数

<N>
構⽂ :<int>
説明: 返す結果数。
デフォルト :10

limit
構⽂ :limit=<int>
説明 :返す結果数を指定するもう1つの⽅法です。
デフォルト :10

eval式
構⽂ :<eval-compare-exp> | <eval-bool-exp>
説明 :論理演算式を評価する有効な<eval-expression>。サーチではこの式の評価がfalseになるまで結果が返されます。
詳細は、『サーチリファレンス』の評価機能を参照してください。
keeplast
構⽂ :keeplast=<bool>
説明: keeplast引数を使⽤するにはeval-expressionを指定する必要があります。結果セットの最後の結果を保持するかど
うかを制御します。返される最後の結果は、eval-expressionがfalseまたはNULLと評価された結果です。結果セットの最
後の結果を保持するには、keeplastをtrueに設定します。最後の結果を破棄するには、keeplastをfalseに設定します。
デフォルト :偽(False)
null
構⽂ :null=<bool>
説明: null引数を有効にするには、<eval-expression>を指定する必要があります。NULLに評価される<eval-
expression>の処理⽅法を制御します。たとえば、<eval-expression>が(x > 10)で、フィールドxの値が存在しなけれ
ば、<eval-expression>は真(True)または偽(False)ではなくNULLと評価されます。

null=trueである場合、headコマンドの結果には、<eval-expression>がNULLに評価されるイベントが含まれま
す。headコマンドは残りのイベントの処理を続⾏します。
null=falseである場合、headコマンドはNULLに評価される<eval-expression>を、<eval-expression>がfalseに
評価されたのと同じように処理します。headコマンドはイベントの処理を停⽌します。keeplast=trueである場合、
<eval-expression>がNULLに評価されるイベントも結果に含まれます。
デフォルト :偽(False)

使⽤法
headコマンドは、集中ストリーミングコマンドです。「コマンドタイプ」を参照してください。

制限の設定

数値リテラルや引数limit=<int>などの数値制限を使⽤する場合、headコマンドでは最初のN件の結果が返されます。ここでの
Nは選択された数字です。数値制限とlimit=<int>を両⽅とも使⽤すると、エラーになります。

242
<eval-expression>の使⽤

<eval-expression>が使われる場合は、式の評価が偽(False)になるまで、すべての結果が返されます。<eval-expression>
が偽(False)と評価した結果を保持または破棄するかは、keeplast引数に従います。

数値制限と<eval-expression>の両⽅が使⽤された場合、制限の少ない⽅が適⽤されます。たとえば、次のサーチでは<eval-
expression>が常に真(True)であるため、最初の10件までの結果が返されます。

... |head limit=10 (1==1)

⼀⽅、次のサーチでは<eval-expression>が常に偽(False)であるため、結果は返されません。
... |head limit=10 (0==1)

基本的な例
1.特定数の結果を返す

最初の20件の結果を返します。
... | head 20

2.指定された制限に基づいて結果を返す

データの期間が100秒以上になるまでイベントを返します。
... | streamstats range(_time) as timerange | head (timerange<100)

その他の例:
1.keeplast 引数とnull引数の使⽤

次の例は、<eval-expression>がNULLに評価される場合のサーチ結果と、これらの結果に対するkeeplast引数とnull引数の
影響を⽰しています。
まず、イベントのセットを作成します。evalコマンドは、countフィールドの値3をNULLに置き換えます。

| makeresults count=7 | streamstats count | eval count=if(count=3,null(), count)

結果はこのようになります。

_t im e co unt
2020-05-18 12:46:51 1

2020-05-18 12:46:51 2

2020-05-18 12:46:51

2020-05-18 12:46:51 4

2020-05-18 12:46:51 5

2020-05-18 12:46:51 6

2020-05-18 12:46:51 7

nullがtrueに設定されていれば、headコマンドは結果の処理を続⾏します。次の例では、count値が5未満である限り、コマン
ドはNULL値を無視して結果を処理します。keeplast=trueであるため、処理を停⽌したイベント(count 5)も出⼒に含まれま
す。

| makeresults count=7 | streamstats count | eval count=if(count=3,null(), count) | head count<5 keeplast=true null=true

結果はこのようになります。

_t im e co unt
2020-05-18 12:46:51 1

243
2020-05-18 12:46:51 2

2020-05-18 12:46:51

2020-05-18 12:46:51 4

2020-05-18 12:46:51 5

nullがfalseに設定されていれば、headコマンドはNULL値に遭遇した時点で結果の処理を停⽌します。count1とcount 2のイ
ベントが返されます。keeplast=trueであるため、処理を停⽌したNULL値のイベント(3番⽬のイベント)は出⼒には含まれませ
ん。

| makeresults count=7 | streamstats count | eval count=if(count=3,null(), count) | head count<5 keeplast=true null=false

結果はこのようになります。

_t im e co unt
2020-05-18 12:46:51 1

2020-05-18 12:46:51 2

2020-05-18 12:46:51

関連項⽬
コマンド
reverse
tail

h igh l igh t
説明
指定した⽤語をイベントリスト内で強調表⽰します。⽂字列や⽂字列のリストを照合し、Splunk W eb で強調表⽰します。
照合では⼤⽂字と⼩⽂字が区別されません。

構⽂
highlight <string>...

必須引数

<string>
構⽂ :<string> ...
説明 :結果を強調するための、スペースで区切った⽂字列のリストです。指定するリストでは⼤⽂字と⼩⽂字を区別し
ます。⽂字列に⼀致する⼤⽂字と⼩⽂字の組み合わせが強調表⽰されます。

使⽤法
highlightコマンドは、分散可能ストリーミングコマンドです。「コマンドタイプ」を参照してください。

指定する⽂字列はフィールド値でなければなりません。⽂字列はフィールド名にすることは出来ません。

rawのイベントを保持し、[イベント]タブに出⼒を表⽰する検索でhighlightコマンドを使⽤する必要があります。ハイライト
コマンドは、計算結果または⽣成結果を⽣成するstatsコマンドなどでは使⽤できません。


例1:

「login」および「logout」を強調表⽰します。

... | highlight login,logout

例2:

244
「Access Denied」というフレーズを強調します。

... | highlight "access denied"

関連項⽬
rangemap

h ist or y
説明
このコマンドは現在のAppのサーチ履歴を閲覧するために使⽤します。サーチ履歴は⼀連のイベントまたはテーブルとして
表⽰されます。

構⽂
| history [events=<bool>]

必須引数

無し。

省略可能な引数

イベント
構⽂ :events=<bool>
説明 :events=trueを指定すると、サーチ履歴がイベントとして返されます。これはイベント指向型のUIを表⽰します。
UIを使って⼿軽に強調表⽰やフィールドの調査を⾏うことができます。events=falseを指定すると、テーブル形式で⾒や
すく集約されたサーチ履歴がイベントとして返されます。
デフォルト :偽(False)
events=falseのときフィールドが返されます。

Out put field 説明


_time サーチが開始された時刻。

api_et イベントが最初に要求されたAPI呼び出しの最も早い時刻。

api_lt イベントが最後に要求されたAPI呼び出しの最も遅い時刻。

event_count サーチがイベントを取得または⽣成した場合、イベント数が返されます。

exec_time サーチ実⾏時間(UNIXエポック時で整数の秒数)。

is_realtime サーチがリアルタイム(1)か、または履歴サーチ(0)かを⽰します。

result_count サーチが変換サーチの場合、サーチの結果数。

scan_count 低レベルでSplunkインデックスから取得されたイベント数。

search サーチ⽂字列。

search_et サーチ実⾏のために設定された、もっとも早い時間。

search_lt サーチ実⾏のために設定された、もっとも遅い時間。

sid サーチジョブID。

splunk_server サーチが実⾏されたマシンのホスト名です。

status サーチのステータス。

total_run_time サーチの実⾏時間合計(秒)。

使⽤法
historyコマンドは⽣成コマンドで、サーチにおける最初のコマンドでなければなりません。⽣成コマンドでは、先頭のパイ
プ⽂字が使⽤されます。
245
historyコマンドは、コマンドを実⾏したAppからのみサーチ履歴を返します。

テーブル内のサーチ履歴を返す

サーチ履歴のテーブルを返します。これはデフォルト設定なので、events=falseを指定する必要はありません。

| history

サーチ履歴をイベントとして返します

サーチ履歴を⼀連のイベントとして返します。
| history events=true

246
関連項⽬
コマンド
search

iconify
説明
Splunk W eb は、指定したフィールド⼀覧の中のそれぞれ異なる値に対して、アイコンを表⽰します。
iconifyコマンドは各イベントに_iconという名前のフィールドを追加します。このフィールドはイベントのハッシュ値です。
Splunk Webでは、イベントリスト内に各フィールドの⼀意の値が、異なるアイコンで表⽰されます。複数のフィールドが記
載されている場合は、UIにはフィールド値の各⼀意の組み合わせに対して、別個のアイコンが表⽰されます。

構⽂
iconify <field-list>

必須引数

field-list
構⽂ :<field> ...
説明: フィールドのカンマまたはスペース区切りリストです。フィールドリストにはワイルドカード⽂字を使⽤できま
せん。

使⽤法
iconifyコマンドは、分散可能ストリーミングコマンドです。「コマンドタイプ」を参照してください。


1.event t ypeごとに異なるアイコンを表⽰する

... | iconify eventtype

2.フィールド値の⼀意のペアごとに異なるアイコンを表⽰する

clientipとmethodの値の⼀意のペアに対して、異なるアイコンを表⽰します。

... | iconify clientip method

Splunk Webがイベントリストに どのように結果を表⽰するかを以下に⽰します。


247
関連項⽬
highlight

inpu t csv
説明
Splunk Enterpriseデプロイでは、指定したCSVファイルからサーチ結果を読み込みます。ファイルは変更されません。ファ
イル名は$SPLUNK_HOME/var/run/splunk/csvにある相対パスを参照する必要があります。dispatch=trueである場合は、パス
が$SPLUNK_HOME/var/run/splunk/dispatch/<job id>に含まれている必要があります。

指定したファイルが存在せず、ファイル名に拡張⼦が含まれていない場合、Splunkソフトウェアはファイル名に.csv拡張⼦
がついているものと⾒なします。
inputcsvコマンドでエラーが発⽣する場合は、CSVファイルがBLANK LINEで終了しているかどうか確認してください。

構⽂
太字 は必須構⽂です。

| input csv
[dispatch=<bool>]
[append=<bool>]
[strict=<bool>]
[start=<int>]
[max=<int>]
[events=<bool>]
<filenam e>
[WHERE <search-query>]

必須引数

filename
構⽂ :<filename>
説明 :$SPLUNK_HOME/var/run/splunk/csvにある.csvファイルの名前を指定します。

省略可能な引数

dispatch
構⽂ :dispatch=<bool>
説明 :真(True)に設定すると、ファイル名がdispatchディレクトリにある.csvファイルであることが⽰されます。相対
パスは、$SPLUNK_HOME/var/run/splunk/dispatch/<job id>/です。
デフォルト :偽(False)

append
構⽂ :append=<bool>
説明 :.csvファイルのデータを現在の結果セットに追加(true)するか、置換(false)するかを指定します。
デフォルト :偽(False)

strict
構⽂: strict=<bool>
説明:この引数が trueに設定されている場合、inputcsvがエラーを返した場合にはサーチが完全に失敗します。サブ
サーチのエラーであっても同様です。falseに設定されている場合、多くのinputcsvエラーは警告メッセージを返すだけ
で、サーチは失敗しません。strict=falseに設定されていても、特定のエラーが発⽣した場合はサーチが失敗します。
デフォルト :偽(False)

イベント
248
構⽂ :events=<bool>
説明: CSVファイルのデータをイベントまたはサーチ結果のテーブルのどちらとして扱うかを指定します。デフォルト
のevents=falseでは、フィールド名を列の⾒出しとしたテーブルとしてデータを返します。テーブルが[統計]タブに表⽰
されます。events=trueに設定する場合は、インポートするCSVデータに_timeフィールドと_rawフィールドが存在する必
要があります。データはイベントとして扱われ、[イベント]タブに表⽰されます。
デフォルト :偽(False)

max
構⽂ :max=<int>
説明 :ファイルから読み込むイベントの最⼤数を指定します。maxを指定しない場合は、読み込むイベントの数に制限
はありません。
デフォルト :1000000000 (10億)
start
構⽂ :start=<int>
説明 :読み込む最初のイベントの、0ベースのオフセットを指定します。
デフォルト :0
WHERE
構⽂: WHERE <search-criteria>
説明 :この句により、CSVファイルから返されたデータを前もってフィルターすることで、サーチのパフォーマンスを
向上します。対応しているサーチクエリー演算⼦は=、 !=、<、>、<=、>=、AND、OR、NOTに限られます。これら
の演算⼦を組み合わせて使⽤できます。ワイルドカードによる⽂字列のサーチにも対応しています。

使⽤法
inputcsvコマンドはイベント⽣成コマンドです。「コマンドタイプ」を参照してください。

⽣成コマンドの先頭にはパイプ⽂字が付けられ、サーチの最初のコマンドである必要があります。

結果の付加または置換

append引数をtrueに設定すると、inputcsvコマンドを使⽤してCSVファイルからのデータを現在の結果セットに追加できま
す。append=trueに設定されている場合は、サーチが結果セットを返した後でinputcsvコマンドを使⽤します。例をご覧くださ
い。
append引数は、デフォルトでfalseに設定されています。append引数が指定されていないか、またはfalseに設定されている場合
は、inputcsvコマンドがサーチの最初のコマンドである必要があります。データは、指定したCSVファイルからサーチに読み
込まれます。

⼤容量のCSVファイルの処理

WHERE句により、inputcsvのサーチの範囲を狭めることができます。inputcsvの対象となる⾏数を減らすことで、かなり⼤きな
CSVファイルの処理でもサーチの効率を改善できます。

分散デプロイ

inputcsvコマンドはサーチヘッドプーリング とサーチヘッドクラスタリング に互換性はありません。

コマンドは$SPLUNK_HOME/var/run/splunk/にあるローカルサーチヘッドに*.csvファイルを保存します。*.csvファイルは他のサー
チヘッドでは複製されません。

厳格なエラー処理

strict引数を使⽤すると、エラーが発⽣した時点でinputcsv常にサーチが失敗します。limits.confでinput_errors_fatalを変更す
ることにより、すべてのinputcsvおよびinputlookupサーチに対してシステムレベルで設定できます。

Cloudを使⽤している場合は、input_errors_fatal設定を変更するにはCloudサポートに要求を申請する必要があります。

strict引数を設定すると、inputcsvサーチのinput_errors_fatal設定を上書きできます。


1.特定の⽂字列を含む結果の読み込み

この例では、$SPLUNK_HOME/var/run/splunk/csv/all.csvファイルからサーチ結果を読み込みます。⽂字列errorを含む結果
が$SPLUNK_HOME/var/run/splunk/csv/error.csvファイルに保存されます。

| inputcsv all.csv | search error | outputcsv errors.csv

249
2.結果の特定の範囲の読み込み

この例では、barファイル(存在する場合)またはbar.csvファイルから101〜600の結果を読み込みます。

| inputcsv start=100 max=500 bar

3.演算⼦および式を使⽤した読み込む式の指定

⽐較演算⼦や論理演算式を使⽤して、読み込む結果を指定できます。この例では、CSVファイ
ル$SPLUNK_HOME/var/run/splunk/csv/students.csvからすべてのイベントを読み込んで、ageフィールドの値が13より⼤きくて19よ
り⼩さく、16ではないと指定されているWHERE句と⼀致しないイベントをフィルタリングします。サーチは、残りのサーチ
結果の数を返します。
| inputcsv students.csv WHERE (age>=13 age<=19) AND NOT age=16 | stats count

4.CSVファイルからサーチ結果にデータを付加する

append引数を使⽤して、CSVファイルから現在の結果セットにデータを追加できます。次の例では、組み合わされたデータを
再び同じCSVファイルに出⼒しています。
error earliest=-d@d | inputcsv append=true all_errors.csv | outputcsv all_errors.csv

5.複数のCSVファイルの追加

appendコマンドとサブサーチを使⽤して、あるCSVファイルのサーチ結果を別のCSVファイルに追加することもできます。次
の例では、evalコマンドを使⽤して、各データセットにフィールドを追加して、データが読み込まれたCSVファイルを⽰して
います。
| inputcsv file1.csv | eval source="file1" | append [inputcsv file2.csv | eval source="file2"]

関連項⽬
outputcsv

inpu t int el l igence


inputintelligenceコマンドは、Splunk Enterprise Securityで使⽤します。

このコマンドの詳細については、『Splunk Enterprise Securityの管理』の「inputintelligenceによるサーチでの汎⽤イン


テリジェンスの使⽤」を参照してください。

inpu t l ooku p
説明
inputlookupコマンドを使⽤してルックアップテーブルの内容をサーチします。ルックアップテーブルには、CSVルックアップ
またはKVストアールックアップを使⽤できます。

構⽂
太字 は必須構⽂です。
| input lo o kup
[append=<bool>]
[strict=<bool>]
[start=<int>]
[max=<int>]
[ <filenam e> | <t ablenam e>]
[WHERE <search-query>]

必須引数

<filename>または<tablename>のどちらかを指定する必要があります。
<filename>
構⽂ :<string>
説明 :ルックアップファイルの名前は.csvまたは.csv.gzで終了する必要があります。ルックアップが存在しない場合、
警告メッセージが表⽰されます(ただし構⽂エラーは⽣成されません)。

250
<tablename>
構⽂ :<string>
説明 :transforms.confにあるスタンザ名で指定されるルックアップテーブルの名前です。任意のルックアップタイプ
(CSV、外部、またはKVストアー)に対してルックアップテーブルを設定できます。

省略可能な引数

append
構⽂ :append=<bool>
説明 :trueに設定された場合、ルックアップファイルのデータは、現在の結果セットに追加されます(置換されるのでは
ありません)。デフォルトはfalseです。

strict
構⽂: strict=<bool>
説明:この引数が trueに設定されている場合、inputlookupがエラーを返した場合にはサーチが完全に失敗します。サブ
サーチのエラーであっても同様です。falseに設定されている場合、多くのinputlookupエラーは警告メッセージを返すだ
けで、サーチは失敗しません。strict=falseに設定されていても、特定のエラーが発⽣した場合はサーチが失敗します。
デフォルト :偽(False)

max
構⽂ :max=<int>
説明 :ファイルから読み込むイベントの最⼤数を指定します。デフォルトは1000000000です。

start
構⽂ :start=<int>
説明 :読み込む最初のイベントの、0ベースのオフセットを指定します。start=0の場合、最初のイベントから開始され
ます。start=4の場合は、5番⽬のイベントから開始されます。デフォルトは0です。

WHERE句
構⽂ :WHERE <search-query>
説明 :この句により、ルックアップテーブルから返されたデータを前もってフィルターすることで、サーチのパフォー
マンスを向上します。対応しているサーチクエリー演算⼦は=、 !=、<、>、<=、>=、AND、OR、NOTに限られま
す。これらの演算⼦を組み合わせて使⽤できます。ワイルドカードによる⽂字列のサーチにも対応しています。

使⽤法
inputlookupコマンドはイベント⽣成コマンドです。「コマンドタイプ」を参照してください。

⽣成コマンドの先頭にはパイプ⽂字が付けられ、サーチの最初のコマンドである必要があります。

ルックアップは.csvか.csv.gzで終わるファイル名、または[ 設定] > [ ルックアップ] > [ ルックアップ定義] のルックアップ


テーブル定義にすることができます。

結果の付加または置換

append=trueである場合、ルックアップファイルまたはKVストアーコレクションからのデータが現在の結果セットに追加され
ます。デフォルトのappend=falseは、現在の結果セットがルックアップサーチからの結果で置き換えられるという意味です。

⼤容量のCSVルックアップテーブルの処理

WHERE句は、inputlookupがルックアップテーブルに対して⾏うクエリーの範囲を狭めることができます。inputlookupの対象
となるルックアップテーブルの⾏数を減らすことで、かなり⼤きな.csvルックアップテーブルの処理でサーチの効率を改善で
きます。

幾何学的ルックアップファイルのテスト

このinputlookupコマンドを使⽤して、マップ上の幾何学的特徴が正しいことを確認できます。構⽂は| inputlookup
<your_lookup>です。

1. たとえば、組み込みのgeo_us_statesルックアップの幾何学的特徴がコロプレスマップに正しく表⽰されていることを
確認するには、次のサーチを実⾏します。
| inputlookup geo_us_states

2. [ 可視化] タブで、幾何学的特徴を確認するためにズームインします。この例では、アメリカ合衆国の州です。

厳格なエラー処理

strict引数を使⽤すると、エラーが発⽣した時点でinputlookup常にサーチが失敗します。limits.confでinput_errors_fatalを変
更することにより、すべてのinputcsvおよびinputlookupサーチに対してシステムレベルで設定できます。
251
Cloudを使⽤している場合は、input_errors_fatal設定を変更するにはCloudサポートに要求を申請する必要があります。

strict引数を設定すると、inputlookupサーチのinput_errors_fatal設定を上書きできます。

その他の情報

ルックアップの作成の詳細は、『ナレッジ管理』マニュアルの「ルックアップについて」を参照してください。

App Key-Valueストアーの詳細は、『管理マニュアル』の「KVストアーについて」を参照してください。


1.ルックアップテーブルを読み込む

transforms.confファイルで定義されているusertogroupルックアップテーブルを読み込みます。

| inputlookup usertogroup

2.ルックアップテーブルのフィールドを現在のサーチ結果に付加する

transforms.confファイルのスタンザで定義されているusertogroupルックアップテーブルを読み込みます。現在の結果にフィー
ルドを追加します。

| inputlookup append=t usertogroup

3.CSVファイルからルックアップテーブルを読み取る

$SPLUNK_HOME/etc/system/lookupsまたは$SPLUNK_HOME/etc/apps/<app_name>/lookupsディレクトリにあるusers.csvルックアップファ
イルをサーチします。
| inputlookup users.csv

4.KVストアーコレクションからルックアップテーブルを読み取る

KVストアーコレクションkvstorecollの内容のうち、CustIDの値が500を上回り、CustNameの値がPで始まるものをサーチしま
す。コレクションはkvstorecoll_lookupというルックアップテーブルで参照されています。テーブルから受け取るイベント数を
指定します。

| inputlookup kvstorecoll_lookup where (CustID>500) AND (CustName="P*") | stats count

この例のルックアップ定義では、CustIDフィールドを数値タイプとして明⽰的に定義しています。フィールドタイプを明⽰的
に定義しないと、where句は機能しません。フィールドタイプの定義は任意です。

5.KVストアーコレクションの内部キーID値を表⽰する

例5:ルックアップテーブルkvstorecollを使って、KVストアーコレクションのkvstorecoll_lookupの内部キーID値を表⽰しま
す。内部キーIDは、コレクション内の各レコードに対する⼀意のIDです。この例では、evalコマンドとtableコマンドを使⽤
します。
| inputlookup kvstorecoll_lookup | eval CustKey = _key | table CustKey, CustName, CustStreet, CustCity, CustState, CustZip

6.KVストアーコレクションの単⼀のレコードのフィールドの値を更新する

Vストアーコレクションの単⼀のレコードのフィールドの値を更新します。この例では、inputlookup、outputlookup、およ
びevalコマンドを使⽤します。このサーチはレコードをその内部キーID (_keyフィールド)で指定し、新しい顧客名と顧客の都
市名でレコードを更新します。レコードはKVストアーコレクションkvstorecollに所属しており、ルックアップテーブ
ルkvstorecoll_lookupを介してアクセスします。

| inputlookup kvstorecoll_lookup | search _key=544948df3ec32d7a4c1d9755 | eval CustName="Claudia Garcia" | eval CustCity="San


Francisco" | outputlookup kvstorecoll_lookup append=true key_field=_key

7.CSVファイルの内容をKVストアーコレクションに書き込む

CSVファイルの内容をルックアップテーブルkvstorecollを使ってKVストアーコレクションkvstorecoll_lookupに書き込みま
す。CSVファイルは、$SPLUNK_HOME/etc/system/lookupsまたは$SPLUNK_HOME/etc/apps/<app_name>/lookupsディレクトリにありま
す。

252
| inputlookup customers.csv | outputlookup kvstorecoll_lookup

関連項⽬
コマンド
inputcsv
join
lookup
outputlookup

ipl oca t ion


説明
サードパーティのデータベースを使って、IPアドレスから場所情報を抽出します。このコマンドはIPv4およびIPv6に対応し
ています。
ip-address-fieldname引数で指定したIPアドレスフィールドがデータベースで検索されます。場所情報を含むそのデータベース
からのフィールドは各イベントに追加されます。allfields引数に使⽤された設定がイベントに追加されるフィールドを決定し
ます。
すべてのIPアドレスですべての情報が利⽤できるとは限らないため、イベントに空のフィールド値が存在することもありま
す。

内部アドレスなどの位置を持たないIPアドレスの場合、フィールドは追加されません。

構⽂
iplocation [prefix=<string>] [allfields=<bool>] [lang=<string>] <ip-address-fieldname>

必須引数

ip-address-fieldname
構⽂ :<field>
説明 :clientipなどのIPアドレスフィールドを指定します。

省略可能な引数

allfields
構⽂ :allfields=<bool>
説明: データベースからのすべてのフィールドをイベントに追加するかどうかを指定します。trueに設定されている場
合、フィールドCity、Continent、Country、lat (latitude)、lon (longitude)、MetroCode、Region、および
Timezoneを追加します。
デフォルト :偽(False)。City、Country、lat、lon、およびRegionフィールドだけがイベントに追加されます。

lang
構⽂ :lang=<string>
説明 :結果の⽂字列を異なる⾔語で表⽰します。たとえば、スペイン語にする場合は「lang=es」と指定します。使⽤
するgeoipデータベースに応じて、使⽤できる⾔語セットは異なります。複数の⾔語を指定する場合は、それらをカン
マで区切ります。ここでは、優先順位が降順で⽰されています。「lang=code」を指定すると、2⽂字のISO略号が戻
ります。
prefix
構⽂ :prefix=<string>
説明 :フィールド名の前に付ける⽂字列を指定します。この引数を使⽤して、既存のフィールドとの名前の衝突を避け
るために追加されたフィールド名に接頭辞を追加できます。prefix=iploc_を指定すると、イベントに追加されたフィー
ルド名はiploc_City、iploc_County、iploc_lat、などになります。
デフォルト :NULL/空の⽂字列

使⽤法
iplocationコマンドは、分散可能ストリーミングコマンドです。「コマンドタイプ」を参照してください。

SplunkソフトウェアにはGeoLite2-City.mmdbデータベースファイルのコピーが同梱されます。このファイル
は$SPLUNK_HOME/share/ディレクトリにあります。

MMDBファイルの更新

Splunkソフトウェアに同梱されている.mmdbファイルのバージョンを、ファイルの有料バージョンのコピー、またはファイ

253
ルの無料バージョンの⽉次更新と交換できます。
1. Http://dev.maxmind.com/geoip/geoip2/geolite2/から、GeoLite2 Cityデータベースファイルのバイナリzipバー
ジョンをダウンロードします。
2. ファイルをSplunk Enterpriseインスタンスのサーチヘッドにコピーします。
3. Gizippedファイルを展開します。
4. 実⾏中のリアルタイムサーチをすべて停⽌します。
5. GeoLite2-City.mmdbファイルを$SPLUNK_HOME/share/ディレクトリにコピーしてそこにあるファイルを上書きします。
6. リアルタイムサーチを再起動します。

Splunkソフトウェアのアップグレードによる影響

Splunkプラットフォームをアップグレードすると、shareディレクトリにあるGeoLite2-City.mmdbファイルは、Splunkソフト
ウェアに同梱されているファイルのバージョンに置換されます。MMDBファイルを異なるパスに保存することもできます。

MMDBファイルを異なるパスに保存する

GeoLite2-City.mmdbファイルをご⾃⾝で更新したい場合は、たとえばファイルの有料バージョンを使⽤している場合などは、
MMDBファイルを別のパスに保管します。Splunkソフトウェアがファイルにアクセスするために使⽤されるパスは更新する
必要があります。
前提条件
システム管理者など、ファイルシステムへのアクセス権を持つユーザーだけがlimits.confファイルでMMDBファイルへ
の異なるパスを指定できます。
『管理』マニュアルの「設定ファイルの編集⽅法」の⼿順を確認してください。
同名の設定ファイルを、default、local、およびappディレクトリに保管できます。『管理』マニュアルの「変更した
設定ファイルの保管場所」を参照してください。
defaultディレクトリにある設定ファイルは、決して変更もコピーもしないでください。defaultディレクトリ内のファイル
は、そのまま保持して元の位置にある必要があります。変更は、localディレクトリで⾏ってください。

Splunk Cloudを使⽤している場合は、MMDBファイルはSplunkのバージョンをアップグレードした場合にのみ提供されま
す。この件に関するお問い合わせまたはリクエストについては、サポートチケットを申請してください。
⼿順

1. サーチAppのローカルファイルlimits.confを開きます。たとえば、$SPLUNK_HOME/etc/system/localです。
2. [iplocation]スタンザを追加します。
3. db_path設定を追加しGeoLite2-City.mmdbファイルへの絶対パスを指定します。db_path設定は$SPLUNK_HOMEなどの標準
Splunk環境変数をサポートしません。
例:db_path = /Applications/Splunk/mmdb/GeoLite2-City.mmdbはmmdbと呼ばれる新規ディレクトリを指定します。
4. MMDBファイルのコピーが../Applications/Splunk/mmdb/ディレクトリに保管されていることを確認します。
5. MMDBファイルのパスを編集するため、Splunkサーバーの再起動が必要です。

MMDBファイルを異なる名前で保存する

あるいは、更新したMMDBをshareディレクトリに違う名前で追加し、その名前をdb_path設定で指定できます。たとえ
ば、db_path = /Applications/Splunk/share/GeoLite2-City_paid.mmdbです。

MMDBファイルと分散デプロイ

iplocationコマンドは分散可能ストリーミングコマンド であり、インデクサーで処理できます。shareディレクトリはナレッ
ジバンドル の⼀部ではありません。MMDBファイルをshareディレクトリで更新する場合、更新済ファイルは分散デプロイの
インデクサーに⾃動的に送信されません。MMDBファイルをインデクサーに追加するには、ファイルをインデクサーにプッ
シュするために通常使⽤するツールを使⽤します。

1.W ebアクセスイベントに場所情報を追加する

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏するときは、時間範囲として[全時間] を使⽤します。

Webアクセスイベントに場所情報を追加します。デフォルトでは、iplocationコマンドはCity、Country、lat、lon、およ
びRegionフィールドを結果に追加します。

sourcetype=access_* | iplocation clientip

254
2.クライアントエラーをサーチして最初の20件の結果を返す

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏するときは、時間範囲として[全時間] を使⽤します。

Webアクセスイベントでクライアントエラーをサーチして最初の20件の結果のみを返します。場所情報を追加して、各クラ
イアントエラーに対するIPアドレス、都市、および国のテーブルを返します。

sourcetype=access_* status>=400 | head 20 | iplocation clientip | table clientip, status, City, Country

結果は、以下のような内容で[統計]タブに表⽰されます。

client ip st at us Cit y Co unt ry


182.236.164.11 408 Zhengzhou China

198.35.1.75 500 Princeton 合衆国


198.35.1.75 404 Princeton 合衆国

198.35.1.75 406 Princeton 合衆国


198.35.1.75 500 Princeton 合衆国
221.204.246.72 503 Taiyuan China

1.192.86.205 503 Amesbury 合衆国


91.205.189.15 406

216.221.226.11 505 Redwood City 合衆国


216.221.226.11 404 Redwood City 合衆国
195.2.240.99 400 Russia

3.iplocat ionコマンドで追加されたフィールドに接頭辞を付ける

iplocationコマンドで追加されたフィールドにiplo c_ という接頭辞を付けます。GeoLite2-City.mmdbデータベースファイルのす
べてのフィールドを結果に追加します。

sourcetype = access_* | iplocation prefix=iploc_ allfields=true clientip | fields iploc_*

4.IPアドレスを使⽤したコロプレスマップの⽣成
255
iplocationコマンドを使⽤して、データから次のようなコロプレスマップを⽣成します。『ダッシュボードと視覚エフェク
ト』の「IPアドレスを使⽤したコロプレスマップの⽣成」を参照してください。

join
説明
joinコマンドを使って、サブサーチの結果をメインサーチの結果に組み合わせます。それぞれの結果セットには、1つ以上の
共通するフィールドが必要です。また、selfjoinコマンドを使って結果セット⾃体に組み合わせることもできます。

SQLを理解していてSPLを初めて使う場合は、「SQLユーザー向けのSplunk SPL」を参照してください。

その他のコマンド
柔軟性およびパフォーマンスのため、結合意味が不要な場合は、以下のコマンドの1つの使⽤を検討します。これらのコマン
ドは、時間と地域、場所、トランザクション、サブサーチ、フィールドルックアップ、および結合を使ったイベントのグ
ループ化やイベントの相関を提供します。

コマンド 使⽤事例
append サブサーチの結果を現在のサーチの結果に追加します。ここでは両⽅の結果のイベントが保持されます。
履歴データだけで使⽤します。リアルタイムのサーチで使⽤される場合、appendコマンドは正しい結果を⽣成しません。
appendを使ってイベントを組み合わせる場合は、statsコマンドを活⽤してイベントをグループ化します。appendコマンドを
使った後は、transactionコマンドを使⽤できません。

appendcols サブサーチ の結果フィールドを⼊⼒のサーチ結果フィールドに追加します。最初のサブサーチの結果は最初のメインサーチの結果に連


結され、2番⽬のサブサーチの結果は2番⽬のメインサーチの結果に連結されます。以降同様にして連結されます。

lookup この⽅法は、結果セットまたはソースファイルのいずれかが静的である場合、もしくはまれにしか変更されない場合に使⽤します。(外
部システムからのCSVファイルなど)。
ルックアップをサブサーチとすることはできません。

search もっとも単純なケースでは、OR演算⼦を使ってソースだけをサーチし、statsまたはtransactionコマンドを使ってイベントのグルー
プ化が⾏われます。

stats イベントをフィールドごとにグループ化し、イベントで統計関数を使⽤する場合。たとえば、ホスト名ごとにイベントの平均期間を特
定する場合。
statsを使⽤するには、フィールドに⼀意の識別⼦が必要です。
イベントのrawデータを表⽰するには、代わりにtransactionコマンドを使⽤します。

transaction transactionは、以下の状況で使⽤します。

if、case、matchなどの条件付きの式とともにevalコマンドを使ってイベントをでグループ化する場合。
イベントを、IDやIPアドレスといったリサイクルフィールドの値を使って分類する場合。
イベントの開始時間や終了時間などのパターンを使ってイベントをグループ化する場合。
⼀定の期間を超えるグループを分離する場合。たとえば、トランザクションがメッセージによって明⽰的に終了されず、トラン
ザクション開始からの時間の上限を設定したい場合。
グループ化されたイベントのrawデータを表⽰する場合。

256
joinを使⽤するタイミングについては、『サーチ』マニュアルの「イベントのグループ化と相関について」にあるフロー
チャートを参照してください。

構⽂
join [ join-options...] [ field-list ] subsearch

必須引数

subsearch
構⽂ :"[" subsearch "]"
説明 :結合するイベントのソースを指定するセカンダリサーチです。サブサーチは⾓括弧で囲む必要があります。サブ
サーチの結果が利⽤可能なメモリー容量を超えないようにしてください。
joinコマンドのサブサーチに対する制限は、limits.conf.specファイルに指定されます。制限としては、結合できるサブ
サーチの最⼤数、サブサーチのサーチ時間の上限、サブサーチが完全に終了するまでの待機最⼤時間などが挙げられま
す。サブサーチについては、『サーチ』マニュアルを参照してください。

省略可能な引数

field-list
構⽂ :<field>, <field>, ...
説明 :joinで使⽤するフィールドを指定します。フィールドが指定されない場合、両⽅の結果セットに共通するすべて
のフィールドが使⽤されます。
フィールドの名前は⼤⽂字と⼩⽂字も⼀致しなければなりません。product_idとproduct_IDは結合できません。メイン
サーチのフィールドと⼀致させるには、サブサーチでフィールドの⼤⽂字、⼩⽂字を変更する必要があります。
join-options
構⽂ :type=(inner | outer | left) | usetime=<bool> | earlier=<bool> | overwrite=<bool> | max=<int>
説明 :joinコマンドのオプション。left outer joinを指定するには、outerまたはleftのいずれかを使⽤します。

jo in-o p tio ns引数の説明

type
構⽂ :type=inner | outer | left
説明 :実⾏する結合の種類を指定します。inner joinとleft (またはouter) joinの違いは、サブサーチのイベントと⼀致
しないメインサーチのイベントが処理される⽅法です。inner joinでもleft joinでも、⼀致するイベントは結合されま
す。inner joinの結果には、サブサーチで⼀致がないメインサーチのイベントは含まれません。left (またはouter) joinの
結果には、メインサーチのすべてのイベントのほか、⼀致するフィールド値があるサブサーチでのイベントの値が含ま
れます。
デフォルト :inner

joinに含められるデータの例。

usetime
構⽂ :usetime=<bool>
説明 :サブサーチの結果で、時間によって照合を制限するかどうかを⽰す論理値。earlierオプションとともに使⽤し
て、サブサーチの結果をメインサーチの結果よりも前、または後の照合だけに制限します。
デフォルト :false

earlier
構⽂ :earlier=<bool>
説明 :usetime=trueとearlier=trueが設定されている場合、メインサーチの結果は、それより前のサブサーチの結果だけ
と照合されます。earlier=falseの場合は、メインサーチの結果がそれより後のサブサーチの結果だけと照合されます。
同じ秒に発⽣した結果は、どちらの値でも除外されません。
デフォルト :true

overwrite

257
構⽂ :overwrite=<bool>
説明 :フィールド名が同じ場合、サブサーチの結果フィールドでメインサーチの結果フィールドを上書きするかどうか
を⽰します。
デフォルト :true

max
構⽂ :max=<int>
説明 :各メインサーチの結果に結合できるサブサーチの結果の最⼤数を指定します。max=0に設定した場合、制限はあり
ません。
デフォルト :1

使⽤法
joinコマンドは、結合する⼀連のフィールドが定義されている場合の集中ストリーミングコマンドです。「コマンドタイプ」
を参照してください。

joinコマンドは、たとえば50,000⾏以下など、サブサーチの結果が⽐較的⼩さい場合に使⽤します。このコマンドのパ
フォーマンスおよびリソース消費の影響を最⼩限にするために、Splunkソフトウェアはサブサーチにデフォルトの制限を課
しています。これらの制限については、構⽂のサブサーチのセクションを参照してください。

1対多数と多数体多数の関係

1対多数、多数対1、または多数対多数の関係との⼀致結果を返すには、join構⽂にmax引数を含め、値を0に設定します。デ
フォルトのmax=1では、サブサーチは最初の結果のみを返します。この値を⼤きくするか、または無制限を意味する0に設定す
ると、サブサーチは複数の結果を返します。


例1

メインサーチの結果をサブサーチsearch vendorsの結果と組み合わせます。結果セットは、両⽅のソースに共通す
るproduct_idフィールドで結合されます。

... | join product_id [search vendors]

例2

ソースのフィールド名が⼀致しない場合、サブサーチの結果セットでフィールド名を変更できます。メインサーチのフィー
ルドはproduct_idです。サブサーチのフィールドはpidです。

注意 :フィールドの名前は⼤⽂字、⼩⽂字も⼀致しなければなりません。product_idとproduct_IDは結合できません。

... | join product_id [search vendors | rename pid AS product_id]

例3

デフォルトでは、メインサーチの⾏に⼀致するサブサーチの最初の⾏のみが返されます。⼀致したすべてのサブサーチの⾏
を返すには、max=<int>引数で値を0に設定します。この引数では、⼀致するサブサーチの⾏とそれに対応するメインサーチの
⾏が結合されます。
... | join product_id max=0 [search vendors]

例4

分散管理コンソールのダッシュボードとアラートには、Splunkのデプロイに関するパフォーマンス情報が表⽰されます。リ
ソースの利⽤:インスタンス のダッシュボードにはマシン、コア数、物理メモリー容量、OS、CPUのアーキテクチャーを
⽰す表があります。

テーブルに情報を表⽰するには、以下のサーチを使⽤します。このサーチにはjoinコマンドが含まれます。サーチでは
dmc_assetsテーブルの情報を使⽤して、インスタンス名とマシン名が検索されます。次に、serverNameフィールドを使い、
情報を/services/server/info RESTエンドポイントからの情報と結合します。/services/server/infoはSplunk REST APIエンド
ポイントへのURIパスで、マシンのハードウェアやOSに関する情報を提供します。サーチの$splunk_server$部分は、トークン
変数です。

| inputlookup dmc_assets
| search serverName = $splunk_server$
| stats first(serverName) AS serverName, first(host) AS host, first(machine) AS machine
| join type=left serverName

258
[ | rest splunk_server=$splunk_server$ /services/server/info
| fields serverName, numberOfCores, physicalMemoryMB, os_name, cpu_arch]
| fields machine numberOfCores physicalMemoryMB os_name cpu_arch
| rename machine AS Machine, numberOfCores AS "Number of Cores",
physicalMemoryMB AS "Physical Memory Capacity (MB)", os_name AS "Operating System",
cpu_arch AS "CPU Architecture"

関連項⽬
selfjoin、append、set、appendcols

kmea ns
説明
平均値を使って各クラスターを定義し、イベントを、kクラスターへパーティション分割します。各イベントは最寄りの平均
値を使ってクラスターに所属しています。指定したフィールドのリストに対して、K-Meansクラスタリングを実施します。
フィールドが指定されていない場合は、すべての数値フィールドに対してクラスタリングを実施します。同じクラスター内
のイベントが隣同⼠になるように移動されます。オプションとして、各イベントのクラスター番号を表⽰できます。

構⽂
kmeans [ kmeans-options...] [ field-list ]

必須引数

無し。

省略可能な引数

field-list
構⽂ :<field> ...
説明 :joinで使⽤する抽出フィールドを含む、カンマ区切りのリストを指定します。
デフォルト :フィールドが指定されていない場合、両⽅の結果セットに共通のすべての数値フィールドが使⽤されま
す。数値以外のフィールドをもつイベントはスキップされます。

kmeans-options
構⽂ :<reps> | <iters> | <t> | <k> | <cnumfield> | <distype> | <showcentroid>
説明 :kmeansコマンドのオプションです。

km eansオプション

reps
構⽂ :reps=<int>
説明 :無作為の起動クラスターを使って、kmeansを繰り返す回数を指定します。
デフォルト :10

iters
構⽂ :maxiters=<int>
説明 :収束の失敗までに許可されている最⼤反復数を指定します。
デフォルト :10000
t
構⽂ :t=<num>
説明 :アルゴリズム収束許容範囲を指定します。
デフォルト :0
k
構⽂ :k=<int> | <int>-<int>
説明 :スカラー整数の値や整数の範囲として指定します。単⼀の数字として指定した場合、使⽤するクラスター数を⽰
します。これにより、クラスターラベルを付加したイベントが⽣成されます。範囲を指定した場合、範囲内の各
clustercountsに対してクラスター化が⾏われ、結果のサマリーが⽣成されます。これらの結果はクラスターのサイズ
を表しています。また、distortionフィールドは、データがそれらの選択されたクラスターにどのくらい適合している
のかを表します。値は1より⼤きく、maxkvalue未満でなければなりません(「制限事項」を参照)。
デフォルト :k=2
cnumfield
構⽂ :cfield=<field>
説明 :各イベントのクラスター番号で結果に注釈を付けるフィールド名を指定します。
デフォルト :CLUSTERNUM
distype
259
distype
構⽂ :dt= ( l1 | l1norm | cityblock | cb ) | ( l2 | l2norm | sq | sqeuclidean ) | ( cos | cosine )
説明 :距離測定基準を指定します。l1、l1norm、およびcb距離メトリックスはcityblockの同義語です。l2、l2norm、およ
びsq距離メトリックスはsqeuclideanまたはsqEuclideanの同義語です。cos距離メトリックスはcosineの同義語です。
デフォルト :sqeucildean

showcentroid
構⽂ :showcentroid= true | false
説明 :サーチ結果にセントロイドを表⽰するかどうかを指定します。
デフォルト :真(True)

使⽤法

制限事項

値を収集するクラスター数kに、maxkvalueを超える値を指定することはできません。maxkvalueは、limits.confファイルの
[kmeans]スタンザで指定します。maxkvalueのデフォルトは1000です。

kオプションに範囲が指定されている場合、クラスターカウントの始めと終わりの距離の合計は、maxkrangeを超えることは
できません。maxkrangeは、limits.confファイルの[kmeans]スタンザで指定します。maxkrangeのデフォルトは100です。

上記の制限は、計算処理のコストが不合理に⾼くなることを回避する⽬的で設定されています。

アルゴリズムによってクラスター化される値の合計(通常は⼊⼒結果数)はlimits.confの[kmeans]スタンザにあるmaxdatapointsパ
ラメーターにより制限されます。実⾏時にこの制限を超えた場合、Splunk Webに警告メッセージが表⽰されます。この制限
のデフォルト値は100000000です。maxdatapointsの制限は、メモリーの⼤幅な消費を避けるために設定されています。


例1:「date_hour」と「date_minute」のフィールドの値に基づいて、サーチ結果を4つのクラスターにグループ化する。
... | kmeans k=4 date_hour date_minute

例2:数値フィールドの値に基づいて、結果を2つのクラスターにグループ化する。
... | kmeans

関連項⽬
anomalies、anomalousvalue、cluster、outlier

kv for m
説明
値の抽出⽅法を記述したフォームテンプレートに基づいて、イベントからキー/値のペアを抽出します。

構⽂
kvform [form=<string>] [field=<field>]

省略可能な引数

form
構⽂ :form=<string>
説明 :$SPLUNK_HOME/etc/apps/*/forms/ディレクトリにある.formファイルを指定します。

field
構⽂: field=<field_name>
説明: フィールド名を使⽤してそのフィールド名のフィールド値に対応する.formファイルをルックアップします。たと
えば、Splunk導⼊環境はsplunkdとmongodソースタイプを使⽤しています。field=sourcetypeを指定すると、kvformコマン
ドは$SPLUNK_HOME/etc/apps/*/forms/ディレクトリでsplunkd.formおよびmongod.formを探します。
デフォルト :sourcetype

使⽤法
kvformコマンドを使⽤するには、以下が必要です:

適切なアプリケーションパスにformsディレクトリを作成します。たとえば、$SPLUNK_HOME/etc/apps/<app_name>/formsで
す。
260
.formファイルを作成しそのファイルをformsディレクトリに追加します。

Splunk Cloudを使⽤していてファイルからインストールしたい場合は、サポートチケットを申請します。

.F orm ファイルのフォーマット

基本的に.formファイルは、フォームのすべての静的部分のテキストファイルです。また、transforms.confファイルにあるタ
イプの正規表現に対して、各所から名前付き参照が⾏われる場合もあります。

.formファイルの例を以下に⽰します。

Students Name: [[string:student_name]]


Age: [[int:age]] Zip: [[int:zip]]

フォームの指定

form引数が指定されている場合、kvformコマンドはSplunk設定formsディレクトリにある<form_name>.formファイルを使⽤しま
す。たとえば、form=sales_orderの場合、kvformコマンドはすべてのAppに対して$SPLUNK_HOME/etc/apps/<app_name>/forms内
のsales_order.formファイルを検索します。処理されるすべてのイベントが、このフォームと照合され、値の抽出が試⾏され
ます。

フィールドの指定

field引数を指定すると、kvformコマンドはそのフィールドの値に対応するformsディレクトリにあるフォームを検索します。
たとえば、field=error_codeを指定して、イベントにフィールド値error_code=404がある場合は、コマンド
は$SPLUNK_HOME/etc/apps/<app_name>/formsディレクトリで404.formと呼ばれるフォームを検索します。

デフォルト値

formまたはfield引数が指定されていない場合、kvformコマンドはfield引数のデフォルト値であるsourcetypeを使⽤しま
す。kvformコマンドは<sourcetype_value>.formファイルを検索して値を抽出します。


1.特定のフォームを使⽤した値の抽出

特定のフォームを使⽤して値を抽出します。

... | kvform form=sales_order

2.フィールド名を使⽤した値の抽出

field=sourcetypeを指定してsplunkd.formおよびmongod.formなどのフォームから値を抽出します。ソースタイプのフォームがあ
る場合、値はそのフォームから抽出されます。ソースタイプの1つがaccess_combinedであるがaccess_combined.formファイルがな
い場合、ソースタイプは無視されます。
... | kvform field=sourcetype

3.イベントフィールドを使⽤した値の抽出

... | kvform field=eventtype

関連項⽬
extract、multikv、rex、xmlkv

l oa djob
説明
前に完了したサーチジョブのイベントまたは結果を読み込みます。読み込む成果物は、サーチジョブID <sid>またはスケ
ジュールサーチ名および現在のサーチの時間範囲で判断されます。保存済みサーチ名が指定されており、その範囲内に複数
の成果物が存在している場合は、最新の成果物が読み込まれます。
リアルタイムサーチまたはアドホックサーチでは、loadjobコマンドを実⾏できません。

261
構⽂
太字 は必須構⽂です。

| lo adjo b
(<sid> | <savedsearch>)
[<result-event>]
[<delegate>]
[<artifact_offset>]
[<ignore_running>]

必須引数

sidまたはsavedsearchのどちらかを指定する必要があります。

sid
構⽂ :<string>
説明: 成果物を読み込むジョブのサーチID。例:1233886270.2。sidは、ジョブ調査を使⽤またはaddinfoコマンドを使⽤
して特定できます。
savedsearch
構⽂ :savedsearch="<user-string>:<app-string>:<search-name-string>"
説明 :成果物がロードされる必要のある保存済みサーチの⼀意の識別⼦です。保存済みサーチ
は、savedsearch="admin:search:my Saved Search"など、{user, app, savedsearch name}トリプレットにより⼀意に識別さ
れます。ワイルドカードまたはすべて⼀致を指定する⽅法はありません。トリプレットの構成要素をすべて指定する必
要があります。

省略可能な引数

result-event
構⽂ :events=<bool>
説明 :events=trueはイベントをロードし、events=falseは結果をロードします。
デフォルト :偽(False)
delegate
構⽂ :job_delegate=<string>
説明: 保存済みサーチを指定した場合、このオプションで特定のユーザーが開始したジョブを選択できます。スケ
ジュールされたジョブは、スケジューラーにより実⾏されます。ダッシュボード埋め込みサーチは、保存済みサーチ
のdispatchAsパラメーターで実⾏されます(⼀般的にはサーチの所有者)。
デフォルト :scheduler

artifact_offset
構⽂ :artifact_offset=<int>
説明 :⼀致する最新の結果以外の、過去のサーチ結果を選択します。たとえば、artifact_offset=1の場合、2番⽬に新し
い過去のサーチ結果が使⽤されます。artifact_offset=2の場合、3番⽬に新しい過去のサーチ結果が使⽤されま
す。artifact_offset=0の場合は、最新のものを選択します。利⽤可能なすべての過去のサーチ結果を選択する値を指定
すると、エラーになります。
デフォルト :0
ignore_running
構⽂ :ignore_running=<bool>
説明 :まだ実⾏中のサーチの過去のサーチ結果はスキップされます。
デフォルト :真(True)

使⽤法
loadjobコマンドはイベント⽣成コマンドです。「コマンドタイプ」を参照してください。

⽣成コマンドの先頭にはパイプ⽂字が付けられ、サーチの最初のコマンドである必要があります。
loadjobコマンドはいろいろな⽬的で使⽤します。最も役⽴つ例としては、統計情報を算出する⽐較的コストの⾼いサーチの
実⾏です。loadjobサーチで集計、分類、フィールド選択、およびグラフを作成表⽰する他の操作の統計情報を表⽰すること
ができます。
サーチジョブが完了し、結果がキャッシュされたら、このコマンドを使って結果にアクセスまたはロードすることができま
す。

サーチヘッドクラスター

サーチヘッドクラスターは、スケジュールされた保存済みサーチに対してのみloadjobコマンドを実⾏できます。サーチヘッ
ドクラスターは複製した結果や成果物に対してサーチを実⾏します。

262
成果物の複製についての詳細は、『分散サーチ』マニュアルの「サーチヘッドクラスタリングのアーキテクチャー」を参照
してください。


1.保存済みサーチの結果を読み込む

ユーザーadminが所有する「search」App内の保存済みサーチMySavedSearchの最新のスケジュールされた実⾏結果を読み込み
ます。
| loadjob savedsearch="admin:search:MySavedSearch"

2.特定のサーチジョブの結果を読み込む

IDが1233886270.2のサーチジョブが⽣成したイベントを読み込みます。
| loadjob 1233886270.2 events=true

関連項⽬
コマンド
addinfo
inputcsv
savedsearch
関連情報
サーチジョブの管理

l oca l iz e
説明
localizeコマンドは、時間的に連続したイベント領域を⽰す結果を⽣成します。イベント領域とは、連続したイベント
がmaxpause以下の時間値で分割されている期間を意味します。⾒つかった領域は、timeafter引数とtimebefore引数で拡張できま
す。
localizeコマンドによって⾒つかった領域は、mapコマンドに与えられます。mapコマンドは毎回異なる領域を使⽤します。

構⽂
localize [<maxpause>] [<timeafter>] [<timebefore>]

省略可能な引数

maxpause
構⽂ :maxpause=<int>(s|m|h|d)
説明 :連続する時間領域内の2つの連続するイベント間の最⼤時間(包含)を指定します。
デフォルト :1m
timeafter
構⽂ :timeafter=<int>(s|m|h|d)
説明 :出⼒のendtimeフィールドに追加する時間(時間領域を時間の前⽅向に拡張)を指定します。
デフォルト :30s
timebefore
構⽂ :timebefore=<int>(s|m|h|d)
説明 :出⼒のstarttimeフィールドから差し引く時間を指定します(時間領域を時間の後⽅向に拡張)。
デフォルト :30s

使⽤法
イベント範囲の拡張

領域内の最後のイベント後または最初のイベント前のイベント範囲を拡張できます。この拡張は任意に⾏われ、値
がmaxpauseを超えた場合は領域内で重複が発⽣する恐れがあります。

イベント領域の順序

領域はサーチの順番に返されます。また、履歴サーチでは時間の降順、リアルタイムサーチではデータの到着順となりま
す。各領域の時間は、初期の拡張前の開始時刻です。
263
す。各領域の時間は、初期の拡張前の開始時刻です。

localiz eコマンドで返される他の情報

localizeコマンドは以下もレポートします。

範囲内のイベント数
範囲の期間(秒)
「number of events in range /<範囲の期間 - events per second」として定義される領域の密度。


1.前の各結果の時間範囲に対して⽤語「failure」をサーチする

... | localize maxpause=5m | map search="search failure starttimeu=$starttime$ endtimeu=$endtime$"

2:「エラー」が発⽣した周囲に適切な領域を⾒つける

「error」をサーチしてlocalizeコマンドを呼び出し、エラーの発⽣に適切な領域を⾒つけ、これらをmapコマンド内のサーチ
に渡します。潜在するトランザクションを検索するため、各反復は特定の時間範囲で⾏われます。

error | localize | map search="search starttimeu::$starttime$ endtimeu::$endtime$ | transaction uid,qid maxspan=1h"

関連項⽬
map、transaction

l oca l op
説明
リモートピアー上での後続のコマンドの実⾏を防⽌します。ここでは、後続のコマンドをローカルで実⾏するようサーチで
指定します。
localopコマンドは、後続のコマンドがmapreduceプロセスのreduceステップの⼀部となるように強制します。

構⽂
localop


例1:

この例では、iplocationコマンドがリモートピアーで実⾏されることはありません。単語FOOとBARに対する初期サーチで発
⽣するリモートピアーからのすべてのイベントは、サーチヘッドに転送されます。サーチヘッドはiplocationが実⾏される場
所にあります。
FOO BAR | localop | iplocation clientip

l ooku p
説明
lookupコマンドを使ってフィールド値のルックアップを実⾏します。

定義できるルックアップの種類についての情報は、『ナレッジ管理』マニュアルの「ルックアップについて」をご覧くださ
い。

構⽂
太字 は必須構⽂です。

lo o kup
[local=<bool>]
[update=<bool>]
<lo o kup-t able-nam e>
( <lookup-field> [AS <event-field>] )...
[ OUTPUT | OUTPUTNEW (<lookup-destfield> [AS <event-destfield>] )... ]
264
注意 :lookupコマンドは、複数のルックアップのほか、イベントのfieldsやdestfieldsを受け付けます。例:

...| lookup <lookup-table-name><lookup-field1> AS <event-field1>, <lookup-field2> AS <event-field2> OUTPUTNEW <lookup-


destfield1> AS <event-destfield1>, <lookup-destfield2> AS <event-destfield2>

必須引数

<lookup-table-name>
構⽂ :<string>
説明 :transforms.confファイルのスタンザ名を参照します。このスタンザは、ルックアップテーブルファイルの場所を
⽰します。

省略可能な引数

local
構⽂ :local=<bool>
説明 :local=trueの場合、リモートピアーではなく、サーチヘッド上でのルックアップが強制されます。
デフォルト :偽(False)

update
構⽂ :update=<bool>
説明 :サーチの実⾏中にディスク上のルックアップテーブルが変更された場合、リアルタイムサーチにその変更内容が
⾃動的に反映されることはありません。反映させるには、update=trueを指定します。これはリアルタイムサーチ以外の
サーチには当てはまりません。これでは、暗黙的にlocal=trueを意味しています。
デフォルト :偽(False)

<lookup-field>
構⽂ :<string>
説明 :イベントと照合する、ルックアップテーブル内のフィールドを参照します。複数の<lookup-field>値を指定でき
ます。

<event-field>
構⽂ :<string>
説明 :ルックアップテーブルでの照合のための値を取得するイベントのフィールドを参照します。複数の<event-
field>値を指定できます。
デフォルト :<event-field>の値。
<lookup-destfield>
構⽂ :<string>
説明 :イベントにコピーするルックアップテーブルのフィールドを参照します。複数の<lookup-destfield>値を指定で
きます。
<event-destfield>
構⽂ :<string>
説明 :イベントのフィールド。複数の<event-destfield>値を指定できます。
デフォルト :<lookup-destfield>引数の値。

使⽤法
local=falseが指定されている場合(デフォルト)、lookupコマンドは分散可能ストリーミングコマンドになります。「コマンド
タイプ」を参照してください。

lookupコマンドを使⽤する場合、OUTPUTまたはOUTPUTNEW句を指定しないと、ルックアップテーブル内の⼀致フィール
ドではないすべてのフィールドが出⼒フィールドとして使⽤されます。OUTPUT句を指定した場合、出⼒ルックアップ
フィールドが既存のフィールドを上書きします。OUTPUTNEW句を指定した場合、出⼒フィールドがすでに存在しているイ
ベントへのルックアップは実⾏されません。

ルックアップサーチの最適化

lookupコマンドをt ransfo rm ingコマンド と同じパイプラインで使⽤する場合、変換コマンドの後までルックアップ対象


フィールドを保持できるならば、変換コマンドの後にルックアップを⾏ってください。以下に例を⽰します。
sourcetype=access_* | stats count by status | lookup status_desc status OUTPUT description

以下のようには指定しないでください。

sourcetype=access_* | lookup status_desc status OUTPUT description | stats count by description

最初のサーチのルックアップでは、すべてのWebアクセスイベントではなく、statsコマンドの結果のみを照合すればよいの
で、処理が⾼速に⾏われます。

265
基本的な例
1.ユーザーを検索し、ユーザーが所属する対応するグループを返します。

transforms.confファイルのusertogroupというスタンザで指定されているルックアップテーブルがあるとします。このルック
アップテーブルには、最低でも2つのフィールド「user」および「group」が存在しています。イベントにはlocal_userという
フィールドがあります。以下のサーチは、各イベントについてlocal_userフィールドの値がルックアップテーブル
のuserフィールドで対応する値を持つかどうかをチェックします。⼀致するエントリについては、ルックアップテーブル内の
フィールドgroupの値がイベントのuser_groupフィールドに書き込まれます。

... | lookup usertogroup user as local_user OUTPUT group as user_group

その他の例:
2.価格とベンダーの情報を検索し、ベンダーが販売する各製品の数を返します。

この例では、「サーチチュートリアル」のtutorialdata.zipファイルを使⽤しています。このファイルをダウンロードし、指⽰に従ってSplunk導⼊環境
にチュートリアルデータをアップロード できます。この例では、prices.csvファイルとvendors.csvファイルも使⽤します。Splunk導⼊環境でこの
例を使⽤するには、これらのCSVファイルをダウンロードし、prices.csvおよびvendors.csvファイルに対して、「サーチチュートリアル」の
「フィールドルックアップの使⽤」セクションに記載されている⼿順を完了する必要があります。vendors.csvファイルのルックアップ定義を作成す
るときは、ルックアップ の名前をvendors_lookupとします。チュートリアルにある、ルックアップを⾃動化する⼿順はスキップすることができま
す。

この例では、各ベンダーが販売する各製品の数を計算します。
prices.csvファイルは製品名、値段、コードを含みます。例:

製品ID pro duct _nam e 値段 sale_price コード

DB-SG-G01 Mediocre Kingdoms 24.99 19.99 A

DC-SG-G02 Dream Crusher 39.99 24.99 B

FS-SG-G03 Final Sequel 24.99 16.99 C

WC-SH-G04 World of Cheese 24.99 19.99 D

vendors.csvファイルには、ベンダー名、都市名、IDなどのベンダー情報が含まれています。例:

Vendo r Vendo r 重
Vendo r Vendo rCit y Vendo rID Vendo rLat it ude Vendo rLo ngit ude St at ePro vince Co unt ry 量
Anchorage
Anchorage 1001 61.17440033 -149.9960022 アラスカ 合衆国 3
Gaming

Games of ソルトレイクシ
1002 40.78839874 -111.9779968 ユタ 合衆国 3
Salt Lake ティー

New Jack
ニューヨーク 1003 40.63980103 -73.77890015 ニューヨーク 合衆国 4
Games

サンフランシス
Seals Gaming 1004 37.61899948 -122.375 カリフォルニア 合衆国 5

サーチでは、tutorialdata.zipファイルの⼀部であるvendor_sales.logファイルに対してクエリーを実⾏しま
す。vendor_sales.logファイルには、VendorID、Code、およびAcctIDフィールドが含まれています。例:

vendo r_sales.lo gファイルのエントリ

[13/Mar/2018:18:24:02] VendorID=5036 Code=B AcctID=6024298300471575

[13/Mar/2018:18:23:46] VendorID=7026 Code=C AcctID=8702194102896748

[13/Mar/2018:18:23:31] VendorID=1043 Code=B AcctID=2063718909897951

[13/Mar/2018:18:22:59] VendorID=1243 Code=F AcctID=8768831614147676

次のサーチは、各ベンダーが販売した各商品の数を計算し、時間範囲としてAll timeを使⽤します。

266
sourcetype=vendor_* | stats count by Code VendorID | lookup prices_lookup Code OUTPUTNEW product_name

statsコマンドはcountをCodeおよびVendorID別に計算します。
lookupは、prices_lookupを使⽤して各イベントのCodeフィールドを照合し、製品名を返します。

サーチ結果は[ 統計] タブに表⽰されます。

vendors_lookupを使⽤することで、サーチを拡張してより多くのベンダー情報を表⽰できます。
tableコマンドを使⽤して、必要なフィールドだけを返します。この例では、product_name、VendorID、およびcountフィールド
が必要です。vendors_lookupファイルを使⽤して、各イベントのVendorIDと⼀致するvendors.csvファイル内のすべてのフィー
ルドを出⼒します。
sourcetype=vendor_* | stats count by Code VendorID | lookup prices_lookup Code OUTPUTNEW product_name | table product_name
VendorID count | lookup vendors_lookup VendorID

変更後の結果は[ 統計] タブに表⽰されます。

267
サーチ結果を展開して結果を地図に表⽰するには、geostatsコマンドを参照してください。

関連項⽬
コマンド
appendcols
inputlookup
outputlookup
関連情報
『ナレッジ管理』マニュアルの「ルックアップについて」

ma kecont inu ou s
説明
データのない期間に空のバケツを追加し、データのある期間を量⼦化することで、X軸のフィールドを数値的に連続させま
す。このX軸のフィールドは、chartとtimechartコマンドで起動できます。

構⽂
makecontinuous [<field>] <bins-options>...

必須引数

<bins-options>
データタイプ :bins | span | start-end
説明 :離散化オプション。詳細は、「Bucketingのオプション」を参照してください。

省略可能な引数

<field>
データタイプ :<field>
説明: フィールド名を指定します。

ビンのオプション

bins
268
構⽂ :bins=<int>
説明 :離散化処理でのビンの最⼤数。

span
構⽂ :<log-span> | <span-length>
説明: 時間に基づくスパンまたは対数(log)に基づくスパンを使って、各ビンのサイズを設定します。

<start-end>
構⽂ :end=<num> | start=<num>
説明 :数値ビンの最⼩/最⼤範囲を設定します。[start, end]の範囲外のデータは破棄されます。

spanオプション

<log-span>
構⽂ :[<num>]log[<num>]
説明 :対数に基づくスパンを設定します。最初の数値は係数です。2番⽬の数値が底です。最初の数値を指定する場合
は、実数>= 1.0かつ、実数<底でなければなりません。底を指定する場合、> 1.0の実数でなければなりません(厳密に1
より⼤きい)。
span-length
構⽂ :<span>[<timescale>]
説明 :時間上のスパンの幅。
<span>
構⽂ :<int>
説明 :各ビンのスパン。タイムスケールを使⽤する場合、これは時間範囲として使⽤されます。そうでない場合、これ
は絶対ビンの「⻑さ」になります。
<timescale>
構⽂ :<sec> | <min> | <hr> | <day> | <month> | <subseconds>
説明 :タイムスケールの単位。

タイムスケールの単 構⽂ 説明

s | sec | secs | second |
<sec> タイムスケール(秒)。
seconds

<min> m | min | mins | minute | minutes タイムスケール(分)。

<hr> h | hr | hrs | hour | hours タイムスケール(時)。

<day> d | day | days タイムスケール(⽇)。

<month> mon | month | months タイムスケール(⽉)。

<subseconds> us | ms | cs | ds タイムスケール(マイクロ秒(us)、ミリ秒(ms)、センチ秒(cs)、デシ秒(ds) )

使⽤法
makecontinuousコマンドは、変換コマンド です。「コマンドタイプ」を参照してください。

例1:

10分の期間で、「_time」を連続にします。
... | makecontinuous _time span=10m

関連項⽬
chart、timechart

ma kemv
説明
単純な区切り⽂字で値を分割することで、単⼀値フィールドを複数値フィールドに変換します。複数の⽂字で構成された区
切り⽂字列も使⽤できます。また、regexでもフィールドを分割できます。

makemvコマンドは内部フィールドには適⽤されません。

269
『ナレッジ管理』マニュアルの「デフォルトフィールドの使⽤」を参照してください。

構⽂
makemv [delim=<string> | tokenizer=<string>] [allowempty=<bool>] [setsv=<bool>] <field>

必須引数

field
構⽂ :<field>
説明 :フィールドの名前を指定します。

省略可能な引数

delim
構⽂ :delim=<string>
説明: 区切り⽂字として使⽤される⽂字列値。この⽂字列が現れる度にfieldにある値を分割します。
デフォルト :1つのスペース(" ")です。
tokenizer
構⽂ :tokenizer=<string>
説明 :fieldのテキストに対して繰り返し照合される、捕捉グループ付きのregexです。各⼀致に対して、最初に取得され
たグループが、新たに作成される複数値フィールドの値として使⽤されます。
allowempty
構⽂ :allowempty=<bool>
説明 :複数値フィールド内で空⽂字列値を許可するかどうかを指定します。delim=trueを使⽤する場合、区切り⽂字の
繰り返しは複数値フィールドに空⽂字列を⽣成します。たとえば、delim=","およびfield="a,,b"の場合、デフォルトで空
⽂字列に値を⽣成しません。tokenizer引数を使⽤すると、⻑さゼロの⼀致によって空⽂字列が発⽣します。デフォルト
ではどの値も発⽣しません。
デフォルト :偽(False)
setsv
構⽂ :setsv=<bool>
説明 :真(true)の場合、makemvコマンドは決定されたフィールドの値を同じフィールドに設定される単⼀の値に組み合わ
せます。(複数値と単⼀値が同じフィールドに同時に存在すると、このフラグは問題となります)。
デフォルト :偽(False)

使⽤法
makemvコマンドは、分散可能ストリーミングコマンドです。「コマンドタイプ」を参照してください。

評価機能および統計機能を複数値フィールドで使⽤するか、複数値フィールドを返すことができます。


1.カンマを使⽤したフィールド値の分割

sendmailのサーチ結果に対して、「senders」の値を複数の値に分離します。上位の値を表⽰します。

eventtype="sendmail" | makemv delim="," senders | top senders

2.コロンの区切り⽂字の使⽤と空の値の許可

「foo」の値を、複数の値に分離します。

... | makemv delim=":" allowempty=true foo

3.正規表現を使⽤した値の分割

以下のサーチでは、結果が作成されて、3つの値がmy_multivalフィールドに追加されます。makemvコマンドを使⽤して、値を
個別の⾏に配置します。
| makeresults | eval my_multival="one,two,three" | makemv tokenizer="([^,]+),?" my_multival

関連項⽬
コマンド:
mvcombine
mvexpand
270
nomv
関数:
多値評価関数
マルチ値統計およびグラフ機能
分割

ma ker esu l t s
説明
指定された数のサーチ結果を⼀時メモリー内に⽣成します。
省略可能な引数を指定しない場合、このコマンドはローカルのマシンで実⾏され、_timeフィールドだけが1つの結果を⽣成し
ます。

構⽂
太字 は必須構⽂です。

| m akeresult s
[<count>]
[<annotate>]
[<splunk-server>]
[<splunk-server-group>...]

必須引数

無し。

省略可能な引数

<count>
構⽂ :count=<num>
説明 :⽣成する結果の数です。annotate引数を指定しない場合、結果は_timeフィールドだけになります。
デフォルト :1

<annotate>
構⽂ :annotate=<bool>
説明: annotate=trueである場合、以下のテーブルで⽰すフィールドを含む結果を⽣成します。
annotate=falseの場合は、_timeフィールドのみの結果を⽣成します。
デフォルト :偽(False)
anno t at e=t rueで⽣成されたフィールド

フィールド 値

_raw 無し。

_time makeresultsコマンドを実⾏した⽇時。

ホスト 無し。

source 無し。

sourcetype 無し。

splunk_server makeresultsが実⾏されているサーバーの名前。

splunk_server_group 無し。

これらのフィールドは集計統計の計算に使⽤できます。
<splunk-server>
構⽂ :splunk_server=<string>
説明 :結果を1つの特定のサーバーに⽣成するために使⽤します。サーチヘッドを参照するには、「local」を使⽤しま
す。
Default : ローカル。使⽤法 のセクションを参照してください。
<splunk-server-group>
構⽂ :(splunk_server_group=<string>)...
説明 :結果をある特定のサーバーグループまたは複数のサーバーグループに⽣成するために使⽤しま
271
す。<splunk_server_group>は1つ以上指定できます。
デフォルト :なし。使⽤法 のセクションを参照してください。

使⽤法
makeresultsコマンドはレポート⽣成コマンドです。「コマンドタイプ」を参照してください。

⽣成コマンドの先頭にはパイプ⽂字が付けられ、サーチの最初のコマンドである必要があります。

makeresultsコマンドが作成するサーチ結果は、⼀時メモリー内に作成され、ディスクに保存されたり、インデックス化された
りすることはありません。

このコマンドをevalコマンドと⼀緒に使⽤して、evalコマンドを実⾏するための空の結果を⽣成します。例 のセクションを
参照してください。
順序に影響を受けるプロセッサーは、internal_timeフィールドがないと実⾏されません。

サーバーおよびサーバーグループを指定する

Splunk Cloudを使⽤している場合、サーバーまたはサーバーグループの引数を削除します。

Splunk Enterpriseを使⽤している場合、デフォルトで結果は元のサーチヘッドにしか⽣成されません。これはつま
りsplunk_server=localの指定と同じことです。特定のsplunk_serverまたはsplunk_server_groupを提供すると、count引数で指定し
た結果数が、指定したすべてのサーバーまたはサーバーグループで⽣成されます。
サーバーを指定すると、そのサーバーに関連したサーバーグループに関係なく、そのサーバーに対する結果が⽣成されま
す。

カウントに5を指定し、3つのサーバーを対象にすると、合計15の結果が得られます。annotate=trueの場合は、各サーバーの名
前はsplunk_serverの列に表⽰されます。この列は、各サーバーが5つの結果を⽣成したことを⽰します。

基本的な例

1.evalコマンドへの⼊⼒⽤に結果を作成する

evalコマンドを、サーチの最初のコマンドとして使⽤したいことがあります。しかし、evalコマンドは、⼊⼒にイベントが必
要です。そこで、makeresultsコマンドを使⽤してサーチの初めにダミーイベントを作成することができます。そしてサーチ内
でevalコマンドを使⽤することができます。

| makeresults | eval newfield="some value"

結果はこのようになります。

_t im e newfield
2020-01-09 14:35:58 some value

2.変更したイベント時間が相対時間より⼤きいかどうかを調べる

UNIX時間にあるscheduled_timeフィールドを含むイベントに対し、スケジュールされた時間が相対時間より⼤きいかどうかを
調べます。相対時間は、現在より1分前です。このサーチは、makeresultsコマンドで始まるサブサーチを使⽤します。

index=_internal sourcetype=scheduler ( scheduled_time > [ makeresults | eval it=relative_time(now(), "-m") | return $it ] )

その他の例

1.テスト⽤の⽇次結果を作成する

makeresultsコマンドを使⽤すると、サーチ構⽂をテストするための⼀連の結果を作成できます。たとえば、次のサーチは5件
の結果を作成します。

| makeresults count=5

結果はこのようになります。

_t im e

2020-01-09 14:35:58

272
2020-01-09 14:35:58

2020-01-09 14:35:58

2020-01-09 14:35:58

2020-01-09 14:35:58

各結果には同じタイムスタンプが付けられるため、あまり役には⽴ちません。ですが、少し追加することで、⼀意の⽇付を
作成できます。まず、streamstatsコマンドを追加して結果をカウントします。

| makeresults count=5 | streamstats count

結果はこのようになります。

_t im e co unt

2020-01-09 14:35:58 1

2020-01-09 14:35:58 2

2020-01-09 14:35:58 3

2020-01-09 14:35:58 4

2020-01-09 14:35:58 5

そのカウントを使⽤して、evalコマンドで_timeフィールドで異なる⽇付を作成できます。

| makeresults count=5 | streamstats count | eval _time=_time-(count*86400)

計算では、countフィールドの値に1⽇の秒数を掛けます。結果を元の_timeフィールドの値から引くことで、24時間前、48時
間前などの新しい⽇付を取得できます。_timeは、サーチの実⾏時に計算されるため、⽇宇付けの秒数は異なります。

結果はこのようになります。

_t im e co unt
2020-01-08 14:45:24 1

2020-01-07 14:45:24 2

2020-01-06 14:45:24 3

2020-01-05 14:45:24 4

2020-01-04 14:45:24 5

⽇付は、元の⽇付である2020-01-09から開始して5⽇戻ります。

5件以上の結果が必要な場合は、単純にmakeresultsコマンドのcount値を変更してください。

2.テスト⽤の毎時結果を作成する

テスト⽤に⼀連の⽇ではなく⼀連の時の結果を作成することもできます。evalコマンドで86400ではなく、1時間の秒数であ
る3600を使⽤します。
| makeresults count=5 | streamstats count | eval _time=_time-(count*3600)

結果はこのようになります。

_t im e co unt
2020-01-09 15:35:14 1

2020-01-09 14:35:14 2

2020-01-09 13:35:14 3

2020-01-09 12:35:14 4

273
2020-01-09 11:35:14 5

タイムスタンプの時間が1時間置きになっています。

3.⽂字列値のフィールドを追加する

フィールドに対して値のリストを指定できます。値を異なる結果に表⽰させるためには、リストを複数値フィールドにして
から、複数値リストを個別の結果に展開する必要があります。このサーチを使⽤して、buttercupと彼⼥の友⼈の結果で⽂字
列を置き換えます。
| makeresults | eval test="buttercup rarity tenderhoof dash mcintosh fleetfoot mistmane" | makemv delim=" " test | mvexpand
test

結果はこのようになります。

_t im e テスト

2020-01-09 16:35:14 buttercup

2020-01-09 16:35:14 rarity

2020-01-09 16:35:14 tenderhoof

2020-01-09 16:35:14 dash

2020-01-09 16:35:14 mcintosh

2020-01-09 16:35:14 fleetfoot

2020-01-09 16:35:14 mistmane

4.複数のフィールドでイベントセットを作成する

まず、4つのイベントのセットを作成します。イベントの1つのageフィールドにはNULL値があります。

| makeresults count=4 | streamstats count | eval age = case(count=1, 25, count=2, 39, count=3, 31, count=4, null()) | eval city
= case(count=1 OR count=3, "San Francisco", count=2 OR count=4, "Seattle")

streamstatsコマンドを使⽤してcountフィールドを作成します。streamstatsコマンドは、イベントの処理時に、各イベン
トの累積カウントを計算します。
evalコマンドを使⽤して、ageとcityという2つの新しいフィールドを作成します。evalコマンドは、countフィールドの
値を使⽤します。
case関数は、count=1, 25のように引数のペアを取ります。最初の引数は論理演算式である必要があります。式が真
(True)になると、対応する2番⽬の引数が返されます。

サーチの結果は次のようになります。

_t im e age cit y co unt

2020-02-05 18:32:07 25 サンフランシスコ 1

2020-02-05 18:32:07 39 Seattle 2

2020-02-05 18:32:07 31 サンフランシスコ 3

2020-02-05 18:32:07 Seattle 4

次の例では、eventstatsコマンドは各都市の平均年齢を計算しています。⽣成された平均はavg(age)という新しいフィールドに
保存されます。
次のサーチは前のサーチと同じですが、最後にeventstatsコマンドを追加しています。

| makeresults count=4 | streamstats count | eval age = case(count=1, 25, count=2, 39, count=3, 31, count=4, null()) | eval city
= case(count=1 OR count=3, "San Francisco", count=2 OR count=4, "Seattle") | eventstats avg(age) BY city

San Franciscoの平均年齢は28 = (25 + 31) / 2です。


Seattleでは、値を持つイベントは1つだけです。平均は39
= 39 / 1です。eventstatsコマンドは、ageの値を持たないイ
ベントも含めて、その平均をSeattleのすべてのイベントに書き込みます。

サーチの結果は次のようになります。
274
_t im e age avg(age) cit y co unt

2020-02-05 18:32:07 25 28 サンフランシスコ 1

2020-02-05 18:32:07 39 39 Seattle 2

2020-02-05 18:32:07 31 28 サンフランシスコ 3

2020-02-05 18:32:07 39 Seattle 4

5.乱数のセットでフィールドを追加する

数字のセットを使⽤して何らかのテストを⾏う必要がある場合には、2つのオプションがあります。
指定した数字のセットを持つフィールドを追加できます。前の例に⽰した、⽂字列値のセットを持つフィールドの追加
と似ています。
random関数を次のように使⽤して、ランダムに⽣成された数字のセットを持つフィールドを追加できます。

| makeresults count=5 | streamstats count | eval test=random()/random()

結果はこのようになります。

_t im e co unt テスト

2020-01-08 14:45:24 1 5.371091109260495

2020-01-07 14:45:24 2 0.4563314783228324

2020-01-06 14:45:24 3 0.804991002129475

2020-01-05 14:45:24 4 1.4946919835236068

2020-01-04 14:45:24 5 24.193952675772845

round関数を使⽤すると、数字を丸めることができます。たとえば、次のサーチは数字を⼩数第4位に丸めます。

...| eval test=round(random()/random(),4)

結果はこのようになります。

_t im e co unt テスト
2020-01-08 14:45:24 1 5.3711

2020-01-07 14:45:24 2 0.4563

2020-01-06 14:45:24 3 0.8050

2020-01-05 14:45:24 4 1.4947

2020-01-04 14:45:24 5 24.1940

関連項⽬
コマンド
gentimes

ma p
説明
mapコマンドは、各⼊⼒イベントや結果に対し、サーチを繰り返し実⾏するループ演算⼦です。保存済みサーチまたはアド
ホックサーチでmapコマンドを実⾏できます。

構⽂
太字 は必須構⽂です。
m ap
275
(<searcho pt io n> | <savedsplunko pt io n>)
[maxsearches=int]

必須引数

<searchoption>または<savedsplunkoption>のどちらかを指定する必要があります。
<savedsplunkoption>
構⽂ :<string>
説明 :各⼊⼒結果に対して実⾏する保存済みサーチ名。
デフォルト :なし。
<searchoption>
構⽂ :search="<string>"
説明 :各⼊⼒結果に対して実⾏するアドホックサーチ。例:
...| map search="search index=_internal earliest=$myearliest$ latest=$mylatest$"。
デフォルト :なし。

省略可能な引数

maxsearches
構⽂ :maxsearches=<int>
説明 :実⾏するサーチの最⼤数。指定した最⼤数より多くのサーチ結果がある場合は、メッセージが⽣成されます。
デフォルト :10

使⽤法
既知の制限事項

サーチパイプラインでは、mapコマンドをappendコマンドやappendpipeコマンドの後で使⽤することはできません。

フィールド名⽤の変数

保存済みサーチまたはリテラルサーチを使⽤する場合、mapコマンドでは⼊⼒結果内のフィールド名と照合する$variable$⽂
字列を置換することができます。たとえば$count$などの変数を持つサーチは、⼊⼒サーチ結果内のcountフィールドの値で
その⽂字列が置換されます。

mapコマンドをダイアログボックス<form>で使⽤する場合は、⼆重ドル記号($$)で変数⽂字列を指定してください。たとえ
ば、$$count$$です。「ダッシュボードとフォーム」を参照してください。

サーチIDフィールド

mapコマンドは、$
_serial_id $として提供されるサーチIDフィールドもサポートしています。サーチIDフィールドには、サー
チが実⾏されるたびに段階的に増加する番号が付けられます。つまり、最初に実⾏されるサーチの場合値は1、2番⽬のサー
チは2などのようになります。

基本的な例
1.保存済みサーチでm apコマンドを起動します。

error | localize | map mytimebased_savedsearch

2.開始および終了時間の値をマップします。

... | map search="search starttimeu::$start$ endtimeu::$end$" maxsearches=10

その他の例

1.ユーザーログインを探すためにsudoイベントを使⽤します。

この例では、sudoイベントを検索し、次にmapコマンドを使ってsudoイベントの前にログオンしたユーザーのコンピュー
ターと時間をトレースします。まず、sudoイベントを検索する以下のサーチを実⾏します。

sourcetype=syslog sudo | stats count by user host

このサーチは結果を表で返します。

User ホスト カウント

276
userA serverA 1

userB serverA 3

userA serverB 2

ユーザー名を代⼊し、これらの結果をmapコマンドに渡します。

sourcetype=syslog sudo | stats count by user host | map search="search index=ad_summary username=$user$
type_logon=ad_last_logon"

前のサーチからの3件の結果を受け取って、ad_summaryインデックスのログオンイベントをサーチします。結果が表として返さ
れます。

_t im e co m put ernam e co m put ert im e usernam e usert im e


10/12/16 8:31:35.00 AM Workstation$ 10/12/2016 8:25:42 AM userA 10/12/2016 08:31:35 AM

(この例を提供したSplunkユーザーAlacercogitatusさんに感謝の意を表明します。)

関連項⽬
コマンド
gentimes
search

mcol l ect
説明
イベントをメトリックスデータポイントに変換し、メトリックスデータポイントをサーチヘッド上のメトリックスインデッ
クスに挿⼊します。データをフォワーダーに転送する場合を除いて、mcollectが適切に機能するためには、メトリックスイン
デックスがサーチヘッド上に存在する必要があります。
データをインデクサーに転送する場合は、サーチヘッドではなくインデクサーにデータが挿⼊されます。

mcollectコマンドは、⾃分のロールにrun_mcollect権限がある場合にのみ使⽤できます。『Splunk Enterpriseのセキュリ
ティ』の「権限を持つロールのSplunkプラットフォームでの定義」を参照してください。

構⽂
太字 は必須構⽂です。
| m co llect index=<st ring>
[ file=<string> ]
[ split=<true | false | allnums> ]
[ spool=<bool> ]
[ prefix_field=<string> ]
[ host=<string> ]
[ source=<string> ]
[ sourcetype=<string> ]
[ marker=<string> ]
[ <field-list > ]

必須引数

インデックス
構⽂ :index=<string>
説明 :収集したメトリックスデータを追加するメトリックスインデックスの名前です。
field-list
構⽂ :<field>, ...
説明: ディメンションフィールドのリスト。split=trueの場合は必須。split=allnumsまたはsplit=allnumsの場合は任意。
未指定の場合(暗黙的にsplit=falseを意味します)、mcollectはmetric_name、prefix_field、およびすべての内部フィールド
を除いて、すべてのフィールドをデータポイントのディメンションとして扱います。
デフォルト :デフォルト値なし

省略可能な引数

file
構⽂ :file=<string>
277
説明 :収集したメトリックスデータを書き込みたいファイル名。spool=falseの場合にのみ該当。「file=$timestamp$」
または「file=$random$」を指定して、ファイル名にタイムスタンプまたは乱数を使⽤することができます。
デフォルト: $random$_metrics.csv

分割
構⽂: split=<true | false | allnums>
説明: mcollectがイベント内の測定値を特定する⽅法を決定します。「split引数の使⽤⽅法」を参照してください。
デフォルト :偽(False)
spool
構⽂ :spool=<bool>
説明 :真(True)に設定すると、メトリックスファイルがSplunkスプールディレクトリ($SPLUNK_HOME/var/spool/splunk)に
書き込まれ、ファイルがインデックスされます。インデックス処理が完了すると、ファイルは削除されます。偽(False)
に設定すると、ファイルは$SPLUNK_HOME/var/run/splunkディレクトリに書き込まれます。追加の⾃動化や管理が⾏われな
い限り、ファイルはこのディレクトリに残ります。
デフォルト :真(True)

prefix_field
構⽂: prefix_field=<string>
説明: split=trueの場合にのみ適⽤されます。指定した場合、このフィールドが存在しないデータポイントはすべて無
視されます。指定しなかった場合は、フィールド値にメトリックス名が接頭辞として付けられます。「プレフィックス
フィールドの設定」を参照してください。
デフォルト :デフォルト値なし

ホスト
構⽂ :host=<string>
説明 :収集したメトリックスデータに指定するホストの名前。spool=trueの場合にのみ該当。
デフォルト :デフォルト値なし
source
構⽂ :source=<string>
説明 :収集したメトリックスデータに指定するソースの名前。
デフォルト: サーチがスケジュール済みである場合はサーチ名。サーチがアドホックである場合、サーチ結果が格納さ
れるvar/spool/splunkディレクトリにファイルの名前が書き込まれます。

sourcetype
構⽂ :sourcetype=<string>
説明 :収集したメトリックスデータに指定するソースタイプの名前。Splunkプラットフォームでは、mcollect_stash (デ
フォルトのソースタイプ)でインデックスされているデータのライセンス使⽤状況は計算されません。この設定の値を別
のソースタイプに変更すると、mcollectコマンドでインデックスされているデータのライセンス使⽤状況がSplunkプ
ラットフォームで計算されるようになります。
デフォルト :mcollect_stash

この設定を変更する場合は、必ず事前にSplunkプロフェッショナルサービスまたはSplunkサポートにご相談くださ
い。ソースタイプを変更するには、props.confファイルの変更が必要です。

marker
構⽂ :marker=<string>
説明: mcollectが⽣成するメトリックスデータポイントを後でサーチするために、これらのメトリックスデータポイン
トにディメンションとして付加する、カンマで区切られた1つ以上のキー/値ペアの⽂字列。たとえば、実⾏中
のmcollectサーチの名前(例:marker=savedsearch=firewall_top_src_ip)を追加できます。これにより、後でサーチを実⾏す
るときにサーチ⽂字列にsavedsearch=firewall_top_src_ipを追加するだけで、このmcollectサーチで作成されたメトリック
スデータポイントをサーチできます。

使⽤法
mcollectコマンドを使⽤して、イベントを、サーチヘッド上のメトリックスインデックスに格納されるメトリックスデータポ
イントに変換します。メトリックスデータはメトリックスフィールドに特定のフォーマットを使⽤します。メトリックスの
メトリックスデータフォーマットを参照してください。
mcollectコマンドにより、サーチを実⾏するたびに、メトリックスインデックスに新しいデータが書き込まれます。

すべてのメトリックスサーチコマンドでは⼤⽂字と⼩⽂字が区別されます。つまり、mcollectコマンドは、たとえ
ばcap.gear、CAP.GEAR、Cap.Gearをmetric_nameの3つの異なる値として扱います。

Splunkプラットフォームは、空の、または空⽩スペースのみが⼊ったmetric_nameフィールドを含むメトリックスデータポイ
ントをインデックス化することはできません。

バージョン8.0.0にアップグレードする場合

サーチヘッドとインデクサークラスターをSplunk Enterpriseバージョン8.0.xにアップグレードしたら、各サーチヘッドク
ラスターでlimits.confを編集して、[mcollect]スタンザのalways_use_single_value_outputをfalseに設定してください。この設定

278
により、これらのノードがmcollectコマンドでログをメトリックスに変換したり、メトリックスロールアップを使⽤したりす
るときに「メトリックスデータポイントごとに複数の基準」スキーマを使⽤するようになります。このスキーマは、データ
ストレージ容量を増やし、メトリックスのサーチパフォーマンスを⾼めます。

split 引数の使⽤⽅法

split引数は、mcollectがサーチ内で測定値フィールドを特定する⽅法を決定します。デフォルトではfalseが選択されます。

split=falseの場合は、サーチで測定値フィールドを明⽰的に特定する必要があります。必要に応じてrenameまたはevalで変換
を⾏ってください。
単⼀メトリックスイベントの場合は、mcollectサーチが⽣成する結果に、測定名が格納されたmetric_nameフィールドと測
定の数値が格納された_valueフィールドが含まれている必要があります。
複数メトリックスイベントの場合は、mcollectサーチの結果がmetric_name:<metric_name>=<numeric_value>の構⽂に準拠し
ている必要があります。mcollectは、これらのフィールドを基準値として扱います。そしてmcollectは、残りのフィール
ドをディメンションとして扱います。

split=trueに設定した場合は、field-listを使⽤してサーチに含まれるディメンションを特定します。mcollectは、field-listに
含まれないすべてのフィールドを測定値に変換します。唯⼀の例外は、先頭がアンダースコアーになっている内部フィール
ドとprefix_fieldです(設定してある場合)。

split=allnumsと設定すると、mcollectはすべての数値フィールドをメトリックス基準値として扱い、すべての⾮数値フィール
ドをディメンションとして扱います。field-listを使⽤して、イベント内の特定の数値フィールドをディメンションとして扱
うようにmcollectに指⽰することもできます。

プレフィックスフィールドの設定

prefix_field引数を使⽤して、イベントデータ内のメトリックスフィールドにプレフィックスを適⽤します。

たとえば、以下のデータがあるとします。
type=cpu usage=0.78 idle=0.22

usageとidleという2つのメトリックスフィールドがあります。

そのデータのmcollectサーチに、以下を含めるとします。

...split=true prefix_field=type...

split = trueに設定してあり、これらのフィールドは<field-list>に登録されていないため、Splunkソフトウェアは⾃動的にこ
れらのフィールドを測定値に変換します。そして、指定したprefix_fieldフィールドの値がメトリックスフィールド名のプレ
フィックスとして適⽤されます。この場合は、typeフィールドをプレフィックスフィールドとして指定してあるため、その値
のcpuがメトリックス名のプレフィックスとなります。結果は次のようになります。

m et ric_nam e:cpu.usage m et ric_nam e:cpu.idle


0.78 0.22

時間

結果に_timeフィールドが存在する場合は、メトリックスデータポイントのタイムスタンプとして使⽤されます。_timeフィー
ルドが存在しない場合は、現在の時刻が使⽤されます。

field-list

field-listを指定しないと、mcollectは、prefix_fieldと内部フィールド(名前がアンダースコアー「_」で始まるフィールド)を
除くすべてのフィールドを、⾃⾝が⽣成するメトリックスデータポイントのディメンションとして扱います。field-listを指
定する場合は、mcollectコマンド引数の最後に指定する必要があります。field-listを指定すると、field-listフィール
ド、prefix-fieldフィールド、および内部フィールドを除くすべてフィールドがメトリックス値として扱われます。

各メトリックス値の名前は、フィールド値にprefix_field値を接頭辞として付けたものとなります。

実際には、数値を含む各対象フィールドに対して1つのメトリックスデータポイントが返されます。1つのサーチ結果に複数
の対象メトリックス名/値ペアが含まれる場合、結果は複数のメトリックスデータポイントに分割されます。


次の例は、mcollectコマンドを使⽤してイベントを複数値メトリックスデータポイントに変換する⽅法を⽰しています。
279
1:jobsメトリックスとlat encyメトリックスをユーザー別に発⽣させるメトリックスデータポイントを⽣成します。

次の例では、⽣成されるメトリックスデータポイントに含まれる必要のあるメトリックスを指定し、ユーザー別に分割して
います。split引数は使⽤していないため、サーチではrenameによる変換を使⽤して、データポイントに含まれる測定値を明⽰
的に特定する必要があります。

index="_audit" search_id info total_run_time | stats count(search_id) as jobs avg(total_run_time) as latency by user | rename
jobs as metric_name:jobs latency as metric_name:latency | mcollect index=mcollect_test

サーチ結果の例を⽰します。

_t im e user m et ric_nam e:jo bs m et ric_nam e:lat ency


1563318689 管理者 25 3.8105555555555575

1563318689 splunk-system-user 129 0.2951162790697676

2:イベント数と合計実⾏時間のメトリックスをユーザー別に発⽣させるメトリックスデータポイントを⽣成します。

このサーチではsplit=trueに設定されているため、<field-list>に登録されていないフィールドが⾃動的にディメンションとし
て特定されます。サーチでは、userをディメンションとして特定します。

index="_audit" info=completed | stats max(total_run_time) as runtime max(event_count) as events by user | mcollect


index=mcollect_test split=t user

サーチ結果の例を⽰します。

_t im e user m et ric_nam e:runt im e m et ric_nam e:event s

1563318968 管理者 0.29 293

1563318968 splunk-system-user 0.04 3

関連項⽬
コマンド
collect
meventcollect

met a da t a
説明
metadataコマンドは、指定したインデックスまたは分散サーチピアーから、ソース、ソースタイプ、またはホストのリストを
返します。metadataコマンドは、時間ごとに蓄積した情報を返します。たとえば、タイムレンジピッカーを使⽤して過去7⽇
間などの特定の期間のインデックスのスナップショットを閲覧できます。
「使⽤法」を参照してください。

構⽂
| metadata type=<metadata-type> [<index-specifier>]... [splunk_server=<wc-string>] [splunk_server_group=<wc-
string>]...

必須引数

type
構⽂ :type= hosts | sources | sourcetypes
説明 :返すメタデータのタイプ。これはリテラル⽂字列host、source、およびsourcetypeの3つのいずれかになりま
す。

省略可能な引数

index-specifier
構⽂ :index=<index_name>
説明 :結果を返すインデックスを指定します。1つ以上のインデックスを指定することができます。ワイルドカード(*)
を使⽤できます。⾮内部インデックスと照合するには、index=*を使⽤します。内部インデックスと照合するに
280
は、index=_*を使⽤します。
例: | metadata type=hosts index=cs* index=na* index=ap* index=eu*
デフォルト :デフォルトインデックス(通常はm ain インデックス)。
splunk_server
構⽂ :splunk_server=<wc-string>
説明 :結果を返す分散サーチピアーを指定します。Splunk Cloudを使⽤している場合、このパラメーターを削除しま
す。Splunk Enterpriseを使⽤している場合、splunk_server引数は1つのみ指定できます。ただし複数のサーバーを⽰す
ためにサーバー名を指定するときは、ワイルドカードを使⽤できます。たとえば、splunk_server=peer01また
はsplunk_server=peer*を指定することができます。サーチヘッドを参照するにはlocalを使⽤します。
デフォルト: 設定されているすべてのサーチピアーが情報を返します。
splunk_server_group
構⽂ :splunk_server_group=<wc-string>...
説明 :結果を1台以上のサーバーグループに制限します。Splunk Cloudを使⽤している場合、このパラメーターを削除
します。複数のサーバーグループを指定する⽂字列にワイルドカードを指定できます。

使⽤法
metadataコマンドはレポート⽣成コマンドです。「コマンドタイプ」を参照してください。

⽣成コマンドの先頭にはパイプ⽂字が付けられ、サーチの最初のコマンドである必要があります。

metadataコマンドはすべてのピアーからデータを取得しますが、それ以降に実⾏されるコマンドはサーチヘッド上でのみ実⾏
されます。
ここでは、指定したmetadataタイプのすべての値で特定された、最初のイベント、最後のイベント、最新のイベントが表⽰さ
れます。たとえば、以下のサーチを実⾏すると:
| metadata type=hosts

結果はこのようになります:

firstTimeフィールドは、インデクサーがこのホストからのイベントを初めて発⾒した時刻のタイムスタンプです。
lastTimeフィールドは、インデクサーがこのホストからのイベントを最後に発⾒した時刻のタイムスタンプです。
recentTimeフィールドは、このホストでインデクサーが発⾒した最新のindextimeです。つまり、これは最後に更新された
時刻です。
totalcountフィールドは、このホストからのイベント数の合計です。
typeフィールドは、指定された表⽰するメタデータのタイプです。このサーチはtype=hostsを指定しているため、host列
も存在しています。

たいていの場合、データがライブストリーム配信されている時には、lastTimeとrecentTimeフィールドの値は同じです。ただ
し、履歴データの場合は、これらの値が異なる可能性があります。

⼩規模なテスト環境では、データは完全です。ただし、カテゴリ値の値数が⼤きい⼤規模環境では、データが不完全になる
こともあります。これは、metadataコマンドが妥当な時間とメモリー使⽤量で実⾏されるように、意図的に⾏われています。

リアルタイムサーチ

多くの結果を返すリアルタイムサーチでmetadataコマンドを実⾏すると、Splunkラサーバーで利⽤可能なすべてのメモリーが
すぐに消費されてしまいます。リアルタイムサーチでmetadataコマンドを使⽤する場合には注意が必要です。

時間範囲

タイムレンジピッカーで時間範囲を設定します。サーチ⽂字列では、earliestまたはlatest時間範囲修飾⼦は使⽤できませ
ん。時間範囲修飾⼦は、最初のパイプ付きコマンドの前で設定する必要がありますが、⼀般に⽣成コマンドでは最初のパイ
プの前には何も指定できません。
All Time以外の時間範囲をサーチに指定すると、サーチ結果が正確でない可能性があります。メタデータは、インデックス上
の各バケツの集計番号として保管されます。バケツは、指定した時間範囲に基づいて含まれるか否かが決定します。
たとえば、次のサーチを実⾏してLast 7 daysの時間範囲を指定します。時間範囲は、1⽉1⽇から1⽉7⽇までです。

| metadata type=sourcetypes index=ap

281
インデックスには、12⽉31⽇と1⽉1⽇の両⽅のイベントを含むバケツがあります。そのバケツからのメタデータは、サーチ
から返された情報に含まれます。

最⼤の結果数

デフォルトでは、最⼤10,000件の結果が返されます。この最⼤値は、limits.confファイルの[metadata]スタンザ
のmaxresultrows設定で制御します。

1.複数インデックスのサーチ

様々な地域を表すインデックスのメタデータを返します。
| metadata type=hosts index=cs* index=na* index=ap* index=eu*

2.ソースタイプのサーチ

_internalインデックス内のイベントのsourcetypesの値を返します。

| metadata type=sourcetypes index=_internal

これによって、以下のレポートが返されます。

3.メタデータコマンドの結果をフォーマットする

また、fieldformatコマンドを使って、firstTime、lastTime、recentTimeの結果をより読みやすくなるようにフォーマット
することもできます。
| metadata type=sourcetypes index=_internal | rename totalCount as Count firstTime as "First Event" lastTime as "Last Event"
recentTime as "Last Update" | fieldformat Count=tostring(Count, "commas") | fieldformat "First Event"=strftime('First Event',
"%c") | fieldformat "Last Event"=strftime('Last Event', "%c") | fieldformat "Last Update"=strftime('Last Update', "%c")

Co unt フィールドのラベルをクリックすると、結果がソートされ、最も⾼いカウントが最初に表⽰されます。これで、結果
がより把握しやすくなりました。

282
4.特定のサーバーの、特定のインデックス内にあるイベントの「sourcet ypes」の値を返します

サーバーfooの「_audit」インデックス内のイベントの、sourcetypeの値を返します。
| metadata type=sourcetypes index=_audit splunk_server=foo

関連項⽬
dbinspect
tstats

met a sea r ch
説明
<logical-expression>の単語に基づいて、インデックスからイベントのmetadataを取得します。

構⽂
metasearch [<logical-expression>]

省略可能な引数

<logical-expression>
構⽂: <time-opts> | <search-modifier> | [NOT] <logical-expression> | <index-expression> | <comparison-
expression> | <logical-expression> [OR <logical-expression>]
説明 :時間、サーチ修飾⼦、⽐較式、インデックス式が含まれます。

論理式

<comparison-expression>
構⽂ :<field><cmp><value>
説明: フィールドをリテラル値か他のフィールドの値を⽐較します。
<index-expression>
構⽂ :"<string>" | <term> | <search-modifier>

<time-opts>
構⽂: [<timeformat>] [<time-modifier>]...

⽐較式

<cmp>
構⽂: = | != | < | <= | > | >=
説明 :⽐較演算⼦です。

<field>
構⽂ :<string>
説明: metasearchコマンドが返すいずれかのフィールドの名前。使⽤法を参照してください。

<lit-value>
構⽂ :<string> | <num>
説明 :⽐較式で使⽤するフィールドの厳密値またはリテラル値。
<value>
構⽂ :<lit-value> | <field>
説明 :comparison-expressionでのフィールドのリテラル値または他のフィールドの名前。<lit-value>は数字または
⽂字列である必要があります。

インデックス式

<search-modifier>
構⽂: <field-specifier> | <savedsplunk-specifier> | <tag-specifier>

時間オプション

時間に関連するサーチのため、柔軟性あるオプションが多く⽤意されています。時間修飾⼦の⼀覧については、『サー
チ』マニュアルの「サーチの時間修飾⼦」を参照してください。
<timeformat>
構⽂ :timeformat=<string>
283
説明 :starttime、endtimeのフォーマットを指定します。デフォルトでは、タイムスタンプのフォーマット
はtimeformat=%m/%d/%Y:%H:%M:%Sです。

<time-modifier>
構⽂ :earliest=<time_modifier> | latest=<time_modifier>
説明 :開始時間、終了時間を相対時間または絶対時間で指定します。時間修飾⼦インデックスについては、『サーチ』
マニュアルの「サーチへの時間修飾⼦の指定」を参照してください。

使⽤法
metasearchコマンドはイベント⽣成コマンドです。「コマンドタイプ」を参照してください。

⽣成コマンドの先頭にはパイプ⽂字が付けられ、サーチの最初のコマンドである必要があります。
metasearchコマンドは、次のフィールドを返します。

フィールド 説明
ホスト イベントを⽣成したネットワークデバイスのホスト名またはIPアドレスが含まれるデフォルトフィールド。

データのリポジトリ。Splunkプラットフォームがrawデータをインデックス化するときには、データをサーチ可能なイベントに変換
インデックス
します。

source イベントのソース(イベントの起源)を特定するデフォルトフィールド。

sourcetype イベントのデータ構造を識別するデフォルトフィールド。

splunk_server Splunk Enterpriseがインストールされているインスタンスの名前。

_time _timeフィールドには、UNIX時で表されるイベントのタイムスタンプが含まれています。


例1:

ホスト「webserver1」からの「404」を持つイベントのデフォルトインデックスのメタデータを返します。

| metasearch 404 host="webserver1"

関連項⽬
コマンド
metadata
search

mev ent col l ect


説明
ストリーミングサーチコマンド で⽣成されたイベントをメトリックスデータポイントに変換し、データをインデクサー上の
メトリックスインデックスに挿⼊します。
meventcollectコマンドは、⾃分のロールにrun_mcollect権限がある場合にのみ使⽤できます。『Splunk Enterpriseのセキュリ
ティ』の「権限を持つロールのSplunkプラットフォームでの定義」を参照してください。

構⽂
太字 は必須構⽂です。
| m event co llect index=<st ring>
[ file=<string> ]
[ split=<bool> ]
[ spool=<bool> ]
[ prefix_field=<string> ]
[ host=<string> ]
[ source=<string> ]
[ sourcetype=<string> ]
[ <field-list > ]

必須引数

284
インデックス
構⽂ :index=<string>
説明 :収集したメトリックスデータを追加するメトリックスインデックスの名前です。
field-list
構⽂ :<field>, ...
説明: ディメンションフィールドのリスト。split=trueの場合は必須。split=falseの場合は任意。未指定の場合(暗黙的
にsplit=falseを意味します)、metric_name、prefix_field、およびすべての内部フィールドを除いて、meventcollectはすべ
てのフィールドをデータポイントのディメンションとして扱います。
デフォルト :デフォルト値なし

省略可能な引数

分割
構⽂: split=<bool>
説明: meventcollectがイベント内の測定値を特定する⽅法を決定します。「split引数の使⽤⽅法」を参照してくださ
い。
デフォルト :偽(False)
spool
構⽂ :spool=<bool>
説明 :真(True)に設定すると、meventcollectはメトリックスファイルをSplunkスプールディレクトリ
($SPLUNK_HOME/var/spool/splunk)に書き込み、ファイルは⾃動的にインデックスされます。偽(False)に設定する
と、meventcollectはファイルを$SPLUNK_HOME/var/run/splunkディレクトリに書き込みます。追加の⾃動化や管理が⾏われ
ない限り、ファイルはこのディレクトリに残ります。
デフォルト :真(True)
prefix_field
構⽂: prefix_field=<string>
説明: split=trueの場合にのみ適⽤されます。指定した場合、meventcollectはこのフィールドが存在しないデータポイン
トをすべて無視します。指定しなかった場合は、meventcollectはフィールド値にメトリックス名をプレフィックスとし
て付けます。「プレフィックスフィールドの設定」を参照してください。
デフォルト :デフォルト値なし

ホスト
構⽂ :host=<string>
説明 :収集したメトリックスデータに指定するホストの名前。spool=trueの場合にのみ該当。
デフォルト :デフォルト値なし
source
構⽂ :source=<string>
説明 :収集したメトリックスデータに指定するソースの名前。
デフォルト: サーチがスケジュール済みである場合はサーチ名。サーチがアドホックである場合、meventcollectはサー
チ結果が格納されるvar/spool/splunkディレクトリにファイルの名前を書き込みます。

sourcetype
構⽂ :sourcetype=<string>
説明 :収集したメトリックスデータに指定するソースタイプの名前。
デフォルト: metrics_csv
この設定を変更する場合は、必ず事前にSplunkプロフェッショナルサービスまたはSplunkサポートにご相談くださ
い。ソースタイプを変更するには、props.confファイルの変更が必要です。

使⽤法
meventcollectコマンドを使⽤して、ストリーミングイベントを、インデクサー上のメトリックスインデックスに格納されるメ
トリックスデータに変換します。メトリックスデータはメトリックスフィールドに特定のフォーマットを使⽤します。メト
リックスのメトリックスデータフォーマットを参照してください。
結果がインデクサーに取り込まれるようにするため、meventcollectコマンドに先⾏できるのはストリーミングコマンド のみ
です。変換コマンド を使⽤してメトリックスデータポイントを⽣成するサーチを実⾏する場合は、mcollectコマンドではな
くmeventcollectコマンドを使⽤します。

meventcollectコマンドにより、サーチを実⾏するたびに、メトリックスインデックスに新しいデータが書き込まれます。ま
た、⼤量のデータに対してmeventcollectサーチを実⾏すると、容量がそれほど多くないインデクサーやインデクサークラス
ターが飽和してしまうことがあります。
すべてのメトリックスサーチコマンドでは⼤⽂字と⼩⽂字が区別されます。つまり、meventcollectコマンドは、たとえ
ばcap.gear、CAP.GEAR、Cap.Gearをmetric_nameの3つの異なる値として扱います。

Splunkプラットフォームは、空の、または空⽩スペースのみが⼊ったmetric_nameフィールドを含むメトリックスデータポイ
ントをインデックス化することはできません。
285
split 引数の使⽤⽅法

split引数は、meventcollectがサーチ内で測定値フィールドを特定する⽅法を決定します。デフォルトではfalseが選択されま
す。

split=falseの場合は、サーチで測定値フィールドを明⽰的に特定する必要があります。必要に応じてrenameまたはevalで変換
を⾏ってください。

単⼀メトリックスイベントの場合は、meventcollectサーチが⽣成する結果に、測定名が格納されたmetric_nameフィール
ドと測定の数値が格納された_valueフィールドが含まれている必要があります。
複数メトリックスイベントの場合は、meventcollectサーチの結果がmetric_name:<metric_name>=<numeric_value>の構⽂に準
拠している必要があります。これらの各フィールドは、測定値として扱われます。そしてmeventcollectは、残りの
フィールドをディメンションとして扱います。
split=trueに設定した場合は、field-listを使⽤してサーチに含まれるディメンションを特定します。meventcollectは、field-
listに含まれないすべてのフィールドを測定値に変換します。唯⼀の例外は、先頭がアンダースコアーになっている内部
フィールドとprefix_fieldです(設定してある場合)。

プレフィックスフィールドの設定

prefix_field引数を使⽤して、イベントデータ内のメトリックスフィールドにプレフィックスを適⽤します。

たとえば、以下のデータがあるとします。
type=cpu usage=0.78 idle=0.22

usageとidleという2つのメトリックスフィールドがあります。

そのデータのmcatalogサーチに、以下を含めるとします。

...split=true prefix_field=type...

split = trueに設定してあり、これらのフィールドは<field-list>に登録されていないため、Splunkソフトウェアは⾃動的にこ
れらのフィールドを測定値に変換します。そして、指定したprefix_fieldフィールドの値がメトリックスフィールド名のプレ
フィックスとして適⽤されます。この場合は、typeフィールドをプレフィックスフィールドとして指定してあるため、その値
のcpuがメトリックス名のプレフィックスとなります。結果は次のようになります。

m et ric_nam e:cpu.usage m et ric_nam e:cpu.idle

0.78 0.22


1:m et rics.logデータをメトリックスインデックスに収集する

以下の例では、「my_metric_index」というメトリックスインデックスにメトリックスログデータを収集する⽅法を⽰して
います。
index=_internal source=*/metrics.log | eval prefix = group + "." + name | meventcollect index=my_metric_index split=true
prefix_field=prefix name group

関連項⽬
コマンド
collect
mcollect

mpr ev iew
説明
mpreviewは、メトリックスインデックスに保存されているメトリックス時系列の種類に関する情報を取得して、メトリックス
データをトラブルシューティングします。
mpreviewは、指定したメトリックスインデックスで指定したフィルターと⼀致するrawメトリックスデータポイント のプレ
ビューを返します。デフォルトでは、mpreviewはサーチに関連付けられている各メトリックス時系列インデックスファイ
ル (.tsidxファイル)から、メトリックス時系列 ごとに対象数である5つのメトリックスデータポイントを取得します。この対
286
象数は、target_per_timeseries引数で変更できます。

設計上、mpreviewはJSONフォーマットでメトリックスデータポイントを返します。

mpreviewコマンドは、Splunkプラットフォームのバージョン8.0.xにアップグレードする前にインデックス処理されたデータ
はサーチできません。
mpreviewコマンドは、⾃分のロールにrun_msearch権限がある場合にのみ使⽤できます。『Splunk Enterpriseのセキュリ
ティ』の「権限を持つロールのSplunkプラットフォームでの定義」を参照してください。

構⽂
太字 は必須構⽂です。

| m preview
[filter=<string>]
[<index-opt>]...
[splunk_server=<wc-string>]
[splunk_server_group=<wc-string>]...
[earliest=<time-specifier>]
[latest=<time-specifier>] :
[chunk_size=<unsigned-integer>]
[target_per_timeseries=<unsigned-integer>]

必須引数

無し。デフォルトではすべての種類の⽤語が返されます。

省略可能な引数

chunk_size
構⽂: chunk_size=<unsigned-integer>
説明 :詳細オプション。この引数は、Splunkソフトウェアがサーチを処理するときに単⼀の時系列インデックスファ
イル (.tsidxファイル)から⼀度に取得するメトリックス時系列 の数を制御します。特定のmpreviewサーチがメモリーを
過剰に消費していたり、イベントを返す頻度が低かったりする場合は、この設定を低くしてください。この状況は、
サーチが超⾼濃度ディメンション(異なる値が⼤量にあるディメンション)によってサーチによってグループ化している
場合に発⽣します。このような状況では、chunk_size値を⼩さくすることで、mpreviewサーチの応答性が⾼まりますが、
完了までの時間が⻑くなることがあります。⼀⽅、chunk_sizeを⼤きくすると、実⾏時間の⻑いサーチが早く完了するよ
うになりますが、サーチの応答性が低下します。mpreviewでは、chunk_sizeを10より⼩さくすることはできません。

この設定の詳細は、「chunk_sizeを使⽤したmpreviewパフォーマンスの調整」を参照してください。
デフォルト :1000
chunk_size引数のデフォルト値は、limits.confファイルの[msearch]スタンザのchunk_sizeの設定によって決定されます。

earliest
構⽂: earliest=<time-specifier>
説明: サーチの時間範囲のもっとも早い_timeを指定します。正確な時間(earliest="11/5/2016:20:00:00"など)または相対
時間(earliest=-hまたはearliest=@w0)を指定できます。

正確な時刻の設定については、「⽇付と時間の書式変数」を参照してください。相対時間の設定については、「時間修
飾⼦」を参照してください。1秒未満のオプションは、タイムスタンプの分解能がミリ秒に設定されているメトリック
スインデックスに対してサーチを実⾏する場合にのみ使⽤できます。

フィルター
構⽂: filter= "<string>"
説明: ディメンションまたはmetric_nameに対する任意のブール式。

index-opt
構⽂: index=<index-name> (index=<index-name>)...
説明: 1つ以上のインデックスからの結果にサーチを限定します。ワイルドカード⽂字(*)を使⽤できます。⾮内部イン
デックスと照合するには、index=*を使⽤します。内部インデックスと照合するには、index=_*を使⽤します。

latest
構⽂: latest=<time-specifier>
説明: サーチの時間範囲のもっとも遅い_timeを指定します。正確な時間(latest="11/12/2016:20:00:00"など)または相対時
間(latest=-30mまたはlatest=@w6)を指定できます。

正確な時刻の設定については、「⽇付と時間の書式変数」を参照してください。相対時間の設定については、「時間修
飾⼦」を参照してください。1秒未満のオプションは、タイムスタンプの分解能がミリ秒に設定されているメトリック
スインデックスに対してサーチを実⾏する場合にのみ使⽤できます。

splunk_server
287
構⽂ :splunk_server=<wc-string>
説明 :結果を返す分散サーチピアーを指定します。Splunk Enterpriseを使⽤している場合、splunk_server引数は1つの
み指定できます。ただし複数のサーバーを⽰すためにサーバー名を指定するときは、ワイルドカードを使⽤できます。
たとえば、splunk_server=peer01またはsplunk_server=peer*を指定することができます。サーチヘッドを参照するに
はlocalを使⽤します。

splunk_server_group
構⽂: splunk_server_group=<wc-string>
説明 :結果を1台以上のサーバーグループに制限します。Splunk Cloudを使⽤している場合、このパラメーターを削除
します。複数のサーバーグループを指定する⽂字列にワイルドカードを指定できます。

target_per_timeseries
構⽂: target_per_timeseries=<unsigned-integer>
説明: mpreviewサーチに関連付けられている各メトリックス時系列インデックスファイル(.tsidxファイル)から、メト
リックス時系列ごとに取得するメトリックスデータポイントの対象数を決定します。.tsidxファイルの時系列のデータ
ポイント数がtarget_per_timeseriesの値よりも少ない場合、サーチヘッドはその.tsidxファイルから、その時系列のすべ
てのデータポイントを取得します。

target_per_timeseriesを0に設定すると、各時系列で指定された時間範囲内のすべてのデータポイントが返されます。こ
のサーチはサイズが⼤きくなることがあるため、完了まで⻑い時間がかかります。⼤量のメトリックスデータポイント
に対してサーチを実⾏する必要がある場合は、代わりにmstatsを使⽤してください。

この設定の詳細については、「target_per_timeseries引数の仕組み」を参照してください。
デフォルト :5
target_per_timeseries引数のデフォルト値は、limits.confファイルの[msearch]スタンザのtarget_per_timeseriesの設定に
よって決定されます。

使⽤法
このサーチコマンドは、指定したメトリックスインデックスから、指定したフィルターと⼀致する個別メトリックスデータ
ポイントのリストを⽣成します。フィルターは、ディメンションまたはmetric_nameに対する任意のブール式で
す。earliestとlatestを指定することで、タイムレンジピッカーの設定を上書きできます。

earliestとlatestの設定については、「時間修飾⼦」を参照してください。

mpreviewコマンドは、個別のメトリックスデータポイントをJSONフォーマットで表⽰するように設計されています。メト
リックスデータポイントを集計したい場合は、mstatsコマンドを使⽤してください。

すべてのメトリックスサーチコマンドでは⼤⽂字と⼩⽂字が区別されます。つまり、mpreviewコマンドは、たとえ
ばcap.gear、CAP.GEAR、Cap.Gearをmetric_nameの3つの異なる値として扱います。

t arget _per_t im eseries引数の仕組み

フィルタリングされていないmpreviewサーチでは、⾮常に多くのrawメトリックスデータポイントが対象となることがありま
す。サーチの対象となるデータポイント数が⼤量になると、サーチが遅くなったり応答しなくなったりする場合がありま
す。

target_per_timeseries引数を使⽤すると、⽐較的広い範囲のメトリックスデータを対象としつつmpreviewコマンドの応答性を⾼
めることができます。この引数は、mpreviewが、サーチ対象の各メトリックス時系列インデックスファイル(.tsidxファイル)か
ら返すメトリックスデータポイント数を制限します。

たとえば、10件のtsidxファイルのそれぞれに100件のメトリックス時系列が含まれ、各⾃系列に5個以上のデータポイントが
あるとします。サーチでtarget_per_timeseries=5と指定すると、サーチから返されるメトリックスデータポイント数は最⼤で
10 x 100 x 5 = 5000個に制限されます。
また、10件のメトリックスtsidxファイルのそれぞれに100件のメトリックス時系列が含まれ、そのうちの50件にはそれぞれ3
個のデータポイントがあり、残りの50件には5個以上のデータポイントがあるとします。サーチでtarget_per_timeseries=5と指
定すると、返されるデータポイント数は最⼤で10 x ((50 x 3) + (50 x 5)) = 4000個になります。
target_per_timeseries引数は、mpreviewサーチの対象となるメトリックスデータポイント数が、サーチの対象となるメトリック
ス時系列の数より⼤幅に多い場合には特に便利です。サーチの対象となるメトリックスデータポイント数が、サーチの対象
となるメトリックス時系列の数よりわずかに多い程度では、特に便利ではありません。

次のサーチを実⾏することで、mpreviewサーチの対象となるメトリックスデータポイント数を決定できます。

| metadata index=<metric_index_name> type=hosts datatype=metric | fields totalCount

次のサーチを実⾏することで、mpreviewサーチの対象となるメトリックス時系列数を決定できます。

| mstats count(*) WHERE index=<metric_index_name> by _timeseries | stats count

288
chunk_siz eを使⽤したm previewパフォーマンスの調整

target_per_timeseries引数を使⽤してもmpreviewのパフォーマンスが低い場合には、chunk_sizeを使⽤してmpreviewの動作を制
御できます。chunk_sizeを⼩さくすることで、サーチの応答性が⾼まりますが、完了までの時間が⻑くなります。chunk_sizeを
⼤きくすると、mpreviewサーチが早く完了するようになりますが、サーチの応答性が低下します。


1.指定したフィルターと⼀致するデータポイントを返す

このサーチコマンドは、_metricsから、指定したフィルターと⼀致する個別メトリックスデータポイントを返します。

| mpreview index=_metrics filter="group=queue name=indexqueue metric_name=*.current_size"

上記サーチのJSONフォーマットの結果例を⽰します。

2.メトリックスインデックスから個別のデータポイントを返す

| mpreview index=_metrics

3.chunk_siz eを⼩さくすることでm previewのパフォーマンスを⾼める

次のサーチでは、chunk_sizeを⼩さくすることで、_metricsインデックスに属するtsidxファイルから、100件分のメトリックス
時系列に相当するメトリックスデータポイントを⼀度に返すようにしています。通常は、1000件分のメトリックス時系列に
相当するメトリックスデータポイントが返されます。
| mpreview index=_metrics chunk_size=100

4.t arget _per_t im eseriesを使⽤してm previewサーチを⾼速化する

次のサーチでは、target_per_timeseriesを使⽤して、_metricsインデックスでサーチされる各tsidxファイルの時系列ごとに最⼤
5個のメトリックスデータポイントを返すようにしています。
| mpreview index=_metrics target_per_timeseries=5

関連項⽬
コマンド
mcatalog
mcollect
mstats

msea r ch
msearchコマンドはmpreviewコマンドのエイリアスです。mpreviewコマンドの構⽂と例を参照してください。

関連項⽬
コマンド
mcatalog
mstats

mst a t s
289
説明
mstatsコマンドを使⽤してメトリックスを分析します。このコマンドはメトリックスインデックス
のmeasurement、metric_name、およびdimensionフィールドについての統計を実施します。mstatsは履歴サーチ とリアルタイム
サーチ で使⽤できます。時間ウィンドウを使⽤するリアルタイムサーチでmstatsを使⽤した場合、データをバックフィルする
ために最初に履歴サーチを実⾏します。
mstatsコマンドは、単⼀のmetric_name値または少数のmetric_name値をサーチする場合に最⾼のパフォーマンスを発揮します。

構⽂
太字 は必須構⽂です。
| m st at s
[chart=<bool>]
[<chart-options>]
[prestats=<bool>]
[append=<bool>]
[backfill=<bool>]
[update_period=<integer>]
[fillnull_value=<string>]
[chunk_size=<unsigned int>]
<st at s-m et ric-t erm >...
WHERE [<logical-expression>]...
[ (BY|GROUPBY) <field-list> ]
[<span-length>]

必須引数

<stats-metric-term>
構⽂: <stats-func> | <stats-func-value>
説明: メトリックスの統計計算を実⾏するための2つのオプションを提供します。<stats-func>を使⽤すると、引数で指
定した1つ以上のメトリックスに対して統計計算が実⾏されます。<stats-func-value>を使⽤すると、ワイルドカードを
使⽤して複数のメトリックスを指定できます。<stats-func>構⽂と<stats-func-value構⽂を1つのmstatsサーチで併⽤する
ことはできません。

ほとんどのケースでは<stats-func>構⽂を使⽤します。<stats-func-value>構⽂は、単⼀のメトリックスが複数の異なるメ
トリックス名(例:cpu.utilとcpu.utilization)で表現される場合にのみ使⽤する必要があります。この場合は、ワイルド
カードを使⽤することで、metric_nameのすべての組み合わせを指定できます。

<stats-func>および<stats-func-value>構⽂オプションの詳細は「統計メトリックス項⽬オプション」を参照してくださ
い。

省略可能な引数

append
構⽂ :append=<bool>
説明: prestats=trueの場合にのみ有効です。この引数はmstatsコマンドを実⾏して新しい結果を⽣成するのではなく、
結果を既存の⼀連の結果に追加します。
デフォルト :偽(False)
バックフィル
構⽂: backfill=<bool>
説明: 時間ウィンドウを使⽤するリアルタイムサーチでのみ有効です。backfill=trueの場合、mstatsコマンドは、メモ
リー内のリアルタイムデータをサーチする前に、イベントをバックフィルするために履歴データでサーチを実⾏しま
す。
デフォルト :真(True)
chart
構⽂: chart=<bool>
説明: chart=tに設定すると、mstatsのデータ出⼒はchartinに適したフォーマットになります。mstatsチャートモード
はprestats=fの場合のみ有効です。

spanを指定すると、mstatsチャートモードフォーマットはtimechartコマンドと同じようなフォーマットになり、シリーズ
分割フィールドとして使⽤される1つのgroup-byフィールドのみをサポートします。

spanを指定しないと、チャートモードはchartコマンドやtimechartコマンドと同様のフォーマットになります。spanを指
定しない場合は、mstatsチャートモードでは1つ以上のグループ化フィールドが必要になります。最初のグループ化
フィールドはグラフのX軸を表します。2番⽬のグループ化フィールドはY軸を表し、シリーズ分割フィールドとなりま
す。

290
デフォルト: chart=f

<chart-options>
構⽂: chart.limit | chart.agg | chart.usenull | chart.useother | chart.nullstr | chart.otherstr
説明: 結果表⽰の変更に指定できるオプション。このトピックの「グラフのオプション」のセクションを参照してくだ
さい。

chunk_size
構⽂ :chunk_size=<unsigned_int>
説明 :詳細オプション。この引数は、Splunkソフトウェアがサーチを処理するときに単⼀の時系列インデックスファ
イル (.tsidxファイル)から⼀度に取得するメトリックス時系列 の数を制御します。特定のmstatsサーチがメモリーを過
剰に消費していたり、イベントを返す頻度が低かったりする場合は、この設定を低くしてください。この状況は、サー
チが超⾼濃度ディメンション(異なる値が⼤量にあるディメンション)によってサーチによってグループ化している場合
に発⽣します。このような状況では、chunk_size値を⼩さくすることで、mstatsサーチの応答性が⾼まりますが、完了ま
での時間が⻑くなることがあります。⼀⽅、chunk_sizeを⼤きくすると、実⾏時間の⻑いサーチが早く完了するようにな
りますが、サーチの応答性が低下します。mstatsでは、chunk_sizeを10000より⼩さくすることはできません。
デフォルト: 10000000(1000万)
chunk_size引数のデフォルト値は、limits.confファイルの[mstats]スタンザのchunk_sizeの設定によって決定されます。

fillnull_value
説明: この引数は、mstatsコマンドがgroup-byフィールドリストにあるフィールドのNULL値を置き換えるためのユー
ザー指定の値を設定します。NULL値には、返されたイベントの⼀部に存在しないフィールド値と、返されたすべての
イベントに存在しないフィールド値の両⽅を含みます。fillnull_value引数を指定しないと、mstatsは1つ以上のNULL
フィールド値を持つイベントの⾏を結果から除外します。
デフォルト :空の⽂字列

<field-list>
構⽂ :<field>, ...
説明: 1つ以上の結果グループ化するフィールドを指定します。BY句を使⽤する場合に必要です。
<logical-expression>
構⽂ :<time-opts>|<search-modifier>|((NOT)? <logical-expression>)|<index-expression>|<comparison-
expression>|(<logical-expression> (OR)? <logical-expression>)
説明: サーチに適⽤されるフィルターを記述する式。時間、サーチ修飾⼦、⽐較式、インデックス式が含まれます。各
論理式コンポーネントの説明については、以下のセクションを参照してください。
metric_nameでフィルタリングすることはできません。CASEまたはTERM指令をサポートしません。WHERE句を使って
⽤語や語句をサーチすることもできません。
prestats
構⽂ :prestats=true | false
説明 :prestats書式を使⽤するかどうかを指定します。Prestats書式はSplunk内部フォーマットで、集計統計を⽣成す
るコマンドにより使⽤されるように設計されています。prestats書式を使⽤する場合は、prestats書式を許容するよう
に設計されているchart、stats、またはtimechartコマンドにデータをパイプできます。prestatsがtrueに設定されている
場合は、AS句による指⽰は無効になります。集計⽤のフィールド名は、Prestats書式を使⽤して集計出⼒を⽣成するコ
マンドにより決定されます。
デフォルト :偽(False)
<span-length>
構⽂: span=<int><timescale> [every=<int><timescale>]
説明: 各時間ビンの範囲。<timescale>を使⽤する場合、<span-length>は時間範囲として使⽤されます。そうでない場
合、これは絶対バケツ⻑になります。<span-length>を指定しない場合、デフォルトはautoであり、つまり合理的な数の
結果を⽣成するために時間バケットの数が調整されることを意味します。たとえば、<timescale>で秒が使⽤されてい
て、返された結果が多すぎる場合、<timescale>は分などの⻑い値に変更され、より少ない時間バケットが返されるよう
になります。
every引数をspanを使⽤して、サーチがスパンごとにサンプリングするデータ量を減らすことにより、mstatsサーチのパ
フォーマンスを⾼めることができます。たとえば、サーチヘッドがサーチ期間中のevery時に10分間のspanのデータのみ
をサンプリングするようなサーチを作成できます。「スパン⻑オプション」を参照してください。
update_period
構⽂: update_period=<integer>
説明: リアルタイムサーチでのみ有効です。mstatsコマンドのリアルタイムサマリーが更新される頻度をミリ秒で指定
します。数字が⼤きいとサマリーの更新が頻繫でないことを意味し、インデックス処理への影響が少ないです。
デフォルト: 1000(1秒)

統計メトリックス項⽬オプション

<stats-func>
構⽂: <stats-func> | <mstats-specific-func> "("<metric_name")" [AS <string>]...
説明: 1つ以上のmetric_nameフィールドに対して統計的計算を実⾏します。prestatsがtrueに設定されていない限
り、AS句を使⽤して各関数の結果の名前を変更できます。metric_nameは括弧で囲む必要があります。

291
<stats-func>構⽂を使⽤した場合、WHERE句を使⽤してmetric_nameでフィルタリングすることはできません。

<mstats-specific-func>
構⽂: rate_avg | rate_sum
説明: mstatsに特有の2つの関数。rate_avgは、累積カウンターメトリックス のメトリックスごとの時系列のレー
ト を計算し、その平均を返します。rate_sumもrate_avgと同じ計算を⾏いますが、平均ではなく合計を返します。カウン
ターメトリックスとこれらの関数の詳細は、『メトリックス』の「カウンターメトリックスの調査」を参照してくださ
い。
<stats-func-value>
構⽂: count(_value) | <function>(_value) [AS <string>] WHERE metric_name=<metric_name>
説明 :_valueフィールドに対する基本的なカウントまたは_valueフィールドに対する関数を指定します。_valueフィール
ドは、特定のフォーマットを使⽤してメトリックスの数値を保存します。1つ以上の関数を指定することができま
す。prestats=trueと設定されていない限り、ASを使⽤して関数の結果の名前を変更できます。

<stats-func-value>構⽂を使⽤した場合は、WHERE句を使⽤してmetric_nameでフィルタリングする必要があります。ワ
イルドカードも使⽤できます。

stats-func-value構⽂ではリアルタイムサーチ はサポートされません。リアルタイムサーチを実⾏する必要がある場
合は、代わりにstats-func構⽂を使⽤してください。

次の表に、mstatsコマンドでサポートされる関数を種類別に⽰します。各関数の説明と例を⾒るには、表にあるリンク
を使⽤してください。

関数の種類 対応している関数と構⽂
avg() sum()
perc<num>
count() sumsq()
range()
集計関数 max() upperperc<num>
stdev()
median() var()
stdevp()
min() varp()

earliest()
latest_time() rate_avg()
時間関数 earliest_time()
rate() rate_sum()
latest()

コマンドで関数を使⽤する⽅法については、「統計およびグラフ関数」を参照してください。

グラフのオプション

chart.limit
構⽂: chart.limit=(top | bottom)<int>
説明: column-splitフィールドが指定された場合にのみ有効です。chart.limitオプションを使⽤して出⼒に表⽰される
べき結果の数を指定します。chart.limit=Nを設定すると、各シリーズの合計と選択したプレフィックスに基づいて上位
または下位N件の値が保持されます。chart.limit=0を指定した場合は、すべての結果が返されます。chart.limit値の前
にtopまたはbottomのプレフィックスを付けないと、Splunkソフトウェアは上位N件の結果を返します。たとえ
ば、chart.limit=10と設定すると、Splunkソフトウェアはデフォルトで上位10件の結果を返します。

この引数は、chartコマンドとtimechartコマンドのlimit引数と同じです。
デフォルト :top10
chart.agg
構⽂: chart.agg=( <stats-func> ( <evaled-field> | <wc-field> ) [AS <wc-field>] )
説明 :統計集計関数。「統計メトリックス項⽬オプション」のサポートされている関数の表を参照してください。この
関数は、eval式、フィールド、または⼀連のフィールドに適⽤できます。AS句を使⽤して、結果を⾃分が名前をつけた
新しいフィールドに⼊れることができます。フィールド名にワイルドカードが使⽤できます。この引数は、chartコマン
ドとtimechartコマンドのagg引数と同じです。
デフォルト: sum

chart.nullstr
構⽂: chart.nullstr=<string>
説明 :chart.usenullが真(True)の場合、このシリーズにはchart.nullstrオプションの値でラベルが付けられます。デフォ
ルトはNULLです。この引数は、chartコマンドとtimechartコマンドのnullstr引数と同じです。

chart.otherstr
構⽂: chart.otherstr=<string>
説明 :chart.useotherが真(True)の場合、このシリーズにはcode.otherstrオプションの値でラベルが付けられます。デ
フォルトはOTHERです。この引数は、chartコマンドとtimechartコマンドのotherstr引数と同じです。
292
chart.usenull
構⽂: chart.usenull=<bool>
説明: シリーズが分割フィールドを持たないイベント向けに作成されるかどうかを決定します。この引数は、chartコマ
ンドとtimechartコマンドのusenull引数と同じです。

chart.useother
構⽂: chart.useother=<bool>
説明 :WHERE句の基準を満たさないためグラフに含まれていないデータシリーズに対して、シリーズを追加するかど
うかを指定します。この引数は、chartコマンドとtimechartコマンドのuseother引数と同じです。

論理式のオプション

<comparison-expression>
構⽂: <field><comparison-operator><value> | <field> IN (<value-list>)
説明 :フィールドをリテラル値と⽐較するか、またはフィールドに現れる値のリストを提供します。

<index-expression>
構⽂ :<term> | <search-modifier>
説明 :サーチ単語とサーチ修飾⼦を使って、インデックスから取得するイベントを指定します。

<time-opts>
構⽂ :[<timeformat>] (<time-modifier>)*
説明 :サーチの<starttime>および<endtime>のフォーマットを指定します。

⽐較式のオプション

<comparison-operator>
構⽂: = | != | < | <= | > | >=
説明 :フィールドと値のペアをサーチする際に、⽐較演算⼦を使⽤できます。equal ( = )またはnot equal ( != )の演算
⼦が⽂字値を⽐較する⽐較式。たとえば、「1」は「1.0」と⼀致しません。演算⼦より⼤きいまたは⼩さい⽐較式<><=
>=は、2つの数字を数値的に⽐較し、その他の値は辞書学的に⽐較します。「使⽤法」を参照してください。

<field>
構⽂ :<string>
説明 :フィールド名です。
<value>
構⽂ :<literal-value>
説明 :⽐較式で使⽤されるフィールドのリテラル値またはフィールドの⽂字列値です。

<value-list>
構⽂ :(<literal-value>, <literal-value>, ...)
説明 :IN演算⼦と⼀緒に使⽤して2つ以上の値を指定します。たとえばerror=400 OR error=402 OR error=404 OR
error=406の代わりにerror IN (400, 402, 404, 406)を使⽤します。

インデックス式のオプション

<string>
構⽂ :"<string>"
説明 :サーチで⼀致すべきキーワードまたは引⽤符で囲んだフレーズを指定します。⽂字列、引⽤符で囲まれた⽂字
列、またはサーチ修飾⼦以外の任意のテキストをサーチすると、Splunkソフトウェアは_rawフィールドをサーチして、
⼀致するイベントや結果を検索します。
<search-modifier>
構⽂: <sourcetype-specifier> | <host-specifier> | <source-specifier> | <splunk_server-specifier>
説明: 指定されたフィールドからのイベントをサーチ。たとえば、ホスト、ソース、ソースタイプの1つまたは組み合
わせのサーチ。『ナレッジ管理』マニュアルの「デフォルトフィールドでのサーチ」を参照してください。
<sourcetype-specifier>
構⽂ :sourcetype=<string>
説明: 指定されたソースタイプフィールドからのイベントをサーチ。
<host-specifier>
構⽂ :host=<string>
説明 :指定したホストフィールドからイベントをサーチします。

<source-specifier>
構⽂ :source=<string>
説明 :指定したホストフィールドからイベントをサーチします。

<splunk_server-specifier>
構⽂ :splunk_server=<string>
説明 :特定のサーバーからイベントをサーチします。サーチヘッドを参照するには、「local」を使⽤します。
293
スパン⻑オプション

every
構⽂: every=<int><timescale>
説明 :spanと⼀緒に使⽤することで、サーチ全体のタイムスパンにおいて特定の時間間隔のデータをサーチできま
す。every引数は、spanがauto以外の有効な値に設定されている場合にのみ有効です。everyタイムスパンは、spanタイム
スパンよりも⼤きい値に設定してください。
この⽅法でサーチデータを「ダウンサンプリング」することで、データの粒度と引き換えにサーチのパフォーマンスを
⾼めることができます。たとえば次のサーチは、サーチの時間範囲内における、20秒ごとの最初の10秒間
のactive_logins測定値の平均を返します。| mstats avg(active_logins) span=10s every=20s

everyの⽉間間隔は30⽇間です。everyの年間間隔は365⽇間です。

<timescale>
構⽂ :<sec> | <min> | <hr> | <day> | <month> | <subseconds>
説明 :タイムスケールの単位。
デフォルト :sec

タイムスケールの単 構⽂ 説明

s | sec | secs | second |
<sec> タイムスケール(秒)。
seconds

m | min | mins | minute |


<min> タイムスケール(分)。
minutes

<hr> h | hr | hrs | hour | hours タイムスケール(時)。

<day> d | day | days タイムスケール(⽇)。

<month> mon | month | months タイムスケール(⽉)。

タイムスケール(マイクロ秒(us)、ミリ秒(ms)、センチ秒(cs)、デシ秒(ds)
<subseconds> us | ms | cs | ds
)

mstatsは、タイムスタンプの分解能がミリ秒に設定されているメトリックスインデックスをサーチする場合にの
み、msなどの1秒未満のタイムスケールをサポートします。

メトリックスインデックスがミリ秒のタイムスタンプ分解能でメトリックスデータポイントをインデックス化できるよ
うにする⽅法については、以下を参照してください。

Splunk Cloudを使⽤している場合は『Splunk Cloudユーザー』マニュアルの「Splunk Cloudインデックスの管


理」。
Splunk Enterpriseを使⽤している場合は、『インデクサーとインデクサークラスターの管理』の「カスタムインデッ
クスの作成」。

時間オプション

<timeformat>
構⽂ :timeformat=<string>
説明 :starttime項⽬とendtime項⽬のフォーマットを指定します。
デフォルト :timeformat=%m/%d/%Y:%H:%M:%S。

使⽤可能なtimeformatオプションを使⽤した正確な時刻の設定については、「⽇付と時間の書式変数」を参照してくださ
い。
1秒未満のオプションは、タイムスタンプの分解能がミリ秒に設定されているメトリックスインデックスに対してサー
チを実⾏する場合にのみ使⽤できます。
<time-modifier>
構⽂ :starttime=<string> | endtime=<string> | earliest=<time_modifier> | latest=<time_modifier>
説明 :開始時間、終了時間を相対時間または絶対時間で指定します。

earliest属性とlatest属性を使って、サーチの絶対/相対時間範囲を指定することもできます。

<time_modifier>構⽂の詳細については、「時間修飾⼦」を参照してください。
絶対時間範囲の設定については、「⽇付と時間の書式変数」を参照してください。1秒未満のオプションは、タイムス
タンプの分解能がミリ秒に設定されているメトリックスインデックスに対してサーチを実⾏する場合にのみ使⽤できま
す。
starttime
294
構⽂ :starttime=<string>
説明 :イベントはこの時間か、それ以降でなければなりません。starttimeはtimeformatと⼀致する必要がありま
す。

endtime
構⽂ :endtime=<string>
説明 :すべてのイベントはこの時間か、それ以前でなければなりません。

使⽤法
mstatsコマンドは、append=trueである場合を除き、レポート⽣成コマンド となります。「コマンドタイプ」を参照してくだ
さい。

append=trueが指定されている場合を除いて、⽣成コマンドは、先頭にパイプ⽂字を付けた、サーチの最初のコマンドでなけれ
ばなりません。
mstatsコマンドを使⽤してメトリックスデータをサーチします。メトリックスデータはメトリックスフィールドに特定の
フォーマットを使⽤します。メトリックスのメトリックスデータフォーマットを参照してください。
すべてのメトリックスサーチコマンドでは⼤⽂字と⼩⽂字が区別されます。つまり、mstatsコマンドは、たとえ
ばcap.gear、CAP.GEAR、Cap.Gearをmetric_nameの3つの異なる値として扱います。

m st at sサーチ結果の付加

mstatsコマンドはサブサーチをサポートしていません。append引数を使⽤すると、mstatsサーチの結果を先⾏するmstatsサーチ
の結果に付加できます。appendの使⽤例は、tstatsコマンドのトピックを参照してください。

集計

<stats-func>構⽂を使⽤した場合、数値集計はmetric_nameフィールドの特定の値でのみ可能です。メトリックス名は括弧で囲
む必要があります。括弧内に指定されたmetric_nameにデータが存在しない場合、サーチは無効となります。

<stats-func-value>構⽂を使⽤した場合、数値集計は_valueフィールドでのみ可能です。

集計は_timeフィールドを含む他のフィールドの値では許可されていません。

prestats = trueの状態でcおよびcount集計関数を使⽤するmstatsサーチを集計フィールドなしで実⾏すると、Splunkソフト
ウェアはこれらをcount(_value)であるかのように処理します。また、サーチ後のすべての統計関数は_valueフィールドを参照
する必要があります。例: | mstats count | timechart count(_value)

ワイルドカード⽂字

mstatsコマンドはサーチフィルターでワイルドカード⽂字をサポートしますが、次の例外があります。

GROUP BY句ではワイルドカード⽂字を使⽤できません。
<stats_func_value>構⽂を使⽤した場合は、_valueフィールドではワイルドカード⽂字を使⽤できません。
集計でワイルドカード⽂字を使⽤して、名前を変更する場合、新しい名前はワイルドカードと⼀致する必要がありま
す。
たとえば、このサーチは無効です。

| mstats sum(*.free) as FreeSum

このサーチは有効です。
| mstats sum(*.free) as *FreeSum

<stats-func>構⽂を使⽤する場合、リアルタイムのmstatsサーチではワイルドカードメトリックス集計を使⽤できませ
ん。
たとえば、次のサーチをリアルタイムサーチとして設定した場合は無効になります。

| mstats avg(cpu.*) max(cpu.*) where index=sysmetrics

次のリアルタイムサーチは有効です。
| mstats avg(cpu.sys) max(cpu.usr) where index=sysmetrics

W HERE句

295
WHERE句を使って任意のディメンションでフィルタリングできます。

<stats-func>構⽂を使⽤した場合、WHERE句を使⽤してmetric_nameでフィルタリングすることはできません。metric_nameでの
フィルタリングは、<stats-func>引数で指定されるmetric_nameフィールドに基づいて⾏われます。

<stats-func-value>構⽂を使⽤した場合、WHERE句を使⽤してmetric_nameでフィルタリングする必要があります。

WHERE句でインデックス名を指定しないと、mstatsコマンドは、ユーザーのロールに関連付けられているデフォルトのメト
リックスインデックスから結果を返します。インデックス名を指定せず、⾃分のロールに関連付けられているデフォルトの
メトリックスインデックスも存在しない場合、mstatsコマンドは何も返しません。すべてのメトリックスインデックスに対し
てサーチを⾏うには、WHERE index=*と指定します。

WHERE句とBYまたはGROUPBY句を⼀緒にmstatsで使⽤する場合は、WHERE句をBYまたはGROUPBY句の前に指定する
必要があります。
ロールのデフォルトメトリックスインデックスの定義についての詳細は、『Splunk Enterpriseのセキュリティ』の
「Splunk Webを使ったロールの追加と編集」を参照してください。

メトリックスメイトディメンションによる結果のグループ化

metric_nameおよびdimensionフィールドで結果をグループ化することができます。

時間によってグループ化することも可能です。時間バケットでグループ化するには、<span-length>引数を使⽤してタイムスパ
ンを指定する必要があります。たとえば、span=1hrまたはspan=autoです。<span-length>引数はBY句とは別で、句間のサーチの
任意のポイントに配置できます。
_valueまたは_timeフィールドによるグループ化はできません。

メトリックス時系列によるグループ化

メトリックス時系列 結果をグループ化することができます。メトリックス時系列とは、同じメトリックスとディメンション
フィールド/値ペアを共有するメトリックスデータポイント のセットです。メトリックス時系列によってグループ化するこ
とで、統計計算を実⾏する場合に異なるメトリックスデータソースからのデータポイントの混在を防⽌できます。
メトリックス時系列でグループ化するにはBY _timeseriesを使⽤します。_timeseriesフィールドは内部フィールドであるため、
結果には表⽰されません。サーチで_timeseries値を表⽰するには、サーチに| rename _timeseries AS timeseriesを追加します。

_timeseriesフィールドの詳細と例は、『メトリックス』の「メトリックス時系列に対する統計計算の実⾏」を参照してくださ
い。

時間ディメンション

mstatsコマンドは、以下の時間に関連したディメンションを認識しません。

サポートされないディメンション
date_hour date_wday
timeendpos
date_mday date_year
date_minute date_zone timestamp
date_month metric_timestamp timestartpos
date_second time

秒未満のビンタイムスパン

デシ秒(ds)、センチ秒(cs)、ミリ秒(ms)、マイクロ秒(us)で構成される1秒未満のspanタイムスケールタイムスパンは、タイム
スタンプの分解能がミリ秒に設定されているメトリックスインデックスに対してmstatsサーチを実⾏する場合にのみ使⽤でき
ます。

1秒未満のspanタイムスケールは、1秒を等分した数値である必要があります。例:1s = 1000ms。つまり、有効なミリ秒
のspan値は、1、2、4、5、8、10、20、25、40、50、100、125、200、250、または500msです。また、span = 1000msとは
指定できません。代わりにspan = 1sを使⽤します。

インデックスでミリ秒のタイムスタンプ分解能を設定する⽅法については:
Splunk Cloudを使⽤している場合は『Splunk Cloudユーザー』マニュアルの「Splunk Cloudインデックスの管理」
を参照してください。
Splunk Enterpriseを使⽤している場合は、『インデクサーとインデクサークラスターの管理』の「カスタムインデッ
クスの作成」を参照してください。
296
タイムスタンプ分解能が異なるインデックスセットのサーチ

タイムスタンプの分解能が異なる複数のメトリックスインデックスに対してmstatsサーチを実⾏すると、サーチ結果に異なる
分解能のタイムスタンプが含まれることがあります。
たとえば、2つのメトリックスインデックスがあるとします。「metrics-second」メトリックスインデックスのタイムスタ
ンプの分解能は秒です。「metrics-ms」メトリックスインデックスのタイムスタンプの分解能はミリ秒です。これらのイン
デックスに対して次のサーチを実⾏します。| mstats count(*) WHERE index=metric* span=100ms.

このサーチは、以下の結果を⽣成します。

_t im e co unt (cpu.nice)
1549496110 48

1549496110.100 2

両⽅のインデックスから11549496110の⾏カウントが返されます。「metric-ms」には、タイムスタンプ
が1549496110.000〜1549496110.099のメトリックスデータポイントのみが含まれます。タイムスタンプ
が1549496110.100〜1549496110.199の「metric-ms」メトリックスデータポイントは、1549496110.100⾏に表⽰されます。

「metric-second」インデックスのメトリックスデータポイントのタイムスタンプの精度はミリ秒単位ではありませ
ん。1549496110⾏は、タイムスタンプが11549496110の「metric-second」メトリックスデータポイントのみをカウント
し、1549496110.100⾏では「metric-second」からのメトリックスデータポイントはカウントされません。

m st at sサーチジョブの時間ビン制限

Splunkソフトウェアは、spanや同様の⽅法で結果を時間でグループ化するmstatsサーチジョブを制限しています。Splunkソ
フトウェアがこれらのジョブを処理する場合は、単⼀の.tsidxファイル内で割り当てることのできる「時間ビン」の数が制限
されます。
タイムスタンプ分解能が秒単位のメトリックスインデックスの場合、この制限は時間範囲が⻑く、タイムスパン短いサーチ
(例:1年間に対するspan = 1sのサーチ)にのみ影響します。タイムスタンプ分解能がミリ秒のメトリックスインデックスに対
してサーチを実⾏する場合、この制限は短い範囲(例:1時間に対するspan = 1msのサーチ)にも適⽤されます。

この制限は、limits.confのtime_bin_limitで設定され、デフォルトでは100万ビンに設定されます。これらのmstatsサーチジョ
ブを実⾏する必要がある場合、サーチごとに使⽤するメモリー量が多ければ、この値を⼩さくしてください。これらのサー
チジョブでエラーが返される場合は、この値を⼤きくしてください。
Splunkプラットフォームでは、サーチ時間範囲をgroup-byスパンで割ることによって、サーチで必要な時間ビンの数を⾒積
もっています。これによって求められた値がtime_bin_limitよりも⼤きいと、Splunkプラットフォームはエラーを返します。

サーチ時間範囲は、サーチのearliest値とlatest値によって決定します。全時間サーチなど、⼀部のサーチに
はearliestとlatestの値はありません。この場合、SplunkプラットフォームはそれぞれのTSIDXファイルを確認して、サーチ
の時間範囲を決定します。
メトリックスインデックスのデフォルトのタイムスタンプ分解能は秒です。メトリックスインデックスを作成するときにタ
イムスタンプ分解能をミリ秒に設定したり、既存のメトリックスインデックスのタイムスタンプ分解能をミリ秒に変更でき
ます。
Splunk Cloudを使⽤している場合は、Splunk Cloud『ユーザー』マニュアルの「Splunk Cloudインデックスの管理」を参
照してください。Splunk Enterpriseを使⽤している場合は、『インデクサーとインデクサークラスターの管理』の「カスタ
ムインデックスの作成」を参照してください。

メモリーとm st at sサーチパフォーマンス

limits.confの2つの設定により、mstatsサーチのパフォーマンスと、これらのコマンドがサーチプロセスで使⽤するメモリー
量(RAMとディスクスペース)のバランスを調整できます。mstatsサーチの完了に常に時間がかかる場合は、これらの設定を調
整することでパフォーマンスを⾼めることができますが、サーチ時のメモリー使⽤量が増えるため、サーチエラーの原因に
なることもあります。
Splunk Cloudを使⽤している場合、これらの設定を変更するにはサポートチケットの申請が必要です。

詳細は、『サーチ』マニュアルの「メモリーとstatsサーチパフォーマンス」を参照してください。

辞書的順序

辞書的順序はアイテムをそのアイテムをコンピューターメモリーでエンコードするのに使⽤される値に基づいて並べ替えま
す。Splunkソフトウェアでは、これはほとんど常にUTF-8エンコードで、ASCIIよりも多くの機能があります。

297
数字は⽂字の前に並び替えられます。⽂字は最初の桁に基づいて並び替えられます。たとえば、10, 9, 70, 100は辞書
的には10, 100, 70, 9に並べ替えられます。
⼤⽂字は⼩⽂字の前に来ます。
記号は標準ではありません。数値の前に並び替えられる記号もあります。その他の記号は⽂字の前または後に並び替え
られます。
並び替えの順序は、辞書的順序からカスタム順序に変更できます。ブログ「Order Up! Custom Sort Orders (整列!カスタム
並び替え順序)」を参照してください。


1.時間でグループ化された単⼀メトリックスを計算する

mymetricdataメトリックスインデックスにあるaws.ec2.CPUUtilizationメトリックスの平均値を返します。結果を30秒のタイム
スパンでバケツします。
| mstats avg(aws.ec2.CPUUtilization) WHERE index=mymetricdata span=30s

2.メトリックスを異なるメトリックス名で組み合わせる

aws.ec2.CPUUtilizationメトリックスとos.cpu.utilizationメトリックス両⽅の平均値を返します。結果をホストごとにグループ
化して、1分間のタイムスパンに結果をバケツします。両⽅のメトリックスは組み合わされ、単⼀メトリックスシリーズとみ
なされます。
| mstats avg(aws.ec2.CPUUtilization) avg(os.cpu.utilization) WHERE index=mymetricdata BY host span=1m

3.上位10件のホストでメトリックスイベントカウントをグラフ化するには、chart =t モードを使⽤します。

上位10ホストで分割した毎⽇のaws.ec2.CPUUtilizationメトリックスデータポイント数のグラフを返します。

| mstats chart=t count(aws.ec2.CPUUtilization) by host WHERE index=mymetricdata span=1d chart.limit=top10

4.結果をディメンション値でフィルタリングし、別のディメンションの値で分割する

host=fooであるすべての測定についてaws.ec2.CPUUtilizationメトリックスの平均値を返し、結果をappディメンションの値で分
割します。
| mstats avg(aws.ec2.CPUUtilization) WHERE host=foo BY app

5.複数のメトリックスで複数の集計を指定する

常駐設定サイズおよび仮想メモリーサイズの平均および最⼤を返します。結果をmetric_nameごとにグループ化して、1分間の
タイムスパンに結果をバケツします。

| mstats avg(os.mem.rss) AS "AverageRSS" max(os.mem.rss) AS "MaxRSS" avg(os.mem.vsz) AS "AverageVMS" max(os.mem.vsz) AS


"MaxVMS" WHERE index=mymetricdata BY metric_name span=1m

6.ダウンサンプリングによってサーチを⾼速化し、すべてのデフォルトメトリックスインデックスでメトリックスを
集計する

aws.ec2.CPUUtilizationメトリックスの中間値を探します。⾃分のロールに関連付けられているすべてのデフォルトメトリック
スインデックスで測定をサーチするためのインデックスフィルターを含めないでください。everyを使⽤してサーチ対象の5分
間ごとに1分間の中央値を計算することで、サーチを⾼速化します。

| mstats median(aws.ec2.CPUUtilization) span=1m every=5m

7.累積カウンターメトリックスのレートを取得して、結果を時系列でグループ化する

詳細は、『メトリックス』の「メトリックス時系列に対する統計計算の実⾏」を参照してください。

| mstats rate(spl.intr.resource_usage.PerProcess.data.elapsed) as data.elapsed where index=_metrics BY _timeseries | rename


_timeseries AS timeseries

8.st at s-func-valueの例

<stats-func-value>構⽂を使⽤して、mymetricdataインデックス内ですべてのaws.ec2.CPUUtilizationメトリックスの測定カウント
を取得します。
| mstats count(_value) WHERE metric_name=aws.ec2.CPUUtilization AND index=mymetricdata
298
関連項⽬
関連情報
「メトリックス」の「メトリックスの概要」

mu l t ikv
説明
top、netstat、psの結果など、テーブルでフォーマットされたイベントからフィールド値を抽出します。multikvコマンドに
より、各テーブル⾏に対して新しいイベントが作成され、テーブルのタイトル⾏からフィールド名が割り当てられます。

multikvで処理できるようになっている、この種類のデータの例を次に⽰します。
Name Age Occupation
Josh 42 SoftwareEngineer
Francine 35 CEO
Samantha 22 ProjectManager

ここで主な特徴は:

テキストの各⾏が概念的レコードを表している。
列が揃っている。
テキストの最初の⾏が、列内のデータ名を表している。
multikvでは、このテーブルを1つのイベントから、関連フィールドを持つ3つのイベントに変換することができます。固定揃
えの⽅が簡単に処理できますが、単に順番に並んでいるフィールドでも処理できることがあります。
⼀般的な⽅針としては、ヘッダー、オフセット、およびフィールド数を判別し、次に後続の⾏のどのコンポーネントをそれ
らのフィールド名に含めるかを決定します。単位単⼀イベント内の複数のテーブルを処理できます(multitable=trueの場
合)。ただし、2番⽬のテーブルのヘッダー⾏は⼤⽂字にする、またはALLCAPS名にする必要があります。

ヘッダー⾏の⾃動検出はテキスト⾏、およびALLCAPS処理またはすべて⼤⽂字になっている場合に正常に機能します。
Splunk Cloudをお持ちでこの機能を使⽤したい場合は、定義したいmulti-key-value抽出を指定したサポートチケットを申
請します。

構⽂
multikv [conf=<stanza_name>] [<multikv-option>...]

省略可能な引数

conf
構⽂ :conf=<stanza_name>
説明 :multikv.confにフィールド抽出を定義した場合、サーチ内でこの引数を使ってスタンザを参照します。詳細
は、『管理』マニュアルの「設定ファイルリファレンス」に記載されているmultikv.confの説明を参照してください。
<multikv-option>
構⽂ :copyattrs=<bool> | fields <field-list> | filter <term-list> | forceheader=<int> | multitable=<bool> |
noheader=<bool> | rmorig=<bool>
説明 :表イベントからフィールドを抽出するオプションです。

m ult ikvオプションの説明

copyattrs
構⽂ :copyattrs=<bool>
説明 :真(True)の場合、multikvはオリジナルのイベントからすべてのフィールドを、そのイベントから⽣成されたイベ
ントにコピーします。偽(False)の場合、オリジナルのイベントからフィールドはコピーされません。この場合、イベン
トには_timeフィールドがないため、UIにそれを表⽰する⽅法はありません。
デフォルト :真(True)

フィールド
構⽂ :fields <field-list>
説明 :multikv抽出が設定するフィールドをこのリストに制限します。リストにないテーブル内のフィールドは無視さ
れます。

フィルター
構⽂ :filter <term-list>
説明 :指定した場合、multikvは最低でもフィルターリスト内のいずれかの⽂字列を含まないテーブル⾏をスキップしま
す。"multiple words"や"trailing_space "などのように、引⽤符で囲んだ式を指定できます。
299
forceheader
構⽂ :forceheader=<int>
説明 :テーブルヘッダーの⾏番号(最初の⾏を1とする数え⽅による番号)を強制的に指定した値に設定します。空⾏はカ
ウントされません。
デフォルト :multikvコマンドは、ヘッダー⾏を⾃動的に決定しようと試みます。

multitable
構⽂ :multitable=<bool>
説明 :元のイベントの単⼀のsingle _raw内に、複数のテーブルを⼊れることができるかどうかを指定します。
デフォルト :真(True)
noheader
構⽂ :noheader=<bool>
説明 :ヘッダー⾏識別なしでテーブルを処理します。テーブルのサイズは最初の⾏から推測され、フィールドには
Column_1、Column_2、...のような名前が付けられます。noheader=trueに設定すると、multitable=falseとなります。
デフォルト :偽(False)

rmorig
構⽂ :rmorig=<bool>
説明 :真(True)の場合、出⼒結果にオリジナルのイベントは含まれません。偽(False)の場合、オリジナルのイベントは
出⼒結果内に保持されます。オリジナルから⼀連の結果が⽣成された後、各オリジナルが⽣成されます。
デフォルト :真(True)

使⽤法
multikvコマンドは、分散可能ストリーミングコマンドです。「コマンドタイプ」を参照してください。


例1:「splunkd」を含む⾏があった場合に、COMMANDフィールドを抽出します。
... | multikv fields COMMAND filter splunkd

例2:「pid」と「command」フィールドを抽出します。

... | multikv fields pid command

関連項⽬
extract、kvform、rex、xmlkv

mu l t isea r ch
説明
multisearchコマンドは、複数のストリーミングサーチを同時に実⾏する⽣成コマンドです。このコマンドは最低2つのサブ
サーチを必要とし、各サブサーチでは純粋なストリーミング操作のみを⾏うことができます。ストリーミングサーチの例と
しては、search、eval、where、fields、rexなどのコマンドを使ったサーチが挙げられます。詳細は、『サーチ』マニュアルの
「コマンドの種類」を参照してください。

構⽂
| multisearch <subsearch1> <subsearch2> <subsearch3> ...

必須引数

<subsearch>
構⽂ :"["search <logical-expression>"]"
説明 :少なくとも2つのストリーミングサーチを指定しなければなりません。<logical-expression>の有効な引数の詳
細については、サーチコマンドを参照してください。
詳細は、『サーチ』マニュアルの「サブサーチについて」を参照してください。

使⽤法
multisearchコマンドはイベント⽣成コマンドです。「コマンドタイプ」を参照してください。

⽣成コマンドの先頭にはパイプ⽂字が付けられ、サーチの最初のコマンドである必要があります。

サブサーチ処理および制限
300
multisearchコマンドでは、各サブサーチからのイベントがインターリーブされます。そのため、multisearchコマンドはサブ
サーチ制限により制限されません。

appendコマンドとは別に、multisearchコマンドはサブサーチが最初に完了するように実⾏しません。appendコマンドを使⽤し
た以下のサブサーチ例はmultisearchコマンドの使⽤とは同じではありません。

index=a | eval type = "foo" | append [search index=b | eval mytype = "bar"]


例1:

インデックスaおよびbからのイベントをサーチするとします。このときevalコマンドを使⽤して異なるフィールドを各結果
セットに追加してください。

| multisearch [search index=a | eval type = "foo"] [search index=b | eval mytype = "bar"]

関連項⽬
append、join

mv combine
説明
単⼀値を含む特定フィールド以外は同⼀である⼀群のイベントを取り出し、単⼀イベントに組み合わせます。特定フィール
ドは、組み合わされたイベントからの単⼀値すべてを含む複数値フィールドになります。
mvjoin eval関数がmvcombineコマンドよりも優れたオプションである場合があります。「使⽤法」を参照してください。

mvcombineコマンドは内部フィールドには適⽤されません。

『ナレッジ管理』マニュアルの「デフォルトフィールドの使⽤」を参照してください。

構⽂
mvcombine [delim=<string>] <field>

必須引数

field
構⽂ :<field>
説明 :結合するフィールド名、これにより複数値フィールドが⽣成されます。

省略可能な引数

delim
構⽂ :delim=<string>
説明 :複数値フィールドに組み合わされた値の区切り⽂字として使⽤される⽂字列を定義します。たとえば、フィール
ドの値が「1」、「2」、「3」でありdelimが「;」である場合、組み合わされた複数値フィールドは「1」;「2」;「3」に
なります。
デフォルト :1つのスペース(" ")

delim引数の出⼒を表⽰するには、mvcombineコマンドの直後にnomvコマンドを使⽤する必要があります。「使⽤法」を
参照してください。

使⽤法
mvcombineコマンドは、変換コマンド です。「コマンドタイプ」を参照してください。

評価機能および統計機能を複数値フィールドで使⽤するか、複数値フィールドを返すことができます。
mvcombineコマンドは⼀連の⼊⼒結果を許可し、特定フィールドを除きすべてのフィールド値が同⼀である結果グループを⾒つ
けます。これらの結果はすべて単⼀結果に結合され、特定フィールドは複数値フィールドになります。
rawイベントは多くのフィールドがそれぞれ異なっているため、通常はfieldsコマンドを使って⼀連の利⽤可能なフィールド
をペアリングした後に役⽴ちます。このコマンドは特定のレポートコマンドの結果を処理する際にも有⽤です。

301
区切り⽂字の指定

mvcombineコマンドは、指定されたフィールドの複数値バージョンと単⼀値バージョンを作成します。デフォルトは複数値バー
ジョンです。
フィールドの単⼀値バージョンとは、スペースまたはdelim引数に指定した区切り⽂字で区切られたフラットな⽂字列です。

デフォルトでは、フィールドの複数値バージョンが結果に表⽰されます。区切り⽂字⽉の単⼀値バージョンを表⽰するに
は、サーチの最後に|nomvコマンドを追加します。たとえば、...| mvcombine delim= "," host | nomv hostです。

サーチ結果を調査する⼿段の中には、UIでのCSVのエクスポートやsplunk search "..." -output csvを使ったコマンドライン


サーチのサーチ実⾏など、単⼀値の表記が優先されるものものあります。こうした単⼀値は、multivalueに対応していない⼀
部のコマンドでも使⽤できます。

サーチ結果へのアクセス⼿法の⼤半は複数値表記を好みます(UIでの結果の表⽰、JSONへのエクスポート、splunk search
"..." -output jsonを使ったコマンドラインサーチからのJSONのリクエスト、REST APIからのJSONまたはXMLのリクエス
トなど)。このような⼿段では、指定されたdelimには何の効果もありません。

Mvcom bineの代わりにm vjoinを使⽤する

フィールドが複数値フィールドで、異なる区切り⽂字のある単⼀値フィールドにしたい時は、mvjoin評価関数を使⽤します。
たとえば、複数値フィールドは値「1」、「2」、「3」、「4」、「5」を含みます。ORを区切り⽂字として使⽤する単⼀値
フィールドが必要です。たとえば、「1 OR 2 OR 3 OR 4 OR 5」。mvcombineコマンドではなくmvjoin関数を使⽤します。「多
値評価関数」を参照してください。


1.複数値フィールドの作成

この例は、「サーチチュートリアル」のサンプルデータセットを使⽤しています。この例を試すには、「Splunkへのチュートリアルデータの取り込
み」の説明に従ってデータセットをダウンロードし、「サーチチュートリアル」の説明に従ってデータをアップロードしてください。

mvcombineの働きを理解するため、データを調べてみましょう。

1. 時間の範囲を常時 に変更します。
2. 以下のサーチを実⾏します。
index=* | stats max(bytes) AS max, min(bytes) AS min BY host

結果では、m ax およびm in フィールドにはwwwで始まるhostフィールドの重複エントリがあります。他のホストで


は、m ax およびm in フィールドの結果はありません。

302
3. 結果から他のhostフィールドを削除するには、サーチを修正して、サーチ条件にhost=www*を追加します。

index=* host=www* | stats max(bytes) AS max, min(bytes) AS min BY host

maxおよびmin列にはまったく同じ値が⼊っているため、mvcombineを使⽤してホスト値を複数値結果として組み合わせる
ことができます。
4. | mvcombine hostをサーチ条件に追加して再度サーチを実⾏します。

index=* host=www* | stats max(bytes) AS max, min(bytes) AS min BY host | mvcombine host

今度は3列ではなく1列のみが返されます。hostフィールドは複数値フィールドとなっています。

2.区切られた値を返す

「使⽤法」で説明したように、デフォルトでは区切られたバージョンの結果は出⼒には返されません。区切り⽂字付きの結
果を返すには、フィールドの単⼀値⽂字列バージョンを返すように指定する必要があります。
nomvコマンドをサーチに追加します。例:

index=* host=www* | stats max(bytes) AS max, min(bytes) AS min BY host | mvcombine delim="," host | nomv host

303
返されたサーチ結果を以下の表に⽰します。

ホスト m ax m in
www1,www2,www3 4000 200

各カンマの後にスペースを⼊れて結果を返すには、delim=", "と指定します。

例3:

複数値イベントでは:

sourcetype="WMI:WinEventLog:Security" | fields EventCode, Category,RecordNumber | mvcombine delim="," RecordNumber | nomv


RecordNumber

例4:

「foo」の値とコロン区切り⽂字を組み合わせます。
... | mvcombine delim=":" foo

関連項⽬
コマンド:
makemv
mvexpand
nomv
関数:
多値評価関数
マルチ値統計およびグラフ機能
分割

mv expa nd
説明
複数値フィールドの値を、その各値を持つ個別のイベントにデプロイします。結果として、mvexpandコマンドは複数値フィー
ルドごとに新たな結果を⽣成します。

mvexpandコマンドは内部フィールドには適⽤されません。

『ナレッジ管理』マニュアルの「デフォルトフィールドの使⽤」を参照してください。

構⽂
mvexpand <field> [limit=<int>]

必須引数

field
構⽂ :<field>
説明 :複数値フィールドの名前です。

省略可能な引数

limit
構⽂ :limit=<int>
説明 :各⼊⼒イベントで使⽤する、<field>の値の数を指定します。
デフォルト :0 (制限なし)

使⽤法
mvexpandコマンドは、分散可能ストリーミングコマンドです。「コマンドタイプ」を参照してください。

評価機能および統計機能を複数値フィールドで使⽤するか、複数値フィールドを返すことができます。

制限事項
304
結果バッチの拡張時にmvexpandコマンドが使⽤できるRAMの量には制限があります。デフォルトで制限は500MBです。通
常、⼊⼒の結果群のサイズはmaxresultrows以下になり、これらの結果の拡張はメモリー内に⼀度に保持されます。必要な合計
メモリーは、平均結果サイズを結果群内の結果数で乗算し、さらに拡張する複数値フィールドの平均サイズで乗算した値に
なります。
いずれかのチャンクでこの試⾏回数が設定された最⼤回数を超過すると、チャンクは連結され警告メッセージが表⽰されま
す。Splunk Enterpriseをお持ちの場合、max_mem_usage_mb設定をlimits.confファイルで編集することでこの制限を調整できま
す。

前提条件
設定ファイルを使⽤してmaxresultrowsとmax_mem_usage_mbの設定値を⼤きくできるのは、システム管理者など、ファイル
システムにアクセスできるユーザーのみです。
Splunk Enterpriseの『管理』マニュアルの「設定ファイルの編集⽅法」の⼿順を確認してください。
同名の設定ファイルを、default、local、およびappディレクトリに保管できます。Splunk Enterpriseの『管理』マ
ニュアルの「変更した設定ファイルの保管場所」を参照してください。
defaultディレクトリにある設定ファイルは、決して変更もコピーもしないでください。defaultディレクトリ内のファイルは
そのまま保持して元の位置にある必要があります。ファイルの変更はローカルディレクトリで⾏ってください。
Splunk Cloudを使⽤していてこの制限により問題が⽣じる場合は、サポートチケットを申請します。

例1:

複数値フィールド「foo」の各値に対応する新しいイベントを作成します。
... | mvexpand foo

例2:

複数値フィールド「foo」の最初の100件の値に対応する新しいイベントを作成します。
... | mvexpand foo limit=100

例3:

mvexpandコマンドは1つの複数値フィールドのみを処理できます。この例では、複数の複数値フィールドを持つイベントを、
各フィールドの値に対応する個別のイベントに拡張する⽅法を説明していきます。たとえば、sourcetype=dataの以下のイ
ベントを考えてみましょう。

2018-04-01 00:11:23 a=22 b=21 a=23 b=32 a=51 b=24


2018-04-01 00:11:22 a=1 b=2 a=2 b=3 a=5 b=2

まずrexコマンドを使って、aとbの値を抽出します。次にevalコマンドとmvzip関数を使ってaとbの値から新しいフィールド
を作成します。

source="mvexpandData.csv" | rex field=_raw "a=(?<a>\d+)" max_match=5 | rex field=_raw "b=(?<b>\d+)" max_match=5 | eval fields =
mvzip(a,b) | table _time fields

結果は、以下のような内容で[統計]タブに表⽰されます。

_t im e フィールド

22,21
2018-04-01 00:11:23 23,32
51,24

1,2
2018-04-01 00:11:22 2,3
5,2

新しいフィールドの「fields」 でmvexpandコマンドとrexコマンドを使⽤し、新しいイベントを作成してalphaおよびbeta

305
値を抽出します。

source="mvexpandData.csv" | rex field=_raw "a=(?<a>\d+)" max_match=5 | rex field=_raw "b=(?<b>\d+)" max_match=5 | eval fields =
mvzip(a,b) | mvexpand fields | rex field=fields "(?<alpha>\d+),(?<beta>\d+)" | table _time alpha beta

tableコマンドを使って、結果テーブルに_time、alpha、およびbetaフィールドのみを表⽰します。

結果は、以下のような内容で[統計]タブに表⽰されます。

_t im e alpha bet a

2018-04-01 00:11:23 23 32

2018-04-01 00:11:23 51 24

2018-04-01 00:11:22 1 2

2018-04-01 00:11:22 2 3

2018-04-01 00:11:22 5 2

(この例を提供してくださったSplunkユーザーDuncanさんに感謝の意を表明します。)

関連項⽬
コマンド:
makemv
mvcombine
nomv
関数:
多値評価関数
マルチ値統計およびグラフ機能
分割

nomv
説明
指定する複数値フィールドの値を1つの単⼀値に変換します。fields.confファイルに設定される複数値フィールドの設定を上
書きします。

構⽂
nomv <field>

必須引数

field
構⽂ :<field>
説明 :複数値フィールドの名前です。

使⽤法
nomvコマンドは、分散可能ストリーミングコマンドです。「コマンドタイプ」を参照してください。

評価機能および統計機能を複数値フィールドで使⽤するか、複数値フィールドを返すことができます。


例1:

sendmailイベントでは、sendersフィールドの値を単⼀値にまとめます。上位10件の値を表⽰します。
eventtype="sendmail" | nomv senders | top senders

関連項⽬
コマンド:
makemv
306
mvcombine
mvexpand
convert
関数:
多値評価関数
マルチ値統計およびグラフ機能
分割

ou t l ier
説明
このコマンドは、外れ値の検出ではなく除外に使⽤されます。選択フィールド内の範囲外の数値を除外または切り捨てま
す。フィールドが指定されていない場合、outlierコマンドはすべてのフィールドの処理を試みます。

フィルタリングは、数値フィールドの25位パーセンタイルと75位パーセンタイルの値の差で計算されるIQRに基づいて⾏わ
れます。イベントのフィールドの値が(25th percentile) - param*IQR未満、あるいは(75th percentile) + param*IQRを超える場
合、actionパラメーターに基づいてフィールドの変換、またはイベントの除外が⾏われます。

範囲外の値を特定し、それに対するアラートを⽣成するために、『サーチ』マニュアルの「外れ値の発⾒と削除」を参照し
てください。

構⽂
outlier <outlier-options>... <field-list>

省略可能な引数

<outlier-options>
構⽂ :<action> | <mark> | <param> | <uselower>
説明 :outlierのオプション。
<field-list>
構⽂ :<field> ...
説明 :フィールド名の、スペース区切りのリスト。

out lierのオプション

<action>
構⽂ :action=remove | transform
説明 :外れ値の処理を設定します。removeオプションは、数値の外れ値を持つイベントを削除します。transformアク
ションは、範囲外の値をその閾値に切り詰めます。action=transformおよびmark=trueの場合、値の前に「000」を追加し
ます。
省略形: removeアクションはrmに保存できます。transformアクションはtfに保存できます。
デフォルト :transform

<mark>
構⽂ :mark=<bool>
説明 :action=transformおよびmark=trueの場合、範囲外の値の前に「000」を追加します。action=removeの場合、mark引数
は無効となります。
デフォルト :偽(False)

<param>
構⽂ :param=<num>
説明 :外れ値を検出するための閾値です。外れ値は、IQRを乗じたparamに該当しない数値として定義されます。
デフォルト :2.5
<uselower>
構⽂ :uselower=<bool>
説明 :上記に加えて、中央値を下回る値の外れ値を探すかどうかを指定します。
デフォルト :偽(False)


例1:webserverイベントの時間グラフで、範囲外の平均CPU値を変換します。

404 host="webserver" | timechart avg(cpu_seconds) by host | outlier action=tf

例2:範囲外の数値をすべて削除します。

... | outlier
307
関連項⽬
anomalies、anomalousvalue、cluster、kmeans
外れ値の検索と削除

ou t pu t csv
説明
Splunk Enterpriseをお持ちの場合、このコマンドは$SPLUNK_HOME/var/run/splunk/csvディレクトリにあるローカルサーチヘッ
ド上の指定したCSVファイルに、サーチ結果を保存します。$SPLUNK_HOME/var/run/*.csvへのoutputcsvコマンドを使⽤した更新
は、クラスター間で複製されません。
Splunk Cloudを使⽤している場合は、このコマンドは使⽤できません。代わりに以下の選択肢があります。
Splunk Webを使⽤してサーチ結果をエクスポートします。『サーチ』マニュアルの「Splunk Webを使⽤するデータ
のエクスポート」を参照してください。
REST APIを使⽤してサーチ結果をエクスポートします。『サーチ』マニュアルの「REST APIを使⽤するデータのエク
スポート」を参照してください。
CSVファイルをメール添付ファイルとして含めるアラートアクションを作成します。『アラート』マニュアルの「メー
ル通知アクション」を参照してください。

構⽂
outputcsv [append=<bool>] [create_empty=<bool>] [override_if_empty=<bool>] [dispatch=<bool>]
[usexml=<bool>] [singlefile=<bool>] [<filename>]

省略可能な引数

append
構⽂ :append=<bool>
説明 :appendが真(True)の場合、このコマンドは既存のCSVファイルに追加しようとします(CSVファイルが存在する場
合)。CSVファイルが存在しない場合は、ファイルが⽣成されます。CSVヘッダーを持つファイルがすでに存在してい
る場合は、そのヘッダーが参照しているフィールドのみを⽣成します。このコマンドは、.gzファイルには追加できませ
ん。
デフォルト :false

create_empty
構⽂ :create_empty=<bool>
説明: trueに設定されていて結果がない場合は、ゼロ⻑のファイルが作成されます。falseに設定されていて結果がない
場合は、ファイルは作成されません。以前にファイルが存在していた場合、そのファイルは削除されます。
デフォルト :偽(False)
dispatch
構⽂ :dispatch=<bool>
説明 :真(True)を設定すると、$SPLUNK_HOME/var/run/splunk/dispatch/<job id>/のジョブディレクトリにあるファイルを参
照します。
filename
構⽂ :<filename>
説明 :サーチ結果を書き込むCSVファイルの名前を指定します。このファイルは、$SPLUNK_HOME/var/run/splunk/csvにな
ければなりません。ディレクトリの分割⽂字はファイル名に使⽤できません。ファイル名を指定しない場合、コマンド
により各結果の内容がCSVの⾏として_xmlフィールドに再書き込みされます。そうでない場合は、コマンドはファイル
に書き込みされます。ファイル拡張⼦がない場合.csvファイル拡張⼦がファイル名に追加されます。

override_if_empty
構⽂: override_if_empty=<bool>
説明: override_if_empty=trueで出⼒ファイルに結果が渡されない場合、既存の出⼒ファイルが削除されま
す。override_if_empty=falseで出⼒ファイルに結果が渡されない場合、既存の出⼒ファイルは削除されません。
デフォルト :真(True)
singlefile
構⽂ :singlefile=<bool>
説明 :singlefileに真(True)を設定しており、出⼒が複数のファイルにまたがる場合は、それを1つのファイルにまとめ
ます。
デフォルト :true

usexml
構⽂ :usexml=<bool>
説明 :ファイル名がない場合に、CSV出⼒をXMLにエンコードするかどうかを⽰します。UIからoutputcsvを起動する
308
場合は、このオプションを使⽤しないでください。

使⽤法
CSVファイルに保存できる結果の数には、制限はありません。

内部フィールドおよび outputcsvコマンド

outputcsvコマンドがで使⽤されている場合、CSVファイルに⾃動的に追加される内部フィールドがあります。CSVファイル
の出⼒に追加される内部フィールドは:

_raw
_time
_indextime
_serial
_sourcetype
_subsecond

内部フィールドを出⼒から除外するには、fieldsコマンドを使⽤して除外するフィールドを指定します。例:

... | fields - _indextime _sourcetype _subsecond _serial | outputcsv MyTestCsvFile

複数値フィールド

outputcsvコマンドは複数値フィールドにある値をシングルスペースの区切られた値に結合します。

分散デプロイ

outputcsvコマンドはサーチヘッドプーリング とサーチヘッドクラスタリング に互換性はありません。

コマンドは$SPLUNK_HOME/var/run/splunk/にあるローカルサーチヘッドに*.csvファイルを保存します。*.csvファイルは他のサー
チヘッドでは複製されません。


1.サーチ結果をCSVファイルに出⼒する

サーチ結果をmysearch.csvファイルに出⼒します。拡張⼦をサーチで指定しない場合、CSVファイル拡張⼦がファイル名に⾃
動的に追加されます。
... | outputcsv mysearch

2.ファイル名に動的タイムスタンプを追加する

サブサーチを使⽤して、ファイル名に動的タイムスタンプを追加することができます。
... | outputcsv [stats count | eval search=strftime(now(), "mysearch-%y%m%d-%H%M%S.csv")]

3.内部フィールドを出⼒CSVファイルから除外する

不要な内部フィールドを出⼒CSVファイルから除外できます。この例では、除外するフィールド
は_indextime、_sourcetype、_subsecond、および_serialです。

index=_internal sourcetype="splunkd" | head 5 | fields _raw _time | fields - _indextime _sourcetype _subsecond _serial |
outputcsv MyTestCsvfile

4.サーチ結果が返されない場合にはCSVファイルを削除しない

サーチから結果が返された場合は、サーチ結果をmysearch.csvファイルに出⼒します。サーチ結果が返されない場合に
はmysearch.csvファイルを削除しません。

... | outputcsv mysearch.csv override_if_empty=false

関連項⽬
inputcsv

309
ou t pu t l ooku p
説明
サーチ結果を、指定した静的ルックアップテーブルまたはKVストアーコレクションに書き込みます。

構⽂
太字 は必須構⽂です。
| o ut put lo o kup
[append=<bool>]
[create_empty=<bool>]
[override_if_empty=<bool>]
[max=<int>]
[key_field=<field>]
[createinapp=<bool>]
[output_format=<string>]
<filenam e> | <t ablenam e>

必須引数

filenameとtablenameは必須引数であるため、どちらかを指定する必要があります。

filename
構⽂ :<string>
説明 :ルックアップファイルの名前。ファイルは.csvまたは.csv.gzで終了する必要があります。

tablename
構⽂ :<string>
説明 :transforms.confにあるスタンザ名で指定されるルックアップテーブルの名前です。任意のルックアップタイプ
(CSV、外部、またはKVストアー)に対してルックアップテーブルを設定できます。

省略可能な引数

append
構⽂ :append=<bool>
説明: デフォルトのappend=falseの場合、サーチ結果を.csvファイルまたはKVストアーコレクションに書き込みます。
現在のサーチ結果に含まれない列は、ファイルから削除されます。trueに設定した場合は、サーチ結果を既存
の.csvファイルまたはKVストアーコレクションに追加しようと試みます。または、ファイルを作成します。既存の.csv
ファイルがある場合、outputlookupコマンドは以前に存在していた.csvファイルにあったフィールドだけを書き込みま
す。append=trueと⼀緒に実⾏されるoutputlookupサーチは、ルックアップテーブルやコレクションが部分的にのみ更新さ
れる状況をもたらす場合があります。これはつまり、そのルックアップテーブルまたはコレクションの以降のlookupま
たはinputlookupサーチが新しいデータとともに古いデータを返すことを意味します。outputlookupコマンドは.gzファイル
に追加できません。
デフォルト :偽(False)
create_empty
構⽂ :create_empty=<bool>
説明: trueに設定されていて結果がない場合は、ゼロ⻑のファイルが作成されます。falseに設定されていて結果がない
場合は、ファイルは作成されません。以前にファイルが存在していた場合、そのファイルは削除されます。

システムレベルの「test」というルックアップがあり、「test.csv」でルックアップが定義されているとします。ま
た、同じ名前のAppレベルのルックアップもあるとします。Appが⾃⾝のAppディレクトリで「test.csv」を空のファ
イルcreate_empty=trueで上書きした場合、Appレベルのルックアップはルックアップが空であるかのように動作しま
す。⼀⽅、ファイルが存在せず、Appレベルでcreate_empty=falseと指定されている場合は、システムレベルのルック
アップファイルが使⽤されます。
デフォルト :偽(False)
createinapp
構⽂ :createinapp=<bool>
説明: falseに設定されている、または現在のアプリケーションコンテキストがない場合、コマンドはシステムのルック
アップディレクトリにファイルを作成します。
デフォルト :真(True)
key_field
構⽂: key_field=<field>
説明 :KVストアーベースのルックアップの場合、指定されたフィールド名を値へのキーとして使い、その値を置換し
ます。key_field引数を使⽤したoutputlookupサーチでは、ルックアップテーブルまたはコレクションが部分的に更新され
る場合があります。コレクションでの後続のlookupやinputlookupサーチでは、新しいデータとともに古いデータも返さ
れることがあります。部分更新は同時サーチでしか発⽣しません。1つはoutputlookupコマンドでのサーチ
310
で、inputlookupコマンドでのサーチです。inputlookupは、outputlookupがいくつかの記録を更新中に発⽣することもあり
ます。

max
構⽂ :max=<int>
説明 :出⼒する⾏の数。
デフォルト :無制限

output_format
構⽂: output_format=splunk_sv_csv | splunk_mv_csv
説明: ルックアップの出⼒データフォーマットを制御します。複数値フィールドをルックアップテーブルファイルに出
⼒するにはoutput_format=splunk_mv_csvを使⽤し、inputlookupコマンドを使⽤してフィールドをSplunkに読み戻します。
デフォルトのsplunk_sv_csvは、_mv_<fieldname>フィールドを除外したCSVファイルを出⼒します。
デフォルト: splunk_sv_csv

override_if_empty
構⽂: override_if_empty=<bool>
説明: override_if_empty=trueで出⼒ファイルに結果が渡されない場合、既存の出⼒ファイルが削除されま
す。override_if_empty=falseで出⼒ファイルに結果が渡されない場合、既存の出⼒ファイルは削除されません。
デフォルト :真(True)

使⽤法
ルックアップテーブルは、CSVかGZファイル、またはtransforms.confのルックアップテーブル設定で指定されたテーブル名
である必要があります。ルックアップテーブルはKVストアーコレクションまたはCSVルックアップを参照できます。外部
ルックアップにoutputlookupコマンドは使⽤できません。
CSVルックアップの場合、ルックアップファイルが存在しないと、現在のアプリケーションのルックアップディレクトリ内
にファイルが作成されます。ルックアップファイルがすでに存在している場合は、outputlookupコマンドの結果で上書きされ
ます。createinappオプションをfalseに設定した場合、または現在のアプリケーションコンテキストが存在しない場合は、シ
ステムのルックアップディレクトリ内にファイルが作成されます。
CSVルックアップのアクセス許可の場合は、transforms.confのcheck_permissionフィールド
と、limits.confのoutputlookup_check_permissionを使⽤して、outputlookupコマンドを使⽤するときには適切な権限を持つユー
ザーだけに書き込みアクセスを制限します。check_permissionとoutputlookup_check_permissionのデフォルトは偽(false)です。
Splunkソフトウェアが真(true)に設定されていると、ユーザーのルックアップの権限設定が確認されます。ルックアップ
ファイルごとに.metaファイル内のルックアップテーブルファイルのアクセス権を変更するか、[ 設定] > [ ルックアップ] >
[ ルックアップテーブルファイル] を変更できます。デフォルトでは、adminロールまたはpowerロールを持つユーザーのみ
が共有CSV参照ファイルに書き込むことができます。
ルックアップの作成の詳細は、『ナレッジ管理』マニュアルの「ルックアップについて」を参照してください。

App Key-Valueストアーコレクションの詳細は、『管理』マニュアルの「KVストアーについて」を参照してください。

結果の追加

A、D、およびJ列を含む既存のCSVファイルがあり、サーチ結果にはA、C、およびJ列が含まれるとします。outputlookup
append=falseの設定でサーチを実⾏すると、A、C、およびJ列がCSVファイルに書き込まれます。D列は保持されません。

outputlookup append=trueでサーチを実⾏すると、現在ファイルにある列のみが保持されます。この例では、AおよびJ列がCSV
ファイルに書き込まれます。C列はCSVファイルに存在しないため削除されます。D列は保持されます。
この問題を回避するには、サーチを実⾏する前に evalコマンドを使⽤してCSVファイルに列を追加してください。CSVファ
イル名がfo o であれば、次のようなコマンドを実⾏します。
| inputlookup foo | eval c=null | outputlookup foo append=false ....

その後でサーチを実⾏し、保持したい列を指定したfieldsコマンドに結果を渡します。

... | fields A C J | outputlookup append=true foo

複数値フィールド

統計ルックアップテーブルに出⼒すると、outputlookupコマンドは複数値フィールドにある値をシングルスペースの区切られ
た値に結合します。これはKVストアーコレクションには適⽤されません。

1.t ransform s.confファイルの設定を使⽤してルックアップテーブルに書き込む


311
transforms.confファイルの指定に従ってusertogroupルックアップテーブルに書き込みます。

| outputlookup usertogroup

2.特定のシステムまたはAppディレクトリのルックアップファイルに書き込む

$SPLUNK_HOME/etc/apps/*/lookupsまたは$SPLUNK_HOME/etc/system/lookupsにあるusers.csvルックアップファイルに書き込みます。

| outputlookup users.csv

3.サーチ結果が返されない場合にはルックアップファイルを削除しないように指定する

結果が返された場合は($SPLUNK_HOME/etc/apps/*/lookupsまたはusers.csvにある) $SPLUNK_HOME/etc/system/lookupsルックアップ
ファイルに書き込みます。サーチ結果が返されない場合にはusers.csvファイルを削除しません。

| outputlookup users.csv override_if_empty=false

4.KVストアーコレクションに書き込む

Shalimar Restaurantの⾷品検査(food inspection)イベントをKVストアーコレクションkvstorecollに書き込みます。このコ


レクションは、ルックアップテーブルkvstorecoll_lookup内で参照されます。

index=sf_food_health sourcetype=sf_food_inspections name="SHALIMAR RESTAURANT" | outputlookup kvstorecoll_lookup

5.CSVファイルからKVストアーコレクションに書き込む

CSVファイルの内容をルックアップテーブルkvstorecollを使ってKVストアーコレクションkvstorecoll_lookupに書き込みま
す。このためには、inputlookupおよびoutputlookupコマンドの両⽅を使⽤する必要があります。

| inputlookup customers.csv | outputlookup kvstorecoll_lookup

6.KVストアーコレクションの単⼀のレコードのフィールドの値を更新する

Vストアーコレクションの単⼀のレコードのフィールドの値を更新します。このためには、inputlookup、outputlookup、およ
びevalコマンドを使⽤する必要があります。レコードはその内部キーID (_keyフィールド)の値で指定し、新しい顧客名と顧客
の都市名でレコードを更新します。レコードはKVストアーコレクションkvstorecollに所属しており、ルックアップテーブ
ルkvstorecoll_lookupを介してアクセスします。

| inputlookup kvstorecoll_lookup | search _key=544948df3ec32d7a4c1d9755 | eval CustName="Vanya Patel" | eval


CustCity="Springfield" | outputlookup kvstorecoll_lookup append=True key_field=_key

KVストアーコレクション内のレコードの、内部キーID値の取得⽅法については、inputlookupコマンドの例5を参照してくださ
い。

関連項⽬
コマンド
collect
inputlookup
lookup
inputcsv
mcollect
meventcollect
outputcsv
outputtext

ou t pu t t ext
説明
_rawフィールドの内容を_xmlフィールドに出⼒します。

出⼒のイベントテキストを⽣成するために、outputtextコマンドは内部機構として作成されています。

構⽂
outputtext [usexml=<bool>]
312
省略可能な引数

usexml
構⽂ :usexml=<bool>
説明: 真(True)に設定されている場合は、_xml内の_rawフィールドのコピーはエスケープされたXMLとなりま
す。usexmlが偽(false)に設定されている場合は、_xmlフィールドは_rawの完全コピーとなります。
デフォルト :真(True)

使⽤法
outputtextコマンドは、レポートコマンドです。

outputtextコマンドは、サーチ結果をサーチヘッドに書き込みます。Splunk Webでは、結果が[統計]タブに表⽰されます。

1._rawフィールドをエスケープされたXMLに出⼒する

現在のサーチの_rawフィールドを、_xmlに出⼒します。

... | outputtext

関連項⽬
outputcsv

ov er l a p
注意 :overlapコマンドを使⽤して、サマリーインデックスフィル/バックフィルすることはお勧めできません。Splunk
Enterpriseにはインデックスをバックフィルする、またはサマリーインデックスのギャップを埋めるfill_summary_index.pyと
呼ばれるスクリプトが⽤意されています。Splunk Cloudをお持ちでバックフィルが必要な場合は、サポートチケットを開い
てSplunkサポートが必要なデータをバックフィルするために必要な時間範囲、App、サーチ名、ユーザーおよびその他詳細
を指定します。詳細は、『ナレッジ管理』マニュアルの「サマリーインデックスのギャップの管理」を参照してください。

説明
サマリーインデックス内の時間が重複するイベントを探すか、または保存済みスケジュールサーチがイベントを⾒逃した可
能性がある時間のギャップを探します。
ギャップを⾒つけたら、 その期間に対してサーチを実⾏し、結果のサマリーインデックスを作成してください(「|
collect」を使⽤)。
重複するイベントが⾒つかった場合は、 サーチ⾔語を使ってサマリーインデックスから重複を⼿動削除してくださ
い。
overlapコマンドは外部のpythonスクリプト$SPLUNK_HOME/etc/apps/search/bin/sumindexoverlap.pyを起動します。スクリプトはサ
マリーインデックスから⼊⼒イベントを受け取り、同じ「info_search_name」で違う「info_search_id」を持つイベントの
時間の重複やギャップを探します。

重要 :⼊⼒イベントには以下のフィールドがあると想定されます:「info_min_time」、「info_max_time」(それぞれ包含
および除外)、「info_search_id」「info_search_name」。インデックスにrawイベント(_raw)が存在する場合、overlapコマ
ンドは機能しません。インデックスには、chart、stats、timechartなどの結果が含まれていなければなりません。

構⽂
overlap

例1:

「summary」インデックスで重複するイベントを探します。
index=summary | overlap

関連項⽬
collect、sistats、sitop、sirare、sichart、sitimechart

313
piv ot
説明
pivotコマンドは、かなり単純なピボット操作を⾏いますが、より洗練されたピボット操作を⾏うために、複雑にすることも
可能です。基本的にこのコマンドは、statsおよびxyseriesのラッパーとなります。

pivotコマンドで新しい動作は追加されないものの、ピボットの仕組みを理解されている⽅にとってはこちらの⽅が使いやす
いでしょう。『ピボットマニュアル』を参照してください。また、ピボットで⾮変換サーチを開く⽅法も確認してくださ
い。
特定のデータモデル オブジェクトに対して、ピボットサーチを実⾏します。多くの⼊⼒(データモデル、データモデルオブ
ジェクト、ピボットエレメント)が必要です。

構⽂
| pivot <datamodel-name> <object-name> <pivot-element>

必須引数

datamodel-name
構⽂ :<string>
説明 :サーチするデータモデルの名前です。
objectname
構⽂ :<string>
説明 :サーチするデータモデルオブジェクトの名前です。
pivot element
構⽂ :(<cellvalue>)* (SPLITROW <rowvalue>)* (SPLITCOL colvalue [options])* (FILTER <filter expression>)*
(LIMIT <limit expression>)* (ROWSUMMARY <true | false>)* (COLSUMMARY <true | false>)* (SHOWOTHER
<true | false>)* (NUMCOLS <num>)* (rowsort [options])*
説明 :ピボットエレメントを使ってピボットテーブルやグラフを定義します。ピボットエレメントには、セルの値、⾏
の分割、列の分割、フィルター、制限、⾏と列のフォーマット、⾏のソートオプションが含まれます。セル値が常に先
頭になります。この後には⾏の分割と列の分割が指定されます。これは、avg(val), SPLITCOL foo, SPLITROW bar, SPLITCOL
bazのようにインターリーブすることができます:。

セル値

<cellvalue>
構⽂ :<function>(fieldname) [AS <label>]
説明 :セルの値を定義し、必要に応じてその名前を変更します。ここで、labelはレポートのセル名です。

利⽤可能な関数は、fieldnameのデータタイプによって異なります。

⽂字列 :list、values、first、last、count、およびdistinct_count (dc)


数値 :sum、count、avg、max、min、stdev、list、およびvalues
タイムスタンプ :duration、earliest、latest、list、およびvalues
オブジェクトまたは⼦カウント :count

⾏split -byエレメントの説明

SPLITROW <rowvalue>
構⽂ :SPLITROW <field> [AS <label>] [RANGE start=<value> end=<value> max=<value> size=<value>]
[PERIOD (auto | year | month | day | hour | minute | second)] [TRUELABEL <label>] [FALSELABEL <label>]
説明 :各SPLITCOLにこれらのオプションを1つ以上指定できます。オプション表⽰の順序は⾃由です。フィールド名
は「AS <label>」を使って変更することができます。ここで「label」は、レポート内の⾏の名前です。

その他のオプションは、指定されたフィールドのデータタイプによって異なります。
RANGEは数値にのみ適⽤されます。すべてのオプション(start, end, max, and size)を指定する必要はありません。
PERIODはタイムスタンプにのみ適⽤されます。これを使って、バケツを作成する期間を指定します。
TRUELABELは論理値にのみ適⽤されます。これを使って、真の値のラベルを指定します。
FALSELABELは論理値にのみ適⽤されます。これを使って、偽の値のラベルを指定します。

列のsplit -byエレメントの説明

SPLITCOL colvalue <options>


構⽂ :fieldname [ RANGE start=<value> end=<value> max=<value> size=<value>] [PERIOD (auto | year |
month| day | hour | minute | second)] [TRUELABEL <label>] [FALSELABEL <label>]
説明 :各SPLITCOLにこれらのオプションを指定しないか、1つ以上指定できます。全部指定することもできます。こ
れらは任意の順序で表⽰されます。
314
その他のオプションは、指定されたフィールドのデータタイプによって異なります(fieldname):
RANGEは数値にのみ適⽤されます。オプション(start、end、max、およびsize)をすべて指定する必要はありません。
PERIODはタイムスタンプにのみ適⽤されます。これを使って、バケツを作成する期間を指定します。
TRUELABELは論理値にのみ適⽤されます。これを使って、真の値のラベルを指定します。
FALSELABELは論理値にのみ適⽤されます。これを使って、偽の値のラベルを指定します。

filt erエレメントの説明

Filter <filter expression>


構⽂ :<fieldname> <comparison-operator> <value>
説明 :フィールド中の値を特定するための式。使⽤する⽐較演算⼦は、フィールド値のタイプに応じて異なります。
⽂字列 :is、contains、in、isNot、doesNotContain、startsWith、endsWith、isNull、isNotNull

例:... filter fieldname in (value1, value2, ...)


ipv4 :is、contains、isNot、doesNotContain、startsWith、isNull、isNotNull
数: =、 !=、<、<=、>、>=、isNull、isNotNull
論理 :is, isNull, isNotNull

lim it エレメントの説明

Limit <limit expression>


構⽂ :LIMIT <fieldname> BY <limittype> <number> <stats-function>(<fieldname>)
説明 :ピボット中の要素の数を制限する。limittype引数は、どこに制限を置くかを指定します。有効な値は、topまた
はbottomです。number引数は正の整数でなければなりません。min、max、avg、sumなどの統計関数を使⽤できます。
例 :LIMIT foo BY TOP 10 avg(bar)

使⽤法
pivotコマンドはレポート⽣成コマンドです。「コマンドタイプ」を参照してください。

⽣成コマンドの先頭にはパイプ⽂字が付けられ、サーチの最初のコマンドである必要があります。


例1:このコマンドは、「Tutorial」データモデルの「HTTP Requests」オブジェクトのイベント数をカウントします。

| pivot Tutorial HTTP_requests count(HTTP_requests) AS "Count of HTTP requests"

これを、ダッシュボードパネルの単⼀値レポートとして書式設定することができます。

例2:チュートリアルのデータモデルを使って、ホストあたりのHTTPリクエスト(HTTP Requests)数のピボットテーブルを
作成します。

| pivot Tutorial HTTP_requests count(HTTP_requests) AS "Count" SPLITROW host AS "Server" SORT 100 host

315
関連項⽬
datamodel、stats、xyseries

pr edict
説明
predictコマンドは、1つ以上のセットの時系列データの予測を⾏います。このコマンドは、時系列から⽋けているデータを
補った上で、将来の複数の時間ステップについて予測することもできます。

predictコマンドにより、すべての予測値には厳密な信頼区間が提供されます。コマンドは時系列の各イベントに予測値のほ
か、95位パーセンタイル範囲の上限と下限を追加します。このトピックの使⽤法 のセクションを参照してください。

構⽂
predict <field-list> [AS <newfield>] [<predict_options>]

必須引数

<field-list>
構⽂ :<field> ...
説明 :予測する変数のフィールド名。1つ以上のフィールドを指定することができます。

省略可能な引数

<newfield>
構⽂ :<string>
説明 :<field-list>に指定されたフィールドの名前を変更します。<field-list>に指定したすべてのフィールドの名前を
変更する必要はありません。しかし名前の変更をする各フィールドに対して、個別にAS <newfield>句を指定する必要が
あります。

<predict_options>
構⽂ :algorithm=<algorithm_name> | correlate_field=<field> | future_timespan=<number> |
holdback=<number> | period=<number> | suppress=<bool> | lowerXX=<field> | upperYY=<field>
説明 :予測の制御に指定できるオプション。1つ以上のオプションを、任意の順序で指定することができます。これら
の各オプションは「predict のオプション 」のセクションに記載されています。

Predict のオプション

algorithm
構⽂ :algorithm= LL | LLT | LLP | LLP5 | LLB | BiLL
説明 :適⽤する予測アルゴリズムの名前を指定します。LL、LLT、LLP、LLP5は⼀変量アルゴリズムです。LLBおよ
びBiLLは⼆変量アルゴリズムです。すべてのアルゴリズムは、Kalmanフィルターに基づいたバリエーションです。各
アルゴリズムには期待する最低データポイント数があります。有効となるのに⼗分なデータポイントがない場合は、エ
ラーメッセージが表⽰されます。たとえば、フィールド⾃体に⼗分な数のデータポイントがある場合もありますが、指
定したholdbackの値が⼤きいと、有効なデータポイント数が⾜りないことがあります。
デフォルト :LLP5

アルゴリ アルゴリズムのタイ
ズムのオ プ 説明
プション
傾向もシーズンもない⼀変量モデル。最低2つのデータポイントが必要です。LL
LL ローカルレベル アルゴリズムは最もシンプルなアルゴリズムで、時系列のレベルを算出します。
316
LL ローカルレベル たとえば、どの新しい状態も前の状態とガウス雑⾳の和に等しい、というもので
す。
LLT ローカルレベル傾向 傾向はあるが、シーズンはない⼀変量モデル。最低3つのデータポイントが必要です。

シーズンがある⼀変量モデル。period引数を使⽤して、少なくとも期間の数の2倍のデータポイン
ト数を指定します。LLPアルゴリズムは、データが存在すれば、その周期的な規則性を考慮しま
シーズンに合わせたローカ
LLP す。期間の数が分かっている場合は、period引数を指定してください。periodを設定しない場合
ルレベル
は、このアルゴリズムがperiodを算出します。LLPはデータが周期的でない場合はエラーメッセー
ジを返します。

時系列が周期的な場合は、LLP5は2つの予測を⽴てます。1つはLTを使⽤し、もう1つはLLPを使
LLTとLLPモデルを組み
LLP5 ⽤します。アルゴリズムは2つの値の加重平均からそれを予測として出⼒します。信頼区間はまた、
合わせて予測を⾏います。
LLTとLLPの分散の加重平均を基づきます。

傾向もシーズンもない⼆変量モデル。最低2つのデータポイントが必要です。LLBは、1つのデータ
セットを使って、別の予測を⾏います。たとえば、それがデータセットYを使ってデータセットXの
LLB ⼆変量ローカルレベル
予測を⾏う場合を考えてみましょう。holdback=10の場合、このことはLLBがYの最後の10件の
データポイントを使って、Xの最後の10件のデータポイントの予測を⾏うことを意味しています。

BiLL ⼆変量ローカルレベル 両⽅の時系列を同時に予測する⼆変量モデル。2つのシリーズの共分散が考慮されます。

correlate
構⽂ :correlate=<field>
説明 :LLBアルゴリズムが、他の時系列を予測するのに使⽤する時系列を指定します。LLBアルゴリズムを指定する場
合は、必要です。他のアルゴリズムでは使⽤されません。
デフォルト :なし
future_timespan
構⽂ :future_timespan=<num>
構⽂ :predictコマンドが、いくつの将来予測をするかを指定します。この番号は、正の数値でなければなりませ
ん。algorithm=LLBの場合は、このfuture_timespanオプションを使⽤できません。
デフォルト :5
holdback
構⽂ :holdback=<num>
説明 :predictコマンドが使⽤しない、最後からのデータポイント数を指定ます。future_timespan引数とともに使⽤しま
す。たとえば、「holdback=10 future_timespan=10」は、データセットの中の直近の10の値に対して予想される値
を算出します。そして、実際のデータポイントの値が予想される信頼区間に含まれるかを確認することで、予測の精度
の判断ができます。
デフォルト :0
lowerXX
構⽂ :lower<int>=<field>
説明 :信頼区間に対する割合(パーセント)およびフィールド名を指定して、下位の信頼区間曲線に使⽤します。<int>値
は、信頼レベルを指定する割合(パーセント)です。整数は0から100までの数です。<field>値はフィールド名です。
デフォルト :デフォルトの信頼区間は95%です。デフォルトのフィールド名は「lower95(prediction(X))」で、Xは予
想されるフィールド名です。

period
構⽂ :period=<num>
説明 :時系列データの期間の⻑さ、または定期的な周期を指定します。この数値は2以上の値でなければなりません。
LLPおよびLLP5アルゴリズムは、値が指定されていない場合は期間の⻑さを計算します。timechartコマンドでspan引数
を指定すると、spanに指定する単位はperiodに使⽤される単位になります。たとえば、サーチが...|timechart span=1d
foo2| predict foo2 period=3とします。期間は1⽇で、予測期間は3⽇です。それ以外の場合、期間の単位はデータポイン
トです。たとえば、1000件のイベントがある場合、各イベントが1つの単位です。period=7を指定すると、7つのデータ
ポイントまたはイベントごとにデータがリサイクルされることを意味します。
デフォルト :なし
suppress
構⽂ :suppress=<field>
説明 :多変量アルゴリズムで使⽤します。予測されたフィールドの1つを指定して出⼒を控えます。予測された視覚エ
フェクトをすべて同時に⾒ることが困難なときは、suppressを使⽤します。
デフォルト :なし

upperYY
構⽂ :upper<int>=<field>
説明 :信頼区間に対する割合(パーセント)およびフィールド名を指定して、上位の信頼区間曲線に使⽤します。<int>値
は、信頼レベルを指定する割合(パーセント)です。値は0から100までの数値でなければなりません。<field>値はフィー
ルド名です。
デフォルト :デフォルトの信頼区間は95%です。デフォルトのフィールド名は「upper95(prediction(X))」で、Xは予
想されるフィールド名です。

信頼区間
317
信頼区間のlowerおよびupperパラメーターのデフォルトは、lower95およびupper95です。これらの値は、95%の予測が該当す
ると期待される信頼区間を⽰しています。
通常、⼀部の予測は以下の理由で信頼区間外になります。
信頼区間が予測の100%をカバーすることはありません。
信頼区間は、期待値の確⽴性であり、結果が期待値と完全に⼀致する訳ではありません。

使⽤法
コマンドシーケンスの要件

predictコマンドは、timechartコマンドの後に使⽤する必要があります。predictコマンドには時系列データが必要です。詳細
は、例 のセクションを参照してください。

仕組み

predictコマンドは、未確認のエンティティがあり、それが時間の経過とともに異なる状態で進⾏するものと規定すること
で、データをモデル化します。

値を予測するために、このコマンドは過去のすべてのデータを考慮して、状態の最善な⾒積もりを算出します。状態の⾒積
もりを算出するため、コマンドにより、ガウス雑⾳の要素をもつ特定の⼀次⽅程式に従う、という仮定がされます。
この仮定に基いて、状態の最⼩⼆乗法による⾒積もりが効率的に算出されます。この計算は、Kalmanフィルター、または
Kalman-Bucyフィルターと呼ばれます。各状態の⾒積もりに対して、信頼区間が得られます。この⾒積もりは、ポイント⾒
積もりではありません。確認または予測された値を含む、⼀定範囲の値です。
測定は、状態の⼀部の⾯のみを捉えることがあり、常に状態の全体を捉えるものではありません。

⽋損値

predictコマンドは、⽋損値を含むデータに使⽤できます。このコマンドは、⽋損値の最善な⾒積もりを算出します。

⽋損値を含むイベントを削除しないでください。データの周期性が歪曲されることがあります。cont=falseをtimechartコマン
ドに指定しないでください。cont=falseを指定すると、⽋損値を含むイベントが除外されます。

スパンの指定

timechartコマンドで指定するspanの単位は秒以上である必要があります。predictコマンドは、periodの計算において秒未満の
数値を受け⼊れることはできません。


1.将来のアクセスの予測

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏するときは、時間範囲として[全時間] を使⽤します。

Apache Webアクセスログファイルに保存されている前のアクセス数に基づいて、将来のアクセスを予測します。1⽇のスパ
ンを使⽤して、アクセス試⾏数をカウントします。
sourcetype=access_combined_* | timechart span=1d count(file) as count | predict count

結果が[統計]タブに表⽰されます。[視覚エフェクト]タブをクリックします。必要に応じて、グラフの種類を[折れ線グラフ]
へ変更します。

318
2.製品の将来の購⼊の予測

この例では、サーチチュートリアルのサンプルデータセットを使⽤しています。Splunkインスタンスでこの例を試すには、サンプルデータをダウン
ロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。サーチを実⾏するときは、時間範囲として[全時間] を使⽤し
ます。

特定の製品の⽇次購⼊数をグラフ化します。

sourcetype=access_* action=purchase arcade | timechart span=1d count

この例では、すべての購⼊イベント(アーケードのaction=purchaseで定義)をサーチして、その結果をtimechartコマンドに
渡します。
span=1day引数は、購⼊カウントを⽇単位にバケツ化します。

結果は、以下のような内容で[統計]タブに表⽰されます。

_t im e co unt

2018-06-11 17

2018-06-12 63

2018-06-13 94

2018-06-14 82

2018-06-15 63

2018-06-16 76

2018-06-17 70

2018-06-18 72

predictコマンドをサーチに追加して、近い将来販売されるアーケードゲームの予測購⼊数を計算します。

sourcetype=access_* action=purchase arcade | timechart span=1d count | predict count

結果が[統計]タブに表⽰されます。[視覚エフェクト]タブをクリックします。必要に応じて、グラフの種類を[横棒グラフ]へ
変更します。

319
3.デフォルトアルゴリズムを使⽤した値の予測

デフォルトのLLP5アルゴリズムを使⽤してfooの値を予測します。これはLLPとLLTを組み合わせたアルゴリズムです。
... | timechart span="1m" count AS foo | predict foo

4.同じアルゴリズムを使⽤した複数フィールドの予測

同じアルゴリズムを使⽤した複数フィールドの予測。この例のデフォルトアルゴリズム。
... | timechart ... | predict foo1 foo2 foo3

5.信頼区間の異なる上限と下限の指定

信頼区間を指定するときは、信頼区間の上限と下限を⼀致させる必要はありません。この例は、直近の20の値をデータセッ
トに保持しながら、LLアルゴリズムを使⽤してあるフィールドに対し、10の値を予測します。
... | timechart span="1m" count AS foo | predict foo AS foobar algorithm=LL upper90=high lower97=low future_timespan=10
holdback=20

6.LLBアルゴリズムを使⽤した値の予測

この例では、LLBアルゴリズムを説明します。foo3フィールドは、それをfoo2フィールドと相関させて予測されています。
... | timechart span="1m" count(x) AS foo2 count(y) AS foo3 | predict foo3 AS foobar algorithm=LLB correlate=foo2 holdback=100

7.直近の5つのデータポイントの省略と次の5つの値の予測

この例では、サーチは直近の5つのデータポイントの使⽤を控え、今後の5つを予測します。この予測は、データ中の直近の5
つの値に対応するものです。そして、実際のデータポイントの値が予想される信頼区間に含まれるかを確認することで、予
測の精度の判断ができます。
... | timechart ... | predict foo holdback=5 future_timespan=5

8.同じアルゴリズムと同じ将来の期間とホールドバックを使⽤した複数のフィールドの予測

同じアルゴリズムと同じ将来の期間とホールドバックを使⽤して複数のフィールドを予測します。
... | timechart ... | predict foo1 foo2 foo3 algorithm=LLT future_timespan=15 holdback=5

9.フィールドのエイリアスの指定

各フィールドにASキーワードを指定してエイリアスを使⽤します。
... | timechart ... | predict foo1 AS foobar1 foo2 AS foobar2 foo3 AS foobar3 algorithm=LLT future_timespan=15 holdback=5

10.異なるアルゴリズムとオプションを使⽤した複数フィールドの予測
320
各フィールドに異なるアルゴリズムと異なるオプションを使⽤して、複数フィールドを予測します。

... | timechart ... | predict foo1 algorithm=LL future_timespan=15 foo2 algorithm=LLP period=7 future_timespan=7

11.BiLLアルゴリズムを使⽤した複数フィールドの予測

⼆変量アルゴリズムBiLLを使⽤して、foo1およびfoo2に対する値を予測します。

... | timechart ... | predict foo1 foo2 algorithm=BiLL future_timespan=10

関連項⽬
trendline、x11

r a ngema p
説明
rangemapコマンドを使って、数値フィールドの値を分類します。各イベントにつき、新しいフィールドrangeが追加さ
れ、rangeフィールドにカテゴリが表⽰されます。rangeフィールドの値は、指定する数値範囲に基づきます。

rangeのフィールドに、⼊⼒fieldの値が範囲内の任意のattribute_nameの名前を設定します。⼀致する範囲がない場合、rangeの
値はdefaultに設定されます。

設定する範囲は重複しても構いません。重複する値がある場合、rangeフィールドは適合するすべての値を含む複数値フィー
ルドとして作成されます。たとえば、low=1-10、elevated=5-15、⼊⼒フィールドの値が10の場合
は、range=lowとcode=elevatedになります。

構⽂
太字 は必須構⽂です。
rangem ap
field=<st ring>
[<attribute_name>=<numeric_range>]...
[default=<string>]

必須引数

field
構⽂ :field=<string>
説明 :⼊⼒フィールドの名前です。フィールドには数値を⼊⼒します。

省略可能な引数

attribute_name=numeric_range
構⽂ :<string>=<num>-<num>
説明 :<attribute_name>は、<numeric_range>が<field>の中にある値と⼀致するときに出⼒される⽂字列値です。
<attribute_name>は、rangeフィールドに出⼒されます。<numeric_range>は、範囲の始めと終わりの値です。値は
整数または浮動⼩数点数になります。最初の値は2番⽬の値未満でなければなりません。<numeric_range>には負の値
を指定することができます。
例 :Dislike=-5--1、DontCare=0-0、Like=1-5と指定できます。
default
構⽂ :default=<string>
説明 :⼊⼒フィールドが範囲と⼀致しない場合、これを使ってデフォルト値を定義します。
デフォルト :"None"

使⽤法
rangemapコマンドは、分散可能ストリーミングコマンドです。「コマンドタイプ」を参照してください。

基本的な例
例1:

date_secondが1〜30の場合はrangeに「green」を、31〜39の場合は「blue」を、40〜59の場合は「red」を、範囲が⼀致
しない(例:date_second=0)場合は「gray」を設定します。

321
... | rangemap field=date_second green=1-30 blue=31-39 red=40-59 default=gray

例2:

各イベントのrangeフィールドに、countが0の場合は「low」、1〜100の場合は「elevated」、それ以外の場合は「severe」
を設定します。

... | rangemap field=count low=0-0 elevated=1-100 default=severe

その他の例:

この例では、USGS EarthquakesWebサイトからダウンロードした最近の地震データを使⽤しています。データはカンマ区切り形式のASCIIテキスト
ファイルで、記録されている各地震のマグニチュード(mag)、座標(latitude、longitude)、地域(place)が含まれています。

最新のCSVファイルをUSGS Ear thquake F e e ds からダウンロードして、それを⼊⼒として追加できます。次の例ではP as t 30 days リストのAll


Ear thquake s データを使⽤します。

このサーチは、アラスカ州周辺で発⽣した地震のマグニチュードをカウントします。そして、rangemapコマンドを使⽤して各
マグニチュードに⾊を割り当てます。
source=all_month.csv place=*alaska* mag>=3.5 | stats count BY mag | rename mag AS magnitude | rangemap field=magnitude
light=3.9-4.3 strong=4.4-4.9 severe=5.0-9.0 default=weak

結果はこのようになります。

マグニチュード co unt 範囲

3.7 15 弱
3.8 31 弱

3.9 29 light
4 22 light
4.1 30 light

4.2 15 light
4.3 10 light

4.4 22 強
4.5 3 強
4.6 8 強

4.7 9 強
4.8 6 強

4.9 6 強
5 2 重⼤度
5.1 2 重⼤度

5.2 5 重⼤度

範囲値ごとに結果を要約

source=all_month.csv place=*alaska* mag>=3.5 | stats count BY mag | rename mag AS magnitude | rangemap field=magnitude
green=3.9-4.2 yellow=4.3-4.6 red=4.7-5.0 default=gray | stats sum(count) by range

結果はこのようになります。

範囲 sum (co unt )


グレー 127

322
緑 96

⾚ 23

⻩⾊ 43

結果をカスタムソート順序で並べ替え

デフォルトでは、結果の値はsum(count)フィールド値の降順で並べられています。evalコマンドでcase関数を使⽤することで、
結果にカスタムソート順序を適⽤できます。

source=all_month.csv place=*alaska* mag>=3.5 | stats count BY mag | rename mag AS magnitude | rangemap field=magnitude
green=3.9-4.2 yellow=4.3-4.6 red=4.7-5.0 default=gray | stats sum(count) by range | eval sort_field=case(range="red",1,
range="yellow",2, range="green",3, range="gray",4) | sort sort_field

結果はこのようになります。

範囲 sum (co unt ) so rt _field


⾚ 23 1

⻩⾊ 43 2

緑 96 3

グレー 127 4

関連項⽬
コマンド
eval
ブログ
整列! カスタムソート順序

rare
説明
フィールドの⼀番少ない値を表⽰します。
フィールドリスト内のすべてのフィールドの値の組の中で、⼀番頻度が少ない組を探します。オプションの<by-clause>句
を指定した場合、group-byフィールドの各⼀意の値の組の中で、まれな組を返します。

このコマンドはtopコマンドと同様に動作しますが、rareでは最も頻度が⾼いものでなく最も頻度の低いものだけが特定され
ます。

構⽂
rare [<top-options>...] <field-list> [<by-clause>]

必須引数

<field-list>
構⽂ :<string>,...
説明 :フィールド名のカンマ区切り形式のリスト。

省略可能な引数

<top-options>
構⽂ :countfield=<string> | limit=<int> | percentfield=<string> | showcount=<bool> | showperc=<bool>
説明 :表⽰する値のタイプと数を指定するオプションです。これらはtopコマンドにより使⽤される同じ<top-options>
です。
<by-clause>
構⽂ :BY <field-list>
説明 :グループに分類する1つ以上のフィールドの名前です。

t opのオプション
323
countfield
構⽂ :countfield=<string>
説明 :カウント情報の値を書き込む新しいフィールドの名前です。
デフォルト :「count」

limit
構⽂ :limit=<int>
説明 :返すタプルの数を設定します。limit=0を指定すると、maxresultrowsまでのすべての値が返されます。制限事
項 セクションを参照してください。maxresultrowsよりも⼤きな値を指定すると、エラーになります。
デフォルト :10

percentfield
構⽂ :percentfield=<string>
説明: パーセントの値を書き込む新しいフィールドの名前です。
デフォルト :「percent」
showcount
構⽂ :showcount=<bool>
説明 :「count」フィールド(「countfield」オプションを参照)およびその組のカウントを作成するかどうかを指定し
ます。
デフォルト :真(True)

showperc
構⽂ :showperc=<bool>
説明 :percentフィールド(percentfieldオプションを参照)およびその組の相対普及度を作成するかどうかを指定しま
す。
デフォルト :真(True)

使⽤法
rareコマンドは、変換コマンド です。「コマンドタイプ」を参照してください。

rareコマンドが返す結果の数は、limit引数で制御します。limit引数のデフォルト値は10です。この制限は、limit.confファイ
ルにある[rare]スタンザのmaxresultrowsで設定してある最⼤値まで増やすことができます。デフォルトの最⼤数は50,000
で、rareコマンドが使⽤するメモリー量の上限を効果的に制限できます。


1.フィールドの⼀番少ない値を返す

URLフィールドの、⼀番頻度が少ない値を表⽰します。返される結果数を5に制限します。

... | rare url limit=5

2.ホスト別の⼀番少ない値を返す

各「host」値の「user」フィールドで⼀番頻度が少ない値を探します。デフォルトでは、最⼤10件の結果が返されます。
... | rare user by host

関連項⽬
top、stats、sirare

r edist r ibu t e
説明
redistributeコマンドは、並列縮約 によって、サポートされているSPLコマンドのサーチ実⾏時間を短縮しま
す。redistributeコマンドは、多くのサーチ結果を集計する⾼濃度データセットサーチに適⽤します。

redistributeコマンドは、インデクサーが中間リデューサー として設定されている分散サーチ 環境を必要としま


す。run_multi_phased_searches権限 が付与されたロール のユーザーしかredistributeコマンドをサーチで使⽤することはできま
せん。
サーチ内ではredistributeコマンドを1回だけ使⽤できます。

構⽂

324
redistribute [num_of_reducers=<int>] [<by-clause>]

必須引数

無し。

省略可能な引数

num_of_reducers
構⽂: num_of_reducers=<int>
説明: インデクサープールで中間リデューサーとして選択されるインデクサーの数を指定します。
デフォルト: num_of_reducersのデフォルトは、limits.confファイルのmaxReducersPerPhase、winningRate、およびreducersの
3つの設定によって制御されます。これらの設定が変更されていない場合、デフォルトではnum_of_reducersはインデク
サープールの50%、最⼤4台のインデクサーに設定されます。詳細は使⽤例を参照してください。
by-clause
構⽂ :BY <field-list>
説明 :グループに分類する1つ以上のフィールドの名前です。ワイルドカード⽂字を使⽤して類似した名前を持つ複数
のフィールドを指定することはできません。各フィールドを個別に指定する必要があります。詳細は、「BY句の使⽤」
を参照してください。

使⽤法
分散サーチが設定されているSplunk導⼊環境では、通常は2フェーズの「マップ低減」処理を使⽤してサーチの最終結果を決
定します。サーチ結果はインデクサー層でマップされ、サーチヘッドで低減されます。
redistributeコマンドは、「マップ-低減」処理に中間的な低減フェーズを挿⼊することで、3フェーズの「マップ-低減-低減」
処理としています。この3フェーズ処理は、並列縮約サーチ処理です。
この中間低減フェーズでは、インデクサーの⼀部が中間リデューサーとして機能します。中間リデューサーは、サーチコマ
ンドに対して低減処理を実⾏してから、結果をサーチヘッドに渡し、そこで最終的な結果の低減と集計が⾏われます。本来
はサーチヘッドのみで⾏われていた低減処理を並⾏して⾏うことで、多くのサーチ結果を集計する⾼濃度サーチを早く完了
することができます。
中間リデューサーとして動作するインデクサーの設定など、インデクサーレベルでの並列縮約の管理については、『分散
サーチ』マニュアルの「並列縮約サーチ処理の概要」を参照してください。
Splunk Cloudを使⽤している場合は、インデクサーの平均負荷が低〜中の場合にのみredistributeを使⽤しま
す。redistributeコマンドを使⽤するための設定作業は不要です。

サポートされているコマンド

redistributeコマンドは、ストリーミングコマンド と以下の⾮ストリーミングコマンドのみに対応します:

stats
tstats
streamstats
eventstats
sichart
sitimechart

redistributeコマンドは、transactionコマンドの対象が1つのフィールドのみであればtransactionコマンドもサポートします。
たとえば、以下の条件が成⽴する場合は、redistributeコマンドはtransactionコマンドをサポートできません。

redistributeコマンドは、<by-clause>引数に複数のフィールドを持ちます。
transactionコマンドは、<field-list>引数に複数のフィールドを持ちます。
transactionコマンドは、フィールドを指定しないモードで使⽤します。

最⾼のパフォーマンスを確保するには、サポートされている⾮ストリーミングコマンドのうちで最初に⾼濃度⼊⼒を持つコ
マンドの直前にredistributeを置きます。

サーチ処理がサーチヘッドに移⾏するタイミング

redistributeコマンドは、以下の状況において、サーチ⽂字列の処理を中間リデューサーからサーチヘッドに移⾏します。

サポートしない⾮ストリーミングコマンドに遭遇した場合。
サポートするがsplit-byフィールドを持たないコマンドに遭遇した場合。
サポートしていてsplit-byフィールドも持っているが、それらのフィールドにredistributeコマンドのby-clause引数で指
定されているフィールドが含まれないコマンドに遭遇した場合。
redistributeコマンドのby-clause引数で指定されているフィールドの値がコマンドで変更されていることを検出した場

325
合。

by-clause引数を使⽤したリデューサー上での結果の分割⽅法の指定

中間低減フェーズの最初に、redistributeコマンドはマップされたサーチ結果を取り、by-clause引数で指定されているフィー
ルドに従って、中間リデューサー上のパーティションに再配分します。by-clauseフィールドが指定されていない場合、サーチ
プロセッサーはサーチ⽂字列でredistributeコマンドの直後にあるコマンドに対して最も適切なフィールド(1つまたは複数)を
使⽤します。

コマンドタイプ

redistributeコマンドは協調コマンド であり、サーチの実⾏⽅法を制御します。サーチによって処理されるイベントには着⽬
しません。redistributeコマンドは、分散サーチクエリープランナーに対して、集中ストリーミングデータを中間リデュー
サー間で分散することによって分散ストリーミングデータに変換するように指⽰します。
コマンドの種類については、『サーチ』マニュアルの「コマンドの種類」を参照してください。

中間リデューサーのデフォルト数の設定

num_of_reducers引数のデフォルトは、limits.confファイルのmaxReducersPerPhase、winningRate、およびreducersの3つの設定に
よって制御されます。


フォ
設定名 定義 ルト

maxReducersPerPhase 中間低減フェーズにおいて中間リデューサーとして使⽤できるインデクサーの最⼤数です。 4

並列縮約サーチプロセスの中間低減フェーズにおいて中間レデューサーとして選択されるインデクサー数の、インデ
winningRate クサープールでのインデクサー総数に対する割合。この設定は、reducersが設定されていない場合にのみ適⽤され 50
ます。

並列縮約サーチ処理の専⽤中間リデューサーとして使⽤される有効なインデクサーのリストです。redistributeコ
マンドでサーチを実⾏すると、reducersリストで指定されている有効なインデクサーのみが並列縮約処理で使⽤さ ""
reducers (空の
れます。reducersリストで指定されている有効なリデューサーの数がmaxReducersPerPhase値より⼤きい場合、
リス
SplunkプラットフォームはmaxReducersPerPhaseの上限値に相当する数のインデクサーをreducersリストからラン ト)
ダムに選択します。

7台のインデクサーをreducersリストに追加する場合、winningRate設定は適⽤されなくなり、num_of_reducers引数のデフォルト
はインデクサー4台になります。Splunkプラットフォームは、有効なredistributeサーチが実⾏されるたびに、中間リデュー
サーとして機能するインデクサーをreducersリストから4つ無作為に選択します。

num_of_reducers引数にmaxReducersPerPhaseの設定値より⼤きな値を指定すると、Splunkプラットフォームは引数値
をmaxReducersPerPhaseの設定値に変更します。

redist ribut eコマンドとサーチヘッドデータ

redistributeコマンドを使⽤するサーチは、サーチヘッド上のすべてのデータを無視します。redistributeコマンドを使⽤する
予定がある場合は、ベストプラクティスとして、すべてのサーチヘッドデータをインデクサー層に転送するようにしてくだ
さい。『分散サーチ』マニュアルの「ベストプラクティス:サーチヘッドデータのインデクサーレイヤーへの転送」を参照
してください。

chart およびt im echart サーチでのredist ribut eコマンドの使⽤

グラフ視覚エフェクトで使⽤できる統計結果を⽣成するためにchartまたはtimechartコマンドを使⽤するサーチ
にredistributeコマンドを追加する場合は、sichartコマンドまたはsitimechartコマンドも⼀緒に追加します。redistributeコマ
ンドは、これらのsi-コマンドを使⽤して、中間リデューサー上でレポートコマンド⽤の統計計算を実⾏しま
す。redistributeコマンドが結果をサーチヘッドに移⾏すると、chartまたはtimechartコマンドによって、グラフ視覚エフェク
トで使⽤できる形式に結果が変換されます。
両⽅のコマンドで同じ構⽂と値を使⽤することがベストプラクティスです。たとえば、redistributeサーチに| timechart count
by referrer_domainを含めたい場合は、| sitimechart count by referrer_domainをサーチ⽂字列に挿⼊します。

index=main | redistribute | transaction referer_domain | search eventcount>500 | sitimechart count by referer_domain | search
referer_domain=*.net | timechart count by referer_domain

順序に影響を受けるコマンドがサーチに含まれている場合
326
redistributeコマンドがサポートする⼀部のコマンドは、明確にソートされた順序で結果を返します。redistributeコマンドの
実⾏時に⾏われる分割により、このソート順序は失われてしまいます。Splunkプラットフォームは、streamstatsなど、順序
に影響を受けるコマンドがredistributeサーチに含まれていることを検出すると、このようなコマンドを処理するたび
にsortをサーチに挿⼊します。

たとえば、次のサーチには、順序に影響を受けるstreamstatsコマンドが含まれています。

... | redistribute by host | stats count by host | streamstats count by host, source

Splunkプラットフォームは、サーチの処理時にstreamstatsセグメントの前にsortセグメントを挿⼊します。サーチの実⾏後に
サーチジョブを調べれば、サーチ⽂字列にsortセグメントが含まれていることを確認できます。
... | redistribute by host | stats count by host | sort 0 str(host) | streamstats count by host, source

statsおよびstreamstatsセグメントは、どちらもredistributeコマンドの配分対象であるhostフィールドで分割されているた
め、中間リデューサー上で処理されます。sortセグメントの機能は、サーチのマップフェーズ中はインデクサー、サーチの最
終低減フェーズ中はサーチヘッドに分割されます。

分散サーチの結果をソートする場合

redistributeサーチの結果を正確な順序でソートしたい場合は、sortを使⽤してサーチヘッド上でソートを実⾏しま
す。redistributeコマンドが中間リデューサー上でイベントを分割した後にイベントをソートするため、パフォーマンスに影
響があります。
以下のサーチは、ソートされた結果を返します。

search * | stats count by foo

同じイベントソートを⾏いつつredistributeをサーチに追加して⾼速化を図りたい場合は、サーチにsortを追加します。

search * | redistribute | stats count by foo | sort 0 str(foo)

このサーチのstatsセグメントは、中間リデューサー上で処理されます。sortセグメントの機能は、サーチのマップフェーズ中
はインデクサー、サーチの最終低減フェーズ中はサーチヘッドに分割されます。

分散および仮想インデックス

redistributeコマンドは、仮想インデックスのサーチはサポートしていません。またredistributeコマンドは、統合されたサー
チの時間範囲が広すぎて、仮想アーカイブインデックスも実⾏範囲に含まれてしまう場合には、統合されたサーチもサポー
トしません。詳細は、以下のSplunk Analytics for Hadoop関連トピックを参照してください。
仮想インデックスについて
統合されたサーチの設定と実⾏


1.⼤規模な⾼濃度データセットのサーチを⾼速化する

この例では、⾮常に⼤規模な⾼濃度データセット上で実⾏されるstatsサーチにredistributeコマンドを適⽤しま
す。redistributeコマンドは、サーチの完了を⾼速化します。

... | redistribute by ip | stats count by ip

中間リデューサーがサーチの| stats count by ip部分を並⾏処理するため、サーチが早く完了します。結果はサーチヘッドが


集計します。

2.再配分対象のby-clauseフィールドを宣⾔せずにt im echart サーチを⾼速化する

この例では、⾮常に⼤規模な⾼濃度データセット上でサーチを実⾏します。サーチ⽂字列にはeventstatsコマンドが含まれ、
このコマンドはsitimechartコマンドを使⽤してtimechart操作⽤の統計計算を実⾏します。このサーチでは、redistributeコマ
ンドを使⽤してサーチの完了を⾼速化しています。by-clauseフィールドが指定されていないため、サーチプロセッサーが
フィールドを選択します。

... | redistribute | eventstats count by user, source | where count>10 | sitimechart max(count) by source | timechart
max(count) by source

このサーチを実⾏すると、中間リデューサーがサーチのeventstatsセグメントとsitimechartセグメントを並⾏して処理するた
め、サーチ全体を早く完了することができます。サーチヘッド上では、timechartコマンドが低減sitimechart計算を実⾏し、結
327
果をグラフと視覚エフェクトで使⽤できる形式に変換します。
サーチ⽂字列でby-clauseフィールドが特定できないため、中間リデューサーは、イベントをsourceフィールドで再配分して分
割します。

3.t st at sを使⽤してイベントを⽣成するサーチを⾼速化する

この例では、⾮常に⼤規模な⾼濃度データセット上でサーチを実⾏します。このサーチは、tstatsコマンドをsitimechartおよ
びtimechartコマンドと⼀緒に使⽤します。redistributeコマンドは、サーチの完了を⾼速化します。

| tstats prestats=t count BY _time span=1d | redistribute by _time | sitimechart span=1d count | timechart span=1d count

tstatsコマンドは、サーチ⽂字列の最初に配置し、パイプ⽂字を先頭に付ける必要があります。redistributeコマンド
とtstatsを⼀緒に使⽤する場合は、サーチのtstatsセグメントの後にredistributeコマンドを配置する必要があります。

この例では、tstatsコマンドはprestats=t引数を使⽤して、sitimechartおよびtimechartコマンドと連携しています。

redistributeコマンドによって中間リデューサーがサーチのsitimechartセグメントを並⾏処理するため、サーチが早く完了し
ます。中間リデューサーは結果をサーチヘッドにプッシュし、そこでtimechartコマンドが結果をグラフと視覚エフェクトで使
⽤できる形式に変換します。

4.サポートされているコマンドとサポートされていないコマンドが混在するサーチを⾼速化する

この例では、⾮常に⼤規模な⾼濃度データセット上でサーチを実⾏します。このサーチでは、redistributeコマンドを使⽤し
てサーチの完了を⾼速化しています。サーチには、redistributeコマンドがサポートするコマンドとサポートしないコマンド
が混在しています。サーチでは、sortコマンドを使⽤して、サーチの他の部分が処理された後で結果をソートしていま
す。redistribute処理はstatsコマンドファミリーのコマンドによるソート結果を取り消してしまうため、sortコマンドでイベ
ントをソートする必要があります。
... | redistribute | eventstats count by user, source | where count >10 | sort 0 -num(count)

この例では、中間リデューサーがeventstatsおよびwhereセグメントを並⾏処理しています。これらのサーチ部分
は、redistributeコマンドを使⽤しなかった場合よりも早く完了します。

Splunkプラットフォームは、サーチのsort部分の処理をインデクサーとサーチヘッドで分割します。

5.サポートされるコマンドのsplit s byフィールドがredist ribut eコマンドのby-clause引数に含まれていない場合に


サーチを⾼速化する

この例では、redistributeコマンドがsourceフィールドによってイベントを中間リデューサーの間で再配分します。サーチに
はredistributeコマンドがサポートするコマンドが2つ含まれていますが、中間リデューサーで処理されるのは⽚⽅だけです。

... | redistribute by source | eventstats count by source, host | where count > 10 | stats count by userid, host

サーチのeventstatsセグメントにはsourceがsplit-byフィールドとして含まれているため、このセグメントは中間リデューサー
によって処理されます。whereセグメントも中間リデューサーで処理されます。

しかし、サーチのstats部分のsplit-byフィールドは、イベントが再配分されたフィールドを含まないため、この部分はサーチ
ヘッド上で処理されます。stats split-byフィールドにはsourceが含まれていないということです。

正規表現
説明
指定した正規表現に⼀致しない結果を削除します。

構⽂
太字 は必須構⽂です。

正規表現
(<field>=<regex-expression> | <field>!=<regex-expression> | <regex-expressio n> )

必須引数

<regex-expression>
構⽂ :"<string>"
説明 :⾮アンカー正規表現。正規表現は、PCREライブラリがサポートするPerl互換の正規表現(PCRE)である必要があ
328
ります。引⽤符が必要です。

省略可能な引数

<field>
構⽂ :<field>
説明 :正規表現に対して値を照合するフィールド名を指定します。
regexコマンドを指定して、<field>=<regex-expression>を使って式に⼀致する結果を保持することができます。⼀致
しない結果を保持するには、<field>!=<regex-expression>を指定します。
デフォルト :_raw

使⽤法
regexコマンドは、分散可能ストリーミングコマンドです。「コマンドタイプ」を参照してください。

regexコマンドは、指定した正規表現に⼀致しない結果を削除します。

rexコマンドを使⽤して、正規表現名前付きグループを使ってフィールドを抽出するか、またはsed式を使ってフィールドで
⽂字を置換します。

サーチで正規表現を使⽤する時は、パイプ(|)やバックスラッシュ(\)などの⽂字がどのように扱われるかを知る必要がありま
す。SPLと正規表現の詳細は、『サーチ』マニュアルを参照してください。
正規表現についての詳細は、『ナレッジ管理』マニュアルの「Splunkの正規表現について」を参照してください。


例1:_rawフィールドに、ルーティング不可能クラスA (10.0.0.0/8) IPアドレスが含まれているサーチ結果のみを保持しま
す。この例では、式の先頭に負の先読み⾔明を使⽤しています。
... | regex _raw="(?<!\d)10\.\d{1,3}\.\d{1,3}\.\d{1,3}(?!\d)"

例2: 有効なメールアドレスに⼀致する結果のみを保持します。たとえば、buttercup@example.comです。

...| regex email="^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$"

以下の表で、式の各部分を説明します。

式の各部分 説明

^ ⽂字列の開始を指定します。

式の最初のグループとなります。1⽂字以上の⼩⽂字、数字、アンダースコアー、ドット、またはハイフンとの
⼀致を指定しています。The backslash ( \ ) character is used to escape the dot ( . ) character.エスケープ
([a-z0-9_\.-]+) しないドットは任意の1⽂字と⼀致してしまうため、エスケープする必要があります。プラス(+)記号は、このグ
ループ内の1〜無制限数の⽂字に⼀致します。この例では、式のこの部分はbuttercup@example.comという
メールアドレスのbutte r cup と⼀致します。

@ @ 記号と⼀致します。

式の2番⽬のグループとなります。ドメイン名(1⽂字以上の⼩⽂字、数字、アンダースコアー、ドット、または
([\da-z\.-]+) ハイフン)との⼀致を指定しています。この後にもエスケープされたドット⽂字が続いています。プラス(+)記号
は、このグループ内の1〜無制限数の⽂字に⼀致します。この例では、式のこの部分は
buttercup@example.comというメールアドレスのe xam p le と⼀致します。

これは式の3番⽬のグループです。2〜6⽂字またはドットであるトップレベルドメイン(TLD)との⼀致を指定し
([a-z\.]{2,6}) ています。このグループは、.co.uk、.edu、.asiaなど、すべての種類のTLDと⼀致します。この例では、式
のこの部分はbuttercup@example.comというメールアドレスの.co m と⼀致します。

$ ⽂字列の終了を指定します。

関連項⽬
コマンド
rex
search

r el ev a ncy

329
説明
イベントの_rawフィールドとサーチ(search)のキーワードの⼀致度に基づいて、イベントとクエリーがどれだけ⼀致するか
を計算します。結果は「relevancy」フィールドに保存されます。デフォルトの時間順ではなく、⼀致度の⾼いイベント/ド
キュメントを取得する場合に役⽴ちます。イベントに希少なサーチキーワードがある、頻度が⾼い、単語が少ない、などの
場合にイベントの関連性スコアが⾼くなります。たとえば、「disk error」をサーチした場合、「disk」(希少単語)を複数
回、「error」を⼀回含む短いイベント/ドキュメントの⽅が、「disk」を⼀回、「error」を複数回含んでいる⾮常に⼤きな
イベントよりも優先されます。
注意 :現在、relevancyコマンドは機能しません。
http://docs.splunk.com/Documentation/Splunk/latest/ReleaseNotes/KnownIssuesにある既知の問題(Known issues)
ページのSPL-93039を参照してください。

構⽂
relevancy


例1:サーチの⼀致性を計算し、結果を降順に並べ替えます。
disk error | relevancy | sort -relevancy

関連項⽬
abstract、highlight、sort

r el t ime
説明
相対時間フィールド「reltime」を作成し、「now」と「_time」の差異の値を、ユーザーが理解できる形でこのフィールド
に設定します。ユーザーが理解できる形の値の例としては、「5⽇前」、「1分前」、「2年前」などが挙げられます。

構⽂
reltime

使⽤法
reltimeコマンドは、分散可能ストリーミングコマンドです。「コマンドタイプ」を参照してください。

例1:

サーチから返されたイベントにreltimeフィールドを返します。

... | reltime

関連項⽬
convert

r ena me
説明
renameコマンドを使⽤して1つ以上のフィールドの名前を変えます。このコマンドは、「pid」の代わりに「製品ID」を使⽤す
るなど、より分かりやすい名前をフィールドに指定する場合に役⽴ちます。フィールドに似ている名前を付けたい場合は、
ワイルドカード⽂字を使⽤できます。使⽤法のセクションを参照してください。

構⽂
rename <wc-field> AS <wc-field>...

必須引数

330
wc-field
構⽂ :<string>
説明 :フィールド名と、その変更後の名前。フィールド名にはワイルドカードが使⽤できます。スペースを伴う名前
は、引⽤符で囲む必要があります。

使⽤法
renameコマンドは、分散可能ストリーミングコマンドです。「コマンドタイプ」を参照してください。

慣⽤句を使って名前を付ける

フィールドに慣⽤句を使って名前を付けたい場合は引⽤符を使⽤します。

... | rename SESSIONID AS "The session ID"

複数の、似た名前のフィールドの名前を変更する。

複数のフィールド名を変更するには、ワイルドカードを使⽤します。

... | rename *ip AS *IPaddress

ソースフィールドと宛先フィールドの両⽅に同じ数のワイルドカードを持つワイルドカード式が指定されている場合、ワイ
ルドカード部の名前の変更処理は宛先ワイルドカード式に持ち越されます。例をご覧ください。

1つのフィールドを複数の名前に変更することはできません。

1つのフィールドを複数の名前に変更することはできません。たとえば、フィールドAがある場合、| rename A as B, A as Cを
指定できません。このルールはフィールドの名前変更が可能な、statsコマンドなどの他のコマンドにも適⽤されます。

以下の例は有効ではありません。

... | stats first(host) AS site, first(host) AS report

複数のフィールドを1つのフィールドに結合できません

このrenameコマンドを使って、複数のフィールドを結合して1つのフィールドにすることはできません。値とともにNULL (存
在しない)フィールドがあるためです。
たとえば、product_idまたはpidフィールドを持つイベントがある場合、... | rename pid AS product_idはpidの値
をproduct_idフィールドには結合しません。イベントに対するpidが存在しない場合、product_idはNULL値で上書きされます。
代わりにevalコマンドとcoalesce()関数を参照してください。

存在しないフィールドの名前の変更

フィールドの名前を変更するとデータ損失を引き起こします。
fieldAとfieldBに名前を変更しましたが、fieldAは存在しないと仮定します。

FieldBが存在しない場合は、何も起こりません。
FieldBが存在する場合、名前変更の結果としてField Bにあるデータが削除されます。FieldBにあるデータにはnull値
があります。


例1:

「_ip」フィールドの名前を「IPAddress」に変更します。

... | rename _ip AS IPAddress

例2:

「foo」で始まるフィールドの名前を「bar」で始まる名前に変更します。

... | rename foo* AS bar*

例3:

countフィールドの名前を変更します。スペースを伴う名前は、引⽤符で囲む必要があります。
331
... | rename count AS "Count of Events"

関連項⽬
fields、replace、table

r epl a ce
説明
フィールド値を指定した値に置き換えます。

最初の⽂字列単体を、指定されたフィールドにある別の⽂字列で置き換えます。1つ以上のフィールドを指定しない場合は、
その値はすべてのフィールドで置き換えられます。

構⽂
replace (<wc-string> WITH <wc-string>)... [IN <field-list>]

必須引数

wc-string
構⽂ :<string>
説明 :1つ以上のフィールド値と置き換える値を指定します。ワイルドカードを使って、1つ以上の⽤語を照合すること
ができます。

省略可能な引数

field-list
構⽂ :<string> ...
説明 :フィールド値を置換するための1つ以上のフィールド名をカンマまたはスペースで区切ったリストを指定しま
す。_internalフィールドで値を置換するには、IN <fieldname>句を使⽤してフィールド名を指定する必要がありま
す。

使⽤法
replaceコマンドは、分散可能ストリーミングコマンドです。「コマンドタイプ」を参照してください。

ワイルドカードを使⽤しない置換値を後で指定した場合、それ以前に指定した置換よりも優先されます。ワイルドカード置
換の場合、完全⼀致が部分⼀致に優先します。優先順位を明確にするためには、replaceを2回の実⾏に分けることをお勧め
します。ワイルドカード置換を使⽤する場合、結果には同数のワイルドカードが存在するか、またはワイルドカードが0でな
ければなりません。ワイルドカード(*)を利⽤すれば、置換する多数の値を指定できます。

1.すべてのフィールドで値を置換する

「localhost」で終わるhost値をすべてのフィールドで「localhost」に変更します。
... | replace *localhost WITH localhost

2.指定したフィールドで値を置換する

hostフィールドのIPアドレスをより詳細な名前に変更します。

... | replace 127.0.0.1 WITH localhost IN host

3.2つのフィールドの値を変更する

start_monthフィールドとend_monthフィールドの値を置換します。フィールドリストでは、名前と名前をスペースまたはカンマ
で区切ることができます。
... | replace aug WITH August IN start_month end_month

4.フィールド内で値を並び替える

hostフィールドで、localhostという単語を含む⽂字列の値を並べ替えて、「localhost」が⽂字列の先頭に来るようにしま
す。
332
... | replace "* localhost" WITH "localhost *" IN host

5.フィールドで複数の値を置換する

フィールドの値をより説明的な名前に置換します。置き換え後の値はカンマで区切ってください。
... | replace 0 WITH Critical, 1 WITH Error IN msg_level

6.空⽂字列の置換

エラーメッセージをサーチして、空の⽂字列を空⽩⽂字に置換します。
この例は、実際の空⽂字列(値がない)がない限り機能しません。

"Error exporting to XYZ :" | rex "Error exporting to XYZ:(?.*)" | replace "" WITH " " IN errmsg

7:内部フィールド値を置換する

内部フィールド_timeの値を置換します。

sourcetype=* | head 5 | eval _time="XYZ" | stats count BY _time | replace *XYZ* WITH *ALL* IN _time

関連項⽬
コマンド
rename

r equ ir e
説明
サーチ⽂字列で先⾏するクエリやコマンドからイベントや結果が何も返されなかった場合は、サーチは失敗します。

構⽂
太字 は必須構⽂です。
| require

使⽤法
サーチ⽂字列でrequireを使⽤した場合、サーチ⽂字列で先⾏するクエリやコマンドからイベントや結果が何も返されなかっ
た場合は、サーチは失敗します。サブサーチで使⽤した場合、サブサーチが結果を返さなかった場合には親サーチが失敗し
ます。

このコマンドを使⽤することで、結果がゼロだと悪影響がある場合(例:偽陽性が⽣成される、リソースを多く消費するAPI
コールを使⽤するカスタムサーチコマンドが実⾏される、サブサーチ によって空のサーチフィルターが作成される)、
Splunkプラットフォームによるゼロ結果サーチの実⾏を防⽌できます。
requireコマンドは、リアルタイムサーチ では使⽤できません。

requireコマンドと後続コマンド

requireコマンドを使⽤しても、サーチで発⽣する可能性のある負の結果をすべて緩和できるわけではありません。requireコ
マンドによってサーチが失敗すると、サーチ中の後続コマンドは結果を受け取りませんが、Splunkソフトウェアによるこれ
らのコマンドの呼び出しは防⽌されません。つまり、これらの後続コマンドのプロセッサーが空の「チャンク」を受け取っ
た後にサーチが完了します。
カスタムサーチコマンドを実装している場合は、requireコマンドとの相互動作を確認してください。部分的な⼊⼒による悪
影響がないことを確認してください。

開発者ポータルの『開発者ガイド』の「Create custom search commands for apps in Splunk Cloud or Splunk


Enterprise (Splunk CloudまたはSplunk EnterpriseでのApp⽤のカスタムサーチコマンドの作成)」を参照してください。


1.結果やイベントが何も返されない場合にサーチを停⽌する

333
... | require

2.サブサーチがイベントや結果を何も返さない場合に例外をスローして親サーチを停⽌する。

... [ search index=other_index NOSUCHVALUE | require ]

r est
説明
restコマンドは、Splunk REST APIエンドポイントを読み取り、サーチ結果としてリソースデータを返します。

REST APIの詳細は、『REST APIユーザーマニュアル』を参照してください。

構⽂
太字 は必須構⽂です。

| rest <rest -uri>


[count=<int>]
[strict=<bool>]
[splunk_server=<wc-string>]
[splunk_server_group=<wc-string>]...
[timeout=<int>]
[<get-arg-name>=<get-arg-value>]...

必須引数

rest-uri
構⽂ :<uri>
説明 :Splunk REST APIエンドポイントへのURIパスです。

省略可能な引数

count
構⽂ :count=<int>
説明: 各RESTコールから返される結果の数を制限します。たとえば、4台のインデクサーと1台のサーチヘッドがある
とします。制限をcount=25000に設定します。これによって制限の合計は125000 (25000 x 5)となります。
0の場合、制限はありません。
デフォルト :0
get-arg-name
構⽂ :<string>
説明 :REST引数の名前です。
get-arg-value
構⽂ :<string>
説明 :REST引数の値です。

splunk_server
構⽂ :splunk_server=<wc-string>
説明 :結果を返す分散サーチピアーを指定します。splunk_server引数は1つのみ指定することができます。ただし複数の
サーバーを指すためにサーバー名を指定するときは、ワイルドカードが使⽤できます。たとえ
ば、splunk_server=peer01またはsplunk_server=peer*を指定することができます。サーチヘッドを参照するにはlocalを使⽤
します。
デフォルト: 設定されているすべてのサーチピアーが情報を返します。
splunk_server_group
構⽂ :splunk_server_group=<wc-string>...
説明 :結果を1台以上のサーバーグループに制限します。複数のサーバーグループを指定する⽂字列にワイルドカード
を指定できます。
strict
構⽂: strict=<bool>
説明:この引数が trueに設定されている場合、restがエラーを返した場合にはサーチが完全に失敗します。サブサーチ
のエラーであっても同様です。falseに設定されている場合、多くのrestエラーは警告メッセージを返すだけで、サーチ
は失敗しません。strict=falseに設定されていても、特定のエラーが発⽣した場合はサーチが失敗します。
デフォルト :偽(False)
timeout
構⽂ :timeout=<int>
説明 :RESTエンドポイントの応答待機時のタイムアウト(秒)を指定します。Specify timeout=0 to indicate no limit
334
on the time to wait for the REST endpoint to respond.
デフォルト :60

使⽤法
restコマンドは、そのコマンドを実⾏したユーザーのIDを使⽤して認証を⾏います。

厳格なエラー処理

strict引数を使⽤すると、エラーが発⽣した時点でrest常にサーチが失敗します。limits.confでrestprocessor_errors_fatalを変
更することで、すべてのrestサーチに対してシステムレベルで設定できます。

Cloudを使⽤している場合は、restprocessor_errors_fatal設定を変更するにはCloudサポートに要求を申請する必要がありま
す。
strict引数を設定すると、restサーチのrestprocessor_errors_fatal設定を上書きできます。

1.保存されているサーチジョブにアクセスする

| rest /services/search/jobs count=0 splunk_server=local | search isSaved=1

2.すべての保存済みサーチから特定のソースタイプを含むサーチを探す

サーチ⽂字列のソースタイプにspeccsvが指定されたすべての保存済みサーチを探します。

| rest /services/saved/searches splunk_server=local | rename search AS saved_search | fields author, title, saved_search |
search saved_search=*speccsv*

3.現在のサーチユーザーをすべてのイベントに追加する

現在のサーチユーザーをすべてのイベントに追加します。ログインしているユーザーに関連するイベントのみが含まれたレ
ポートを作成するのに便利です。
* | head 10 | join [ | rest splunk_server=local /services/authentication/current-context | rename username as auth_user_id |
fields auth_user_id ]

4.GETメソッドのページネーションおよびフィルタリングパラメーターを使⽤する

ほとんどのGETメソッドは、ページネーションおよびフィルタリングパラメーターをサポートします。

エンドポイントでこれらのパラメーターがサポートされるかどうかについては、『REST APIリファレンス』マニュアルで該
当のエンドポイントを確認してください。GETメソッドで[ 展開] をクリックして「ページネーションおよびフィルタリング
パラメーター」トピックへのリンクを探します。ページネーションおよびフィルタリングパラメーターの詳細は、『REST
APIリファレンス』マニュアルの「リクエストと応答の詳細」を参照してください。
以下の例では、searchパラメーターを使⽤して、サーチがスケジュールされているかどうかと、サーチが無効化されているか
どうかを確認しています。このサーチは、モニターコンソールロールの「サーチヘッド」と⼀致するSplunkサーバー上でス
ケジュール済みサーチを探します。
| rest /servicesNS/-/-/saved/searches splunk_server_group=dmc_group_search_head timeout=0 search="is_scheduled=1"
search="disabled=0"

このサーチの各部分の説明を下表に⽰します。

説明 サーチの部分

RESTコールの名前。 |rest /servicesNS/-/-/saved/searches

モニターコンソールロールの「サーチヘッド」と⼀致するSplunkサーバーのみを対象とします。 splunk_server_group=dmc_group_search_head

RESTコールの完了を待機している間はタイムアウトを無効にします。 timeout=0

スケジュール済みサーチのみを対象とします。 search="is_scheduled=1"

335
アクティブな(無効化されていない)サーチのみを対象とします。 search="disabled=0"

r et u r n
説明
サブサーチから値を返します。

returnコマンドは、サブサーチからの値を渡すために使⽤されます。このコマンドは、到着したイベントを、1つのイベン
ト、1つの属性「search」で置換します。パフォーマンスを向上するために、returnコマンドは到着する結果をheadコマンド
で、そして結果フィールドをfieldsコマンドで⾃動的に制限します。

デフォルトでは、returnコマンドは結果の最初の⾏のみ使⽤します。count引数を使⽤して返す結果数を指定してください。

構⽂
return [<count>] [<alias>=<field>...] [<field>...] [$<field>...]

必須引数

無し。

省略可能な引数

<count>
構⽂ :<int>
説明 :⾏の数を指定します。
デフォルト :1 (コマンドが受け取る結果の最初の⾏)。

<alias>
構⽂ :<alias>=<field>...
説明 :返すフィールドのエイリアスと値を指定します。スペースで区切って、エイリアスと値の複数のペアを指定でき
ます。

<field>
構⽂ :<field> ...
説明 :スペースで区切って、1つ以上の返るフィールドを指定します。

<$field>
構⽂ :<$field>
説明 :1つ以上の返すフィールド値を、スペース区切りで指定します。

使⽤法
このコマンドは、フィールド名、エイリアスと値のペア、または単にフィールド値を出⼒するのに便利です。

Out put 例
フィールド名 return source

Alias=value return ip=srcip

値 return $srcip

デフォルトでは、returnコマンドは結果の最初の⾏のみ使⽤します。たとえば、return 2 ipのように複数⾏を指定できます。
各⾏は、OR句にて表⽰されます。つまり出⼒は「(ip=10.1.11.2) OR (ip=10.2.12.3)」のようになります。複数値を指定できま
す。OR句内に配置されます。「return 2 user ip」の出⼒は、たとえば「(user=bob ip=10.1.11.2) OR (user=fred ip=10.2.12.3)」
のようになります。

たいていの場合、サブサーチの最後にreturnコマンドを使⽤すると、head、fields、rename、format、およびdedupが不要になり
ます。

重複した値

以下のサーチを実⾏したとします。

sourcetype=WinEventLog:Security | return 2 user

336
論理的には、コマンドにより最初の2つの⼀意のユーザーが返されます。代わりにコマンドは、暗黙のheadコマンドによる順
序をもとに、最初の2つのイベントを⾒ます。returnコマンドはそれらの2つのイベント内のユーザーを返します。コマンド
は、ユーザーが⼀意であるかどうかを調べません。これらのイベント中に同⼀のユーザーがいれば、コマンドはユーザーを1
つだけ返します。

⼀意の値が返されるには、サーチにdedupコマンドを含める必要があります。例:

sourcetype=WinEventLog:Security | dedup user | return 2 user

返されたフィールドにある引⽤符

returnコマンドは返されたフィールドにある引⽤符をエスケープ処理しません。returnコマンドを使⽤する前にevalコマンド
を使⽤して引⽤符をエスケープ処理する必要があります。例:
...[search eval field2=replace(field1,"\"","\\\"") | return field2]


例1:

「error ip=<someip>」をサーチします。ここで、<someip>は最近ユーザー「boss」がもっともよく使⽤しているIPを表して
います。
error [ search user=boss | return ip ]

例2:

「error (user=user1 ip=ip1) OR (user=user2 ip=ip2)」をサーチします。ここで、ユーザーとIPは、2つの最新のログインです。

error [ search login | return 2 user ip ]

例3:

evalに最後のユーザーのユーザーIDを返し、それを1増やします。

... | eval nextid = 1 + [ search user=* | return $id ] | ...

関連項⽬
format、search

r ev er se
構⽂
reverse

説明
結果の並び順を逆にします。
注意 :reverseコマンドは、サーチにより返されるイベントには影響しません。表⽰順序にのみ影響を与えます。CLIの場
合、任意のデフォルト設定または明⽰的なmaxout設定が含まれます。
注意 :⾮常に⼤きな結果セット(数百万件以上の結果)に対してReverseを実⾏するには、⼤量の⼀時ストレージ、I/O、および
時間を必要とします。


例1:

結果セットの順序を逆にします。
... | reverse

関連項⽬
head、sort、tail
337
r ex
説明
このコマンドを使⽤して、正規表現名前付きグループを使ってフィールドを抽出するか、またはsed式を使ってフィールドで
⽂字を置換します。
rexコマンドは、指定フィールドの値を⾮アンカー正規表現と照合し、名前付きグループを対応する名前のフィールドに抽出
します。
mode=sedの場合、置換や代⼊に使⽤されるsed式が選ばれたフィールドの値に適⽤されます。sed構⽂は、インデックス時 に
機密データをマスクするためにも使⽤されます。sedを使ったデータの匿名化については。『データの取り込み』マニュアル
を参照してください。
フィールドが指定されていない場合は、_rawフィールドに正規表現またはsed式が適⽤されます。rexコマンドを_rawフィール
ドに対して実⾏すると、パフォーマンスが低下する場合があります。

サーチ時 フィールド抽出 、または⽂字列置換および⽂字代⼊にはrexコマンドを使⽤します。

構⽂
太字 は必須構⽂です。
rex [field=<field>]
( <regex-expressio n> [max_match=<int>] [offset_field=<string>] ) | (m o de=sed <sed-expressio n> )

必須引数

<regex-expression>またはmode=sed <sed-expression>のいずれかを指定する必要があります。
regex-expression
構⽂ :"<string>"
説明 :指定フィールドから照合、抽出する情報を定義する、PCRE正規表現。引⽤符が必要です。
mode
構⽂ :mode=sed
説明 :(UNIXストリームエディターである) sed式を使⽤していることを⽰す場合に指定します。
sed-expression
構⽂ :"<string>"
説明 :mode=sedの場合に、正規表現に⼀致する項⽬の⽂字列を置換するか、または⽂字を代⼊するかを指定します。
他のsedコマンドは実装されていません。引⽤符が必要です。Sedモードはグローバル(g)およびN番⽬登場(N)のフラグ
をサポートしています。ここで、Nは⽂字列内の⽂字の位置を表す数値です。

省略可能な引数

field
構⽂ :field=<field>
説明 :情報を抽出するフィールド。
デフォルト :_raw

max_match
構⽂ :max_match=<int>
説明 :正規表現と照合する回数を指定します。1より⼤きな値を指定した場合、結果となるフィールドは複数値フィー
ルドになります。照合する回数を制限しない場合は0を指定します。複数回の照合は、パターン全体を繰り返し適⽤す
る場合に適⽤されます。正規表現にパターンの内部で 複数回⼀致する捕捉グループが含まれる場合は、複数回の照合で
は最後の捕捉グループのみが使⽤されます。
デフォルト :1

offset_field
構⽂ :offset_field=<string>
説明 :指定した場合、<string>で指定された名前のフィールドが作成されます。このフィールドの値は照合対象フィー
ルドに、0オフセット⽂字の観点で⼀致するエンドポイントになります。たとえば、rex式が「(?tenchars.{10})」の場
合、フィールドの最初の10⽂字に⼀致し、offset_fieldは「0-9」となります。
デフォルト: なし

使⽤法
rexコマンドは、分散可能ストリーミングコマンドです。「コマンドタイプ」を参照してください。

rexコマンドとregexコマンドの使い分け
338
rexコマンドを使⽤して、正規表現名前付きグループを使ってフィールドを抽出するか、またはsed式を使ってフィールドで
⽂字を置換します。
regexコマンドは、指定した正規表現に⼀致しない結果を削除します。

正規表現

Splunk SPLはPerl互換の正規表現(PCRE)を使⽤します。

サーチで正規表現を使⽤する時は、パイプ(|)やバックスラッシュ(\)などの⽂字がどのように扱われるかを知る必要がありま
す。SPLと正規表現の詳細は、『サーチ』マニュアルを参照してください。
正規表現については、『ナレッジ管理』マニュアルの「Splunk Enterpriseの正規表現について」を参照してください。

sed式

rexコマンドをsedモードで使⽤する場合、置換(s)と⽂字の代⼊(y)という2つの選択肢があります。

sedを使ったデータ内のテキスト置換(s)を使⽤するための構⽂は"s/<regex>/<replacement>/<flags>"です。

<regex>はPCRE正規表現で、捕捉グループを含めることができます。
<replacement>は、正規表現に⼀致した項⽬と置換する⽂字列です。前⽅参照には、\nを使⽤します。ここで「n」は
1桁の整数を⽰します。
<flags>にgを指定すると、すべての⼀致項⽬が置換されます。また、数字を指定すると、指定された⼀致項⽬が置換さ
れます。
sedを使った⽂字代⼊の構⽂は"y/<string1>/<string2>/"です。

これは、<string1>に⼀致する⽂字を<string2>の⽂字に代⼊置換します。

1.正規表現を使ったメール値の抽出

イベントからメール値を抽出して、⾃分のイベントにfromおよびtoフィールドを作成します。たとえば、以下のようなイベン
トがあるとします。

Mon Mar 19 20:16:27 2018 Info: Bounced: DCID 8413617 MID 19338947 From: <MariaDubois@example.com> To:
<zecora@buttercupgames.com> RID 0 - 5.4.7 - Delivery expired (message too old) ('000', ['timeout'])

Mon Mar 19 20:16:03 2018 Info: Delayed: DCID 8414309 MID 19410908 From: <WeiZhang@example.com> To:
<mcintosh@buttercupgames.com> RID 0 - 4.3.2 - Not accepting messages at this time ('421', ['4.3.2 try again later'])

Mon Mar 19 20:16:02 2018 Info: Bounced: DCID 0 MID 19408690 From: <Exit_Desk@sample.net> To: <lyra@buttercupgames.com> RID 0 -
5.1.2 - Bad destination host ('000', ['DNS Hard Error looking up mahidnrasatyambsg.com (MX): NXDomain'])

Mon Mar 19 20:15:53 2018 Info: Delayed: DCID 8414166 MID 19410657 From: <Manish_Das@example.com> To: <dash@buttercupgames.com>
RID 0 - 4.3.2 - Not accepting messages at this time ('421', ['4.3.2 try again later'])

イベントがインデックスされている場合、FromおよびToの値はフィールドとして識別されません。rexコマンドを使⽤して
フィールド値を抽出し、⾃分のサーチ結果にfromおよびtoフィールドを作成できます。

_rawイベントのfromおよびto⾏は同じパターンに従います。それぞれのfrom⾏はF ro m : で、to⾏はTo : です。メールアドレ


スは⼭括弧で囲まれます。このパターンを使⽤して正規表現を作成し、値を抽出してフィールドを作成できます。
source="cisco_esa.txt" | rex field=_raw "From: <(?<from>.*)> To: <(?<to>.*)>"

重複値を削除し、アドレスのリストのみを返すには、dedupおよびtableコマンドをサーチに追加します。

source="cisco_esa.txt" | rex field=_raw "From: <(?<from>.*)> To: <(?<to>.*)>" | dedup from to | table from to

結果はこのようになります。

339
2.m ax_m at chを使⽤した複数値フィールドからの抽出

max_match引数を使⽤すると、正規表現を複数回実⾏してフィールドから複数の値を抽出できます。

たとえば、makeresultsコマンドを使⽤して、複数の値を持つフィールドを作成します。

| makeresults | eval test="a$1,b$2"

結果はこのようになります。

_t im e テスト
2019-12-05 11:15:28 a$1,b$2

testフィールドの値を個別に抽出するには、rexコマンドでmax_match引数を使⽤します。例:

...| rex field=test max_match=0 "((?<field>[^$]*)\$(?<value>[^,]*),?)"

結果はこのようになります。

_t im e field テスト value


a 1
2019-12-05 11:36:57
b a$1,b$2 2

3.scheduler.logイベントのフィールドから値を抽出する

scheduler.logのイベント内のsavedsearch_idフィールドから、「user」、「app」、および「SavedSearchName」を抽
出します。もしsavedsearch_id=bob;search;my_saved_searchで、user=bob、app=searchとSavedSearchName=my_saved_search

... | rex field=savedsearch_id "(?<user>\w+);(?<app>\w+);(?<SavedSearchName>\w+)"

4.sed式を使⽤する

正規表現を⼀連の数値と照合し、それらを匿名化⽂字列と置換するには、sed構⽂を使⽤します。

... | rex field=ccnumber mode=sed "s/(\d{4}-){3}/XXXX-XXXX-XXXX-/g"

5.潜在的な攻撃者のIPアドレスとポートの表⽰

潜在的な攻撃者のIPアドレスとポートを表⽰します。

sourcetype=linux_secure port "failed password" | rex "\s+(?<ports>port \d+)" | top src_ip ports showperc=0

このサーチはrexを使ってportフィールドと値を抽出します。次に、潜在的な攻撃者を⽰す、サーチで返された上位のソース
IPアドレス(src_ip)とポートのテーブルを表⽰します。

関連項⽬
340
extract、kvform、multikv、regex、spath、xmlkv

r t or der
説明
リアルタイムサーチからイベントをバッファーに格納して、可能な時にそれらを時間の昇順に⽣成します。

rtorderコマンドはストリーミングイベントバッファーを作成します。ここでは、⼊⼒イベントの取り込み、時間の昇順での
バッファーの保存、その順番でのバッファーからの送信が実⾏されます。これは、現在の時刻がイベントのタイムスタンプ
の時刻から少なくともbuffer_spanによって指定された期間に到達しない限り実⾏されません。
バッファーの最⼤サイズを超えた場合にも、バッファーからイベントが⽣成されます。
すでに送信されたイベントよりも前の時刻のイベントを⼊⼒として受信した場合、この順序違いのイベントは即座に送信さ
れます「discardオプションに真(True)が設定されている場合を除く」。discardに真(True)を設定した場合、順序違いのイベ
ントは常に破棄されるため、時間の昇順での出⼒が厳格に保証されます。

構⽂
rtorder [discard=<bool>] [buffer_span=<span-length>] [max_buffer_size=<int>]

省略可能な引数

buffer_span
構⽂ :buffer_span=<span-length>
説明 :バッファーの⻑さを指定します。
デフォルト :10秒
discard
構⽂ :discard=<bool>
説明 :順序違いのイベントを常に破棄するかどうかを指定します。
デフォルト :偽(False)
max_buffer_size
構⽂ :max_buffer_size=<int>
説明 :バッファーの最⼤サイズを指定します。
デフォルト :50000、またはlimits.confにある[search]スタンザのmax_result_rows設定

例1:

過去5分間のイベントをバッファーに保管し、5分以上経過したらそれを時間の昇順に送信します。新たに受信したイベント
が5分以上前の時刻を持つ場合、その時刻以降のイベントをすでに送信しているならば、当該イベントを破棄します。
... | rtorder discard=t buffer_span=5m

関連項⽬
sort

run
runコマンドはscriptコマンドのエイリアスです。スクリプトコマンドの構⽂と例を参照してください。

sa v edsea r ch
説明
保存済みサーチ、またはレポートを実⾏して、保存済みサーチのサーチ結果を返します。サーチに$replace_me$のような置
換プレースホルダーが含まれる場合、サーチプロセッサーがそのプレースホルダーを指定した⽂字列に置き換えます。例:

|savedsearch mysearch replace_me="value"

構⽂
| savedsearch <savedsearch_name> [<savedsearch-options>...]
341
必須引数

savedsearch_name
構⽂ :<string>
説明 :実⾏する保存済みサーチの名前。

省略可能な引数

savedsearch-options
構⽂ :<substitution-control> | <replacement>
説明 :代替を許可するかどうかを指定します。許可されれば、⽂字列の代⼊置換で使⽤するキー/値のペアを指定しま
す。
substitution-control
構⽂ :nosubstitution=<bool>
説明 :真(True)の場合、⽂字列の代⼊置換は⾏われません。
デフォルト :偽(False)
replacement
構⽂ :<field>=<string>
説明 :⽂字列の代⼊置換で使⽤するキー/値のペア。

使⽤法
savedsearchコマンドは⽣成コマンドで、先頭のパイプ⽂字で始める必要があります。

保存済みサーチコマンドは常に新規サーチを実⾏します。以前に実⾏したサーチの結果の名前を変更するには、loadjobコマ
ンドを使⽤します。

時間範囲

全時間 をタイムレンジピッカーで指定すると、savedsearchコマンドは保存済みサーチで保存された時間範囲を使⽤しま
す。

その他の時間をタイムレンジピッカーで指定すると、指定した時間範囲が保存済みサーチで保存された時間範囲に優先
します。


例1

保存済みサーチ「mysecurityquery」を実⾏します。

| savedsearch mysecurityquery

例2

保存済みサーチ「mysearch」を実⾏します。保存済みサーチに$replace_me$のような置換プレースホルダーがある場合
は、代わりに「value」を使⽤します。

|savedsearch mysearch replace_me="value"...

関連項⽬
search、loadjob

scr ipt
説明
サーチ結果を変更または⽣成する、外部pythonプログラムを呼び出します。スクリプトは、commands.confで宣⾔
し、$SPLUNK_HOME/etc/apps/<app_name>/bin/ディレクトリに設定します。スクリプトは、$SPLUNK_HOME/bin/pythonを使⽤して実⾏
されます。
Splunk Cloudを使⽤していてカスタムスクリプトを設定したい場合は、サポートチケットを申請します。インストールする
前に、スクリプトのセキュリティ、データ安全性などがSplunk要件を満たしているかどうかを確認します。

構⽂

342
script <script-name> [<script-arg>...] [maxinputs=<int>]

必須引数

script-name
構⽂ :<string>
説明 :commands.confファイルに定義された、実⾏するスクリプトサーチコマンドの名前。

省略可能な引数

maxinputs
構⽂ :maxinputs=<int>
説明 :スクリプトに渡す⼊⼒結果数を指定します。
デフォルト :100

script-arg
構⽂ :<string> ...
説明 :スクリプトに渡される1つ以上の引数。複数の引数を渡す場合は、それぞれをスペースで区切ってください。

使⽤法
scriptコマンドは、カスタムサーチコマンドを起動する有効な代替⼿段です。開発者ポータルの『開発者ガイド』の「<a
href="https://dev.splunk.com/enterprise/docs/devtools/customsearchcommands/">Create custom search
commands for apps in Splunk Cloud or Splunk Enterprise (Splunk CloudまたはSplunk EnterpriseでのApp⽤のカス
タムサーチコマンドの作成)</a>」を参照してください。

以下のサーチ

| script commandname

とほぼ同義語なのは、
| commandname

注意 :スクリプトコマンドのいくつかの関数は、時間の経過とともに削除されています。ここでは、Perl、Pythonを引数と
して明⽰的に選択できません。これらの引数は無視されます。Perlサーチコマンドを書き込む必要がある場合
は、commands.confファイルでこれらのコマンドをPerlとして宣⾔します。⼊出⼒のフォーマットに関して詳細に⽂書化されて
いない多数の仕様を特定する必要があるため、これは推奨されません。また、etc/searchscriptsディレクトリのスクリプトを
対象とする明⽰的なファイル名の参照も現在はサポートしていません。すべてのサーチコマンドは、commands.confファイルで
宣⾔する必要があります。


例1:

Pythonスクリプト「myscript」に引数myarg1およびmyarg2を指定して実⾏し、結果をメールで送信します。
... | script myscript myarg1 myarg2 | sendemail to=david@splunk.com

scr u b
説明
ユーザー名、ipアドレス、ドメイン名などのIDデータを同じ⻑さの仮想値に置き換えて、サーチ結果を匿名化します。たと
えば、⽂字列user=carol@adalberto.comはuser=aname@mycompany.comに変換されることがあります。こうすることによって、機密
情報や個⼈情報を暴露することなく、ログデータを共有することができます。

詳細は、使⽤法 のセクションを参照してください。

構⽂
scrub [public-terms=<filename>] [private-terms=<filename>] [name-terms=<filename>] [dictionary=<filename>]
[timeconfig=<filename>] [namespace=<string>]

必須引数

なし

省略可能な引数
343
public-terms
構⽂ :public-terms=<filename>
説明: 匿名化しない公開⽤語を含むファイル名を指定します。
private-terms
構⽂ :private-terms=<filename>
説明: 匿名化する⾮公開⽤語を含むファイル名を指定します。

name-terms
構⽂ :name-terms=<filename>
説明: 匿名化する名前を含むファイル名を指定します。

dictionary
構⽂ :dictionary=<filename>
説明: 匿名化しない⽤語の辞書を含むファイル名を指定します。ただし、⽤語がprivate-termsファイルにない場合に限
ります。
timeconfig
構⽂ :timeconfig=<filename>
説明: 匿名化する時間設定を含むファイル名を指定します。

namespace
構⽂ :namespace=string>
説明: ビルトインの匿名化ファイルではなく、匿名化のための代わりのファイルを含むアプリケーションを指定しま
す。

使⽤法
デフォルトにより、scrubコマンドは$SPLUNK_HOME/etc/anonymizerディレクトリにある辞書および設定ファイルを使⽤します。
これらのデフォルトファイルは引数をscrubコマンドに指定することで上書き可能です。引数はsplunk anonymizeCLIコマンドの
設定に正確に対応します。詳細は、splunk help anonymizeコマンドを発⾏します。

設定ファイルの独⾃バージョンをデフォルト位置に追加できます。

あるいは、アプリケーションを指定してそこにご⾃⾝の辞書および設定ファイルのコピーを保持することもできます。アプ
リケーションを指定するには、namespace=<string>引数を使⽤します。ここで、<string>はパ
ス$SPLUNK_HOME/etc/apps/<app>/anonymizerに現れる名前に対応するアプリケーションの名前です。

$SPLUNK_HOME/etc/apps/<app>/anonymizerディレクトリがない場合、Splunkソフトウェアは$SPLUNK_HOME/etc/slave-
apps/<app>/anonymizerディレクトリでファイルを探します。

scrubコマンドは、アンダースコアー( _ )で始まる属性(_rawは除く)またはdate_で始まる属性以外のすべての属性を匿名化しま
す。また、eventtype、linecount、punct、sourcetype、timeendpos、timestartposの属性は匿名化されません。

scrubコマンドは、デフォルトのmaxresultrowsの制限(50000件の結果)に準拠します。この設定は、[searchresults]スタンザ
のlimits.confファイルに記載されています。『管理』マニュアルのlimits.confを参照してください。

1.現在のサーチ結果をデフォルトファイルを使⽤して匿名化する。

... | scrub

2.現在のサーチ結果を指定された⾮公開⽤語ファイルを使⽤して匿名化する。

このサーチは$SPLUNK_HOME/etc/anonymizerディレクトリにあるabc_private-termsファイルを使⽤します。

... | scrub private-file=abc_private-terms

sea r ch
説明
searchコマンドを使って、インデックスからイベントを取得、またはパイプライン内の前のサーチコマンドの結果をフィルタ
リングします。キーワード、引⽤符で囲んだフレーズ、ワイルドカード、フィールド・値の式を使って、インデックスから
イベントを取得できます。searchコマンドはあらゆるサーチの最初に暗⽰されます。searchコマンドをサーチ条件の最初に指
定する必要はありません。

searchコマンドがパイプラインの最初のコマンドでない場合、searchコマンドは前のコマンドの結果をフィルタリングするた

344
めに使⽤されます。

searchコマンドはサブサーチでも使⽤できます。『サーチ』マニュアルの「サブサーチ」を参照してください。
イベントを取得したら、変換、フィルタリング、レポート作成のコマンドを適⽤できます。取得したイベントにコマンドを
適⽤するには、垂直バー( | ) (パイプ記号)を使⽤します。

構⽂
search <logical-expression>

必須引数

<logical-expression>
構⽂ :<logical-expression> | <time-opts> | <search-modifier> | NOT <logical-expression> | <index-expression>
| <comparison-expression> | <logical-expression> [OR] <logical-expression>
説明: インデックスから取得するイベントを⽰す、キーワードまたはフィールド・値のペアを指定します。必要に応じ
て括弧を使⽤します。論理式、⽐較演算⼦、時間修飾⼦、サーチ修飾⼦またはこの引数のための式の組み合わせを使⽤
します。
単語と式の間には、常にAND演算⼦が存在することが前提です。たとえば、web errorは、web AND errorと同じで
す。clientip=192.0.2.255 earliest=-1h@hと指定することは、clientip=192.0.2.255 AND earliest=-1h@hと同じです。明確にす
るために含みたい場合を除き、AND演算⼦は指定しないでください。

論理式のオプション

<comparison-expression>
構⽂: <field><comparison-operator><value> | <field> IN (<value-list>)
説明 :フィールドをリテラル値と⽐較するか、またはフィールドに現れる値のリストを提供します。
<index-expression>
構⽂ :"<string>" | <term> | <search-modifier>
説明 :リテラル⽂字列およびサーチ修飾⼦を使って、インデックスから取得するイベントを指定します。
<time-opts>
構⽂ :[<timeformat>] (<time-modifier>)...
説明 :サーチのstarttimeおよびendtimeのフォーマットを指定します。「時間オプション」を参照してください。

⽐較式のオプション

<comparison-operator>
構⽂: = | != | < | <= | > | >=
説明 :フィールド/値のペアをサーチする際に、⽐較演算⼦を使⽤できます。equal ( = )またはnot equal ( != )の演算
⼦が⽂字値を⽐較する⽐較式。たとえば、「1」は「1.0」と⼀致しません。演算⼦より⼤きいまたは⼩さい⽐較式<><=
>=は、2つの数字を数値的に⽐較し、その他の値は辞書学的に⽐較します。「使⽤法」を参照してください。

<field>
構⽂ :<string>
説明 :フィールド名です。

<value>
構⽂ :<literal-value>
説明 :⽐較式内で、フィールドのリテラル値またはフィールドの⽂字列値です。

<value-list>
構⽂ :(<literal-value>, <literal-value>, ...)
説明 :IN演算⼦と⼀緒に使⽤して2つ以上の値を指定します。たとえばerror=400 OR error=402 OR error=404 OR
error=406の代わりにerror IN (400, 402, 404, 406)を使⽤します。

インデックス式のオプション

<string>
構⽂ :"<string>"
説明 :照合するキーワードまたは引⽤符で囲んだフレーズを指定します。⽂字列や引⽤符で囲まれた⽂字列(サーチ修
飾⼦以外の任意の語句)をサーチする場合、Splunkソフトウェアは_rawフィールドと照合して、⼀致するイベントや結
果を検索します。
<search-modifier>
構⽂ :<sourcetype-specifier> | <host-specifier> | <hosttag-specifier> | <source-specifier> | <savedsplunk-
specifier> | <eventtype-specifier> | <eventtypetag-specifier> | <splunk_server-specifier>
説明 :指定したフィールドまたはフィールドタグからイベントをサーチします。たとえば、ホスト、ソース、ソースタ
イプなどを組み合わせたサーチ、保存済みサーチ、イベントタイプを使ったサーチなどを⾏うことができます。また、
フィールドタグのサーチはtag::<field>=<string>のフォーマットで⾏います。
345
デフォルトのフィールドを使ったサーチの詳細は、『ナレッジ管理』マニュアルを参照してください。
タグとフィールドのエイリアスを使ったサーチの詳細は、『ナレッジ管理』マニュアルを参照してください。

<sourcetype-specifier>
構⽂ :sourcetype=<string>
説明: 指定されたソースタイプフィールドからのイベントをサーチ。
<host-specifier>
構⽂ :host=<string>
説明 :指定したホストフィールドからイベントをサーチします。
<hosttag-specifier>
構⽂ :hosttag=<string>
説明 :⽂字列によりタグ付けされたホストを持つイベントをサーチします。
<eventtype-specifier>
構⽂ :eventtype=<string>
説明 :指定したイベントタイプに⼀致するイベントをサーチします。

<eventtypetag-specifier>
構⽂ :eventtypetag=<string>
説明 :⽂字列によりタグ付けされたすべてのeventtypeに⼀致するイベントをサーチします。
<savedsplunk-specifier>
構⽂ :savedsearch=<string> | savedsplunk=<string>
説明 :指定した保存済みサーチが⾒つけたイベントに対してサーチを⾏います。
<source-specifier>
構⽂ :source=<string>
説明 :指定したホストフィールドからイベントをサーチします。
<splunk_server-specifier>
構⽂ :splunk_server=<string>
説明 :特定のサーバーからイベントをサーチします。サーチヘッドを参照するには、「local」を使⽤します。

時間オプション

時間修飾⼦の⼀覧については、「サーチの時間修飾⼦」を参照してください。

<timeformat>
構⽂ :timeformat=<string>
説明 :starttime、endtimeのフォーマットを指定します。
デフォルト :timeformat=%m/%d/%Y:%H:%M:%S。

<time-modifier>
構⽂ :starttime=<string> | endtime=<string> | earliest=<time_modifier> | latest=<time_modifier>
説明 :開始時間、終了時間を相対時間または絶対時間で指定します。

earliestおよびlatest属性を使って、サーチの絶対/相対時間範囲を指定することもできます。この時間修飾⼦の構⽂に
ついての詳細は、『サーチ』マニュアルの「サーチへの時間修飾⼦の指定」を参照してください。
starttime
構⽂ :starttime=<string>
説明 :イベントはこの時間か、それ以降でなければなりません。timeformatと⼀致する必要があります。

endtime
構⽂ :endtime=<string>
説明 :すべてのイベントはこの時間か、それ以前でなければなりません。

使⽤法
searchコマンドは、サーチの先頭コマンドとして最初のパイプの前で使⽤した場合は、イベント⽣成コマンド となりま
す。searchをパイプラインの下流で使⽤すると、分散可能ストリーミングコマンド となります。「コマンドタイプ」を参照
してください。
searchコマンドをサーチの先頭で使⽤した場合は、キーワード、フレーズ、フィールド、論理演算式、⽐較式などを使って、
Splunkインデックスから取得するイベントを正確に指定することができます。
⽤語のサーチ例を以下に⽰します。

キーワード:error login
引⽤符で囲んだ⽂字列:"database error"
論理演算⼦:login NOT (error OR fail)
ワイルドカード:fail*
346
フィールド値:status=404, status!=404, or status>200

SPL演算⼦やキーワードであるフィールド値(country=IN、country=AS、iso=AND、state=ORなど)をサーチするには、演算⼦または
キーワードを引⽤符で囲む必要があります。たとえば、country="IN"です。

『サーチ』マニュアルの「サーチコマンドの使⽤」を参照してください。

論理演算式

searchでの論理演算式の評価順序は、以下のとおりです。

1. 括弧内の式
2. NOT句
3. OR句
4. AND句
この評価順序は、whereコマンドで使⽤される順序とは異なります。whereコマンドは、OR句の前にAND句を評価します。

2つのフィールドを⽐較します

2つのフィールドを⽐較するには、index=myindex fieldA=fieldBまたはindex=myindex fieldA!=fieldBをsearchコマンドに指定しな


い でください。⽐較式を指定する場合は、searchコマンドは<field>と<value>との⽐較を予測します。searchコマンド
はfieldBを値として解釈し、フィールド名としては解釈しません。

whereコマンドを使⽤して2つのフィールドを⽐較します。

index=myindex | where fieldA=fieldB

不等⽐較では、条件を複数の⽅法で指定できます。

index=myindex | where fieldA!=fieldB

または
index=myindex | where NOT fieldA=fieldB

『サーチ』マニュアルでNOTと !=の違いを参照してください。

IN演算⼦での複数フィールド値⽐較

フィールドに複数の値のうちの1つが作間れているかどうかを判断したい場合はIN演算⼦を使⽤します。
たとえば、この構⽂を使⽤します。

... error_code IN (400, 402, 404, 406) | ...

この構⽂の代わりに、
... error_code=400 OR error_code=402 OR error_code=404 OR error_code=406 | ...

searchコマンドと⼀緒に使⽤する場合は、IN演算⼦の値のリストにあるワイルドカード⽂字を使⽤できます。例:

... error_code IN (40*) | ...

NOT演算⼦をIN演算⼦と⼀緒に使⽤できます。例:
... NOT clientip IN (211.166.11.101, 182.236.164.11, 128.241.220.82) | ...

evalおよびwhereコマンドと⼀緒に使⽤できるIN機能もあります。IN関数がevalおよびwhereコマンドと⼀緒に使⽤されている
場合、ワイルドカード⽂字は値リストで使⽤できません。「⽐較関数と条件関数」をご覧ください。

辞書的順序

辞書的順序はアイテムをそのアイテムをコンピューターメモリーでエンコードするのに使⽤される値に基づいて並べ替えま
す。Splunkソフトウェアでは、これはほとんど常にUTF-8エンコードで、ASCIIよりも多くの機能があります。

数字は⽂字の前に並び替えられます。⽂字は最初の桁に基づいて並び替えられます。たとえば、10, 9, 70, 100は辞書


的には10, 100, 70, 9に並べ替えられます。

347
⼤⽂字は⼩⽂字の前に来ます。
記号は標準ではありません。数値の前に並び替えられる記号もあります。その他の記号は⽂字の前または後に並び替え
られます。

並び替えの順序は、辞書的順序からカスタム順序に変更できます。ブログ「Order Up! Custom Sort Orders (整列!カスタム


並び替え順序)」を参照してください。

引⽤符とエスケープ⽂字

⼀般的に、空⽩⽂字、カンマ、パイプ、引⽤符、⾓括弧を含むフレーズやフィールド値は、引⽤符で囲む必要があります。
引⽤符はバランスが取れている必要があります。開き引⽤符には、閉じる引⽤符が続く必要があります。例:
error | stats countのようなサーチは、⽂字列「error」を含むイベント数を検索します。
... | search "error | stats count"のようなサーチは、error、1つのパイプ、stats、およびcountがその順番で含まれて
いるrawイベントを返します。
また、論理演算⼦やフィールド/値のペアなどが、サーチ時に元の意味で解釈されないように、そのようなキーワードやフ
レーズを引⽤符で囲むことも可能です。例:
キーワードANDを論理演算⼦として解釈せずにサーチする場合:error "AND"
フィールド/値のペアをフレーズとしてサーチする場合:error "startswith=foo"

円記号またはバックスラッシュ(\)は、引⽤符、パイプ、および円記号⾃⾝をエスケープ処理する場合に使⽤します。バック
スラッシュによるエスケープは、引⽤符内でも展開されます。例:
サーチ内に「\|」と指定すると、このパイプ⽂字は2つのコマンドの区切り⽂字ではなく、処理対象のパイプ⽂字として
コマンドに渡されます。
「\"」と指定すると引⽤符がそのまま⽂字としてコマンドに渡されます。たとえば、⽂字通りの引⽤符を検索したり、
rexを使ってフィールド内に引⽤符を挿⼊する場合に使⽤します。
「\\」と指定すると、⽂字通りの円記号がコマンドに渡されます。

認識されない円記号のシーケンスは変更されません。
たとえば、サーチ⽂字列内に「\s」とある場合、これは既知のエスケープシーケンスではないため「\s」としてコマン
ドに渡されます。
しかし、「\\s」と指定した場合、「\\」は既知のエスケープシーケンスで「\」に変換されるため、「\s」としてコマ
ンドに渡されます。

TERM()を使ったサーチ

TERM()ディレクティブを使って、括弧内に指定した任意の項⽬をインデックス内の1つの⽤語としてSplunkソフトウェアに
サーチさせることができます。TERMは、⽂字列にピリオドなどのマイナー区切り⽂字が含まれており、それが空⽩スペース
やカンマなどのメジャー区切り⽂字で区切られているような場合に特に役⽴ちます。実際にTERMは、主区切り⽂字で区切ら
れている⽂字列には機能しません。

『サーチ』マニュアルの「CASEとTERMを使ったフレーズの照合」を参照してください。

CASE()を使ったサーチ

CASE()ディレクティブを使って、⼤⽂字と⼩⽂字を区別した、⽤語やフィールド値のサーチを⾏うことができます。
『サーチ』マニュアルの「CASEとTERMを使ったフレーズの照合」を参照してください。


下記は、searchコマンドの使⽤⽅法の例です。『サーチチュートリアル』の「サーチの開始」には、さまざまな例が記載され
ています。

1.フィールド・値ペア照合

この例では、フィールド・値のペアを照合して、特定のソースIP (src)と宛先IP (dst)の値を⽰しています。


src="10.9.165.*" OR dst="10.9.165.8"

2.理論および⽐較演算⼦の使⽤

この例では理論および⽐較演算⼦を使⽤したフィールド・値ペア照合を⽰しています。「localhost」以外のホストの、xqp値
が5より⼤きく、コード値が10または29のイベントをサーチします。
(code=10 OR code=29) host!="localhost" xqp>5

348
この例では、2つのフィールド・値ペアを同じフィールドで指定しているので、IN演算⼦も使⽤できます。修正したサーチは
以下の通りです:

code IN(10, 29) host!="localhost" xqp>5

3.ワイルドカードの使⽤

この例ではワイルドカードを使⽤したフィールド・値ペア照合を⽰しています。HTTPクライアントまたはサーバーエラー状
態のあるすべてのWebサーバーからイベントをサーチします。

host=webserver* (status=4* OR status=5*)

この例では、2つのフィールド・値ペアを同じフィールドで指定しているので、IN演算⼦も使⽤できます。修正したサーチは
以下の通りです:
host=webserver* status IN(4*, 5*)

4.IN演算⼦の使⽤

この例は、フィールド・値ペア照合を指定するためのIN演算⼦の使⽤⽅法を⽰しています。access.logファイルからのイベ
ントで、actionフィールドで値addtocartまたはpurchaseをサーチします。

sourcetype=access_combined_wcookie action IN (addtocart, purchase)

5.2番めのサーチを指定します。

この例ではsearchコマンドを⼆回使っています。searchコマンドは条件eventtype=web-trafficを満たすすべてのサーチの開始を
暗⽰します。searchコマンドは結果をフィルターするためにサーチパイプラインで後ほど再度使⽤されます。このサーチ
は、transactionコマンドを使ってWebセッションを定義し、3件以上のイベントを含むユーザーセッションを探しています。

eventtype=web-traffic | transaction clientip startswith="login" endswith="logout" | search eventcount>3

6.NOTまたは !=⽐較の使⽤

論理演算⼦の「NOT」を含むサーチは、「!=」⽐較を使⽤した場合と同じではありません。
以下のサーチはfieldA="value2"を除いて全フィールドを含むすべてを返します。

NOT fieldA="value2"

以下のサーチは、fieldAが存在し、値が「value2」でないイベントを返します。

fieldA!="value2"

値にワイルドカードを使⽤する場合は、NOT fieldA=*は、fieldAがゼロまたは未定義であるイベントを返し、fieldA!=*はイベ
ントを全く返しません。

『サーチ』マニュアルでNOTと!の違いを参照してください。

sea r ch t xn
説明
トランザクションタイプに⼀致し、特定のテキストを含むトランザクションイベントを効果的に返します。Splunk Cloudを
使⽤していてトランザクションタイプを定義したい場合は、サポートチケットを申請します。

構⽂
| searchtxn <transaction-name> [max_terms=<int>] [use_disjunct=<bool>] [eventsonly=<bool>] <search-string>

必須引数

<transaction-name>
構⽂ :<transactiontype>
説明 :transactiontypes.confに定義されているトランザクションタイプスタンザの名前。

<search-string>
構⽂ :<string>
説明 :トランザクションイベント内をサーチする⽂字列。
349
省略可能な引数

eventsonly
構⽂ :eventsonly=<bool>
説明 :真(True)の場合、関連するイベントのみを取得しますが、「| transaction」コマンドは実⾏しません。
デフォルト :偽(False)
max_terms
構⽂ :maxterms=<int>
説明 :1〜1000の整数で、すべてのフィールドが使⽤できる⼀意のフィールド値の数を指定します。⼩さな値を使⽤す
るとサーチが⾼速化し、より最近の値が取得されます。
デフォルト :1000
use_disjunct
構⽂ :use_disjunct=<bool>
説明 :初期サーチ時に、サーチ⽂字列<search-string>内の各単語間にORを仮定するかどうかを指定します。
デフォルト :真(True)

使⽤法
searchtxnコマンドはイベント⽣成コマンド です。「コマンドタイプ」を参照してください。

⽣成コマンドの先頭にはパイプ⽂字が付けられ、サーチの最初のコマンドである必要があります。

トランザクション

このコマンドは、特定のフィールドの値により結びつけられたトランザクションのみ処理します。順序や時間による関係で
結び付けられたトランザクションについては、処理されません。

「email」というtransactiontypes.conf.inファイルの中に<transactiontype>スタンザがあるとします。スタンザには、以下の設
定が含まれています。

fields="qid, pid"
search=sourcetype=sendmail_syslog to=root
searchtxnコマンドは、sourcetype="sendmail_syslog" to=rootに⼀致するすべてのイベントを探します。

その結果から、qidまたはpidを含む全てのフィールドは、関連するトランザクションイベントをさらにサーチするのに使⽤
されます。すべてのqidとpidが⾒つかったら、結果となるサーチを実⾏します。

sourcetype="sendmail_syslog" ((qid=val1 pid=val1) OR (qid=valn pid=valm) | transaction name=email | search to=root

例1:

David Smithからrootへのすべての電⼦メールトランザクションを探します。
| searchtxn email to=root from="David Smith"

関連項⽬
transaction

sel fjoin
説明
指定した1つ以上のフィールドに基づいて、サーチ結果⾏を同じ結果セットの他のサーチ結果⾏と結合します。

構⽂
selfjoin [<selfjoin-options>...] <field-list>

必須引数

<field-list>
構⽂ :<field> ...
説明: 結合対象となるフィールド、またはフィールドのリスト。

350
省略可能な引数

<selfjoin-options>
構⽂ :overwrite=<bool> | max=<int> | keepsingle=<bool>
説明: 返すサーチ結果セットを制御するオプション。1つ以上のこれらのオプションを指定することができます。

Selfjoinのオプション

keepsingle
構⽂ :keepsingle=<bool>
説明: joinフィールドに⼀意の値を持つ結果を保持するかどうかを制御します。keepsingle=trueであれば、他に結合す
る結果を持たないサーチ結果が出⼒で保持されます。
デフォルト :偽(False)

max
構⽂ :max=<int>
説明 :各主結果が結合できる「その他の」結果の最⼤数を⽰します。max=0の場合、制限はありません。この引数は、
「その他」の結果の最⼤数を設定します。メイン結果の最⼤数は100,000です。
デフォルト :1

overwrite
構⽂ :overwrite=<bool>
説明: overwrite=trueの場合は、「その他」の結果のフィールドによってメイン結果のフィールドが上書きされます。メ
イン結果は、結合の基礎として使⽤されます。
デフォルト :真(True)

使⽤法
セルフ結合は、リレーショナルデータベーステーブルでよく使⽤されます。イベントデータではあまり使⽤されません。

イベントでの使⽤例としては、プロセス情報を含むイベントで、各プロセスが親プロセスIDを持っている場合があります。
この場合、selfjoinコマンドを使⽤して、プロセスに関する情報をその親プロセスに関する情報に関連付けることができま
す。
「その他の例」を参照してください。

基本的な例
1:単⼀フィールドを使⽤して結果を結合する

結果の「id」フィールドを⾃⾝と結合します。

... | selfjoin id

その他の例:
以下の例では、selfjoinコマンドをシンプルな結果セットに対して使⽤しています。この例は、⾃分のSplunkインスタンスで
実⾏できます。

この例では、サーチを増分的に構築しています。サーチに内容を追加するたびにサーチが再実⾏され、その追加の影響が結
果テーブルに⽰されます。サーチを実⾏するたびに、_timeフィールドの値が変化します。ただし、この例では結果テーブル
の値は変更されないため、サーチに対する変更が結果にどのように影響するかを⾒ることができます。
1. まず、makeresultsコマンドを使⽤して、結果が5件のシンプルなセットを作成します。

| makeresults count=5

5件の結果が同じタイムスタンプで作成されています。

_t im e
2018-01-18 14:38:59

2018-01-18 14:38:59

2018-01-18 14:38:59

2018-01-18 14:38:59

2018-01-18 14:38:59

351
2. 各結果を追跡するため、streamstatsコマンドを使⽤して、各結果に番号を付けるためのフィールドを追加します。

| makeresults count=5 | streamstats count as a

aフィールドが結果に追加されます。

_t im e a
2018-01-18 14:38:59 1

2018-01-18 14:38:59 2

2018-01-18 14:38:59 3

2018-01-18 14:38:59 4

2018-01-18 14:38:59 5

3. また、evalコマンドを使⽤して、タイムスタンプを60秒間隔に変更します。異なるタイムスタンプにすることで、この例が
より現実的になります。

| makeresults count=5 | streamstats count as a | eval _time = _time + (60*a)

タイムスタンプの分の部分が更新されます。

_t im e a

2018-01-18 14:38:59 1

2018-01-18 14:39:59 2

2018-01-18 14:40:59 3

2018-01-18 14:41:59 4

2018-01-18 14:42:59 5

4. 次に、evalコマンドを使⽤して、結合の対象となるフィールドを作成します。

| makeresults count=5 | streamstats count as a | eval _time = _time + (60*a) | eval joiner="x"

新しいフィールドが追加されます。

_t im e a jo iner
2018-01-18 14:38:59 1 x

2018-01-18 14:39:59 2 x

2018-01-18 14:40:59 3 x

2018-01-18 14:41:59 4 x

2018-01-18 14:42:59 5 x

5. evalコマンドを使⽤して、データを持つフィールドをいくつか作成します。

if関数でモジュロ演算を⾏い、新しいフィールドのそれぞれに異なるデータを追加します。モジュロ演算とは、ある数を別の
数で割ったときの余りを求める計算です。

eval bコマンドは各結果を処理して、モジュロ演算を実⾏します。a/2の余りが0である場合は、フィールド「b」に
「something」(何か)を格納し、そうでなければ「nada」(無)を格納します。
eval cコマンドは各結果を処理して、モジュロ演算を実⾏します。a/2の余りが1であれば、フィールド「c」に
「something else」(何か別のもの)を格納し、そうでなければ「nothing」(NULL)を格納します。

| makeresults count=5 | streamstats count as a | eval _time = _time + (60*a) | eval joiner="x" | eval b =
if(a%2==0,"something","nada"), c = if(a%2==1,"somethingelse",null())

新しいフィールドが追加され、_time以外のフィールドがフィールド名のアルファベット順に並べられます。

352
_t im e a b c jo iner

2018-01-18 14:38:59 1 nada somethingelse x

2018-01-18 14:39:59 2 something x

2018-01-18 14:40:59 3 nada somethingelse x

2018-01-18 14:41:59 4 something x

2018-01-18 14:42:59 5 nada somethingelse x

6. selfjoinコマンドを使⽤して、joinerフィールドの結果を結合します。

| makeresults count=5 | streamstats count as a | eval _time = _time + (60*a) | eval joiner="x" | eval b =
if(a%2==0,"something","nada"), c = if(a%2==1,"somethingelse",null()) | selfjoin joiner

結果が結合されます。

_t im e a b c jo iner
2018-01-18 14:39:59 2 something somethingelse x

2018-01-18 14:40:59 3 nada somethingelse x

2018-01-18 14:41:59 4 something somethingelse x

2018-01-18 14:42:59 5 nada somethingelse x

7. selfjoinコマンドが結果を結合する仕組みを理解するため、サーチから| selfjoin joiner部分を削除します。その後、サーチ


を修正して、aフィールドの値をbおよびcフィールドに追加します。

| makeresults count=5 | streamstats count as a | eval _time = _time + (60*a) | eval joiner="x" | eval b =
if(a%2==0,"something"+a,"nada"+a), c = if(a%2==1,"somethingelse"+a,null())

結果のbおよびcフィールドに、⾏番号が追加されています。

_t im e a b c jo iner
2018-01-18 14:38:59 1 nada1 somethingelse1 x

2018-01-18 14:39:59 2 something2 x

2018-01-18 14:40:59 3 nada3 somethingelse3 x

2018-01-18 14:41:59 4 something4 x

2018-01-18 14:42:59 5 nada5 somethingelse5 x

8. ではselfjoinコマンドをサーチに戻します。

| makeresults count=5 | streamstats count as a | eval _time = _time + (60*a) | eval joiner="x" | eval b =
if(a%2==0,"something"+a,"nada"+a), c = if(a%2==1,"somethingelse"+a,null()) | selfjoin joiner

セルフ結合の結果です。

_t im e a b c jo iner

2018-01-18 14:39:59 2 something2 somethingelse1 x

2018-01-18 14:40:59 3 nada3 somethingelse3 x

2018-01-18 14:41:59 4 something4 somethingelse3 x

2018-01-18 14:42:59 5 nada5 somethingelse5 x

両⽅の⾏のフィールドに値が存在する場合、_timeの値に基づいて、新しい⽅の結果⾏が優先されます。実⾏される結合を次
の表に⽰します。


353
果 Out put 説明

⾏1が⾏2と結合され、⾏2と フィールドbでは、⾏2の値something2が優先されるため、値nada1は破棄されます。フィールドcでは、⾏2に
1
して返されます。 値はありません。⾏1から値somethingelse1が返されます。

⾏2が⾏3と結合され、⾏3と ⾏3では、フィールドbとフィールドcの両⽅に値があるため、⾏3が優先され、⾏2の値は破棄されます。
2
して返されます。

⾏3が⾏4と結合され、⾏4と フィールドbでは、⾏4の値something4が優先されるため、値nada3は破棄されます。フィールドcでは、⾏4に
3
して返されます。 値はありません。⾏3から値somethingelse3が返されます。

⾏4が⾏5と結合され、⾏5と ⾏5では、フィールドbとフィールドcの両⽅に値があるため、⾏5が優先され、⾏4の値は破棄されます。
4
して返されます。

⾏5には結合する⾏がありま
5 追加の結果は返されません。
せん。

(この例でご協⼒いただいたSplunkユーザーAlacercogitatusさんに感謝の意を表明します。)

関連項⽬
join

sendema il
説明
sendemailコマンドを使⽤して、メール通知を⽣成します。指定したメールアドレスにサーチ結果をメールで送信できます。

構⽂
太字 は必須構⽂です。
sendem ail t o =<em ail_list >
[from=<email_list>]
[cc=<email_list>]
[bcc=<email_list>]
[subject=<string>]
[format=csv | table | raw]
[inline= <bool>]
[sendresults=<bool>]
[sendpdf=<bool>]
[priority=highest | high | normal | low | lowest]
[server=<string>]
[width_sort_columns=<bool>]
[graceful=<bool>]
[content_type=html | plain]
[message=<string>]
[sendcsv=<bool>]
[use_ssl=<bool>]
[use_tls=<bool>]
[pdfview=<string>]
[papersize=letter | legal | ledger | a2 | a3 | a4 | a5]
[paperorientation=portrait | landscape]
[maxinputs=<int>]
[maxtime=<int> m | s | h | d]
[footer=<string>]

必須引数

から、以下のように変更されます。
構⽂ :to=<email_list>
説明 :サーチ結果の送信先メールアドレスのリストです。引⽤符で囲まれたカンマ区切りのメールアドレスを指定しま
す。たとえば、「alex@email.com、maria@email.com、wei@email.com」

メールを送信できるドメインのセットは、[メール設定]ページの[ Allo wed Do m ains(許可ドメイン)] 設定で制限できま


す。たとえば、組織のメールドメインに含まれるアドレスにのみメールを送信できるように制限できます。
詳細は、『アラート』マニュアルの「メール通知アクション」を参照してください。

省略可能な引数
354
bcc
構⽂ :bcc=<email_list>
説明 :BCC⾏。引⽤符で囲まれたカンマ区切りのメールアドレスを指定します。
cc
構⽂ :cc=<email_list>
説明 :CC⾏。引⽤符で囲まれたカンマ区切りのメールアドレスを指定します。
content_type
構⽂ :content_type=html | plain
説明 :メールのフォーマットタイプ。
デフォルト :content_type引数のデフォルト値は[email]ファイルのalert_actions.confスタンザに設定されています。新
規またはアップグレードしたSplunkインストールのデフォルト値はhtmlです。

format
構⽂ :format=csv | raw | table
説明 :インライン結果のフォーマット⽅法を指定します。
デフォルト :format引数のデフォルト値は[email]ファイルのalert_actions.confスタンザに設定されています。新規また
はアップグレードしたSplunkインストールのデフォルト値はtableです。

footer
構⽂ :footer=<string>
説明 :代替となるメールフッターを指定します。
デフォルト :デフォルトフッターは:
このメールが誤って配信されたと思われる場合は、Splunk管理者にお問い合わせください。
Splunk > マシンデータのエンジン。
フッターに新しい⾏を⼊れる場合は、Shift+Enterを押してください。
開始
構⽂ :from=<email_list>
説明 :メールアドレスの差出⼈⾏。
デフォルト :"splunk@<hostname>"
inline
構⽂ :inline=<boolean>
説明 :結果をメッセージ本⽂に記載するか、または添付ファイルとして送信するかを指定します。デフォルトにより、
添付はCSVファイルとして提供されます。使⽤法のセクションを参照してください。
デフォルト :inline引数のデフォルト値は[email]ファイルのalert_actions.confスタンザに設定されています。新規また
はアップグレードしたSplunkインストールのデフォルト値はfalseです。

graceful
構⽂ :graceful=<boolean>
説明 :真(True)に設定すると、メール送信が何らかの理由で失敗した場合でもエラーが返されません。Sendemailコマ
ンドがサーチの⼀部でなかったかのように、サーチの残りを継続します。graceful=falseかつメール送信が失敗した場合
は、サーチからエラーが返ります。
デフォルト :偽(False)

maxinputs
構⽂ :maxinputs=<integer>
説明 :アラート経由で送信するサーチ結果の最⼤数を設定します。
デフォルト :50000

maxtime
構⽂ :maxtime=<integer>m | s | h | d
説明 :アクションの実⾏を許可する最⼤時間。この時間が経過すると、アクションは中断されます。
例 :2m
デフォルト :無制限
message
構⽂ :message=<string>
説明 :メールで送信するメッセージを指定します。
デフォルト: デフォルトメッセージはどの引数がsendemailコマンドで指定されているかに応じて異なります。

sendresults=falseの場合、メッセージはデフォルトで『サーチ完了』になります。
sendresults=true、inline=trueで、sendpdf=falseまたはsendcsv=falseのどちらかが該当する場合、メッセー
ジのデフォルトは「サーチ結果」になります。
sendpdf=trueまたはsendcsv=trueの場合、メッセージのデフォルトは「サーチ結果が添付されています」にな
ります。

paperorientation
構⽂ :paperorientation=portrait | landscape
説明 :⽤紙の向き。
デフォルト :portrait
355
papersize
構⽂ :papersize=letter | legal | ledger | a2 | a3 | a4 | a5
説明 :PDFのデフォルトの⽤紙サイズ。letter、legal、ledger、a2、a3、a4、a5を指定できます。
デフォルト :letter

pdfview
構⽂ :pdfview=<string>
説明: PDFとして送信するview.xmlファイルの名前です。たとえば、mydashboard.xml、search.xml、またはfoo.xmlです。
⼀般にこれはダッシュボードの名前ですが、単⼀ページAppや他のオブジェクトの名前である場合もあります。名前の
みを指定してください。ファイル名拡張⼦は指定しないでください。view.xmlファイルは<SPLUNK_HOME>/data/ui/viewsにあ
ります。
priority
構⽂ :priority=highest | high | normal | low | lowest
説明 :メールクライアントに表⽰される、メールの優先度を設定します。最低はLowestまたは5、低はlowまたは4、
⾼はhighまたは2、最⾼はhighestまたは1です。
デフォルト :normalまたは3
sendcsv
構⽂ :sendcsv=<boolean>
説明 :結果をCSV形式の添付ファイルで送信するかどうかを⽰します。
デフォルト :sendcsv引数のデフォルト値は[email]ファイルのalert_actions.confスタンザに設定されています。新規また
はアップグレードしたSplunkインストールのデフォルト値はfalseです。

sendpdf
構⽂ :sendpdf=<boolean>
説明 :結果をPDF形式の添付ファイルで送信するかどうかを⽰します。PDF⽣成に関する詳細は、『レポート』マニュ
アルの「レポートとダッシュボードのPDFの⽣成」を参照してください。
デフォルト :sendpdf引数のデフォルト値は[email]ファイルのalert_actions.confスタンザに設定されています。新規また
はアップグレードしたSplunkインストールのデフォルト値はfalseです。

sendresults
構⽂ sendresults=<boolean>
説明 :結果をメールに含めるかどうかを指定します。使⽤法のセクションを参照してください。
デフォルト :sendresults引数のデフォルト値は[email]ファイルのalert_actions.confスタンザに設定されています。新規
またはアップグレードしたSplunkインストールのデフォルト値はfalseです。

server
構⽂ :server=<string>
説明: ローカルのSMTPサーバーではない場合に、これを使ってSMTPサーバーを指定します。
[メール設定]ページの[ Allo wed Do m ains(許可ドメイン)] でドメインのリストが指定されている場合、sendemailコマンド
はserver引数を尊重しません。その代わりに、[メール設定]ページで設定されている[ メールホスト] を使⽤します。

詳細は、『アラート』マニュアルの「メール通知アクション」を参照してください。
デフォルト :localhost

subject
構⽂ :subject=<string>
説明 :件名⾏を指定します。
デフォルト: 「Splunk結果」

use_ssl
構⽂ :use_ssl=<boolean>
説明 :SMTPサーバーとの通信時にSSLを使⽤するかどうか。1 (true)を設定した場合、サーバー名またはIPアドレスと
TCPポートの両⽅を「mailserver」属性に指定する必要があります。
デフォルト :偽(False)

use_tls
構⽂ :use_tls=<boolean>
説明 :SMTPサーバーとの通信時に、TLS (トランスポート層セキュリティ)を使⽤するかどうかを指定します
(starttls)。
デフォルト :偽(False)
width_sort_columns
構⽂ :width_sort_columns=<boolean>
説明 :この指定はプレーンテキストのメールのみ有効です。列をその幅でソートするかどうかを指定します。
デフォルト :真(True)

使⽤法
sendresults=trueおよびinline=falseを指定してformatを指定しない場合、CSVファイルが電⼦メールに添付されます。

356
sendemailメッセージでフィールドをトークンとして使⽤する場合は、renameコマンドを使⽤して、sendemailコマンドで処
理される前にメッセージから中括弧({や})を削除してください。sendemailコマンドは、$results$のようなトークンに含まれ
ている中括弧を解釈できません。

権限の要件

sendemailを使⽤するには、ロールにschedule_search権限とlist_settings権限が必要です。


1.サーチ結果を指定メールで送信します

サーチ結果を指定メールで送信します。デフォルトで、結果はテーブルとしてフォーマットされます。

... | sendemail to="elvis@splunk.com" sendresults=true

2.サーチ結果をテーブル形式で送信します

サーチ結果を、件名「myresults」のraw形式メールで送信します。

... | sendemail to="elvis@splunk.com,john@splunk.com" format=raw subject=myresults server=mail.splunk.com sendresults=true

3.PDF を添付し、メッセージとrawインライン結果を記載します。

PDFを添付し、メッセージとインライン結果を記載したメール通知を送信します。
index=_internal | head 5 | sendemail to=example@splunk.com server=mail.example.com subject="Here is an email from Splunk"
message="This is an example message" sendresults=true inline=true format=raw sendpdf=true

set
説明
サブサーチ でset操作を実⾏します。

構⽂
太字 は必須構⽂です。
| set (unio n | diff | int ersect ) subsearch1 subsearch2

必須引数

union | diff | intersect


構⽂ :union | diff | intersect
説明 :2つのサブサーチを実⾏し、次に2つのサーチ結果に対して、指定されたset操作を実⾏します。

動作 説明

union 2つのサブサーチで⽣成された結果を組み合わせたセットを返します。両⽅のサブセットに共通する結果を1回だけ返します。

diff 2つのサブサーチで⽣成された結果を組み合わせたセットを返し、両⽅に共通するイベントを除外します。結果がどのサブサーチ
で⽣成されたのかについては⽰しません。

intersect 2つのサブサーチに共通する結果を含むセットを返します。

subsearch
構⽂ :"[" <string> "]"
説明 :サブサーチの指定。サブサーチは⾓括弧で囲む必要があります。サブサーチの構⽂の詳細は、『サーチ』マニュ
アルの「サブサーチについて」を参照してください。

使⽤法
setコマンドはイベント⽣成コマンド です。「コマンドタイプ」を参照してください。

⽣成コマンドの先頭にはパイプ⽂字が付けられ、サーチの最初のコマンドである必要があります。

結果
357
含まれるフィールドがすべて⼀致する場合、setコマンドは結果を同じものと判断します。_serialなど、サーチが⽣成する内
部フィールドはサーチごとに異なる場合があります。setコマンドの結果などの変換された結果とは対照的に、rawイベント
でstatsコマンドを使⽤する場合は⼀部のフィールドを除外する必要があります。これらの場合、サーチによってフィールド
が異なることはありません。

出⼒の制限

setコマンドが受け取る呼び出しサブサーチからの結果の件数には制限があります。この制限を超えると、diffコマンドに設
定された⼊⼒結果は警告なしに切り捨てられます。
Splunk Enterpriseをお持ちの場合は、limits.confファイルを編集して[subsearch]スタンザにあるmaxoutの値を変更すること
でこの制限を調整できます。この値が変更された場合、すべてのサブサーチで取得されるデフォルトの結果件数も変更され
ます。あまりにも⼤きな値を設定すると、サブサーチが実⾏される解析中に遅延が発⽣する恐れがあります。この制限のデ
フォルト値は10000です。
ファイルシステムにアクセスできるユーザー(システム管理者など)のみが設定ファイルを編集できます。defaultディレクト
リにある設定ファイルは、決して変更もコピーもしないでください。defaultディレクトリ内のファイルは、そのまま保持し
て元の位置にある必要があります。変更は、localディレクトリで⾏ってください。

設定ファイルの編集⽅法を参照してください。

Splunk Cloudを使⽤していて設定ファイルを編集したい場合は、サポートチケットを申請してください。

結果⾏数の制限

デフォルトによりsetコマンドは各サブサーチから最⼤50000項⽬を横断できます。サーチからの⼊⼒結果の件数が制限を超
えると、setコマンドは警告なしに残りのイベントを無視します。デフォルトでは、limits.confのサブサーチのmaxout設定によ
り、結果の数がこの制限を超過することを防ぎます。
この最⼤値は、limits.confファイルの[set]スタンザのmaxresultrows設定で制御します。この制限を⼤きくすると、より多くの
メモリーが使⽤されます。

ファイルシステムにアクセスできるユーザー(システム管理者など)のみが設定ファイルを編集できます。defaultディレクト
リにある設定ファイルは、決して変更もコピーもしないでください。defaultディレクトリ内のファイルは、そのまま保持し
て元の位置にある必要があります。変更は、localディレクトリで⾏ってください。

設定ファイルの編集⽅法を参照してください。
Splunk Cloudを使⽤していて設定ファイルを編集したい場合は、サポートチケットを申請してください。

例1:

「URL」の値に⽂字列「404」または「303」が含まれる値を返します(両⽅を含む値は返されません)。
| set diff [search 404 | fields url] [search 303 | fields url]

例2:

404エラーおよび303エラーがあるすべてのURLを返します。
| set intersect [search 404 | fields url] [search 303 | fields url]

注意 :fieldsコマンドをサブサーチで使⽤する場合、デフォルトでは内部フィールドはフィルタリングされません。setコマ
ンドに_rawや_timeなどの内部フィールドを⽐較させない場合は、サブサーチ内で明⽰的に除外する必要があります。

| set intersect [search 404 | fields url | fields - _*] [search 303 | fields url | fields - _*]

関連項⽬
append、appendcols、appendpipe、join、diff

set fiel ds
説明
すべての結果のフィールド値を共通値に設定します。
358
特定フィールドに、結果セット内の各イベントの指定値を設定します。複数の定義はカンマで区切ります。フィールドがな
い場合は追加され、存在しているフィールドは上書きされます。

フィールド値を変更または定義する必要がある場合は、より汎⽤⽬的のevalコマンドを使⽤することができます。例1のeval
式 を使ったフィールド値の設定⽅法を参照してください。

構⽂
setfields <setfields-arg>, ...

必須引数

<setfields-arg>
構⽂ :ststring="<string>", ...
説明 :引⽤符で値を囲んだキーと値のペア。キーと値のペアを複数指定する場合は、ペア間をカンマで区切ります。標
準のキークリーニングが実⾏されます。つまり、英数字以外の⽂字は「_」に置き換えられ、先頭の「_」は削除されま
す。

例1:

ipおよびfooフィールドの値を指定します。
... | setfields ip="10.10.10.10", foo="foo bar"

このためには、evalコマンドを使⽤します。

... | eval ip="10.10.10.10" | eval foo="foo bar"

関連項⽬
eval、fillnull、rename

sich a r t
サマリーインデックス は、レポートコマンドの前にストリーミング可能 ではないコマンドが使われているサーチなどの、
レポート⾼速化に適さない、処理に時間がかかるサーチの⾼速化に利⽤できます。詳細は、『ナレッジ管理』マニュアルの
「レポート効率を向上するサマリーインデックスの使⽤」を参照してください。

説明
chartコマンドのサマリーインデックスバージョンです。sichartコマンドは、サマリーインデックスにグラフ視覚エフェクト
の⽣成に必要な統計情報を設定します。たとえば、縦棒、折れ線、⾯、および円グラフを作成できます。サマリーインデッ
クスを設定した後、サマリーインデックスをサーチするために、sichartコマンドを使った全く同じサーチにchartコマンドが
使⽤できます。

構⽂
sichart [sep=<string>] [format=<string>] [cont=<bool>] [limit=<int>] [agg=<stats-agg-term>] ( <stats-agg-term> |
<sparkline-agg-term> | "("<eval-expression>")" )... [ BY <field> [<bins-options>... ] [<split-by-clause>] ] | [ OVER
<field> [<bins-options>...] [BY <split-by-clause>] ]

構⽂の詳細については、「chartコマンド」を参照してください。
sichartコマンドで使⽤可能な機能の詳細については、「統計およびグラフ関数」を参照してください。


例1:

サマリーインデックスの結果に対して「chart avg(foo) by bar」を実⾏するために必要な情報を算出します。


... | sichart avg(foo) by bar

関連項⽬
chart、collect、overlap、sirare、sistats、sitimechart、sitop

359
sir a r e
サマリーインデックス は、レポートコマンドの前にストリーミング可能 ではないコマンドが使われているサーチなどの、
レポート⾼速化に適さない、処理に時間がかかるサーチの⾼速化に利⽤できます。詳細は、『ナレッジ管理』マニュアルの
「レポート効率を向上するサマリーインデックスの使⽤」を参照してください。

説明
sirareはrareコマンドのサマリーインデックス版で、フィールドまたはフィールドの組み合わせのもっとも共通していない値
を返します。sirareコマンドは、サマリーインデックスにrareレポートの⽣成に必要な統計情報を設定します。サマリーイン
デックスを設定したら、通常のrareコマンドと、rareコマンドと完全に⼀致するサーチ⽂字列を使⽤して、そのレポートを⽣
成します。

構⽂
sirare [<top-options>...] <field-list> [<by-clause>]

必須引数

<field-list>
構⽂ :<string>,...
説明 :フィールド名のカンマ区切り形式のリスト。

省略可能な引数

<by-clause>
構⽂ :BY <field-list>
説明 :グループに分類する1つ以上のフィールドの名前です。
<top-options>
構⽂ :countfield=<string> | limit=<int> | percentfield=<string> | showcount=<bool> | showperc=<bool>
説明 :表⽰する値のタイプと数を指定するオプションです。これらは、rareおよびtopコマンドにより使⽤される同じ
<top-options>です。

t opのオプション

countfield
構⽂ :countfield=<string>
説明 :タプルの数の値を書き込む新しいフィールドの名前です。
デフォルト :「count」
limit
構⽂ :limit=<int>
説明: 返すタプルの数を設定します。0を指定するとすべてのタプルを返します。
percentfield
構⽂ :percentfield=<string>
説明: パーセントの値を書き込む新しいフィールドの名前です。
デフォルト :「percent」
showcount
構⽂ :showcount=<bool>
説明 :「count」フィールド(「countfield」オプションを参照)およびその組のカウントを作成するかどうかを指定し
ます。
デフォルト :真(True)
showpercent
構⽂ :showpercent=<bool>
説明 :percentフィールド(percentfieldオプションを参照)およびその組の相対普及度を作成するかどうかを指定しま
す。
デフォルト :真(True)

例1:

サマリーインデックスの結果に対して「rare foo bar」を実⾏するために必要な情報を算出します。


... | sirare foo bar

関連項⽬
360
collect、overlap、sichart、sistats、sitimechart、sitop

sist a t s
説明
sistatsは、サマリーインデックスの作成に使⽤する複数のコマンドの1つです。サマリーのインデックス化は、実⾏時間の⻑
いサーチ処理を⾼速化するために使⽤できる⼿段の1つです。
sistatsコマンドはサマリーインデックス版のstatsコマンドで、データセットの集計統計情報を算出します。

sistatsコマンドはサマリーインデックスに⼊⼒します。次に、レポートを作成してサマリー統計を作成する必要がありま
す。使⽤法のセクションを参照してください。

構⽂
sistats [allnum=<bool>] [delim=<string>] ( <stats-agg-term> | <sparkline-agg-term> ) [<by clause>]
この構⽂の各引数の詳細については、statsコマンドを参照してください。
sistatsコマンドで使⽤可能な機能の詳細については、「統計およびグラフ関数」を参照してください。

使⽤法
サマリーインデックスは、メインインデックスとは別に存在します。
サマリーインデックスを作成した後、サマリーインデックスにサーチを実⾏してレポートを作成します。サマリーインデッ
クスを設定するのに使⽤したのと全く同じサーチ⽂字列を使⽤し、statsコマンドをsistatsに代⼊置換して、レポートを作成
してください。
詳細は、『ナレッジ管理』マニュアルの「レポート効率を向上するサマリーインデックスの使⽤」を参照してください。

特定のフィールドに適⽤されない統計関数

count関数を除き、特定のフィールドやフィールドに解決されるeval式に適⽤されない関数をsistatsコマンドと組み合わせる
と、サーチヘッドは関数がすべてのフィールドを表すワイルドカードに適⽤されたかのように処理します。たとえば、サー
チ内に| sistats avgがある場合は、| sistats avg(*)の結果が返されます。

ただし、この「暗黙的なワイルドカード」構⽂は、正式には廃⽌されています。ワイルドカードを葉明⽰的に指定してくだ
さい。すべてのフィールドに関数を適⽤するには、| sistats <function>(*)と指定します。

メモリーとst at sサーチパフォーマンス

limits.confの2つの設定により、sistatsサーチのパフォーマンスと、これらのコマンドがサーチプロセスで使⽤するメモリー
量(RAMとディスクスペース)のバランスを調整できます。sistatsサーチの完了に常に時間がかかる場合は、これらの設定を
調整することでパフォーマンスを⾼めることができますが、サーチ時のメモリー使⽤量が増えるため、サーチエラーの原因
になることもあります。

Splunk Cloudを使⽤している場合、これらの設定を変更するにはサポートチケットの申請が必要です。
詳細は、『サーチ』マニュアルの「メモリーとstatsサーチパフォーマンス」を参照してください。

例1:

⽂字列「lay」で終わる任意の⼀意のフィールドに対して、各時間の平均の統計にサマリーインデックスを作成します。たと
えば、delay、xdelay、relayです。
... | sistats avg(*lay) BY date_hour

レポートを作成するために、サーチを使⽤してサマリーインデックスに対してサーチを実⾏します。

index=summary | stats avg(*lay) BY date_hour

関連項⽬
collect、overlap、sichart、sirare、sitop、sitimechart
サマリーインデックス作成例の詳細については、『ナレッジ管理』マニュアルの「サマリーインデックスを使ったレポート
361
効率の向上」を参照してください。

sit imech a r t
サマリーインデックス は、変換コマンドの前にストリーミング可能 ではないコマンドが使われているサーチなどの、レ
ポート⾼速化に適さない、処理に時間がかかるサーチの⾼速化に利⽤できます。詳細は、『ナレッジ管理』マニュアルの
「レポート効率を向上するサマリーインデックスの使⽤」を参照してください。

説明
sitimechartコマンドはサマリーインデックス版のtimechartコマンドで、対応する統計情報テーブルから時系列グラフを可視化
します。sitimechartコマンドは、サマリーインデックスにtimechartレポートの⽣成に必要な統計情報を設定しま
す。sitimechartサーチを使⽤してサマリーインデックスを設定したら、通常のtimechartコマンドと、sitimechartと完全に同じ
サーチ⽂字列を使⽤して、サマリーインデックスのレポートを⽣成します。

構⽂
太字 は必須構⽂です。
sit im echart
[sep=<string>]
[partial=<bool>]
[cont=<bool>]
[limit=<int>]
[agg=<stats-agg-term>]
[<bin-options>... ]
<single-agg> [BY <split-by-clause>] | <eval-expressio n> BY <split -by-clause>
sitimechartコマンド引数を指定する場合は、<single-agg>または<eval-expression> BY <split-by-clause>が必要です。

これらの引数の説明は、「timechartコマンド」を参照してください。

使⽤法
sitimechartコマンドで使⽤可能な機能の詳細については、「統計およびグラフ関数」を参照してください。

例1:

collectコマンドを使⽤して、mysummaryというサマリーインデックスに、ホスト別のCPU使⽤量に関する統計情報を供給する

... | sitimechart avg(cpu) BY host | collect index=mysummary

collectコマンドは、指定するサマリーインデックスにサーチの結果を追加します。collectコマンドを実⾏する前に、サマ
リーインデックスを作成する必要があります。
同じサーチでtimechartコマンドを使⽤して、タイムチャートレポートを⽣成します。

index=mysummary | timechart avg(cpu) BY host

関連項⽬
collect、overlap、sichart、sirare、sistats、sitop

sit op
サマリーインデックス は、レポートコマンドの前にストリーミング可能 ではないコマンドが使われているサーチなどの、
レポート⾼速化に適さない、処理に時間がかかるサーチの⾼速化に利⽤できます。詳細は、『ナレッジ管理』マニュアルの
「サマリーベースのサーチの⾼速化の概要」と「レポート効率を向上するサマリーインデックスの使⽤」を参照してくださ
い。

説明
sitopコマンドはサマリーインデックス版のtopコマンドで、フィールドまたはフィールドの組み合わせで最も頻出する値を返
します。sitopコマンドは、サマリーインデックスにtopレポートの⽣成に必要な統計情報を設定します。サマリーインデック
スを設定したら、通常のtopコマンドと、sitopコマンドと完全に⼀致するサーチ⽂字列を使⽤して、そのレポートを⽣成しま
す。

362
構⽂
sitop [<N>] [<top-options>...] <field-list> [<by-clause>]

注意 :この構⽂はtopコマンドの構⽂とまったく同じです。

必須引数

<field-list>
構⽂ :<field>, ...
説明 :フィールド名のカンマ区切り形式のリスト。

省略可能な引数

<N>
構⽂ :<int>
説明: 返す結果数。
<top-options>
構⽂ :countfield=<string> | limit=<int> | otherstr=<string> | percentfield=<string> | showcount=<bool> |
showperc=<bool> | useother=<bool>
説明 :sitopコマンドのオプションです。t o pのオプション を参照してください。

<by-clause>
構⽂ :BY <field-list>
説明 :グループに分類する1つ以上のフィールドの名前です。

t opのオプション

countfield
構⽂ :countfield=<string>
説明 :カウントした値を書き込む新しいフィールドの名前です。
デフォルト :count
limit
構⽂ :limit=<int>
説明: 返すタプルの数を設定します。0を指定するとすべてのタプルを返します。
デフォルト :"10"
otherstr
構⽂ :otherstr=<string>
説明 :useotherが真(True)の時、すべての他の値を代表する⾏に書き込まれる値を設定します。
デフォルト: 「OTHER」
percentfield
構⽂ :percentfield=<string>
説明: パーセントの値を書き込む新しいフィールドの名前です。
デフォルト :「percent」
showcount
構⽂ :showcount=<bool>
説明 :「count」フィールド(「countfield」オプションを参照)およびその組のカウントを作成するかどうかを指定し
ます。
デフォルト :真(True)
showperc
構⽂ :showperc=<bool>
説明 :percentフィールド(percentfieldオプションを参照)およびその組の相対普及度を作成するかどうかを指定しま
す。
デフォルト :真(True)

useother
構⽂ :useother=<bool>
説明 :制限カットオフのために含まれない、すべての値を表す⾏を追加するかどうかを指定します。
デフォルト :偽(False)

例1:

サマリーインデックスの結果に対して「top foo bar」を実⾏するために必要な情報を算出します。


... | sitop foo bar

363
例2:

サマリーインデックスに、毎⽇実⾏されるスケジュールサーチのトップソースIPアドレスを設定します。
eventtype=firewall | sitop src_ip

サーチを「Summary - firewall top src_ip」として保存します。


後でこの情報を取得してレポートを作成したい場合は、過去1年に対してこのサーチを実⾏します。

index=summary search_name="summary - firewall top src_ip" |top src_ip

また、このサーチはサーチ名を指定しているため、他のサマリーインデックス追加サーチを使って保管された他のデータは
フィルタリングされます。

関連項⽬
collect、overlap、sichart、sirare、sistats、sitimechart

snow incident
snowincidentコマンドは、Splunk Add-on for ServiceNowで使⽤します。

このコマンドの詳細については、『Splunk Add-on for ServiceNow』の「Splunk Add-on for ServiceNow⽤のカスタム


⽣成サーチコマンドの使⽤」を参照してください。

snow incident st r ea m
snowincidentstreamコマンドは、Splunk Add-on for ServiceNowで使⽤します。

このコマンドの詳細については、『Splunk Add-on for ServiceNow』の「Splunk Add-on for ServiceNow⽤のカスタム


ストリーミングサーチコマンドの使⽤」を参照してください。

snow ev ent
snoweventコマンドは、Splunk Add-on for ServiceNowで使⽤します。

このコマンドの詳細については、『Splunk Add-on for ServiceNow』の「Splunk Add-on for ServiceNow⽤のカスタム


⽣成サーチコマンドの使⽤」を参照してください。

snow ev ent st r ea m
snoweventstreamコマンドは、Splunk Add-on for ServiceNowで使⽤します。

このコマンドの詳細については、『Splunk Add-on for ServiceNow』の「Splunk Add-on for ServiceNow⽤のカスタム


ストリーミングサーチコマンドの使⽤」を参照してください。

sor t
説明
sortコマンドは指定したフィールドで結果すべてをソートします。指定フィールドが存在していない結果に対しては、当該
フィールドで可能な最⼤値または最⼩値(値の並び順が降順か昇順かによる)を持つフィールドを仮定して処理が⾏われます。

sortコマンドの最初の引数が数値の場合、最⾼でその値までの結果が順番に返されます。数字を指定しない場合、デフォルト
では上限10000件が仮定されます。0を指定した場合は、すべての結果が返されます。詳細は、count引数を参照してくださ
い。

構⽂
太字 は必須構⽂です。
so rt
[<count>]
<so rt -by-clause>...
[desc]

必須引数
364
<sort-by-clause>
構⽂ :( - | + ) <sort-field>, ( - | + ) <sort-field> ...
説明 :ソート順にソートされるフィールドのリスト。降順にはマイナス( - )、昇順にはプラス( + )を使⽤します。1つ以
上のフィールドを指定するときは、フィールド名をカンマで区切ります。ソート列のオプション を参照してくださ
い。

省略可能な引数

<count>
構⽂ :<int>
説明: ソートした結果から返される結果の数を指定します。値を指定しない場合、デフォルトの10000件が使⽤されま
す。0を指定した場合は、すべての結果が返されます。

sort 0を使⽤すると、返される結果の数によってはパフォーマンスが低下する場合があります。

デフォルト :10000
desc
構⽂ :d | desc
説明: 結果の並び順を逆にします。複数のフィールドが指定されている場合は、フィールドが指定されている順序で、
フィールド内の値の並び順を逆にします。たとえば、3つのフィールドが指定されている場合、desc引数によって、最初
のフィールドで値の並び順が逆になります。最初のフィールドで重複する値の各セットについて、2番⽬のフィールド
で対応する値の並び順が逆になります。そして2番⽬のフィールドで重複する値の各セットについて、3番⽬のフィール
ドで対応する値の並び順が逆になります。

sort -fieldのオプション

<sort-field>
構⽂ :<field> | auto(<field>) | str(<field>) | ip(<field>) | num(<field>)
説明 :<sort-field>で指定するオプション。

<field>
構⽂ :<string>
説明 :ソートするフィールドの名前。
auto (⾃動)
構⽂ :auto(<field>)
説明 :フィールド値のソート⽅法を⾃動で決定します。
ip
構⽂ :ip(<field>)
説明 :フィールド値をIPアドレスとして解釈します。
num
構⽂ :num(<field>)
説明 :フィールド値を数として解釈します。

str
構⽂ :str(<field>)
説明 :フィールド値を⽂字列として解釈し、辞書式に並べます。

使⽤法
デフォルトで、sortは何をソートしているのかを⾃動的に判断します。フィールドが数値を取る場合、照合順序は数値順にな
ります。フィールドがIPアドレスを取る場合、照合順序はIP順になります。それ以外の場合は、照合順序は辞書式順序になり
ます。以下に例を⽰します。
アルファベット⽂字列は辞書的順序にソートされます。
句読点⽂字列は辞書的順序にソートされます。
数値データは数字順に、指定されたソート順序(昇順または降順)でソートされます。
英数字⽂字列は、最初の⽂字のデータタイプに基づいてソートされます。数字で始まる⽂字列は、数字に基づいて数値
的にソートされます。それ以外の場合は、辞書的順序でソートされます。
英数字と句読点の組み合わせとなる⽂字列は、英数字⽂字列と同様にソートされます。

デフォルトの⾃動モードでは、各値のペアが⽐較されてソート順序が決定されます。この場合、⼀部の値のペアは辞書的
に、別のペアは数値的にソートされる可能性があります。たとえば、10.1 > 9.1のように降順でありながら、10.1.a < 9.1.aと
なります。

辞書的順序

辞書的順序はアイテムをそのアイテムをコンピューターメモリーでエンコードするのに使⽤される値に基づいて並べ替えま
す。Splunkソフトウェアでは、これはほとんど常にUTF-8エンコードで、ASCIIよりも多くの機能があります。
365
数字は⽂字の前に並び替えられます。⽂字は最初の桁に基づいて並び替えられます。たとえば、10, 9, 70, 100は辞書
的には10, 100, 70, 9に並べ替えられます。
⼤⽂字は⼩⽂字の前に来ます。
記号は標準ではありません。数値の前に並び替えられる記号もあります。その他の記号は⽂字の前または後に並び替え
られます。

カスタムソート順序

並び替えの順序は、辞書的順序からカスタム順序に変更できます。ブログ「Order Up! Custom Sort Orders (整列!カスタム


並び替え順序)」を参照してください。

基本的な例
1.ソートフィールドオプションを使⽤したフィールドタイプの指定

結果を「ip」値の昇順、次に「url」値の降順にソートします。

... | sort num(ip), -str(url)

2.ソートする結果数の指定

最初の100件の結果をsizeフィールドの降順、次にsource値の昇順に並べ替えます。この例では、各フィールドでデータのタ
イプを指定します。「size」フィールドには数値が含まれ、「source」フィールドには⽂字列が含まれます。

... | sort 100 -num(size), +str(source)

3.ソート順序(昇順および降順)の指定

結果を_timeフィールドの昇順、次にhost値の降順に並べ替えます。

... | sort _time, -host

4.ソートのためのイベントの時間フォーマットの変更

イベントの時間のフォーマットを変更し、その結果を、evalコマンドで作成されたTimeフィールドにより降順にソートしま
す。
... | bin _time span=60m | eval Time=strftime(_time, "%m/%d %H:%M %Z") | stats avg(time_taken) AS AverageResponseTime BY Time |
sort - Time

(この例を提供したSplunkユーザーのAynさんに感謝の意を表明します。)

5.最新のイベントを返す

最新のイベントを返します。
... | sort 1 -_time

その他の例:
1.カスタムソート順序の指定

結果テーブルを、曜⽇や⽉など辞書的または数値的ではない特定の順序でソートします。たとえば、次のテーブルを⽣成す
るサーチがあるとします。

Day To t al
Friday 120

Monday 93

Tuesday 124

Thursday 356

Weekend 1022

Wednesday 248

366
曜⽇フィールド(Day)をソートすると、テーブルはアルファベット順にソートされてしまい、実際の曜⽇順にはなりません。
ここでは、週末をリストの最後として、⽉曜⽇から⾦曜⽇まで曜⽇順にテーブルをソートする必要があります。
カスタムソート順序を作成するには、まず順序を決定するためのsort_fieldというフィールドを作成する必要があります。次
に、そのフィールドに対してソートを⾏います。
... | eval wd=lower(Day) | eval sort_field=case(wd=="monday",1, wd=="tuesday",2, wd=="wednesday",3, wd=="thursday",4,
wd=="friday",5, wd=="weekend",6) | sort sort_field | fields - sort_field

このサーチは、evalコマンドを使ってsort_fieldを作成し、fieldsコマンドを使って最終結果テーブルからsort_fieldを削除し
ています。
結果はこのようになります。

Day To t al
Monday 93

Tuesday 124

Wednesday 248

Thursday 356

Friday 120

Weekend 1022

(この例を提供したSplunkユーザーのAnt1DおよびZiegfriedさんに感謝の意を表明します。)
その他のカスタムソート順序の例は、ブログ「Order Up! Custom Sort Orders (整列!カスタム並び替え順序)」と
rangemapコマンドの例を参照してください。

関連項⽬
reverse

spa t h
説明
spathコマンドにより、構造化データフォーマットXMLやJSONから情報を抽出することができます。コマンドはこの情報を1
つ以上のフォルダーに保存します。また、表⽰されるイベントリストで構⽂を強調表⽰します。

evalコマンドとともにspath()関数も使⽤できます。詳細については「評価関数」を参照してください。

構⽂
spath [input=<field>] [output=<field>] [path=<datapath> | <datapath>]

省略可能な引数

input
構⽂ :input=<field>
説明 :読み込んで値を抽出するフィールド。
デフォルト :_raw

output
構⽂ :output=<field>
説明 :指定した場合、パスから抽出された値は、このフィールド名で書き込まれます。
デフォルト: output引数を指定しない場合は、path引数の値が抽出した値のフィールド名となります。

path
構⽂ :path=<datapath> | <datapath>
説明 :抽出する値の場所を⽰すパス。場所のパスはpath=<datapath>または単にdatapathとして指定できます。path=を使⽤
しないと、最初のラベルがない引数が場所のパスとして使⽤されます。場所を⽰すパスは、1つまたは複数のステップ
をピリオドで区切って指定します。たとえば「foo.bar.baz」などです。場所ステップは、フィールド名と中括弧(任意)
で囲んだインデックスから成り⽴っています。配列内の位置(JSONとXMLでは異なります)を表すために、インデック
スに数字を使⽤できます。また、⽂字列を使⽤する場合はXML属性を指定できます。インデックスにXML属性を指定
する場合は、@記号を付けて属性名を指定します。

367
使⽤法
spathコマンドは、分散可能ストリーミングコマンドです。「コマンドタイプ」を参照してください。

省略された場所のパス

path引数と使⽤されない場合、spathコマンドは「⾃動抽出」モードで実⾏されます。「auto-extract」モードでは、spathコ
マンドは⼊⼒フィールドの最初5000⽂字からすべてのフィールドを検索し、抽出します。別の⼊⼒ソースが指定されていな
ければ、これらのフィールドはデフォルトの_rawとなります。パスが指定された場合は、パスの値が、パスの名前のフィール
ド、または、output引数が指定されている場合、output引数に指定されたフィールドに抽出されます。

場所を⽰すパスは、1つまたは複数の場所ステップを含みます。

場所を⽰すパスは、1つまたは複数の場所ステップを含み、それぞれのステップにはその前の場所ステップが指定したコンテ
キストがあります。トップレベルの場所ステップのコンテキストは、暗黙的にXMLまたはJSONドキュメント全体のトップ
レベルノードとなります。

場所ステップは、フィールド名とアレイインデックス(任意)から成り⽴っています。

場所ステップは、フィールド名および中括弧で囲んだ整数または⽂字列で表される配列インデックス(任意)から成り⽴ってい
ます。

XMLとJSONでは、配列インデックスの意味が異なります。たとえば、JSONはゼロベースのインデックスを使⽤します。
JSONの場合、foo.bar{3}は、barエレメントの⼦のfooの4番⽬の エレメントを表します。XMLでは、同じパスがfooの⼦の3番
⽬のbarを表しています。

アレイインデックスの代わりにワイルドカードを使⽤

spathコマンドではワイルドカードを使⽤して、JSON内の配列インデックスの位置を取ることができます。すべてのハッシュ
タグのためのテキストを取得するには、entities.hashtags{0}.textやentities.hashtags{1}.textなどを指定するのではなく、場所
を⽰すパスのentities.hashtags{}.textを使⽤できます。参照されたパスのentities.hashtagsがこの配列を指していなければ意味
が通りません。そうでない場合は、通常の配置インデックスを使⽤したときと同様にエラーが発⽣します。

これはXMLのみで使⽤できます。たとえば、catalog.bookとcatalog.book{}は同じ意味を持ちます。両⽅とも、カタログのすべ
てのブックを取得します。

spathコマンドの代替

autokvまたはインデックス時間フィールド抽出を使⽤している場合は、パス抽出はインデックス時間で実⾏されます。
パスを提供するためにspathコマンドを明⽰的に使⽤する必要はありません。

indexed_extractions=JSONまたはKV_MODE=JSONをprops.confファイルで使⽤する場合、spathコマンドを明⽰的に使⽤
する必要はありません。

基本的な例
1.出⼒フィールドとパスの指定

この例は、出⼒フィールドとパスの指定⽅法を表しています。

... | spath output=myfield path=foo.bar.baz

2.<dat apat h>のみの指定

path引数で指定する場所のパスには、path=を付けても付けなくても構いません。この例の場合、<datapath>はserver.nameで
す。
... | spath output=myfield server.name

3.アレイに基づいた出⼒フィールドとパスの指定

たとえば、以下のようなアレイを考えてみましょう。
{
"foo" : [1,2]
}

368
出⼒フィールドとパスを指定するには、この構⽂を使⽤します。

... | spath output=myfield path=foo{1}

4.ネスト済みアレイを使⽤する出⼒フィールドとパスの指定

たとえば、以下のようなネスト済アレイを考えてみましょう。

{
"foo" : {
"bar" : [
{"zoo" : 1},
{"baz" : 2}
]
}
}

このネスト済アレイから出⼒およびパスを指定するには、この構⽂を使⽤します。

... | spath output=myfield path=foo.bar{}.baz

5.XML属性の出⼒フィールドとパスの指定

@記号を使⽤してXML属性を指定します。以下の書籍および著者のXMLリストの場合をみていきます。

<?xml version="1.0">
<purchases>
<book>
<author>Martin, George R.R.</author>
<title yearPublished=1996>A Game of Thrones</title>
<title yearPublished=1998>A Clash of Kings</title>
</book>
<book>
<author>Clarke, Susanna</author>
<title yearPublished=2004>Jonathan Strange and Mr. Norrell</title>
</book>
<book>
<author>Kay, Guy Gavriel</author>
<title yearPublished=1990>Tigana</title>
</book>
<book>
<author>Bujold, Lois McMasters</author>
<title yearPublished=1986>The Warrior's Apprentice</title>
</book>
</purchases>

このサーチを使⽤してこの本へのパスおよび出版された年を返します。

... | spath output=dates path=purchases.book.title{@yearPublished} | table dates

この例では、出⼒は単⼀の複数値結果で、本が出版されたすべての年を⼀覧します。

その他の例
1:Git Hub

多数の⼤きなGitリポジトリの管理者として、以下のことを実現したいとします。

誰がどのリポジトリに対して最も多くの変更をコミットしたかを確認します。
各ユーザーが送信したコミットのリストを作成します。
JSONデータをGitHub PushEvent webhookを使⽤してインデックスしていると仮定します。spathコマンドを使⽤してリポ
ジトリ、commit_author、およびcommit_idと呼ばれるフィールドを抽出できます。
... | spath output=repository path=repository.url

369
... | spath output=commit_author path=commits{}.author.name

... | spath output=commit_id path=commits{}.id

誰がリポジトリに対して最も多くの変更をコミットしたかを確認したい場合は、以下のサーチを実⾏します。
... | top commit_author by repository

各ユーザーによるコミットの⼀覧を表⽰する場合は、以下のサーチを実⾏します。

... | stats values(commit_id) by commit_author

2:XML属性のサブセットの抽出

この例は、XML属性およびエレメントからの値の抽出⽅法を表しています。

<vendorProductSet vendorID="2">
<product productID="17" units="mm" >
<prodName nameGroup="custom">
<locName locale="all">APLI 01209</locName>
</prodName>
<desc descGroup="custom">
<locDesc locale="es">Precios</locDesc>
<locDesc locale="fr">Prix</locDesc>
<locDesc locale="de">Preise</locDesc>
<locDesc locale="ca">Preus</locDesc>
<locDesc locale="pt">Preços</locDesc>
</desc>
</product>

locDescエレメントの値(Precios、Prix、Preiseなど)を抽出するには、以下のように指定します。

... | spath output=locDesc path=vendorProductSet.product.desc.locDesc

locale属性の値(es、fr、deなど)を抽出するには、以下のように指定します。

... | spath output=locDesc.locale path=vendorProductSet.product.desc.locDesc{@locale}

4番⽬のlocDescの値(ca)を抽出するには、以下のように指定します。
... | spath path=vendorProductSet.product.desc.locDesc{4}{@locale}

3:複数値フィールドを含むJSONイベントの抽出と拡張

mvexpandコマンドは1つの複数値フィールドのみを処理できます。この例では、複数の複数値フィールドを持つJSONイベント
を、各フィールドの値に対応する個別のイベントに拡張する⽅法を説明しています。たとえば、sourcetype=jsonである次のイ
ベントを考えてみましょう。

{
"widget": {
"text": [
{
"data": "Click here",
"size": 36
},
{
"data": "Learn more",
"size": 37
},
{
"data": "Help",
"size": 38
},
]
}
}

370
まず、JSONからフィールドを抽出するサーチを⾏います。path引数が指定されていないため、spathコマンドは「auto-
extract」モードで実⾏され、⼊⼒フィールドの最初の5000⽂字からすべてのフィールドを抽出します。フィールドは、名前
が変更されてテーブルに追加されます。
sourcetype=json | spath | rename widget.text.size AS size, widget.text.data AS data | table _time,size,data

_time size data


--------------------------- ---- -----------
2018-10-18 14:45:46.000 BST 36 Click here
37 Learn more
38 Help

次にeval関数とmvzip()を使⽤して、新しい複数値フィールドxを作成します。このフィールドにはsizeとdataの値が含まれま
す。
sourcetype=json | spath | rename widget.text.size AS size, widget.text.data AS data | eval x=mvzip(data,size) | table
_time,data,size,x

_time data size x


--------------------------- ----------- ----- --------------
2018-10-18 14:45:46.000 BST Click here 36 Click here,36
Learn more 37 Learn more,37
Help 38 Help,38

次にmvexpandコマンドを使って、xに基づく個別のイベントを作成し、eval関数mvindex()でdataとsizeの値を再定義しま
す。
sourcetype=json | spath | rename widget.text.size AS size, widget.text.data AS data | eval x=mvzip(data,size)| mvexpand x |
eval x = split(x,",") | eval data=mvindex(x,0) | eval size=mvindex(x,1) | table _time,data, size

_time data size


--------------------------- ---------- ----
2018-10-18 14:45:46.000 BST Click here 36
2018-10-18 14:45:46.000 BST Learn more 37
2018-10-18 14:45:46.000 BST Help 38

(この例を提供したSplunkユーザーG. Zaimiさんに感謝の意を表明します。)

関連項⽬
extract、kvform、multikv、regex、rex、xmlkv、xpath

st a t s
説明
結果セットに対して平均、カウント、合計などの集計統計を計算します。これはSQLの集計と類似しています。statsコマン
ドをBY句なしで使⽤すると、1つの⾏が⽣成されます。この⾏は到着した結果セット全体の集計を表します。BY句を使う
と、BY句に指定されたそれぞれの⼀意の値に1つの⾏が返されます。

statsコマンドは、複数のSQLのようなオペレーションに使⽤できます。SQLを理解していてSPLを初めて使う場合は、
「SQLユーザー向けのSplunk SPL」を参照してください。

evalコマンドとst at コマンドの違い

statsコマンドはイベントのフィールドに基づく統計を⾏います。evalコマンドは、既存のフィールドと任意の式を使って、イ
ベントに新しいフィールドを作成します。

371
構⽂
簡易:
stats (stats-function(field) [AS field])... [BY field-list ]
完全:
太字 は必須構⽂です。
| st at s
[partitions=<num>]
[allnum=<bool>]
[delim=<string>]
( <st at s-agg-t erm > ... | <sparkline-agg-t erm > ... )
[<by-clause>]
[<dedup_splitvals>]

必須引数

stats-agg-term
構⽂ :<stats-func>(<evaled-field> | <wc-field>) [AS <wc-field>]
説明 :統計集計関数。「Stats関数のオプション」を参照してください。この関数は、eval式、フィールド、または⼀
連のフィールドに適⽤できます。AS句を使⽤して、結果を⾃分が名前をつけた新しいフィールドに⼊れることができま
す。フィールド名にワイルドカードが使⽤できます。eval式の詳細は、『サーチ』マニュアルの「eval式の詳細」を参
照してください。

sparkline-agg-term
構⽂ :<sparkline-agg> [AS <wc-field>]
説明 :スパークライン集計関数。AS句を使⽤して、結果を⾃分が名前をつけた新しいフィールドに⼊れることができ
ます。フィールド名にワイルドカードが使⽤できます。

省略可能な引数

allnum
構⽂ :allnum=<bool>
説明 :真(True)の場合、各フィールドについてフィールドのすべての値が数値である場合に限り、統計計算を⾏いま
す。
デフォルト :偽(False)
by-clause
構⽂ :BY <field-list>
説明 :グループに分類する1つ以上のフィールドの名前です。ワイルドカード⽂字を使⽤して類似した名前を持つ複数
のフィールドを指定することはできません。各フィールドを個別に指定する必要があります。BY句は、BY句フィールド
372
の⼀意の値ごとに1⾏を返します。BY句を指定しないと、statsコマンドは到着した結果セット全体の集計を表す1⾏のみ
を返します。

dedup_splitvals
構⽂: dedup_splitvals=<boolean>
説明: 複数値のBY句フィールドで重複する値を削除するかどうかを指定します。
デフォルト :偽(False)
delim
構⽂ :delim=<string>
説明 :list()またはvalues()集合内の値の区切り⽅を指定します。
デフォルト :シングルスペースです。
partitions
構⽂ :partitions=<num>
説明 :指定した場合、マルチスレッド削減のためのsplit-byフィールドに基づいて、⼊⼒データをパーティション分割
します。partitions引数は(並列縮約プロセスにおいて)同じマシン上の同じサーチプロセスの複数のスレッドを使⽤して
reduceステップを実⾏します。これに対して並列縮約では、redistributeコマンドを使⽤して複数のマシンでreduceス
テップを並列実⾏します。
デフォルト :1

St at s関数のオプション

stats-func
構⽂: 構⽂は使⽤する関数によって異なります。次の表を参照してください。
説明: statsコマンドで使⽤できる統計およびグラフ関数です。statsコマンドの起動時に1つまたは複数の関数を使⽤で
きます。ただし、BY句は1つだけ使⽤できます。「使⽤法」を参照してください。

次の表に、関数のタイプ別にサポートされる関数を⽰します。各関数の説明と例を⾒るには、表にあるリンクを使⽤し
てください。コマンドで関数を使⽤する⽅法については、「統計およびグラフ関数」を参照してください。

関数の種類 対応している関数と構⽂

avg() exactperc<num>() sum()


perc<num>()
count() max() sumsq()
range()
集計関数 distinct_count() median() upperperc<num>()
stdev()
estdc() min() var()
stdevp()
estdc_error() mode() varp()

イベント順関数 first() last()

マルチ値統計およびグラ list() values()


フ機能

earliest() latest()
時間関数 rate()
earliest_time() latest_time()

Sparkline関数のオプション

スパークラインはテーブルのセル内に表⽰されるインライングラフで、各⾏のプライマリキーに関連する時間ベースの傾向
を表⽰します。詳細は、『サーチ』マニュアルの「サーチ結果へのスパークラインの追加」を参照してください。

sparkline-agg
構⽂: sparkline (count(<wc-field>), <span-length>) | sparkline (<sparkline-func>(<wc-field>), <span-length>)
説明 :フィールドのaggregation関数の最初の引数、および必要に応じて、期間(timespan)指定⼦(任意)を取る、ス
パークライン(sparkline)指定⼦です。timespan指定⼦を使⽤しない場合は、サーチの時間範囲に基づいて適切な期間
が選択されます。スパークラインの対象外フィールドについては、countのみ使⽤できます。フィールド名にワイルド
カードを使⽤できます。使⽤法のセクションを参照してください。
sparkline-func
構⽂ :c() | count() | dc() | mean() | avg() | stdev() | stdevp() | var() | varp() | sum() | sumsq() | min() | max() | range()
説明 :スパークラインに必要な値を返す集計関数です。各スパークラインの値は、特定の時間ビンに該当するイベント
にこの集計を適⽤することにより⽣成されます。

使⽤法
statsコマンドは、変換コマンド です。「コマンドタイプ」を参照してください。

統計関数とEval式
373
statsコマンドを使⽤する場合、統計関数またはスパークライン関数のいずれかを指定する必要があります。統計関数を使⽤
する場合、統計関数の⼀部としてeval式を使⽤できます。例:
index=* | stats count(eval(status="404")) AS count_status BY sourcetype

特定のフィールドに適⽤されない統計関数

count関数を除き、特定のフィールドやフィールドに解決されるeval式に適⽤されない関数をstatsコマンドと組み合わせる
と、サーチヘッドは関数がすべてのフィールドを表すワイルドカードに適⽤されたかのように処理します。たとえば、サー
チ内に| stats avgがある場合は、| stats avg(*)の結果が返されます。

ただし、この「暗黙的なワイルドカード」構⽂は、正式には廃⽌されています。ワイルドカードを葉明⽰的に指定してくだ
さい。すべてのフィールドに関数を適⽤するには、| stats <function>(*)と指定します。

数値計算

計算時、数値は倍精度浮動⼩数点数として扱われ、通常の浮動⼩数点数のすべての動作に従います。計算結果が特殊な浮動
⼩数点値のNaNである場合、結果では「nan」と表されます。正と負の無限⼤を表す特殊な値は、結果ではそれぞれ「inf」
および「-inf」と表されます。0で除算すると、NULLフィールドになります。
計算の結果が浮動⼩数点値として表現できる桁数を超える場合があります。この場合、最⼩位付近の桁の精度が失われるこ
とがあります。この問題の修正⽅法の例は、sigfig(X)関数の基本の例の例2を参照してください。

関数とメモリー使⽤量

メモリーの観点から⾒ると、いくつかの関数は他の関数よりも本質的に⾼価です。たとえば、distinct_count関数はcount関数
よりもはるかに多くのメモリーを必要とします。values関数とlist関数もまた多くのメモリーを消費する可能性があります。

スプリットバイ(split-by)フィールドを使⽤せずに、またはカーディナリティの低いカーディナリティ(split-by by)フィールド
を使⽤してdistinct_count関数を使⽤する場合は、distinct_count関数をestdc関数(推定個体数)で置き換えることを検討してく
ださい。estdc関数により、メモリー使⽤量と実⾏時間が⼤幅に低下する可能性があります。

メモリーとst at sサーチパフォーマンス

limits.confの2つの設定により、statsサーチのパフォーマンスと、これらのコマンドがサーチプロセスで使⽤するメモリー量
(RAMとディスクスペース)のバランスを調整できます。statsサーチの完了に常に時間がかかる場合は、これらの設定を調整
することでパフォーマンスを⾼めることができますが、サーチ時のメモリー使⽤量が増えるため、サーチエラーの原因にな
ることもあります。
Splunk Cloudを使⽤している場合、これらの設定を変更するにはサポートチケットの申請が必要です。
詳細は、『サーチ』マニュアルの「メモリーとstatsサーチパフォーマンス」を参照してください。

イベント順関数

時間に基づいてサーチするときにfirstとlastの関数を使⽤しても、正確な結果は得られません。

最初の値を時間順に基づいて検索するには、first関数の代わりにearliest関数を使⽤します。
最後の値を時間順に基づいて検索するには、last関数の代わりにlatest関数を使⽤します。

たとえば、以下のサーチを参照します。

index=test sourcetype=testDb | eventstats first(LastPass) as LastPass, last(_time) as mostRecentTestTime BY testCaseId | where


startTime==LastPass OR _time==mostRecentTestTime | stats first(startTime) AS startTime, first(status) AS status, first(histID)
AS currentHistId, last(histID) AS lastPassHistId BY testCaseId

時間に基づいてイベントを順序付けるためにstatsおよびeventstatsコマンドを使⽤するときは、firstおよびlast関数を置き換
えます。次のサーチは、関数の変更を⽰しています。
index=test sourcetype=testDb | eventstats latest(LastPass) AS LastPass, earliest(_time) AS mostRecentTestTime BY testCaseId |
where startTime==LastPass OR _time==mostRecentTestTime | stats latest(startTime) AS startTime, latest(status) AS status,
latest(histID) AS currentHistId, earliest(histID) AS lastPassHistId BY testCaseId

BY句にあるワイルドカード

statsコマンドはBY句のフィールド値でワイルドカード⽂字をサポートしません。

たとえば| stats count BY source*を指定することはできません。


374
フィールド名を変更

1つのフィールドを複数の名前に変更することはできません。たとえば、フィールドAがある場合、AをB、AをCに名前を変
更できません。以下の例は無効です。
... | stats first(host) AS site, first(host) AS report

基本的な例
1.各ホストの平均転送レートを返します。

sourcetype=access* | stats avg(kbps) BY host

2.アクセスログをサーチして、「referer_dom ain」の上位100件の値から合計ヒット数を返します

アクセスログをサーチして、「referer_domain」の上位100件の値から合計ヒット数を返します。topコマンドは、カウント
と各referer_domainの割合(パーセント)を返します。
sourcetype=access_combined | top limit=100 referer_domain | stats sum(count) AS total

3.ワイルドカードを使⽤して類似のフィールドの毎時平均時間を算出する

⽂字列「lay」で終わる任意の⼀意のフィールドに対して、各時間の平均を返します。たとえば、delay、xdelay、relayで
す。
... | stats avg(*lay) BY date_hour

4.結果の重複を削除して、⼀意の結果の合計数を返します

同じ「host」値を持つ結果の重複項⽬を削除して、残り結果の合計カウントを返します。
... | stats dc(host)

5.複数値BYフィールドで重複する値を削除する

mvfieldの⼀意の値のそれぞれについて、fieldの平均値を返します。mvfieldの値を複製します。

...| stats avg(field) BY mvfield dedup_splitvals=true

その他の例

1.st at sコマンドとchart コマンドを使⽤した場合の違いを⽐較する

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏するときは、時間範囲として[全時間] を使⽤します。

このサーチでは、statsコマンドを使⽤して、HTTPステータスコードの値とホストの組み合わせでイベント数をカウントしま
す。

sourcetype=access_* | stats count BY status, host

BY句は、BY句フィールドの⼀意の値ごとに1⾏を返します。このサーチでは、BY句で2つのフィールドが指定されているた
め、statusとhostのすべての⼀意の組み合わせが個別の⾏にリストされています。
結果は、以下のような内容で[統計]タブに表⽰されます。

st at us ホスト co unt
200 www1 11835

200 www2 11186

200 www3 11261

400 www1 233

400 www2 257


375
400 www3 211

403 www2 228

404 www1 244

404 www2 209

[ 視覚エフェクト] タブをクリックすると、statusフィールドがX軸、hostおよびcountフィールドがデータシリーズとして表⽰
されます。このグラフで問題となるのは、host値(www1、www2、www3)が⽂字列であるため、グラフで測定できないとい
う点です。
サーチでstatsコマンドの代わりにchartコマンドを使⽤します。

sourcetype=access_* | chart count BY status, host

chartコマンドでは、BY句の後に指定された2つのフィールドにより、[統計]タブの結果の表⽰が変わります。またBY句は、
結果をグラフ視覚エフェクトで表⽰するのに適したものへと変更します。
最初に指定したフィールドは、<row-split>フィールドとして参照されています。テーブルでは、このフィールドの値
が各⾏のラベルとなっています。グラフでは、このフィールドの値がX軸となります。
2番⽬に指定したフィールドは、<column-split>フィールドとして参照されています。テーブルでは、このフィールド
の値が各列の⾒出しとなっています。グラフでは、このフィールドの値がデータシリーズとなります。
結果は、以下のような内容で[統計]タブに表⽰されます。

st at us www1 www2 www3


200 11835 11186 11261

400 233 257 211

403 0 288 0

404 244 209 237

406 258 228 224

408 267 243 246

500 225 262 246

503 324 299 329

505 242 0 238

[ 視覚エフェクト] タブをクリックすると、statusフィールドがX軸、hostフィールドがデータシリーズ、そしてcountフィール
ドがY軸として表⽰されます。

2.各W ebサーバーに対する異なる種類の要求をeval式を使ってカウントする

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏するときは、時間範囲として[全時間] を使⽤します。

次のサーチを実⾏し、statsコマンドを使⽤して、各ウェブサーバーで⽣じる、GETおよびPOST、という複数の異なるペー
ジリクエストを決定します。
sourcetype=access_* | stats count(eval(method="GET")) AS GET, count(eval(method="POST")) AS POST BY host

この例では、eval式を使ってstatsコマンドのカウント対象となる異なるフィールド値を指定しています。

最初の句はcount()関数を使って、methodフィールドの値がGETのWebアクセスイベントをカウントしています。そして、
ASキーワードを使⽤して、これらの結果を表すフィールドが名前が変更されたGETであることを⽰します。
次に2番⽬の句では、POSTイベントに対して同様の処理を⾏います。
次にBY句でhostフィールドを使⽤して、両⽅のタイプのイベント数がWebサーバー別に分割されます。

結果は、以下のような内容で[統計]タブに表⽰されます。

ホスト GET POST

376
www1 8431 5197

www2 8097 4815

www3 8338 4654

このサーチでは、statsコマンドの代わりにchartコマンドを使⽤できます。[ 視覚エフェクト] タブをクリックして、結果のグ


ラフを確認してください。

3.特定のフィールドごとにさまざまな統計を⾏う

それぞれのマグニチュード範囲で発⽣した地震数をカウントします。

この例では、USGS EarthquakesのWebサイトからダウンロードした最近の地震データを使⽤しています。データはカンマ区切り形式のASCIIテキス
トファイルで、記録されている各地震のマグニチュード(mag)、座標(latitude、longitude)、地域(place)が含まれています。
最新のCSVファイルをUSGS Ear thquake F e e ds からダウンロードして、ファイルをSplunkインスタンスにアップロードします。この例では過去
30⽇間のAll Ear thquake s データを使⽤します。

次のサーチを実⾏して、各マグニチュード範囲で発⽣した地震数を計算します。このデータセットは、期間が30⽇間のイベ
ントで成り⽴っています。

source=all_month.csv | chart count AS "Number of Earthquakes" BY mag span=1 | rename mag AS "Magnitude Range"

このサーチはspan=1を使って、各範囲のマグニチュードフィールドmagを定義しています。
次にrenameコマンドを使って、フィールド名を「Magnitude Range」に変更しています。

結果は、以下のような内容で[統計]タブに表⽰されます。

マグニチュード範囲 地震数
-1〜0 18

0〜1 2088

1〜2 3005

2〜3 1026

3〜4 194

4〜5 452

5〜4 109

6〜7 11

7〜8 3

結果をグラフで表⽰するには、[ 視覚エフェクト] タブをクリックします。

各領域の地震のマグニチュードの集計統計を計算します

カリフォルニアおよびその周辺で起きた地震のサーチ。記録された地震の数の計算。統計関数を使⽤して、最近の地震の最
⼤マグニチュード、最⼩マグニチュード、マグニチュード範囲(最⼤と最⼩の差)、および平均マグニチュードを計算します。
値をマグニチュードタイプ別にリストします。
source=all_month.csv place=*California* | stats count, max(mag), min(mag), range(mag), avg(mag) BY magType

結果は、以下のような内容で[統計]タブに表⽰されます。

m agType co unt m ax(m ag) m in(m ag) range(m ag) avg(m ag)
H 123 2.8 0.0 2.8 0.549593

MbLg 1 0 0 0 0.0000000

Md 1565 3.2 0.1 3.1 1.056486

Me 2 2.0 1.6 .04 1.800000

377
Ml 1202 4.3 -0.4 4.7 1.226622

Mw 6 4.9 3.0 1.9 3.650000

ml 10 1.56 0.19 1.37 0.934000

最近の地震のマグニチュードの平均、標準偏差、および分散を探す

カリフォルニアおよびその周辺で起きた地震のサーチ。記録された地震の数の計算。統計関数を使⽤して、最近の地震のマ
グニチュードの平均、標準偏差、および分散を計算します。値をマグニチュードタイプ別にリストします。
source=usgs place=*California* | stats count mean(mag), stdev(mag), var(mag) BY magType

結果は、以下のような内容で[統計]タブに表⽰されます。

m agType co unt m ean(m ag) st d(m ag) var(m ag)


H 123 0.549593 0.356985 0.127438

MbLg 1 0.000000 0.000000 0.000000

Md 1565 1.056486 0.580042 0.336449

Me 2 1.800000 0.346410 0.120000

Ml 1202 1.226622 0.629664 0.396476

Mw 6 3.650000 0.716240 0.513000

ml 10 0.934000 0.560401 0.314049

meanの値は、avg()を使って算出された値と完全に⼀致しています。

4.販売した商品のID、種類、名前をテーブルに表⽰し、それぞれの商品の収益を算出する

この例では、『サーチチュートリアル』のサンプルデータセットとフィールドのルックアップを使⽤して、イベントデータにさまざまな情報を追加し
ます。
「データの追加 」チュートリアルからデータセットをダウンロードし、指⽰に従ってチュートリアルデータを取り込んでください。
「フィールドルックアップの使⽤ 」チュートリアルからCSVをダウンロードした後、ルックアップ定義の設定の説明に従ってイベントに
priceとproductNameを追加します。

フィールドルックアップを設定したら、時間範囲[全時間] でサーチを実⾏します。

Buttercup Gamesオンラインストアーで販売された商品をID、種類、および名前別に表⽰するテーブルを作成します。ま
た、各商品の収益も算出します。
sourcetype=access_* status=200 action=purchase | stats values(categoryId) AS Type, values(productName) AS "Product Name",
sum(price) AS "Revenue" by productId | rename productId AS "Product ID" | eval Revenue="$ ".tostring(Revenue,"commas")

この例は、values()関数を使って、各productIdに対応するcategoryIdとproductName値を表⽰しています。次にsum()関数を使っ
て、priceフィールドの値の合計を算出しています。

また、分かりやすくするために各種フィールド名も変更します。stats関数では、AS句を使って名前を変更することができま
す。構⽂によりsplit-byフィールドの名前を変更できないため、product_idフィールドの名前を変更するためにrenameコマンド
を使⽤しています。

最後に、結果をeval式に渡して、Revenueフィールド値の書式を再設定し、通貨として表⽰されるように、ドル記号とカンマを
追加します。
これによって、以下の結果テーブルが返されます。

378
5.それぞれのドメインからメールを受信する⽅法を決定する

この例では、サンプルのメールデータを使⽤します。このサーチをどのメールデータに対しても実⾏できるようにするため
に、sourcetype=cisco:esaをsourcetypeの値に置き換え、mailfromフィールドをデータ内のメールアドレスフィールド名に置き換えてください。た
とえば、メールはTo、From、またはCcのいずれかです。

組織のメールのうち、.com、.net、.org、または他のトップレベルドメインから受信したメールの量を調べます。
このサーチのevalコマンドには、カンマ区切りの2つの式が含まれます。

sourcetype="cisco:esa" mailfrom=* | eval accountname=split(mailfrom,"@"), from_domain=mvindex(accountname,-1) | stats


count(eval(match(from_domain, "[^\n\r\s]+\.com"))) AS ".com", count(eval(match(from_domain, "[^\n\r\s]+\.net"))) AS ".net",
count(eval(match(from_domain, "[^\n\r\s]+\.org"))) AS ".org", count(eval(NOT match(from_domain, "[^\n\r\s]+\.(com|net|org)")))
AS "other"

このサーチの前半部では、evalコマンドを使ってmailfromフィールドのメールアドレスを分割しま
す。from_domainは、@記号の後にmailfromフィールドの⼀部として定義されます。
split()関数は、mailfromフィールドを複数値フィールドaccountnameに分割するために使⽤されます。accountnameの
最初の値は、「@」記号の前にあるすべての⽂字列で、2番⽬の値はこの記号の後にある⽂字列です。
mvindex()関数は、複数値フィールドaccountnameの2番⽬の値をfrom_domainに設定するために使⽤されます。
次に結果をstatsコマンドに渡します。eval式の結果数のカウントには、count()関数を使⽤しています。
evalはmatch()関数を使って、from_domainとドメインのサフィックスを識別する正規表現を⽐較していま
す。from_domainの値が正規表現と⼀致する場合、各サフィックス(.com、.net、および.org)のcountが更新されます。その
他のドメインサフィックス数は、otherとしてカウントされます。

結果は、以下のような内容で[統計]タブに表⽰されます。

.co m .net .o rg その他


4246 9890 0 3543

6.W ebアクセスログをサーチして、ドメインを参照する上位10件のヒット数の合計を取得する

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏する際には、時間範囲として「昨⽇」 を指定してください。

このサーチ例では、Webアクセスログをサーチして、上位10件の参照ドメインのヒット数合計を返しています。
sourcetype=access_* | top limit=10 referer

このサーチでは、topコマンドを使って参照数が上位10件の参照ドメイン(refererフィールドの値)を検索しています。⼀部の
イベントでは、refererではなくreferer_domainを使⽤しています。topコマンドは、各refererのカウントと割合(パーセント)を
返します。

379
statsコマンドを使⽤して、上位10件のreferrerアクセスの合計回数を計算できます。

sourcetype=access_* | top limit=10 referer | stats sum(count) AS total

sum()関数は、countの値を合算することで、上位10件のreferrerがWebサイトにアクセスした合計回数を⽣成します。

関連項⽬
関数
統計およびグラフ関数
コマンド
eventstats
rare
sistats
streamstats
top
ブログ
stats、eventstats、およびstreamstatsについて
サーチコマンド> stats、chart、timechart
smooth演算⼦|複数のフィールド値のサーチ

st r ca t
説明
2つ以上のフィールドの⽂字列値を連結します。⽂字列値とリテラルを新しいフィールドに組み合わせます。作成フィールド
名はstrcatコマンドの最後に指定します。

構⽂
strcat [allrequired=<bool>] <source-fields> <dest-field>

必須引数

<dest-field>
構⽂ :<string>
説明 :<source-fields>引数で定義されている連結⽂字列値を保存する宛先フィールドです。作成するフィールドは常
に⼀連の参照元フィールドの最後に指定します。

380
<source-fields>
構⽂ :(<field> | <quoted-str>)...
説明 :連結するフィールド名とリテラル⽂字列値を指定します。リテラル値は引⽤符で囲む必要があります。
quoted-str
構⽂ :"<string>"
説明 :引⽤符で囲んだ⽂字列リテラル。
例: 「/」または「:」

省略可能な引数

allrequired
構⽂ :allrequired=<bool>
説明 :値を宛先フィールドに書き込むために、各イベント内にすべての参照元フィールドが存在している必要があるか
どうかを⽰します。デフォルトがallrequired=fの場合、宛先フィールドは常に書き込まれ、存在しない参照元フィール
ドは空⽂字列として処理されます。allrequired=tの場合は、すべての参照元フィールドが存在している場合にのみ、宛
先フィールドに値が書き込まれます。
デフォルト :偽(False)

使⽤法
strcatコマンドは、分散可能ストリーミングコマンドです。「コマンドタイプ」を参照してください。

例1:

comboIPというフィールドを追加します。これは参照元IPアドレスと宛先IPアドレスを組み合わせるものです。アドレスを
スラッシュで区切ります。
... | strcat sourceIP "/" destIP comboIP

例2:

comboIPというフィールドを追加します。これは参照元IPアドレスと宛先IPアドレスを組み合わせるものです。アドレスを
スラッシュで区切ります。フィールド値の発⽣回数を⽰すグラフを作成します。
host="mailserver" | strcat sourceIP "/" destIP comboIP | chart count by comboIP

例3:

ホストおよびポートの値を組み合わせたaddressフィールドを<host>::<port>の形式で追加します。
... | strcat host "::" port address

関連項⽬
eval

st r ea mst a t s
説明
ストリーミングを利⽤して、累積サマリー統計情報をすべてのサーチ結果に追加します。streamstatsコマンドは、イベント登
場時に、各イベントの統計を順次算出します。たとえば、特定フィールドについて現在までの合計が計算できます。現在ま
でに処理された各イベントに対して、合計が指定されたフィールドの値を使⽤して算出されます。

構⽂
太字 は必須構⽂です。

st ream st at s
[reset_on_change=<bool>]
[reset_before="("<eval-expression>")"]
[reset_after="("<eval-expression>")"]
[current=<bool>]
[window=<int>]
[time_window=<span-length>]
[global=<bool>]
[allnum=<bool>]
381
<st at s-agg-t erm > ...
[<by-clause>]

必須引数

stats-agg-term
構⽂ :<stats-func>( <evaled-field> | <wc-field> ) [AS <wc-field>]
説明 :統計集計関数。「Stats関数のオプション」を参照してください。この関数は、eval式、フィールド、または⼀
連のフィールドに適⽤できます。AS句を使⽤して、結果を⾃分が名前をつけた新しいフィールドに⼊れることができま
す。フィールド名にワイルドカードが使⽤できます。eval式の詳細は、『サーチ』マニュアルの「eval式の詳細」を参
照してください。

省略可能な引数

allnum
構⽂ :allnum=<boolean>
説明 :真(True)の場合、各フィールドについて、フィールドのすべての値が数値である場合に限り統計計算を⾏いま
す。
デフォルト :偽(False)

by-clause
構⽂ :BY <field-list>
説明 :グループに分類する1つ以上のフィールドの名前です。
current
構⽂ :current=<boolean>
説明 :真(True)の場合、与えられた(現在の)イベントをサマリー計算に含めます。偽(False)の場合、前のイベントから
のフィールド値が使⽤されます。
デフォルト :真(True)

global
構⽂ :global=<boolean>
説明: window引数が設定されている場合にのみ使⽤します。シングルウィンドウ、global=trueを使⽤するか、by
clauseに基づいて別のウィンドウを使⽤するかを定義します。global=falseの場合にwindowを0以外の値に設定すると、by
clauseで指定されたフィールドの各グループ値に対して別個のウィンドウが使⽤されます。
デフォルト :真(True)
reset_after
構⽂ :reset_after="("<eval-expression>")"
説明 :イベントに対してstreamstats計算がされた後、trueがreset_afterを返した場合、eval-expressionはすべての集約
統計がリセットされることを指定します。eval-expressionでは真(True)または偽(False)と評価しなくてはなりませ
ん。eval-expressionは、streamstatsコマンドが返すフィールドを参照できます。reset_after属性をwindow属性と組み合わ
せると、集約統計がリセットされる時、ウィンドウもリセットされます。
デフォルト :偽(False)

reset_before
構⽂ :reset_before="("<eval-expression>")"
説明 :イベントに対してstreamstats計算がされた前、trueがreset_beforeを返した場合、eval-expressionはすべての集約
統計がリセットされることを指定します。eval-expressionでは真(True)または偽(False)と評価しなくてはなりませ
ん。reset_before属性をwindow属性と組み合わせると、集約統計がリセットされる時、ウィンドウもリセットされます。
デフォルト :偽(False)
reset_on_change
構⽂ :reset_on_change=<bool>
説明 :group byフィールドが変更された時、すべての集約統計がリセットされることを指定します。リセットは、以
前のイベントが全くなかったものとすることです。すべてのgroup byフィールドを持つイベントに限って、リセットの
⽣成が可能です。group byフィールドを全部持たないイベントは、無視されます。reset_on_change属性をwindow属性と
組み合わせると、集約統計がリセットされる時、ウィンドウもリセットされます。使⽤法 のセクションを参照してくだ
さい。
デフォルト :偽(False)
time_window
構⽂: time_window=<span-length>
説明: streamstats計算⽤のウィンドウサイズを、時間に基づいて指定します。time_window引数は、イベント
の_timeフィールドの値範囲により制限されます。time_window引数を使⽤するには、イベントが昇順または降順の時間順
で保存されている必要があります。window引数をtime_window引数とともに使⽤して、ウィンドウ内の最⼤イベント数を
指定できます。<span-length>で、5分を指定するには、time_window=5mを使⽤します。2⽇間を指定するに
は、time_window=2dを使⽤します。
デフォルト :なし。ただし、max_stream_window属性でlimits.confファイルにある値が適⽤されます。デフォルト値は
10000イベントです。
window
構⽂ :window=<integer>
382
説明 :統計を計算する際に使⽤するイベント数を指定します。
デフォルト :0。以前のすべてのイベント(と現在のイベント)が使⽤されます。

St at s関数のオプション

stats-func
構⽂: 構⽂は使⽤する関数によって異なります。次の表を参照してください。
説明: streamstatsコマンドで使⽤できる統計およびグラフ関数です。streamstatsコマンドの起動時に1つまたは複数の関
数を使⽤できます。ただし、BY句は1つだけ使⽤できます。「使⽤法」を参照してください。

次の表に、関数のタイプ別にサポートされる関数を⽰します。各関数の説明と例を⾒るには、表にあるリンクを使⽤し
てください。コマンドで関数を使⽤する⽅法については、「統計およびグラフ関数」を参照してください。

関数の種類 対応している関数と構⽂
avg() exactperc<int>() sum()
perc<int>()
count() max() sumsq()
range()
集計関数 distinct_count() median() upperperc<int>()
stdev()
estdc() min() var()
stdevp()
estdc_error() mode() varp()

イベント順関数 earliest() first() last() latest()

マルチ値統計およびグラ list(X) values(X)


フ機能

使⽤法
streamstatsコマンドは、集中ストリーミングコマンドです。「コマンドタイプ」を参照してください。

streamstatsコマンドはeventstatsコマンドと似ていますが、与えられたイベントの前のイベントを使⽤して各イベントに適⽤
する総統計を算出する点が異なっています。当該イベントを計算に含める場合は、デフォルトのcurrent=trueを使⽤します。

statsコマンドのように、streamstatsコマンドではstreamstatsによってサーチ結果のサマリー統計が計算されます。結果全体を
処理するstatsとは違い、streamstatsはイベントが特定された時点でそれぞれのイベントの統計を計算します。

特定のフィールドに適⽤されない統計関数

count関数を除き、特定のフィールドやフィールドに解決されるeval式に適⽤されない関数をstreamstatsコマンドと組み合わせ
ると、サーチヘッドは関数がすべてのフィールドを表すワイルドカードに適⽤されたかのように処理します。たとえば、
サーチ内に| streamstats avgがある場合は、| stats avg(*)の結果が返されます。

ただし、この「暗黙的なワイルドカード」構⽂は、正式には廃⽌されています。ワイルドカードを葉明⽰的に指定してくだ
さい。すべてのフィールドに関数を適⽤するには、| streamstats <function>(*)と指定します。

⽂字列のエスケープ

お使いの<eval-expression>がフィールド名ではなく値を含む場合は、値の周囲の引⽤符をエスケープする必要があります。
以下はこれを確認する簡単な⽅法です。makeresultsコマンドを使⽤して3イベントを作成することから始めま
す。streamstatsコマンドを使⽤してイベントの累積カウントを作成します。次にevalコマンドを使⽤して簡単なテストを作成
します。countフィールドの値が2に等しい場合は、yesをtestフィールドに表⽰します。そうでない場合は、noをtestフィール
ドに表⽰します。
| makeresults count=3 | streamstats count | eval test=if(count==2,"yes","no")

結果はこのようになります:

_t im e co unt テスト
2017-01-11 11:32:43 1 no

2017-01-11 11:32:43 2 はい

2017-01-11 11:32:43 3 no

streamstatsコマンドを使⽤して⼀致が真であればカウントをリセットします。ワードyesの周囲の引⽤符をエスケープする必
要があります。以下の例は完全なサーチを表⽰します。
383
要があります。以下の例は完全なサーチを表⽰します。
| makeresults count=3 | streamstats count | eval test=if(count==2,"yes","no") | streamstats count as testCount
reset_after="("match(test,\"yes\")")"

別の例を⽰します。値session is closedを説明 フィールドで探す必要があります。値は⽂字列なので、引⽤符で閉じる必要が


あります。次に、これらの引⽤符をエスケープする必要があります。
... | streamstats reset_after="("description==\"session is closed\"")"

reset_on_change引数

フィールド「shift」を持つデータセットがあります。このフィールドには、値DAYまたは値NIGHTが含まれます。以下の
サーチを実⾏します。
...| streamstats count BY shift reset_on_change=true

データセットが以下のような場合、
shift
DAY
DAY
NIGHT
NIGHT
NIGHT
NIGHT
DAY
NIGHT
reset_on_change=trueでコマンドを実⾏すると、以下のようなstreamstatsの実⾏結果が⽣成されます。

shift 、co unt


DAY, 1
DAY, 2
NIGHT, 1
NIGHT, 2
NIGHT, 3
NIGHT, 4
DAY, 1
NIGHT, 1

メモリーと最⼤結果数

streamstatsサーチプロセッサーは、2つのlimits.conf設定を使⽤して、統計を計算するためにメモリーに格納できる結果の最
⼤数を決定します。

maxresultrows設定は、window引数の上限を指定します。streamstatsコマンドプロセッサーがメモリーに保存できる結果の⾏数
を設定します。max_mem_usage_mb設定は、streamstatsコマンドが情報の追跡で消費するメモリーを制限します。

どちらかの設定による上限に達した場合、streamstatsコマンドプロセッサーは、他⽅の設定による上限に達するまで引き続き
結果を返します。両⽅の上限に達すると、streamstatsコマンドプロセッサーは、サーチ結果への要求されたフィールドの追加
を停⽌します。
max_mem_usage_mb=0と設定すると、streamstatsコマンドはmaxresultrows設定のみを閾値として使⽤します。結果数
がmaxresultrows設定に達すると、streamstatsコマンドプロセッサーは、サーチ結果への要求されたフィールドの追加を停⽌し
ます。
前提条件

設定ファイルを使⽤してmaxresultrowsとmax_mem_usage_mbの設定値を⼤きくできるのは、システム管理者など、ファイル
システムにアクセスできるユーザーのみです。
Splunk Enterpriseの『管理』マニュアルの「設定ファイルの編集⽅法」の⼿順を確認してください。
同名の設定ファイルを、default、local、およびappディレクトリに保管できます。Splunk Enterpriseの『管理』マ
ニュアルの「変更した設定ファイルの保管場所」を参照してください。
defaultディレクトリにある設定ファイルは、決して変更もコピーもしないでください。defaultディレクトリ内のファイルは
そのまま保持して元の位置にある必要があります。ファイルの変更はローカルディレクトリで⾏ってください。

Splunk Cloudを使⽤している場合、これらの制限を変更するにはサポートチケットを申請します。

基本的な例
1.直近の5イベントのフィールドの平均を算出します。
384
各イベントに対して、過去5件のイベントに対するfooフィールドの平均を算出します(現在のイベントを含む)。trendline
sma5(foo)を実⾏するのと同じです。

... | streamstats avg(foo) window=5

2.By句を使⽤して、直近の5イベントのフィールドの平均を算出します。

barの値を持つ5件のイベント(ウィンドウサイズで指定)のみを含む、各barの値に対して、fooの平均値を算出します。
... | streamstats avg(foo) by bar window=5 global=f

3.各イベントに対して、処理イベント数のカウントを追加します。

現在までに発⾒されているイベント数(当該イベントも含む)を表すcountフィールドを各イベントに追加します。たとえば、
最初のイベントには1が、2番⽬のイベントには2が追加されます。

... | streamstats count

現在のイベントを含めない場合は、以下のように指定します。
... | streamstats count current=f

4.時間ベースのウィンドウをst ream st at sに適⽤します。

limits.confファイルにあるmax_stream_window引数が、10000イベントのデフォルト値であると仮定します。

以下のサーチは、5分間の時間ウィンドウを使⽤してイベントをカウントします。
... | streamstats count time_window=5m

このサーチはカウントフィールドを各イベントに追加します。
イベントが降順の時間順(最新から最古へ)である場合、カウントフィールドにある値は次の5分間のイベント数を表しま
す。
イベントが昇順の時間順(最古から最新へ)である場合、カウントフィールドは過去5分間のイベント数を表します。
時間ベースウィンドウにmax_stream_window引数の値よりも多くのイベントがある場合、max_stream_window引数が優先されます。
任意の5分間に実際に10,000以上のイベントがあった場合でも、カウントが10000を超えることはありません。

その他の例
1.テスト⽤のイベントを作成する

makeresultsコマンドとともにstreamstatsコマンドを使⽤して、⼀連のイベントを作成できます。このテクニックは、サーチ構
⽂のテストに使⽤されます。evalコマンドは、異なる時間のイベントの作成に使⽤します。evalコマンドでは、1時間の秒数
である3600を使⽤します。
| makeresults count=5 | streamstats count | eval _time=_time-(count*3600)

streamstatsコマンドを使⽤してcountフィールドを作成します。streamstatsコマンドは、イベントの処理時に、各イベントの累
積カウントを計算します。
結果はこのようになります。

_t im e co unt
2020-01-09 15:35:14 1

2020-01-09 14:35:14 2

2020-01-09 13:35:14 3

2020-01-09 12:35:14 4

2020-01-09 11:35:14 5

タイムスタンプの時間が1時間置きになっています。
evalコマンドを使⽤して、追加のフィールドを作成できます。

385
| makeresults count=5 | streamstats count | eval _time=_time-(count*3600) | eval age = case(count=1, 25, count=2, 39, count=3,
31, count=4, 27, count=5, null()) | eval city = case(count=1 OR count=3, "San Francisco", count=2 OR count=4,
"Seattle",count=5, "Los Angeles")

evalコマンドを使⽤して、ageとcityという2つの新しいフィールドを作成します。evalコマンドは、countフィールドの
値を使⽤します。
case関数は、count=1, 25のように引数のペアを取ります。最初の引数は論理演算式である必要があります。式が真
(True)になると、対応する2番⽬の引数が返されます。

サーチの結果は次のようになります。

_t im e age cit y co unt

2020-01-09 15:35:14 25 サンフランシスコ 1

2020-01-09 14:35:14 39 Seattle 2

2020-01-09 13:35:14 31 サンフランシスコ 3

2020-01-09 12:35:14 27 Seattle 4

2020-01-09 11:35:14 ロサンゼルス 5

2.サマリー統計のスナップショットを計算します。

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏するときは、時間範囲として[全時間] を使⽤します。

⼀定期間に使⽤されたバイト数を判断します。以下のサーチは最初の5つのイベントを使⽤します。サーチ結果は通常、直近
のイベントを最初に表⽰するので、sortコマンドを使⽤して5件のイベントを昇順に並び替え、最も古いイベントを最初に、
最も新しいイベントを最後に表⽰します。降順によりstreamstatsコマンドは⻑期的な統計を計算できます。

sourcetype=access_combined* | head 5 | sort _time

386
サーチにstreamstatsコマンドを追加して5つのイベントすべてで実⾏している合計バイトを⽣成し、結果をclientipで並べ替え
ます。
sourcetype=access_combined* | head 5 |sort _time | streamstats sum(bytes) AS ASimpleSumOfBytes BY clientip

[ 関連するフィールド] リストのASimpleSumOfBytesフィールドをクリックすると、情報ウィンドウにバイトの累積合計数が次の
ように表⽰されます。

streamstatsコマンドは統計を元データに凝集します。つまり、元データすべてがさらなる計算向けにアクセスできるようにな
ります。
387
サーチにtableコマンドを追加して、_time、clientip、bytes、およびASimpleSumOfBytesフィールドの値のみを表⽰します。

sourcetype=access_combined* | head 5 |sort _time | streamstats sum(bytes) as ASimpleSumOfBytes by clientip | table _time,
clientip, bytes, ASimpleSumOfBytes

各イベントはイベントのタイムスタンプ、clientip、使⽤されたbytes数を表⽰します。ASimpleSumOfBytesフィールドは
各clientipのバイトの累積サマリーを表⽰します。

3.⼀意のユーザー数の現時点での合計の推移を計算します。

あなたは毎⽇⼀意のユーザー数を追跡しており、⼀意のユーザーの累積カウントを追跡したいと考えています。この例で
は、⼀意のユーザー数の現時点での合計の推移を計算します。
eventtype="download" | bin _time span=1d as day | stats values(clientip) as ips dc(clientip) by day | streamstats dc(ips) as
"Cumulative total"

binコマンドは、時間を⽇数に分割します。statsコマンドは、⼀意のユーザー数(clientip)と⽇当たりのユーザーカウントを計
算します。streamstatsコマンドは、その時点までの⼀意のユーザーカウントを検索します。

このサーチから返されるテーブルにはday、ips、dc(clientip)、Cumulative totalが含まれます。

4.時間ごとの累積合計の計算

この例では、streamstatsを使⽤して、時間ごとの累積合計を⽣成します。

... | timechart span=1h sum(bytes) as SumOfBytes | streamstats global=f sum(*) as accu_total_*

このサーチは、_time、SumOfBytes、accu_total_SumOfBytesの3つの列を返します。
timechartコマンドは、イベントを1時間のスパンに区分して、各カテゴリの合計値をカウントしています。また、timechartコ
マンドは、⽋損値がないようにNULL値も記⼊します。次にstreamstatsコマンドを使って、累積合計を算出しています。

streamstatsを使い、カテゴリ値の時間ごとの累積合計を⽣成します。

... | timechart span=1h sum(value) as total by category | streamstats global=f | addtotals | accum Total | rename Total as
accu_total

5.特定のMACアドレスに対するDHCP IPリースアドレスの変更時期を算出します。

streamstatsを使い、MACアドレス54:00:00:00:00:00のDHCP IPリースアドレスの変更時期を確認します。

source=dhcp MAC=54:00:00:00:00:00 | head 10 | streamstats current=f last(DHCP_IP) as new_dhcp_ip last(_time) as time_of_change


by MAC

DHCP IPアドレス変更およびその発⽣時刻を表⽰するテーブルを表⽰するために、プレゼンテーションをクリーンアップす
ることもできます。
source=dhcp MAC=54:00:00:00:00:00 | head 10 | streamstats current=f last(DHCP_IP) as new_dhcp_ip last(_time) as time_of_change
by MAC | where DHCP_IP!=new_dhcp_ip | convert ctime(time_of_change) as time_of_change | rename DHCP_IP as old_dhcp_ip | table
time_of_change, MAC, old_dhcp_ip, new_dhcp_ip

詳細は、この例に関するSplunkブログを参照してください。

388
関連項⽬
コマンド
accum
autoregress
delta
fillnull
eventstats
makeresults
trendline
ブログ
stats、eventstats、およびstreamstatsについて

t a bl e
説明
tableコマンドは、引数に指定されたフィールドのみで作成されたテーブルを返します。列は、フィールドの指定順序と同じ
順番で表⽰されます。列の⾒出しはフィールド名になります。⾏はフィールドの値になります。各⾏がイベントを表してい
ます。
結果を保持するフィールドを指定できる点で、tableコマンドはfieldsコマンドと似ています。表の形式でデータを保持したい
場合はtableコマンドを使います。

データの固有の値間の関係における傾向を⽰す散布図を例外として、チャートにtableコマンドを使⽤しないでください。
「使⽤法」を参照してください。

構⽂
table <wc-field-list>

引数

<wc-field-list>
構⽂ :<wc-field> <wc-field> ...
説明 :フィールド名のリスト。フィールド名にはワイルドカードが使⽤できます。

使⽤法
tableコマンドは、変換コマンド です。「コマンドタイプ」を参照してください。

視覚エフェクト

散布図以外では、視覚エフェクトにtableコマンドを使⽤しないでください。Splunk Webは、視覚エフェクトを表⽰するた
めに、アンダースコアー⽂字で始まるフィールドである内部フィールドを必要とします。tableコマンドは、デフォルトでこ
れらのフィールドを結果から削除します。視覚エフェクトを作成するには、代わりにfieldsコマンドを使⽤します。fieldsコ
マンドは常に同じ内部フィールドを保持します。

コマンドタイプ

tableコマンドは、⾮ストリーミングコマンドです。tableに類似のストリーミングコマンドを求めている場合は、fieldsコマ
ンドを使⽤してください。

フィールドの名前変更

tableコマンドではフィールド名を変更できません。テーブルに表⽰したいフィールドのみを指定してください。フィールド
名を変更したい場合は、結果をtableに渡す前に⾏ってください。

結果の切り詰め

tableコマンドはlimits.confファイルの設定に基づいて返される結果数を切り詰めます。[search]スタンザ
で、truncate_reportパラメーターの値が1である場合、返される結果の数を切り詰めます。

結果の数は[search]スタンザにあるmax_countパラメーターで制御されます。truncate_reportが0に設定されている
と、max_countパラメーターは適⽤されません。


389
例1

この例では、USGS EarthquakesWebサイトからダウンロードした最近の地震データを使⽤しています。データはカンマ区切り形式のASCIIテキスト
ファイルで、記録されている各地震のマグニチュード(mag)、座標(latitude、longitude)、地域(place)が含まれています。
最新のCSVファイルをUSGS Ear thquake F e e ds からダウンロードして、それをSplunk導⼊環境への⼊⼒として追加できます。

カリフォルニア周辺の最近の地震データをサーチして、地震の発⽣時刻(Datetime)、発⽣場所(Region)、マグニチュード
(Magnitude)、および深度(Depth)のみを表⽰します。

index=usgs_* source=usgs place=*California | table time, place, mag, depth

これは、単純にイベントを表形式のテーブルに変換して、引数として指定したフィールドのみを表⽰します。

例2

この例では、USGS EarthquakesWebサイトからダウンロードした最近の地震データを使⽤しています。データはカンマ区切り形式のASCIIテキスト
ファイルで、記録されている各地震のマグニチュード(mag)、座標(latitude、longitude)、地域(place)が含まれています。

最新のCSVファイルをUSGS Ear thquake F e e ds からダウンロードして、それをSplunk導⼊環境への⼊⼒として追加できます。

北カリフォルニアで発⽣した地震の⽇付、時刻、緯度/経度、およびマグニチュードを表⽰します。
index=usgs_* source=usgs place=*California | rename lat as latitude lon as longitude | table time, place, lat*, lon*, mag

以下の例では、北カリフォルニア(Region="Northern California")で最近発⽣したすべての地震をサーチします。

次にそれらのイベントをrenameコマンドに渡して緯度/経度フィールド(coordinate)の名前をlatおよびlonか
らlatitudeとlongitudeに変更します。(tableコマンドではフィールド名を変更または再フォーマットできません。表形式の結果
に表⽰したいフィールドのみを指定してください)。
最後に結果をtableコマンドに渡して、lat*とlon*で緯度/経度の両⽅のフィールドを、magでマグニチュードを、timeで⽇時を
指定します。

この例は、tableコマンドの構⽂では、ワイルドカード*を使った複数のフィールドの指定⽅法を表しています。

例3

390
この例では、チュートリアルのサンプルデータセットを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。「データ
の追加 」チュートリアルからデータセットをダウンロードし、指⽰に従ってそのサンプルデータをSplunk導⼊環境に取り込んでください。次に、時間
範囲に[全時間 ]を指定してこのサーチを実⾏します。

IPアドレスをサーチして、所属しているネットワークを分類します。
sourcetype=access_* | dedup clientip | eval network=if(cidrmatch("192.0.0.0/16", clientip), "local", "other") | table clientip,
network

この例では、Webアクセスデータをサーチして、dedupコマンドでサーバーにアクセスしているIPアドレス(clientip)の重複値
を削除します。結果はevalコマンドに渡されて、cidrmatch()関数を使ってIPアドレスとサブネット範囲(192.0.0.0/16)が⽐較
されます。また、このサーチはif()関数を使⽤して、clientipの値がサブネット範囲内に該当する場合、networkに対して値
localを割り当てています。それ以外の場合は、network=otherになります。

次に結果がtableコマンドに渡されて、⼀意のIPアドレス(clientip)とネットワーク分類(network)のみが表⽰されます。

その他の例

例1:フィールドfoo、barと、「baz」から始まるすべてのフィールドのテーブルを作成します。
... | table foo bar baz*

関連項⽬
フィールド

t a gs
説明
サーチ結果の指定フィールドに、タグを使って注釈を付けます。フィールドが指定されている場合、それらのフィールドに
対してのみタグで注釈を付けます。それ以外の場合はすべてのフィールドでタグを検索します。

構⽂
太字 は必須構⽂です。
t ags
[outputfield=<field>]
[inclname=<bool>]
[inclvalue=<bool>]
<field-list>

必須引数

無し。

省略可能な引数

<field-list>
構⽂ :<field> <field> ...
説明 :タグを出⼒するフィールドを指定します。タグはoutputfieldに書き込まれます。
デフォルト :すべてのフィールド
outputfield
391
構⽂ :outputfield=<field>
説明 :指定した場合、すべてのフィールドのタグがこの1つの新しいフィールドに書き込まれます。指定しなかった場
合は、タグを含む各フィールドに対して新しいフィールドが作成されます。タグは、tag::<field>という命名規則を使⽤
して、これらの新しいフィールドに書き込まれます。また、tagsという新しいフィールドが作成され、フィールドのす
べてのタグがリストされます。
デフォルト :新しいフィールドが作成され、タグが新しいフィールドに書き込まれます。
inclname
構⽂: inclname=true | false
説明: outputfieldが指定されている場合に、出⼒フィールドにタグと⼀緒にイベントフィールド名を追加するかどうか
を制御します。trueを指定するとフィールド名が追加されます。
デフォルト :偽(False)
inclvalue
構⽂: inclvalue=true | false
説明: outputfieldが指定されている場合に、出⼒フィールドにタグと⼀緒にイベントフィールド値を追加するかどうか
を制御します。trueを指定するとイベントフィールド値が追加されます。
デフォルト :偽(False)

使⽤法
tagsコマンドは、分散可能ストリーミングコマンドです。「コマンドタイプ」を参照してください。

outputfieldが指定されている場合は、フィールドのタグがこのフィールドに書き込まれます。デフォルトでは、タグは
<field>::<tag>の形式で出⼒フィールドに書き込まれます。
たとえば、sourcetype::apacheです。

outputfieldが指定されている場合、inclname引数とinclvalue引数によって、outputfieldにフィールド名とフィールド値を追加
するかどうかを制御します。inclnameとinclvalueが両⽅ともtrueである場合の形式は<field>::<value>::<tag>になります。

たとえば、sourcetype::access_combined_wcookie::apacheです。

1.デフォルト設定を使⽤した結果

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏するときは、時間範囲として[全時間] を使⽤します。

このサーチは、Webアクセスイベントを探して、ホスト別にこれらのイベント数をカウントします。
sourcetype=access_* | stats count by host

結果はこのようになります。

ホスト co unt
www1 13628

www2 12912

www3 12992

tagsコマンドを引数なしで使⽤すると、tagとtag::hostの2つの新しいフィールドが結果に追加されます。

sourcetype=access_* | stats count by host | tags

結果はこのようになります。

ホスト co unt t ag t ag:ho st


www1 13628 tag2 tag2
www2 12912 tag1 tag1

www3 12992

392
host=www3のタグはありません。

sourcetypeフィールドをstatsコマンドのBY句に追加します。

sourcetype=access_* | stats count by host sourcetype | tags

結果はこのようになります。

ホスト so urcet ype co unt t ag t ag:ho st t ag::so urcet ype


apache
www1 access_combined_wcookie 13628
tag2 tag2 apache

apache
www2 access_combined_wcookie 12912 tag1 apache
tag1

www3 access_combined_wcookie 12992 apache apache

tagフィールドには、ホストとソースタイプの組み合わせを含むイベントで使⽤されているすべてのタグがリストされます。

tag::hostフィールドには、ホスト値を含むイベントで使⽤されているすべてのタグがリストされます。

tag::sourcetypeフィールドには、ソースタイプ値を含むイベントで使⽤されているすべてのタグがリストされます。

2.フィールドリストの指定

hostフィールドとeventtypeフィールドのタグをtag::hostとtag::eventtypeの形式で書き込みます。

... | tags host eventtype

3.出⼒フィールドの指定

すべてのフィールドのタグを新しいフィールドtestに書き込みます。

... | tags outputfield=test

結果はこのようになります。

ホスト so urcet ype co unt テスト


apache
www1 access_combined_wcookie 13628
tag2

apache
www2 access_combined_wcookie 12912
tag1

www3 access_combined_wcookie 12992 apache

4.サーチ結果にフィールド名を含める

hostフィールドとsourcetypeフィールドのタグを、testフィールドにhost::<tag>とsourcetype::<tag>の形式で書き込みます。
フィールド名を出⼒に含めます。

... | tags outputfield=test inclname=t host sourcetype

関連項⽬
393
関連情報
『ナレッジ管理』マニュアルの「タグとエイリアスについて」
『ナレッジ管理』マニュアルの「サーチ内のフィールド/値のペア」
『ナレッジ管理』マニュアルの「タグの定義と管理」
コマンド
eval

t a il
説明
指定した結果の最後のn件を返します。イベントは、結果セットの最後から逆順で返されます。指定がない場合は、最後の10
件を返します。

構⽂
tail [<N>]

必須引数

無し。

省略可能な引数

<N>
構⽂ :<int>
説明: 返す結果数。
デフォルト :10

例1:

最後の20件の結果を逆順番で返します。
... | tail 20

関連項⽬
head、reverse

t imech a r t
説明
対応する統計情報テーブルで、時系列グラフを作成します。
時間グラフはX軸を時間とするフィールドに適⽤してグラフを⽣成するための統計的集計です。split-byフィールドを指定
し、それぞれの異なる値をグラフのシリーズにすることができます。eval式を使⽤する場合はsplit-by句が必要となりま
す。limitとaggオプションでは、シリーズのフィルタリングを指定できます。where句が明⽰的に指定されている場合、これ
らのオプションは無視されます。limit=0と設定した場合はシリーズのフィルタリングが⾏われません。

構⽂
太字 は必須構⽂です。
t im echart
[sep=<string>]
[format=<string>]
[partial=<bool>]
[cont=<bool>]
[limit=<chart-limit-opt>]
[agg=<stats-agg-term>]
[<bin-options>... ]
( (<single-agg> [BY <split -by-clause >] ) | (<eval-expressio n> ) BY <split -by-clause > )
[<dedup_splitvals>]

必須引数
394
timechartコマンド引数を指定する場合は、<single-agg>または<eval-expression> BY <split-by-clause>が必要です。

eval式
構⽂ :<math-exp> | <concat-exp> | <compare-exp> | <bool-exp> | <function-call>
説明 :宛先フィールドの値を表す、リテラル、フィールド、演算⼦、および関数の組み合わせ。これらの評価が正常に
機能するためには、操作の種類に応じて有効な値を使⽤する必要があります。たとえば、追加の例外処理では、値が数
値でないと算術操作で有効な結果を得ることはできません。また、サーチでは2つのオペランドが両⽅とも⽂字列の場
合、それを連結することができます。ピリオドが値を連結する場合は、実際のデータ種類に関係なく両⽅の値が⽂字列
として処理されます。
single-agg
構⽂ :count | <stats-func>(<field>)
説明 :評価フィールドなど、単⼀フィールドに適⽤される単⼀の集計。<stats-func>については、「stats関数のオプ
ション」を参照してください。ワイルドカードは使⽤できません。イベントにまとめて適⽤するcount関数を使⽤する場
合を除き、フィールドを指定する必要があります。
split-by-clause
構⽂ :<field> (<tc-options>)... [<where-clause>]
説明 :結果を分割するフィールドを指定します。数値フィールドの場合、デフォルトの離散化が適⽤されます。離散化
は、tc-optionsで定義されます。<Where-clause>を使⽤して含める列の数を指定します。このトピックの、「tcオプ
ションおよびwhere句」のセクションを参照してください。

省略可能な引数

agg=<stats-agg-term>
構⽂: agg=( <stats-func> ( <evaled-field> | <wc-field> ) [AS <wc-field>] )
説明 :統計集計関数。「Stats関数のオプション」を参照してください。この関数は、eval式、フィールド、または⼀
連のフィールドに適⽤できます。AS句を使⽤して、結果を⾃分が名前をつけた新しいフィールドに⼊れることができま
す。フィールド名にワイルドカードが使⽤できます。
bins-options
構⽂ :bins | minspan | span | <start-end> | aligntime
説明 :情報をまとめるために、離散化のビンまたはグループを指定できるオプションです。bin-optionsでは、対象とす
るビンの数ではなく、ビンの最⼤数を設定します。このトピックの「binのオプション」のセクションを参照してくだ
さい。
デフォルト :bins=100
cont
構⽂ :cont=<bool>
説明 :グラフが連続かどうかを指定します。trueの場合、サーチアプリケーションによって時間のギャップが解消され
ます。
デフォルト :真(True)
dedup_splitvals
構⽂: dedup_splitvals=<boolean>
説明: 複数値の<split-by-clause>フィールドで重複する値を削除するかどうかを指定します。
デフォルト :偽(False)
fixedrange
構⽂ :fixedrange=<bool>
説明 :サーチのもっとも早い/もっとも遅い時刻を使⽤するかどうかを⽰します。fixedrange=falseと指定する
と、timechartコマンドは、データセットのすべてのイベントの対象となる時間範囲に合わせて縮⼩または拡張できま
す。
デフォルト :真(True)
format
構⽂ :format=<string>
説明: 複数のデータシリーズをsplit-byフィールドと共に使⽤する場合に出⼒フィールドの名前の作成に使⽤しま
す。format はsepに優先し、stats集計⼦、関数($AGG$)およびsplit-byフィールドの値($VAL$)を使って、パラメーター
化した式を指定することができます。
limit
構⽂: limit=(top | bottom) <int>
説明 :split-byフィールドが返す⼀意の値の数に対する制限を指定します。limit=0に設定すると、すべての⼀意の値が
使⽤されます。limit=Nまたはlimit=top Nに設定すると、split-byフィールドのN個分の最⾼スコアを持つ⼀意の値が保持
されます。limit=bottom Nに設定すると、split-byフィールドのN個分の最⼩スコアを持つ⼀意の値が保持されま
す。useotherが偽(False)に設定されない限り、他のすべての値は「OTHER」にグループ化されます。スコアリングは以
下のように決定されます。
単⼀の集約が指定された場合は、スコアはそのsplit-byの値によって集約された値の合計に基づきます。たとえ
ば、timechart avg(foo) BY <field>に対して、avg(foo)の値が<field>の各値ごとに合計され、スコアが決定されま
す。
複数の集約が指定された場合、スコアは<field>の各値の頻度に基づきます。たとえば、timechart avg(foo)
395
max(bar) BY <field>に対して、<field>ごとの最⾼スコア値は、<field>の最も共通の値です。

同点のスコアは、split-byフィールドの値に基いて辞書的順序に分割されます。たとえば、「BAR」は「bar」より優先
され、「bar」は「foo」より優先されます。「使⽤法」を参照してください。
デフォルト :top 10
partial
構⽂ :partial=<bool>
説明 :部分時間ビンを保持するかどうかを⽰します。部分時間ビンになり得るのは最初と最後のビンだけです。
デフォルト :真(True)。部分時間ビンが保持されます。
sep
構⽂ :sep=<string>
説明: 複数のデータシリーズをsplit-byフィールドと共に使⽤する場合の出⼒フィールドの名前の作成に使⽤します。
これは、formatに$AGG$<sep>$VAL$を設定したのと同等の意味を持ちます。

St at s関数のオプション

stats-func
構⽂: 構⽂は使⽤する関数によって異なります。次の表を参照してください。
説明 :timechartコマンドで使⽤される統計関数です。timechartコマンドの起動時に1つまたは複数の関数を使⽤できま
す。ただし、BY句は1つだけ使⽤できます。「使⽤法」を参照してください。

次の表に、関数のタイプ別にサポートされる関数を⽰します。各関数の説明と例を⾒るには、表にあるリンクを使⽤し
てください。コマンドで関数を使⽤する⽅法については、「統計およびグラフ関数」を参照してください。

関数の種類 対応している関数と構⽂
avg() exactperc<int>() sum()
perc<int>()
count() max() sumsq()
range()
集計関数 distinct_count() median() upperperc<int>()
stdev()
estdc() min() var()
stdevp()
estdc_error() mode() varp()

イベント順関数 earliest() first() last() latest()

マルチ値統計およびグラ list(X) values(X)


フ機能

時間関数 per_day() per_hour() per_minute() per_second()

binのオプション

bins
構⽂ :bins=<int>
説明 :離散化に使⽤するビンの最⼤数。ビンの⽬標数を設定する訳ではありません。N以下の⼀意のビンとなる、最⼩
のビンのサイズを探します。たとえ300を指定したとしても、結果となるビン数は⼤幅に低くなります。
デフォルト :100
minspan
構⽂ :minspan=<span-length>
説明: 計算で使⽤するスパンをデータの時間範囲から⾃動的に推測する際、スパンが取ることのできる最低値を指定し
ます。「使⽤法」を参照してください。
span
構⽂ :span=<log-span> | span=<span-length> | span=<snap-to-time>
説明 :対数に基づくスパン、時間に基づくスパン、または特定の時間にスナップされるスパンを使⽤して、各ビンのサ
イズを設定します。これらの各オプションの説明については、「spanオプション」を参照してください。
ビンの開始時間は、ローカルタイムゾーンと異なる場合があります。「使⽤法」を参照してください。
<start-end>
構⽂ :end=<num> | start=<num>
説明 :数値ビンの最⼩/最⼤範囲を設定します。[start, end]の範囲外のデータは破棄されます。
aligntime
構⽂ :aligntime=(earliest | latest | <time-specifier>)
説明 :ビンの時間をベースUNIX時間(エポック0)以外の時間に合わせます。aligntimeオプションは、時間ベースの離散
化を⾏う場合にのみ有効です。spanの単位が⽇、⽉、年の場合は無視されます。

spanオプション
396
<log-span>
構⽂ :[<num>]log[<num>]
説明 :対数に基づくスパンを設定します。最初の数値は係数です。2番⽬の数値が底です。最初の数値を指定する場合
は、実数>= 1.0かつ、実数<底でなければなりません。底を指定する場合、> 1.0の実数でなければなりません(厳密に1
より⼤きい)。
<span-length>
構⽂ :<int>[<timescale>]
説明 :時間に基づく各ビンのスパン。タイムスケールを使⽤した場合、これは時間範囲として使⽤されます。そうでな
い場合、これは絶対ビンの⻑になります。
<timescale>
構⽂ :<sec> | <min> | <hr> | <day> | <week> | <month> | <subseconds>
説明 :タイムスケールの単位。
デフォルト :<sec>

タイムスケール 有効な構⽂ 説明
<sec> s | sec | secs | second | seconds タイムスケール(秒)。

<min> m | min | mins | minute | minutes タイムスケール(分)。

<hr> h | hr | hrs | hour | hours タイムスケール(時)。

<day> d | day | days タイムスケール(⽇)。

<week> w、week、weeks タイムスケール(週)。

<month> mon | month | months タイムスケール(⽉)。

<subseconds> us | ms | cs | ds タイムスケール(マイクロ秒(us)、ミリ秒(ms)、センチ秒(cs)、デシ秒(ds) )

<snap-to-time>
構⽂ :[+|-] [<time_integer>] <relative_time_unit>@<snap_to_time_unit>
説明 :相対的な時間単位とスナップ(snap to)時間単位に基づく各ビンのスパン。<snap-to-time>には、
relative_time_unit、@記号、およびsnap_to_time_unitが含まれている必要があります。プラス(+)またはマイナス(-)
で表されるオフセットは任意です。<time_integer>が指定されていない場合は、1がデフォルトになります。たとえ
ば、relative_time_unitとしてw を指定すると、1週間とみなされます。

:このオプションは、週 のタイムスケール単位でのみ使⽤されます。分や四半期などの他のタイムスケール単位では使
⽤できません。

t cオプション

<tc-option>は<split-by-clause>属性の⼀部です。
tc-option
構⽂ :<bin-options> | usenull=<bool> | useother=<bool> | nullstr=<string> | otherstr=<string>
説明 :フィールドによる分割の⽅法を指定するtimechartのオプション。
bins-options
このトピックの「binのオプション」のセクションを参照してください。

nullstr
構⽂ :nullstr=<string>
説明: usenull=trueであれば、分割フィールドを持たないイベント向けに作成されるシリーズ⽤のラベルを指定しま
す。
デフォルト :NULL
otherstr
構⽂ :otherstr=<string>
説明: useother=trueであれば、テーブルおよびグラフで作成されるシリーズ⽤のラベルを指定します。
デフォルト :OTHER
usenull
構⽂ :usenull=<bool>
説明: シリーズが分割フィールドを持たないイベント向けに作成されるかどうか指定します。シリーズのラベル
はnullstrオプションで制御します。
デフォルト :真(True)
useother
構⽂ :useother=<bool>
説明: <agg>、<limit>、および<where-clause>オプションを使⽤して、結果テーブルに含めるシリーズを指定しま
す。useotherオプションは、結果テーブルに含まれていないすべてのシリーズを単⼀の新しいシリーズとして結合する
397
かどうかを指定します。useother=trueであれば、シリーズのラベルはotherstrオプションで制御します。
デフォルト :真(True)

where句

<where-clause>は<column-split>属性の⼀部です。<where-clause>は、単⼀の集計といくつかのオプションの2つの部分
で構成されます。「WHERE句の例」を参照してください。
where句
構⽂ :<single-agg> <where-comp>
説明 :<tc-by-clause>にフィールドが指定されている場合に、特定のデータシリーズを含めるかどうかの基準を指定し
ます。⼀般的にこのオプションは、シリーズ内の質量分布を選択するのではなく、データ内のスパイクを探すために⽤
いられます。デフォルトでは、濃度曲線下⾯積別上位10件のシリーズを探します。代わりに、sumをmaxに変更して、
⾼さが上位10件のスパイクを持つシリーズを探すことも可能です。基本的に、デフォルトはwhere sum in top10の指定と
同じです。<where-clause>は、whereコマンドとは関係ありません。

<where-comp>
構⽂ :<wherein-comp> | <wherethresh-comp>
説明: シリーズのグループ化または閾値を指定します。
<wherein-comp>
構⽂ :(in | notin) (top | bottom)<int>
説明 :集計したシリーズ値を上位または下位のグループに⼊れる、または⼊れないようにするためのグループ化条件。

<wherethresh-comp>
構⽂: (< | >) [" "] <num>
説明: 集計したシリーズ値が特定の数値閾値より⼤きく、または⼩さくなければならないとする閾値条件。閾値を指定
するときは、記号と数値の間にスペースを⼊れても⼊れなくても構いません。

使⽤法
timechartコマンドは、変換コマンド です。「コマンドタイプ」を参照してください。

ビンおよびスパン引数

timechartコマンドは、bins引数またはspan引数を受け付けます。binsとspanを両⽅とも指定した場合はspanが使⽤されま
す。bins引数は無視されます。

binsもspanも指定しない場合は、timechartコマンドはデフォルトのbins=100を使⽤します。

デフォルトのタイムスパン

タイムレンジピッカーに事前に設定した時間範囲を使⽤し、かつspan引数を指定しない場合は、使⽤されるデフォルトのスパ
ンを以下のテーブルに⽰します。

時間範囲 デフォルトのスパン
過去15分 10秒

過去60分 1分

過去4時間 5分

過去24時間 30分

過去7⽇間 1⽇

過去30⽇間 1⽇

前年 1か⽉

(このデフォルトのタイムスパン情報の編集に尽⼒したSplunkユーザーのMuS and Martin Muellerさんに感謝の意を表明し


ます。)

m inspanが指定されている場合に使⽤されるスパン

minspanの値を指定する場合、サーチに使⽤するスパンは、以下の表のいずれかのスパン閾値以上にする必要があります。た
とえば、minspan=15m (900秒)を指定するとします。使⽤できる最⼩スパンは1800秒(30分)です。

398
スパン閾値 対応する時間
1秒

5秒

10秒

30秒

60秒 1分

300秒 5分

600秒 10分

1800秒 30分

3600秒 1時間

86400秒 1⽇

2592000秒 30⽇

ビンのタイムスパンとローカル時間

span引数では、常に最初のビンの開始⽇が切り捨てられます。timechartコマンドで使⽤されるビンの開始⽇がローカルタイ
ムゾーンに対応するという保証はありません。その原因の1つがさまざまなロケールの夏時間です。⽇付の境界を使⽤するに
は、span=1dを使⽤します。span=86400s、span=1440m、またはspan=24hを使⽤しないでください。

ビンのタイムスパンとper_* 関数

per_day()、per_hour()、per_minute()、per_second()関数は集計関数で、結果となるグラフのタイムスパンの設定は⾏いません。
これらの関数は、スパンが明⽰的に指定されていない場合に、データの⼀貫したスケールを取得するために利⽤されます。
結果となるスパンは、サーチ時間範囲によって異なります。
たとえば、per_hour()は時間当たりのレート、またはsum()/<スパンの時間数>となるようにフィールド値を変換します。グラ
フの終了スパンが30mの場合は、sum()*2になります。

スパンを1hにする場合は、サーチに引数span=1hを指定する必要があります。

1つのフィールドではper_hour()を、同じサーチの別のフィールドではper_minute() (または関数のあらゆる組み合わせ)を実⾏
できます。

秒未満のビンタイムスパン

デシ秒(ds)、センチ秒(cs)、ミリ秒(ms)、マイクロ秒(us)で構成される秒未満のspanタイムスケールタイムスパンは、1秒を等
分した数値である必要があります。例:1s = 1000ms。つまり、有効なミリ秒のspan値は、1、2、4、5、8、10、20、25、
40、50、100、125、200、250、または500msです。また、span = 1000msとは指定できません。代わりにspan = 1sを使⽤し
ます。

Split -byフィールド

split-byフィールドを指定する場合は、split-byフィールドの前にbins引数およびspan引数を必ず指定してください。split-by
フィールドの後にこれらの引数を指定すると、時間軸上ではなく、split-byフィールド上でビンを制御するものとみなされま
す。
chartまたはtimechartを使⽤する場合、関数内に指定したフィールドをsplit-byフィールドとして使⽤することはできません。
たとえば、以下のコマンドを実⾏することはできません。

... | chart sum(A) by A span=log2

ただし、eval式を使ってこの問題に対処することができます。以下に例を⽰します。

... | eval A1=A | chart sum(A) by A1 span=log2

関数とメモリー使⽤量

メモリーの観点から⾒ると、いくつかの関数は他の関数よりも本質的に⾼価です。たとえば、distinct_count関数はcount関数
よりもはるかに多くのメモリーを必要とします。values関数とlist関数もまた多くのメモリーを消費する可能性があります。

399
スプリットバイ(split-by)フィールドを使⽤せずに、またはカーディナリティの低いカーディナリティ(split-by by)フィールド
を使⽤してdistinct_count関数を使⽤する場合は、distinct_count関数をestdc関数(推定個体数)で置き換えることを検討してく
ださい。estdc関数により、メモリー使⽤量と実⾏時間が⼤幅に低下する可能性があります。

辞書的順序

辞書的順序はアイテムをそのアイテムをコンピューターメモリーでエンコードするのに使⽤される値に基づいて並べ替えま
す。Splunkソフトウェアでは、これはほとんど常にUTF-8エンコードで、ASCIIよりも多くの機能があります。

数字は⽂字の前に並び替えられます。⽂字は最初の桁に基づいて並び替えられます。たとえば、10, 9, 70, 100は辞書


的には10, 100, 70, 9に並べ替えられます。
⼤⽂字は⼩⽂字の前に来ます。
記号は標準ではありません。数値の前に並び替えられる記号もあります。その他の記号は⽂字の前または後に並び替え
られます。
並び替えの順序は、辞書的順序からカスタム順序に変更できます。ブログ「Order Up! Custom Sort Orders (整列!カスタム
並び替え順序)」を参照してください。

基本的な例

1.各ホスト(host )に対して、平均「CPU」および「MEM」を算出してグラフ化する

分あたりの、各ホスト(host)に対する、平均「CPU」および「MEM」を算出します。
... | timechart span=1m eval(avg(CPU) * avg(MEM)) BY host

2.Processor別のcpu_seconds平均をグラフ化する

この例では、統計関数のavgを含むeval式を使⽤して、cpu_secondsフィールドの平均を計算し、結果を⼩数第2位で四捨五⼊し
ます。結果は、processorフィールドの値で整理されます。timechartコマンドでeval式を使⽤する場合は、BY句も使⽤する必
要があります。
... | timechart eval(round(avg(cpu_seconds),2)) BY processor

3.各ホストの平均「CPU」グラフを作成する

分あたりの、各「host」の「CPU」の平均値を計算します。
... | timechart span=1m avg(CPU) BY host

4.平均「cpu_seconds」のグラフを「host 」ごとに作成して、外れ値を削除する

平均「cpu_seconds」を「host」ごとに計算します。時間グラフ軸をゆがめる可能性のある外れ値を削除します。
... | timechart avg(cpu_seconds) BY host | outlier action=tf

5.ホストの平均スループット(t hroughput )の推移をグラフ化する

... | timechart span=5m avg(thruput) BY host

6.event ypesをsource_ip別にグラフ化する

各分あたり、カウントが10より⼤きいeventypeをsource_ipとにカウントします。

sshd failed OR failure | timechart span=1m count(eventtype) BY source_ip usenull=f WHERE count>10

7.ローカル時間に合わせたグラフの時間ビンの調整

時間ビンを午前5時(ローカル時間)に合わせます。スパンを12時間に設定します。ビンは、午前5時〜午後5時、午後5時〜午
前5時(翌⽇)などを表します。
...| timechart _time span=12h aligntime=@d+5h

8.複数値BYフィールドで重複する値を削除する

mvfieldの⼀意の値のそれぞれについて、fieldの平均値を返します。mvfieldの値を複製します。

...| timechart avg(field) BY mvfield dedup_splitval=true

400
その他の例
1.異なる製品の収益をグラフ化する

この例では、『サーチチュートリアル』のサンプルデータセットとフィールドのルックアップを使⽤して、イベントデータにさまざまな情報を追加し
ます。この例を⾃分のデプロイで試すには:
『サーチチュートリアル』のこのトピック からtutorialdata.zipをダウンロードした後、指⽰に従ってSplunk導⼊環境にアップロードして
ください。
『サーチチュートリアル』のこのトピック からPrices.csv.zipをダウンロードした後、指⽰に従ってフィールドルックアップを設定してく
ださい。
サーチを実⾏する際には、時間範囲として「昨⽇」 を指定してください。

tutorialdata.zipは、Buttercup Gamesオンラインストアーで販売された商品のカタログ番号を表すproductIdフィールドが含まれています。フィール
ドルックアップはprices.csvを使⽤してイベントに2つの新しいフィールドを追加します。これらはアイテムを説明する名前を⽰すproductNameと、
アイテムのコストを⽰すpriceです。

昨⽇購⼊された各商品の収益をグラフ化します。
sourcetype=access_* action=purchase | timechart per_hour(price) by productName usenull=f useother=f

この例は、すべての購⼊イベント(action=purchaseで定義)をサーチします。
結果はtimechartコマンドに渡されます。
per_hour()関数は、各productNameのpriceフィールドの値を合計し、合計値を時間ごとに整理します。

サーチは、[統計]タブに次の結果テーブルを⽣成します。数字を通貨に合わせた桁数にフォーマットするため、列⾒出しの
フォーマットアイコンをクリックします。[ 数字のフォーマット] タブで[ 精度] をクリックします。

[ 視覚エフェクト] タブをクリックします。必要であれば結果を棒グラフに変更します。[ フォーマット] メニューの[全般]タ


ブには[スタックモード]オプションがあり、グラフをスタックグラフに変更できます。

グラフを作成した後は、各セクションにカーソルを合わせることで、その時間帯に購⼊された商品のその他のメトリックス
を表⽰できます。
401
グラフには、データが時間ごとのスパンでは表⽰されないことにお気づきでしょうか。スパンが指定されていないため
(span=1hrなど)、per_hour()関数は値を、時間範囲(この例では24時間)内の時間当たりの合計となるように変換します。

2.製品別の⽇々の購⼊数をグラフ化する

この例では、サーチチュートリアルのサンプルデータセットを使⽤しています。Splunkインスタンスでこの例を試すには、サンプルデータをダウン
ロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。サーチを実⾏するときは、時間範囲として[全時間] を使⽤し
ます。

各商品タイプの⽇次購⼊数をグラフ化します。
sourcetype=access_* action=purchase | timechart span=1d count by categoryId usenull=f

この例では、すべての購⼊イベント(action=purchaseで定義)をサーチして、その結果をtimechartコマンドに渡します。
span=1day引数は、その週の購⼊カウントを⽇単位にバケツ化します。
usenull=f引数は、categoryIdにNULL値を含む任意のイベントを無視します。

結果は、以下のような内容で[統計]タブに表⽰されます。

_t im e ACCESSORIES ARCADE SHOOTER SIMULATION SPORTS STRATEGY TEE


2018-03-29 5 17 6 3 5 32 9

2018/03/30 62 63 39 30 22 127 56

2018-03-31 65 94 38 42 34 128 60

2018/04/01 54 82 42 39 13 115 66

2018/04/02 52 63 45 42 22 124 52

2018/04/03 46 76 34 42 19 123 59

2018/04/04 57 70 36 38 20 130 56

2018/04/05 46 72 35 37 13 106 46

[ 視覚エフェクト] タブをクリックします。必要であれば結果を棒グラフに変更します。

各⽇およびその週の、異なる商品購⼊数を⽐較します。

3.1週間間隔の結果の表⽰

この例では、USGS EarthquakesのWebサイトからダウンロードした最近の地震データを使⽤しています。データはカンマ区切り形式のASCIIテキス
トファイルで、記録されている各地震のマグニチュード(mag)、座標(latitude、longitude)、地域(place)が含まれています。
最新のCSVファイルをUSGS Ear thquake F e e ds からダウンロードして、ファイルをSplunkインスタンスにアップロードします。この例では過去
30⽇間のAll Ear thquake s データを使⽤します。

このサーチは、マグニチュードが3.5を超えるアラスカの地震数をカウントします。結果は、⽉曜⽇から始まる1週間のスパン
で整理されます。
source=all_month.csv place=*alaska* mag>=3.5 | timechart span=w@w1 count BY mag

402
<by-clause>は、マグニチュードで地震をグループ化するために使⽤されます。
timechartコマンドのスナップスパン引数でのみ週のスパンを使⽤できます。詳細は、「スナップ("snap to")時間単位を
指定する」を参照してください。

結果は、以下のような内容で[統計]タブに表⽰されます。

_t im e 3.5 3.6 3.7 3.8 4 4.1 4.1 4.3 4.4 4.5 その他

2018-03-26 3 3 2 2 3 1 0 2 1 1 1

2018/04/02 5 7 2 0 3 2 1 0 0 1 1

2018/04/09 2 3 1 2 0 2 1 1 0 1 2

2018/04/16 6 5 0 1 2 2 2 0 0 2 1

2018/04/23 2 0 0 0 0 2 1 2 2 0 1

4.各項⽬の経時的な収益をカウントする

この例では、『サーチチュートリアル』のサンプルデータセットとフィールドのルックアップを使⽤して、イベントデータにさまざまな情報を追加し
ます。この例を実⾏する前に:

『サーチチュートリアル』のこのトピック からデータセットをダウンロードした後、指⽰に従ってSplunk導⼊環境にアップロードしてくだ
さい。
『サーチチュートリアル』のこのトピック からPrices.csv.zipをダウンロードした後、指⽰に従ってフィールドルックアップを設定してく
ださい。

元のデータセットには、Buttercup Gamesオンラインストアーで販売された商品のカタログ番号を表すproductIdフィールドが含まれています。
フィールドルックアップはイベントに2つの新しいフィールドを追加します。これらはアイテムを説明する名前を⽰すproductNameと、アイテムのコス
トを⽰すpriceです。

過去7⽇間の 各商品販売に対して得られた合計収益をカウントします。この例では2つの異なるサーチを⽰しています。
サーチ1
最初のサーチはspan引数を使って、サーチ結果を1⽇の単位でバケツ化しています。次にサーチはsum()関数を使って、
各product_nameのpriceを追加します。

sourcetype=access_* action=purchase | timechart span=1d sum(price) by productName usenull=f

サーチ2
2番⽬のサーチでは、per_day()関数を使って各⽇のprice値の合計を計算しています。

sourcetype=access_* action=purchase | timechart per_day(price) by productName usenull=f

どちらのサーチも同じ結果を⽣成します。サーチ1は⼩数位2桁の値を⽣成します。サーチ2は⼩数位6桁の値を⽣成します。
以下のイメージは、サーチ1の結果を⽰しています。

[ 視覚エフェクト] タブをクリックします。必要であれば結果を棒グラフに変更します。

403
これで、各⽇およびその週の、商品購⼊による収益合計を⽐較することができます。

5.⼀⽇の製品ビューおよび購⼊をグラフ化する

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏する際には、時間範囲として「昨⽇」 を指定してください。

Buttercup Gamesオンラインストアーでの1⽇の参照/購⼊数をグラフ化します。
sourcetype=access_* | timechart per_hour(eval(method="GET")) AS Views, per_hour(eval(action="purchase")) AS Purchases

このサーチはper_hour()関数とeval式を使ってページビュー(method=GET)数と購⼊数(action=purchase)をサーチします。
eval式の結果は、それぞれViewsおよびPurchasesに名前を変更します。

結果は、以下のような内容で[統計]タブに表⽰されます。

_t im e ビュー 購⼊
2018-04-05 00:00:00 150.000000 44.000000

2018-04-05 00:30:00 166.000000 54.000000

2018-04-05 01:00:00 214.000000 72.000000

2018-04-05 01:30:00 242.000000 80.000000

2018-04-05 02:00:00 158.000000 26.000000

2018-04-05 02:30:00 166.000000 20.000000

2018-04-05 03:00:00 220.000000 56.000000

[ 視覚エフェクト] タブをクリックします。結果を⾯グラフにフォーマットします。

2つの⾯グラフの差は、すべてのページ参照が購⼊につながっている訳ではないことを表しています。すべてのページ参照が
購⼊に繋がっているのなら、2つの⾯グラフは完全に⼀致するはずです。その場合は、どちらもまったく同じ⾯グラフとなる
404
でしょう。

w her e句 の 例
これらの例は、where句を使って、時系列グラフに返されるシリーズ値の数を制御しています。

例1:最⼩カウント値に基づいて、5つのまれなシリーズを表⽰します。その他のシリーズ値には「other」(その他)のラベル
を設定します。
index=_internal | timechart span=1h count by source WHERE min in bottom5

例2:最⼩値に基づいて、5つのもっとも多いシリーズを表⽰します。その他のシリーズ値には「other」(その他)のラベルを
設定します。
index=_internal | timechart span=1h count by source WHERE max in top5

これらの2つのサーチは、6つのデータシリーズを返します。指定された5つのtopまたはbottomシリーズと、otherのラベル
が設定されているシリーズです。「other」シリーズを⾮表⽰にするには、引数useother=fを指定します。

例3:INFOイベントのソースシリーズカウントを表⽰しますが、合計イベント数が100を超えるもののみを表⽰します。そ
の他のシリーズ値には「other」(その他)のラベルを設定します。
index=_internal | timechart span=1h sum(eval(if(log_level=="INFO",1,0))) by source WHERE sum > 100

例4 :where句とcount関数を使って、期間の合計イベント数を測定します。これにより、sum関数を使⽤する場合と同様の
結果が⽣成されます。
以下の2つのサーチは、合計イベント数が100件を超えるソースシリーズを返します。その他のシリーズ値には「other」(そ
の他)のラベルを設定します。

index=_internal | timechart span=1h count by source WHERE count > 100

index=_internal | timechart span=1h count by source WHERE sum > 100

関連項⽬
コマンド
bin
chart
sitimechart
ブログ
サーチコマンド> stats、chart、timechart

A ns w er s
何か質問がありますか? 「Splunk Answers」では、Splunkコミュニティに寄せられた、timechartコマンドの使⽤⽅法に関
する質問と回答をご覧いただけます。

t imew r a p
説明
timechartコマンドの出⼒を全ての時間範囲が異なるシリーズになるように表⽰またはラップします。

timewrapコマンドを使⽤して、⽇対⽇、⽉対⽉などの、特定の期間におけるデータを⽐較できます。またtimewrapコマンドを
使⽤して、2週間対他の2週間などの複数の期間を⽐較できます。時間スケールオプションをご覧ください。

構⽂
太字 は必須構⽂です。
t im ewrap
<t im ewrap-span>
[align=now | end]
[series=relative | exact | short]
[time_format=<str>]

405
必須引数

timewrap-span
構⽂ :[<int>]<timescale>
説明 :時間に基づく各ビンのスパン。timescaleが必要です。intは不要です。<int>が指定されていない場合は、1とみ
なされます。たとえば、タイムスケールにdayが指定されていると、1dayとみなされます。時間スケールオプションをご
覧ください。

省略可能な引数

align
構⽂ :align=now | end
説明 :折り返しを現在の時間またはサーチの終了時間に合わせるかどうかを指定します。
デフォルト :end
series
構⽂ :series=relative | exact | short
説明 :データシリーズの命名⽅法を指定します。series=relativeおよびtimewrap-spanがweekに指定されている場合、
フィールド名はlatest_week、1week_before、2weeks_beforeなどになります。series=exactである場合、time_format引数を使
⽤してシリーズ名のカスタム書式を指定します。series=shortである場合、フィールド名はseries=relativeで使⽤される
フィールド名の短縮形になります。series=shortを指定すると、フィールド名は「s」と期間を表す数字に短縮されま
す。たとえば、timewrap-spanがweekに指定されている場合、フィールド名はs0、s1、s2などになります。フィール
ドs0は先週を表します。フィールドs1は、最新週の1週間前を表します。
デフォルト :relative

time_format
構⽂ :time_format=<str>
説明 :シリーズのカスタム名を指定するには、series=exactを使⽤してください。time_formatは時間書式変数と使⽤す
るように設計されています。たとえば、time_format="week of %d/%m/%y"を指定すると、この書式はweek of 13/2/17およ
びweek of 20/2/17として表⽰されます。time_format=week of %b %dを指定すると、この書式はweek of Feb 13およびweek of
Feb 20として表⽰されます。使⽤法のセクションを参照してください。
デフォルト :なし

タイムスケールオプション

<timescale>
構⽂ :<sec> | <min> | <hr> | <day> | <week> | <month> | <quarter> | <year>
説明 :タイムスケールの単位。

タイムスケールの単位 構⽂ 説明
<sec> s | sec | secs | second | seconds タイムスケール(秒)。

<min> min | mins | minute | minutes タイムスケール(分)。

<hr> h | hr | hrs | hour | hours タイムスケール(時)。

<day> d | day | days タイムスケール(⽇)。

<week> w、week、weeks タイムスケール(週)。

<month> m | mon | month | months タイムスケール(⽉)。

<quarter> qtr | quarter | quarters タイムスケール(四半期)

<year> y | yr | year | years タイムスケール(年)。

timewrapコマンドは、省略形のmを⽉と解釈します。他のコマンド(timechartやbinなど)は、省略形のmを分と解釈します。

使⽤法
timewrapコマンドは、レポートコマンドです。

timewrapコマンドを使⽤する前に、サーチでtimechartコマンドを使⽤する必要があります。

ラッピングはサーチの終了時間に基づいています。All timeの時間範囲を指定すると、ラッピングは当⽇の⽇付に基づきま
す。これは_timeフィールドおよびデータシリーズ名のタイムスタンプにみられます。

t im echart BY句を使⽤したフィールド名

406
サーチのtimechartコマンド部分でBY句を使⽤すると、timewrapコマンドによって⽣成されるフィールド名が、BY句によって
⽣成されるフィールド名の末尾に付加されます。timechartコマンドにBY categoryIdを含むサーチがあり、次のような結果が返
されるとします。

_t im e ACCESSORIES SPORTS STRATEGY


2020-05-21 5 17 32

2020-05-22 62 22 127

2020-05-23 65 34 128

2020-05-24 5 17 32

2020-05-25 62 22 127

2020-05-26 65 34 128

timewrapコマンドを追加すると(例:| timewrap w series=short)、timechart BY句によって⽣成されるカテゴリーID名の末尾


に時系列フィールド名が付加されます。

出⼒は次のようになります。

_t im e ACCESSORIES_s1 SPORTS_s1 STRATEGY_s1 ACCESSORIES_s0 SPORTS_s0 STRATEGY_s0

2020-
5 17 32
05-21

2020-
62 22 127
05-22

2020-
65 34 128
05-23

2020-
5 17 32
05-24

2020-
62 22 127 17 54 39
05-25

2020-
65 34 128
05-26

t im e_form at 引数の使⽤

time_format引数に時間識別⼦を含めないと、すべてのデータシリーズで同じ名前が表⽰され、相互に圧縮されます。

1.週単位で⽐較する

⼀週間の各カウントに1⽇の範囲があるタイムチャートを、週間⽐較テーブルに表⽰します。各テーブル列はシリーズで、1
週間分の時間です。
... | timechart count span=1d | timewrap 1week

2.今⽇、昨⽇、そして週の平均を⽐較する

数⽇を週間平均と⽐較するには、毎⽇の合計を計算し、週間の平均を計算してから、使⽤しない⽇を削除する必要がありま
す。例:
...| timechart count span=1h | timewrap d series=short | addtotals s* | eval 7dayavg=Total/7.0 | table _time, _span, s0, s1,
7dayavg | rename s0 as now, s1 as yesterday

timewrapコマンドを使⽤して、過去7⽇間の結果を⽣成します。
series=short引数を使⽤すると、出⼒で「s」で始まるファイル名が⽣成されるため、addtotalsコマンドで合計を作成し
やすくなります。
407
addtotalsコマンドとevalコマンドを使⽤して、7⽇間の平均を計算します。
tableコマンドを使⽤して、3〜7⽇⽬を削除し、今⽇、昨⽇、そして週平均のみが返されるようにします。
renameコマンドを使⽤してフィールド名を変更します。

出⼒は次のようになります。

_t im e no w yest erday 7dayavg

2020/02/20 15:00 0 0 0.0

2020/02/20 16:00 0 0 0.29

2020/02/20 17:00 0 0 0.0

2020/02/20 18:00 0 0 0.0

2020/02/20 19:00 0 0 0.57

2020/02/20 20:00 0 0 0.0

2020/02/20 21:00 0 0 0.29

2020/02/20 22:00 0 0 1.1

3.特定の曜⽇と先週の同じ曜⽇を⽐較する

サーチの最後でフィルターを指定することで、特定の曜⽇を他の週の同じ曜⽇と⽐較できます。たとえば、毎週⽔曜⽇を⽐
較する場合のサーチは次のようになります。
...| timechart count span=1h | timewrap w | where strftime(_time, "%A") == "Wednesday"

出⼒は次のようになります。

_t im e 4weeks_befo re 3weeks_befo re 2weeks_befo re 1week_befo re lat est _week


2020/02/19 00:00 0 1 4 0 1

2020/02/19 01:00 2 0 0 0 1

2020/02/19 02:00 3 5 7 2 0

2020/02/19 03:00 6 4 0 1 2

2020/02/19 04:00 9 0 4 0 0

2020/02/19 05:00 2 8 7 3 1

2020/02/19 06:00 4 2 7 0 1

2020/02/19 07:00 6 9 2 2 0

タイムチャートスパンを1hではなく1dに変更すると、出⼒は次のようになります。

_t im e 4weeks_befo re 3weeks_befo re 2weeks_befo re 1week_befo re lat est _week


2020-02-19 32 29 31 8 6

関連項⽬
timechart

t op
説明
フィールドリストのフィールドの⼀番多い値を探します。イベントの値の発⽣頻度のカウントおよび割合を計算します。
<by-clause>が含まれている場合、<by-clause>で指定したフィールドで結果がグループ化されます。

構⽂

408
top [<N>] [<top-options>...] <field-list> [<by-clause>]

必須引数

<field-list>
構⽂ :<field>, <field>, ...
説明 :フィールド名のカンマ区切り形式のリスト。

省略可能な引数

<N>
構⽂ :<int>
説明: 返す結果数。
デフォルト :10
<top-options>
構⽂ :countfield=<string> | limit=<int> | otherstr=<string> | percentfield=<string> | showcount=<bool> |
showperc=<bool> | useother=<bool>
説明 :topコマンドのオプションです。t o pのオプション を参照してください。

<by-clause>
構⽂ :BY <field-list>
説明 :グループに分類する1つ以上のフィールドの名前です。

t opのオプション

countfield
構⽂ :countfield=<string>
説明 :topコマンドで返される値ごとに、その値のあるイベントのカウントも結果に返されます。この引数では、カウ
ントが含まれるフィールドの名前を指定します。カウントはデフォルトで返されます。イベントのカウントが返されな
いようにするには、showcount=falseを指定します。
デフォルト :count
limit
構⽂ :limit=<int>
説明 :返す結果の数を指定します。すべての値を返すには、ゼロ(0)を指定します。top limit=<int>を指定すること
は、top Nを指定することと同じです。
デフォルト :10
otherstr
構⽂ :otherstr=<string>
説明 :useother=trueの場合、他のすべての値を表す⾏が結果に追加されます。otherstr=<string>を使⽤して、⾏のラベル
の名前を指定します。
デフォルト :OTHER
percentfield
構⽂ :percentfield=<string>
説明 :topコマンドで返される値ごとに、その値のあるイベントの割合も結果に返されます。この引数では、割合が含
まれるフィールドの名前を指定します。割合はデフォルトで返されます。イベントの割合が返されないようにするに
は、showperc=falseを指定します。
デフォルト :percent
showcount
構⽂ :showcount=<bool>
説明 :「count」フィールド(「countfield」オプションを参照)およびその組のカウントを作成するかどうかを指定し
ます。
デフォルト :真(True)
showperc
構⽂ :showperc=<bool>
説明 :percentフィールド(percentfieldオプションを参照)およびその組の相対普及度を作成するかどうかを指定しま
す。
デフォルト :真(True)

useother
構⽂ :useother=<bool>
説明 :制限カットオフのために含まれない、すべての値を表す⾏を追加するかどうかを指定します。
デフォルト :偽(False)

使⽤法
topコマンドは、変換コマンド です。「コマンドタイプ」を参照してください。

409
デフォルトフィールド

topコマンドを使⽤すると、countとpercentの2つのフィールドが結果に追加されます。

フィール 説明

count topコマンドで返されるフィールド値を含むサーチ結果のイベント数。countfieldおよびshowcount引数を参照してください。

topコマンドで返されるフィールド値が含まれるサーチ結果のイベントの割合。percentfieldおよびshowperc引数を参照してくださ
percent
い。

デフォルトの結果の最⼤数

デフォルトでは、topコマンドは最⼤50,000件の結果を返します。この最⼤値は、limits.confファイルの[top]スタンザ
のmaxresultrows設定で制御します。この制限を⼤きくすると、より多くのメモリーが使⽤されます。

ファイルシステムにアクセスできるユーザー(システム管理者など)のみが設定ファイルを編集できます。defaultディレクト
リにある設定ファイルは、決して変更もコピーもしないでください。defaultディレクトリ内のファイルは、そのまま保持し
て元の位置にある必要があります。変更は、localディレクトリで⾏ってください。

設定ファイルの編集⽅法を参照してください。
Splunk Cloudを使⽤していて設定ファイルを編集したい場合は、サポートチケットを申請してください。

例1:フィールドでもっとも典型的な値の上位20件を返す

このサーチでは、「referer」フィールドの、もっとも典型的な値の上位20件を返します。結果は「referer」のカウントがあ
るイベント数(カウント)および、各「referer」がイベント総数に占めるパーセントを⽰します。
sourcetype=access_* | top limit=20 referer

例2:別のフィールドにより組織された1つのフィールドの上位値を返す

このサーチは各referer_domainに対して、件数が上位のaction値を返します。
sourcetype=access_* | top action by referer_domain

制限が指定されていないため、これは「action」と「referer_domain」のすべての値の組み合わせ、およびカウントとパー
センテージを返します。

410
例3:各カテゴリの上位購⼊製品を返す

この例では、『サーチチュートリアル』のサンプルデータセットとフィールドのルックアップを使⽤して、イベントデータにさまざまな情報を追加し
ます。
「データの追加 」チュートリアルからデータセットをダウンロードし、指⽰に従ってチュートリアルデータを取り込んでください。
「フィールドルックアップの使⽤ 」チュートリアルからCSVをダウンロードした後、ルックアップ定義の設定の説明に従ってイベントに
priceとproductNameを追加します。

フィールドルックアップを設定したら、時間範囲[全時間] でサーチを実⾏します。

このサーチは各カテゴリの上位購⼊製品を返します。パーセントフィールドは表⽰しません。カウントフィールドの名前を
「total」に変更します。
sourcetype=access_* status=200 action=purchase | top 1 productName by categoryId showperc=f countfield=total

関連項⽬
rare、sitop、stats

t r a nsa ct ion
説明
transactionコマンドはさまざまな制約に対応するイベントに基づいて、トランザクションを特定します。トランザクション
は、各メンバーのrawテキスト(_rawフィールド)、もっとも古いメンバーの時刻/⽇付フィールド、および各メンバーのその他
すべてのフィールドの集合で構成されています。

また、transactionコマンドはrawイベントに2つのフィールドdurationおよびeventcountを⽣成します。durationフィールドの値
は、トランザクション内の最初のイベントと最後のイベントのタイムスタンプの差です。eventcountフィールドの値はトラン
ザクションに含まれるイベントの数を⽰します。

『サーチ』マニュアルの「トランザクション」を参照してください。

構⽂
太字 は必須構⽂です。
t ransact io n
411
[<field-list>]
[name=<transaction-name>]
[<txn_definition-options>...]
[<memcontrol-options>...]
[<rendering-options>...]

必須引数

無し。

省略可能な引数

field-list
構⽂ :<field> ...
説明 :1つ以上のフィールド名。イベントは、フィールドの⼀意の値に基づいてトランザクションにグループ化されま
す。たとえば、client_ipとhostの2つのフィールドが指定されているとします。各client_ip値ごとに、そのclient_ipの⼀
意のhost値に対して個別のトランザクションが返されます。

memcontrol-options
構⽂ :<maxopentxn> | <maxopenevents> | <keepevicted>
説明 :これらのオプションでトランザクションによるメモリー消費を制御します。必須ではありませんが、0個以上の
オプションを使ってトランザクションを定義することができます。「メモリー制御オプション」を参照してください。
name
構⽂ :name=<transaction-name>
説明 :transactiontypes.confで設定されているトランザクションのスタンザ名を指定します。設定ファイルのスタンザに
定義されている設定を使⽤してサーチを実⾏します。このサーチにトランザクションの他の定義オプション(maxspan
など)を指定すると、設定ファイルの設定が上書きされます。
rendering-options
構⽂ :<delim> | <mvlist> | <mvraw> | <nullstr>
説明 :これらのオプションはトランザクションの複数値表⽰を制御します。必須ではありませんが、0個以上のオプ
ションを使ってトランザクションを定義することができます。「複数値表⽰オプション」を参照してください。
txn_definition-options
構⽂ :<maxspan> | <maxpause> | <maxevents> | <startswith> | <endswith> | <connected> | <unifyends> |
<keeporphans>
説明 :トランザクションを定義するためのトランザクション定義オプションを指定します。トランザクションの定義に
複数オプションを使⽤できます。

トランザクション(Txn)定義オプション

connected
構⽂ :connected=<bool>
説明: <field-list>が指定されている場合にのみ関係します。トランザクションが必要とするフィールドをイベントが
保有しているけれども、トランザクション内でこれらのフィールドがどれもインスタンス化されていない場合(前のイベ
ントで追加)、新しいトランザクションを開始(connected=true)またはイベントをトランザクションに追加
(connected=false)します。複数値フィールドの場合は、connected=falseを指定することで、複数値フィールドの値が1
つ以上同じであるイベントが、1つのトランザクションに結合されます。使⽤法を参照してください。
デフォルト :真(True)
endswith
構⽂: endswith=<filter-string>
説明 :サーチまたはeval式。あるイベントがこの条件を満たすと、トランザクションの終了としてマークされます。

keeporphans
構⽂ :keeporphans=true | false
説明 :トランザクションの⼀部ではない結果を出⼒するかどうかを指定します。「孤⽴」として渡される結果は、孤⽴
結果に対して1の値を持つ_txn_orphanフィールドがあるトランザクションイベントとは区別されます。
デフォルト :偽(False)
maxspan
構⽂ :maxspan=<int>[s | m | h | d]
説明 :イベントが継続する最⻑期間を、秒、分、時間、⽇により指定します。トランザクション中のイベント
は、maxspanに指定した整数より短い時間だけ継続します。maxspan制限を超えたイベントは、別のトランザクションの
⼀部として処理されます。値が負の場合、maxspan制約は無効で無制限です。
デフォルト :-1 (無制限)

maxpause
構⽂ :maxpause=<int>[s | m | h | d]
説明: トランザクションにあるイベント間の⼀時停⽌が継続する最⻑期間を、秒、分、時間、⽇により指定します。値
が負の場合、maxpause制約は無効で無制限です。
デフォルト :-1 (無制限)

412
maxevents
構⽂ :maxevents=<int>
説明 :1つのトランザクション内の最⼤イベント数です。負の値を指定した場合、この制約は無効になります。
デフォルト :1000
startswith
構⽂ :startswith=<filter-string>
説明 :サーチまたはevalフィルタリング式。あるイベントがこの条件を満たすと、新しいトランザクションの開始とし
てマークされます。

unifyends
構⽂ :unifyends= true | false
説明 :startswith制約とendswith制約に⼀致するイベントが、イベントをトランザクションに統合するために⽤いられる
フィールドにも1つ以上⼀致する必要があるかどうかを指定します。
デフォルト :偽(False)

⽂字列フィルタリングオプション

これらのオプションは、startswith引数とendswith引数で使⽤します。

<filter-string>
構⽂ :<search-expression> | (<quoted-search-expression>) | eval(<eval-expression>)
説明 :サーチまたはevalフィルタリング式。あるイベントがこの条件を満たすと、新しいトランザクションの終了とし
てマークされます。
<search-expression>
説明 :引⽤符を含まない有効なサーチ式。
<quoted-search-expression>
説明 :引⽤符を含む有効なサーチ式。
<eval-expression>
説明 :論理演算式を評価する有効なeval式。

メモリー制御オプション

Splunk Cloudをお持ちの場合は、Splunkサポートがお客様の代わりにlimits.confファイルの設定を管理します。

keepevicted
構⽂ :keepevicted=<bool>
説明 :削除したトランザクションを出⼒するかどうかを指定します。削除したトランザクションは「closed_txn」
フィールドの値を確認して⾮削除済トランザクションから区別されます。削除されたトランザクションの
「closed_txn」フィールドは「0」、またはfalseに設定され、⾮削除またはクローズしたトランザクションについては
「1」に設定されます。以下のいずれかの条件を満たすと、「closed_txn」は「1」に設定されます。:maxevents,
maxpause, maxspan, startswith.startswithの場合、transactionコマンドはイベントを逆の順序で⾒るので、開始条件
を満たすとトランザクションをクローズします。これらの条件がどれも指定されていない場合は、すべてのトランザク
ションの「closed_txn」に0が設定されている場合でも、すべてのトランザクションが出⼒されます。メモリー制限に
達すると、トランザクションを1つ削除することもできます。
デフォルト :falseまたは0
maxopenevents
構⽂ :maxopenevents=<int>
説明 :LRUポリシーを使って、トランザクションの削除を開始する前に、開かれているトランザクションの⼀部となる
イベントの最⼤数を指定します。
デフォルト :この引数のデフォルト値は、limits.confファイルのtransactionsスタンザから読み込まれます。

maxopentxn
構⽂ :maxopentxn=<int>
説明 :LRUポリシーを使って、トランザクションの削除を開始する前に、開いているプール内に保持する未終了トラン
ザクションの最⼤数を指定します。
デフォルト :この引数のデフォルト値は、limits.confファイルのtransactionsスタンザから読み込まれます。

複数値表⽰オプション

delim
構⽂ :delim=<string>
説明 :複数の値を区切る⽂字を指定します。mvraw=tと⼀緒に使⽤した場合、_rawフィールドの値を区切るために使われ
る⽂字列を表します。
デフォルト :" " (空⽩)
mvlist
構⽂ :mvlist= true | false | <field-list>
説明: 複数値フィールドの処理⽅法を制御するフラグ。mvlist=trueに設定した場合、トランザクション中の複数値
フィールドは、元のイベントを到着順に並べたリストとなります。mvlist=falseに設定した場合、トランザクション中の
413
複数値フィールドは、アルファベット順に並べられた⼀意フィールド値のセットとなります。フィールドのカンマまた
はスペース区切りリストを指定した場合、それらのフィールドのみをリストとして表⽰します。
デフォルト :偽(False)
mvraw
構⽂ :mvraw=<bool>
説明 :トランザクションサーチ結果の_rawフィールドを複数値フィールドとするかどうかを指定します。
デフォルト :偽(False)
nullstr
構⽂ :nullstr=<string>
説明 :⽋損フィールド値を、トランザクション内の複数値フィールドの⼀部として表⽰する際に使⽤する⽂字列値。こ
のオプションは、リストとして表⽰されるフィールドにのみ適⽤されます。
デフォルト :NULL

使⽤法
transactionコマンドは、集中ストリーミングコマンドです。「コマンドタイプ」を参照してください。

出⼒では、トランザクションのイベントがEventsフィールドの複数値としてグループ化されます。トランザクションの各イベ
ントは、デフォルトでは新しい⾏で開始されます。
トランザクションに含まれるイベント数が5件を超える場合、トランザクションの残りのイベントは折りたたまれます。トラ
ンザクションの最後にはメッセージが表⽰され、トランザクション中のすべてのイベントを表⽰するためのオプションが提
⽰されます。

複数フィールドの指定

複数値フィールドで定義されているトランザクションが、必ずしもこれらのフィールドの論理積(field1 AND field2 AND field3)


または論理和(field1 OR field2 OR field3)と解釈されるわけではありません。フィールドリストのフィールドの間に過渡的関
係があり、関連するイベントが正しい順番で(それぞれに異なるタイムスタンプあり)発⽣している場合、transactionコマンド
はそれを使⽤しようとします。たとえば、次のサーチを実⾏すると:

... | transaction host cookie

以下のイベントがトランザクションにグループ化されます。

event=1 host=a
event=2 host=a cookie=b
event=3 cookie=b

降順の時間順が必要

transactionコマンドは、到着イベントが降順の時間順であることが必要です。evalなどのコマンドは、イベントの順番または
時間ラベルを変更する場合があります。上記いずれかのコマンドがtransactionコマンドよりも優先する場合、サーチにsortコ
マンドを含めない限り、サーチはエラーを返します。sortコマンドはtransactionコマンドの直前に発⽣して、サーチ結果を降
順の時間順に並び替える必要があります。

複数値フィールド

イベントのいずれかのフィールドが複数値フィールドである場合は、connected=falseと指定することで、トランザクションの
作成時にフィールドの値を結合させます。値は、複数値フィールドの1つ以上の値がイベント間で重複している場合に結合さ
れます。たとえば、あるイベントの複数値フィールドにa b c、別のイベントの複数値フィールドにc d eという値が含まれて
いる場合、connected=falseと指定すると、これらのフィールドが結合されます。

基本的な例
1.ホスト、時間範囲、⼀時停⽌が同じトランザクション

同じホストとCookie値を持ち、30秒の期間内に発⽣し、イベント間の停⽌が5秒以下の、サーチ結果をグループ化します。

... | transaction host cookie maxspan=30s maxpause=5s

2.「from 」値、時間範囲、⼀時停⽌が同じトランザクション

同じ「from」値を持ち、最⼤期間が30秒で、イベント間の停⽌が5秒以下のサーチ結果をトランザクションにグループ化し
ます。
... | transaction from maxspan=30s maxpause=5s
414
... | transaction from maxspan=30s maxpause=5s

3.フィールド値が同じトランザクション

あるalert_levelを含むイベントがあるとします。レベルが同じトランザクションを作成するとします。streamstatsコマンドを
使⽤して、現在および前のイベントのアラートレベル値を保持することができます。transactionコマンドを使⽤して、アラー
トレベルが異なる場合は、新しいトランザクションを作成できます。特定のフィールドをテーブルに出⼒します。
... | streamstats window=2 current=t latest(alert_level) AS last earliest(alert_level) AS first | transaction
endswith=eval(first!=last) | table _time duration first last alert_level eventcount

その他の例

1.IPアドレスに基づくW ebアクセスイベントのトランザクション

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏する際には、時間範囲として「昨⽇」 を指定してください。

同じIPアドレスを共有する、Webアクセスイベントに基づくトランザクションを定義します。トランザクション内の最初の
イベントと最後のイベントの差は30秒以下でなければなりません。また、トランザクション内の各イベントの間隔は5秒以内
でなければなりません。
sourcetype=access_* | transaction clientip maxspan=30s maxpause=5s

これによって、以下のイベントリストが作成されます。トランザクション中の各イベントのclientipが強調表⽰されます。

このサーチは、サーバーにアクセスしたIPアドレスと時間制約に基づいて、イベントをグループ化します。hostやsourceなど
の、サーチ結果の⼀部のフィールドは、複数値フィールドになることもあります。たとえば、同じオフィス内から複数の
⼈々が買い物した場合など、単⼀のIPからの要求が複数のホストから来る場合があります。詳細は、『ナレッジ管理』マニュ
アルの「トランザクションについて」を参照してください。

2.ホストおよびクライアントIPに基づくW ebアクセスイベントのトランザクション

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏する際には、時間範囲として「昨⽇」 を指定してください。

hostとclientipの値の⼀意の組み合わせを持つWebアクセスイベントに基づいて、トランザクションを定義します。トランザ
クション内の最初のイベントと最後のイベントの差は30秒以下でなければなりません。また、トランザクション内の各イベ
ントの間隔は5秒以内でなければなりません。

sourcetype=access_* | transaction clientip host maxspan=30s maxpause=5s

このサーチによって、以下のイベントリストが作成されます。
415
これらの各イベントはサーチで指定されている時間制約の制限内で、IPアドレス(clientip)とhost値の、⼀意の組み合わせを保
有しています。

3.IPアドレスおよび時間範囲に基づく購⼊トランザクション

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏する際には、時間範囲として「昨⽇」 を指定してください。

このサーチでは、単⼀のIPアドレスからの10分間の期間内に発⽣した3件のイベントを、購⼊トランザクションとして定義し
ています。
sourcetype=access_* action=purchase | transaction clientip maxspan=10m maxevents=3

このサーチは、action=purchase値を持つWebアクセスイベントに基づいて、購⼊イベントを定義します。これらの結果
はtransactionコマンドに渡されます。このサーチは、同じclientipを共有するイベントに基づいて、トランザクション(セッ
ションが10分以内で3件以下のイベントを含む)を識別します。
このサーチによって、以下のイベントリストが作成されます。

416
4.m axevent sおよびendswit hに基づくメールトランザクション

この例では、サンプルのメールデータを使⽤します。このサーチをどのメールデータに対しても実⾏できるようにするため
に、sourcetype=cisco:esaをsourcetypeの値に置き換え、mailfromフィールドをデータ内のメールアドレスフィールド名に置き換えてください。た
とえば、メールはTo、From、またはCcのいずれかです。

この例では、1つのメールトランザクションを10件のイベントのグループとして定義しています。各イベントでは、mid (メッ
セージID)、icid (着信接続ID)、およびdcid (配信接続ID)の値が同じです。トランザクションの最後のイベントに
は「Message do ne」 の⽂字列があります。
sourcetype="cisco:esa" | transaction mid dcid icid maxevents=10 endswith="Message done"

このサーチを実⾏すると、以下のイベントのリストが⽣成されます。

デフォルトでは最初の5件のイベントのみが表⽰されます。最初のトランザクションには7件のイベントがあり、最後のイベ
ントは隠されています。2番⽬と3番⽬のトランザクションでは、最後のイベントに「Message do ne」 の⽂字列が表⽰され
ています。

5.m axevent s、m axspanおよびm vlist に基づくメールトランザクション

この例では、サンプルのメールデータを使⽤します。このサーチをどのメールデータに対しても実⾏できるようにするため
に、sourcetype=cisco:esaをsourcetypeの値に置き換え、mailfromフィールドをデータ内のメールアドレスフィールド名に置き換えてください。た
とえば、メールはTo、From、またはCcのいずれかです。

この例では、1つのメールトランザクションを10件のイベントのグループとして定義しています。各イベントでは、mid (メッ
セージID)、icid (着信接続ID)、およびdcid (配信接続ID)の値が同じです。トランザクション中の最初と最後のイベントが30
秒以上離れていてはいけません。
sourcetype="cisco:esa" | transaction mid dcid icid maxevents=10 maxspan=30s mvlist=true

mvlistのデフォルト設定は偽(False)で、複数値フィールド値の表⽰はサーチ結果では抑制されます。このサーチ
でmvlist=trueを指定することにより、選択フィールドのすべての値を表⽰できます。これによって、以下のイベントリストが
作成されます。

417
ここでは、期間が30秒未満のトランザクションを参照できます。また、フィールドに複数の値が存在する場合は、それぞれ
の値が表⽰されます。

6.セッションIDおよびIPアドレスが同じトランザクション

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏するときは、時間範囲として[全時間] を使⽤します。

同じセッションID (JSESSIONID)を持ち、同じIPアドレス(clientip)からで、最初のイベントに⽂字列「signon」が、最後のイベ
ントに⽂字列「purchase」がある、⼀連のイベントグループをトランザクションとして定義します。
sourcetype=access_* | transaction JSESSIONID clientip startswith="view" endswith="purchase" | where duration>0

このサーチはstartswith="view"引数を使って、トランザクション内の最初のイベントを⽂字列「view」を含むイベントとして
定義しています。endswith="purchase"引数は、トランザクション内の最後のイベントに対して同様の処理を⾏います。

次に、トランザクションはwhereコマンドに渡され、完了までに1秒未満しかかかっていないすべてのトランザクション
を、durationフィールドでフィルタリングしています。transactionコマンドでdurationフィールドが追加されているた
め、whereフィルターをtransactionコマンドの前に適⽤することはできません。

トランザクションの処理に⻑時間がかかる理由を知りたい場合もあるでしょう。そのような場合にこれらのイベントを確認
すると、トラブルシューティングに役⽴ちます。

このデータでは確認できませんが、ユーザーが購⼊を完了するまでの間に商品の追加、更新、削除などの操作を⾏っている
ために、トランザクションの完了まで時間がかかっていることもあります。また、このサーチはすべてのイベントに対して
実⾏されます。transactionコマンドの前ではフィルタリングは⾏われません。最初のパイプの前にサーチをフィルタリングで
きれば、サーチが⾼速化します。

関連項⽬
参考情報
『サーチリファレンス』マニュアルの「トランザクション」
418
コマンド
stats
concurrency

t r a nspose
説明
各サーチ⾏が列になるように、指定した⾏(サーチ結果)数を列(フィールド値のリスト)として返します。

構⽂
太字 は必須構⽂です。
t ranspo se
[int]
[column_name=<string>]
[header_field=<field>]
[include_empty=<bool>]

必須引数

無し。

省略可能な引数

column_name
構⽂ :column_name=<string>
説明 :⾏の転置に使⽤する最初の列の名前。この列にはフィールド名が含まれます。
デフォルト :列
header_field
構⽂ :header_field=<field>
説明 :転置データの中で、(最初の列以外の)列の名前に使⽤するための結果の中のフィールド。
デフォルト :⾏1、⾏2、⾏3など。

include_empty
構⽂ :include_empty=<bool>
説明 :空の値を含むフィールドを含める(true)か含めない(false)かを指定します。
デフォルト :真(True)
int
構⽂ :<int>
説明 :転置する⾏数を制限します。すべての⾏を転置するには、| transpose 0と指定します。この場合、転置する⾏数
は無制限となります。
デフォルト :5

使⽤法
transposeコマンドを使⽤すると、コマンドで使⽤した引数に基づいて、出⼒で使⽤されるフィールド名が決まります。デフォ
ルトのフィールド名は、column、row1、row2などです。


1.chart コマンドの結果を転置する

transposeコマンドにデフォルト設定を使⽤して、chartコマンドの結果を転置します。
... | chart count BY host error_code | transpose

2.ソースタイプごとにイベント数をカウントし、カウント数が最も⾼い3つを表⽰するように結果を転置する

ソースタイプごとにイベント数をカウントし、カウントが最も⼤きいソースタイプを最初に表⽰します。
index=_internal | stats count by sourcetype | sort -count

419
transposeコマンドを使⽤して、⾏と列を変換し、上位3つのカウント数のソースタイプを表⽰します。
index=_internal | stats count by sourcetype | sort -count | transpose 3

3.⼀連のデータを連続に転置してグラフを作成する

この例は、「サーチチュートリアル」のサンプルデータセットを使⽤しています。

「データの追加 」チュートリアルからデータセットをダウンロードし、指⽰に従ってチュートリアルデータをSplunk導⼊環境に取り込んでく
ださい。

すべての正常なイベントをサーチし、ビューの数、アイテムがカートに追加された回数、購買回数をカウントします。
sourcetype=access_* status=200 | stats count AS views count(eval(action="addtocart")) AS addtocart
count(eval(action="purchase")) AS purchases

サーチは1列のデータを⽣成します。

count AS viewsの値は、条件sourcetype=access_* status=200に⼀致するイベントの合計数、またはすべてのアクションの合計数


です。addtocartとpurchasesの値は、これらのアクションのイベント数を⽰します。

[視覚エフェクト]タブに切り替えると、データは「34282ビュー」をX軸ラベルとして表⽰し、2つの⾏のうち1つを「カート
に追加」もう1つを「購⼊」として表⽰します。ビューについての情報がX軸に配置されるため、グラフは紛らわしくなって
います。

420
円グラフに変更すると、「ビュー」しか表⽰されません。

transposeコマンドを使⽤して単⼀の列しかない棒グラフを複数の列に変換します。

sourcetype=access_* status=200 | stats count AS views count(eval(action="addtocart")) AS addtocart


count(eval(action="purchase")) AS purchases | transpose

これらの列を棒グラフまたは円グラフで表⽰して、値を⽐較します。

421
この例では、円グラフの使⽤は誤解を招きます。viewsは、addtocartアクションとpurchasesアクションだけではなく、すべて
のアクションの合計数です。円グラフを使⽤すると、viewsがaddtocartやpurchasesなどのアクションのように⾒えてしまいま
す。viewsの値を円グラフで表すと、実際はviewsが合計数であるのに、⼀部分の値であるように⾒えます。

この問題はいくつかの⽅法で解決できます。
縦棒グラフを使⽤する
count AS views条件をサーチから削除する
次のように、サーチでtransposeコマンドの前にtableコマンドを追加する

sourcetype=access_* status=200 | stats count AS views count(eval(action="addtocart")) AS addtocart


count(eval(action="purchase")) AS purchases | table addtocart purchases | transpose

関連項⽬
コマンド
フィールド
stats
untable
xyseries

t r endl ine
説明
フィールドの移動平均を算出します。単純移動平均(sma)、指数移動平均(ema)、および加重移動平均(wma)を使⽤できま
す。出⼒は指定した新規フィールドに書き込まれます。

SMAとWMAはともにperiodの最新の値の合計を計算します。WMAは古い値より最近の値を重視します。EMAは次の公式を
使って計算されます。
EMA(t) = alpha * EMA(t-1) + (1 - alpha) * field(t)

alpha = 2/(period + 1)とfield(t)がフィールドの現在値となるところ。

構⽂
trendline ( <trendtype><period>"("<field>")" [AS <newfield>] )...

必須引数

trendtype
構⽂: sma | ema | wma
説明 :計算する傾向のタイプです。現在サポートされている傾向のタイプは、単純移動平均(sma)、指数移動平均
(ema)、および加重移動平均(wma)です。

period
422
構⽂ :<num>
説明 :傾向の計算を⾏う期間を2から10000の整数で指定します。
<field>
構⽂ :"("<field>")"
説明 :傾向を計算するフィールドの名前です。

省略可能な引数

<newfield>
構⽂ :<field>
説明 :出⼒の書き込み先フィールド名を指定します。
デフォルト :<trendtype><period>(<field>)

使⽤法

例1:fooフィールドの5件のイベントの単純移動平均を算出し、新しいフィールド「smoothed_foo」に書き込みます。ま
た、同じ⾏でbarフィールドの10件の指数移動平均を算出し、フィールド「bar」に書き込みます。AS句が指定されていない
ので、結果はフィールド「ema10(bar)」に書き込まれます。
... | trendline sma5(foo) AS smoothed_foo ema10(bar)

例2:⽉ごとのイベントのグラフに、trendlineをオーバーレイします。
index="bar" | stats count BY date_month | trendline sma2(count) AS trend | fields * trend

関連項⽬
accum、autoregress、delta、streamstats

t scol l ect
この機能は廃⽌されました。
tscollectコマンドは、Splunkプラットフォームバージョン7.3.0の時点で廃⽌されています。このコマンドはまだ使⽤できますが、将来のバージョ
ンでは削除される可能性があります。このコマンドの代わりにデータモデルが使⽤されます。『ナレッジ管理マニュアル』の「データモデルの⾼速
化」を参照してください。

バージョン7.3.0リリースノートの「廃⽌される機能」を参照してください。

説明
tscollectコマンドはインデックスフィールドを使って、指定した名前空間内に時系列インデックス(t sidx)ファイル を作成
します。これらのファイルの結果テーブルは、すでにインデックスを作成したデータのサブセットになります。tstatsコマン
ドを利⽤して、rawデータの代わりにこれらのtsidxファイルをサーチして、レポートを作成することができます。インデッ
クス全体のサブセットをサーチするため、サーチ処理を素早く完了することができます。
tscollectは、同じ名前空間内に複数のtsidxファイルを作成します。現在のtsidxファイルが⼤きくなりすぎたとコマンドが判
断したら、新しいtsidxファイルの作成を開始します。
このコマンドは、indexes_edit権限を持つユーザーのみが実⾏できます。「使⽤法」を参照してください。

構⽂
... ... | tscollect [namespace=<string>] [squashcase=<bool>] [keepresults=<bool>]

省略可能な引数

keepresults
構⽂ :keepresults = true | false
説明 :真(True)の場合、tscollectは⼊⼒として受け取った結果と同じ結果を出⼒します。偽(False)の場合、処理した
結果数を返します(結果を保管する必要がないため効率的です)。
デフォルト :false

namespace
構⽂ :namespace=string>
423
説明 :tsidxファイルの場所を定義します。namespaceが指定されている場合、tsidxファイルはメインtsidxstatsディ
レクトリ($SPLUNK_DB/tsidxstats)下のその名前のディレクトリに書き込まれます。これらの名前空間は、新たなデータを
追加するために、複数回書き込めます。
デフォルト :名前空間が指定されていない場合、ファイルはそのサーチのジョブディレクトリ内に書き込まれ、ジョブ
と同じだけ持続します。Splunk Enterpriseをお持ちの場合、indexes.confを編集し、tsidxStatsHomePath属性を設定する
ことで、この名前スペース位置を設定できます。
squashcase
構⽂ :squashcase = true | false
説明 :field::valueトークンを⽤語⽬録に配置する際に、⼤⽂字と⼩⽂字を区別するかどうかを指定します。インデッ
クスフィールドtsidxファイルをSplunk Enterpriseと同様に作成するには、結果をすべて⼩⽂字に変換するように
squashcase=trueを設定します。
デフォルト :false

使⽤法
tscollectコマンドを使⽤するためにindexes_edit権限が必要です。デフォルトでは、管理者 ロールのみがこの権限を持
ち、ユーザー およびパワー ロールはこの権限を持ちません。


例1:結果テーブルを名前空間fooのtsidxファイルに書き込みます。
... | tscollect namespace=foo

例2:メインインデックスからイベントを取得して、fooフィールドの値をjobディレクトリのtsidxファイルに書き込みま
す。

index=main | fields foo | tscollect

関連項⽬
collect、stats、tstats

t st a t s
説明
t sidx ファイルのインデックス済みフィールドに対して統計クエリーを実⾏するには、tstatsコマンドを使⽤します。イン
デックス作成されたフィールドは通常のインデックスデータ、tscollectデータ、または⾼速化されたデータモデルからの場
合があります。

構⽂
太字 は必須構⽂です。
| t st at s
[prestats=<bool>]
[local=<bool>]
[append=<bool>]
[summariesonly=<bool>]
[include_reduced_buckets=<bool>]
[allow_old_summaries=<bool>]
[chunk_size=<unsigned int>]
[fillnull_value=<string>]
<st at s-func>...
[FROM ( <namespace> | sid=<tscollect-job-id> | datamodel=<data_model_name>.<root_dataset_name>
[where nodename = <root_dataset_name>.<...>.<target_dataset_name>)]]
[WHERE <search-query> | <field> IN (<value-list>)]
[BY (<field-list> | (PREFIX(<field>))) [span=<timespan>] ]

必須引数

<stats-func>
構⽂: (count [<field>] | <function>(PREFIX(<string>) | <field>))... [AS <string>]
説明 :フィールドに対して基本的なカウント操作を⾏うか、または関数を実⾏します。tstatsコマンドでサポートされ
る関数については、以下の表を参照してください。1つ以上の関数を指定する必要があります。関数をフィールドに適
⽤するか、またはPREFIX()ディレクティブに適⽤することでインデックス済みイベントのrawセグメントを抽出された
フィールド/値ペアであるかのように集計できます。prestatsモード(prestats=true)ではない限り、キーワードのASを
使って結果名を変更することも可能です。

424
フィールドまたはフィールドに解決されるeval式に適⽤せずに関数を指定することはできません。フィールドの指定に
はワイルドカードは使⽤できません。
PREFIX()の使い⽅と、データでrawセグメントを探すためのサーチについては、「使⽤⽅法」を参照してください。

次の表に、関数のタイプ別にサポートされる関数を⽰します。各関数の説明と例を⾒るには、表にあるリンクを使⽤し
てください。コマンドで関数を使⽤する⽅法については、「統計およびグラフ関数」を参照してください。

関数の種類 対応している関数と構⽂
exactperc<int>() sum()
avg() perc<int>()
max() sumsq()
count() range()
集計関数 median() upperperc<int>()
distinct_count() stdev()
min() var()
estdc() stdevp()
mode() varp()

イベント順関数 first() last()

マルチ値統計およびグラ values()
フ機能

earliest() latest()
時間関数 rate()
earliest_time() latest_time()

省略可能な引数

append
構⽂ :append=<bool>
説明 :prestatsモード(prestats=true)の場合、prestatsの結果を既存の結果に追加する(結果を⽣成するのではない)
append=trueを有効にします。
デフォルト :偽(False)
allow_old_summaries
構⽂ :allow_old_summaries=true | false
説明 :⾼速化されたデータモデルから選択する場合にのみ適⽤されます。サマリーディレクトリが最新の場合にのみこ
のディレクトリから結果を返すには、このパラメーターをfalseに設定します。データモデル定義が変更された場合、
tstatsから出⼒を⽣成する際に、新しい定義よりも古いサマリーディレクトリは使⽤されません。このデフォルト動作
により、tstatsからの出⼒は常に現在の設定を反映することになります。真(True)を設定すると、tstatsは現在のサマ
リーデータと、定義変更前に⽣成されたサマリーデータの両⽅を使⽤します。基本的にこれは⾼度なパフォーマンス機
能で、古いサマリーが「⼗分に良好」であることが分かっている場合に使⽤します。
デフォルト :偽(False)
chunk_size
構⽂ :chunk_size=<unsigned_int>
説明 :詳細オプション。この引数は、Splunkソフトウェアがサーチを処理するときに単⼀のtsidxファイルから⼀度に
取得するイベントの数を制御します。特定のtstatsサーチがメモリーを過剰に消費していたり、イベントを返す頻度が
低かったりする場合は、この設定を低くしてください。この状況は、サーチが超⾼濃度フィールド(異なる値が⼤量にあ
るフィールド)によってサーチによってグループ化している場合に発⽣します。このような状況では、chunk_size値を⼩
さくすることで、tstatsサーチの応答性が⾼まりますが、完了までの時間が⻑くなることがあります。⼀
⽅、chunk_sizeを⼤きくすると、実⾏時間の⻑いサーチが早く完了するようになりますが、サーチの応答性が低下しま
す。tstatsでは、chunk_sizeを10000より⼩さくすることはできません。
デフォルト: 10000000(1000万)

chunk_size引数のデフォルト値は、limits.confファイルの[tstats]スタンザのchunk_sizeの設定によって決定されます。

fillnull_value
説明: この引数は、tstatsコマンドがgroup-byフィールドリストにあるフィールドのNULL値を置き換えるためのユー
ザー指定の値を設定します。NULL値には、返されたイベントの⼀部に存在しないフィールド値と、返されたすべての
イベントに存在しないフィールド値の両⽅を含みます。fillnull_value引数を指定しないと、tstatsは1つ以上のNULL
フィールド値を持つイベントの⾏を結果から除外します。
デフォルト :空の⽂字列
include_reduced_buckets
構⽂: include_reduced_buckets=true | false
説明: この設定は、indexes.confでenableTSIDXReduction=trueと設定されている場合にのみ適⽤されます。偽(False)の場
合、tstatsコマンドは簡易化されていないインデックスバケットからのみ結果を⽣成します。tstatsで簡易バケットから
結果を使⽤する場合は、trueに設定してください。
デフォルト :偽(False)

425
local
構⽂ :local=true | false
説明 :真(True)の場合、サーチヘッドでのみプロセッサーを実⾏するように強制します。
デフォルト :偽(False)
prestats
構⽂ :prestats=true | false
説明 :prestats書式を使⽤するかどうかを指定します。Prestats書式はSplunk内部フォーマットで、集計統計を⽣成す
るコマンドにより使⽤されるように設計されています。prestats書式を使⽤する場合、prestats書式を許容するように
設計されているグラフ、統計、またはtimechartコマンドにデータをパイプできます。prestats=trueの場合、AS⼿順は
関係ありません。集計⽤のフィールド名は、Prestats書式を使⽤して集計出⼒を⽣成するコマンドにより決定されま
す。
デフォルト :偽(False)
summariesonly
構⽂ :summariesonly=<bool>
説明 :⾼速化されたデータモデルから選択する場合にのみ適⽤されます。偽(False)の場合、要約されたデータと要約さ
れていないデータの両⽅から結果を⽣成します。TSIDXデータとして要約されていないデータの場合、オリジナルのイ
ンデックスデータに対して完全サーチ動作が使⽤されます。真(True)を設定すると、「tstats」は⾼速化により⾃動⽣
成されたTSIDXデータからのみ結果を⽣成し、要約されていないデータは提供されません。
デフォルト :偽(False)

F ROM句の引数

FROM句は任意です。namespace、sid、またはdatamodelを指定できます。この句の詳細は「データの選択」を参照してくださ
い。

namespace
構⽂ :<string>
説明 :$SPLUNK_DB/tsidxstatsで、tsidxファイルの場所を定義します。Splunk Enterpriseをお持ちの場
合、indexes.confファイルのローカルバージョンを編集し、tsidxStatsHomePath属性を設定することでこの場所を設定でき
ます。『管理』マニュアルの「設定ファイルの編集⽅法」の⼿順を参照してください。

sid
構⽂ :sid=<tscollect-job-id>
説明 :tscollectサーチ(tsidxファイルを⽣成)のジョブID⽂字列。
datamodel
構⽂: datamodel=<data_model_name>.<root_dataset_name> [where nodename =
<root_dataset_name>.<...>.<target_dataset_name>]
説明: サーチしているルートデータセットの名前と連結されたデータモデル名。⼦データセットでフィルタリングする
場合は、データモデルのデータセット階層内の特定の⼦データセットをnodenameで参照するwhere句を使⽤する必要があ
ります。詳細は、「データの選択」を参照してください。

W HERE句の引数

WHERE句は任意です。この句はフィルターとして使⽤されます。サーチを指定したり、IN演算⼦でフィールドと⼀連の値を
指定したりできます。
<search-query>
フィルタリングするサーチ条件を指定します。
<field> IN (<value-list>)
fieldでは、サーチ結果に含める値のリストを指定します。

BY句の引数

BY句は任意です。tstatsコマンドで使⽤するBY句では、ワイルドカードは使⽤できません。「使⽤法」を参照してください。
BY句を使⽤する場合、field-listを指定する必要があります。spanを指定することもできます。

<field-list>
構⽂ :<field>, ...
説明 :1つ以上のフィールドを指定して結果をグループ化します。
PREFIX()
構⽂: PREFIX(<string>)
説明: 抽出されたフィールド/値ペアであるかのように分割に使⽤するインデックス済みイベントのrawセグメントを
指定します。PREFIX()の使い⽅と、インデックス済みデータでrawセグメントを探すためのサーチについては、「使⽤⽅
法」を参照してください。
span
構⽂: span=<timespan>
説明: 各時間ビンの範囲。BY句を使って_timeグループ化する場合は、span引数を使って時間バケツをグループ化しま

426
す。BY _time span=1hまたはBY _time span=5dなどのタイムスパンを指定できます。<timespan>を指定しない場合、デ
フォルトはautoであり、つまり合理的な数の結果を⽣成するために時間バケツの数が調整されることを意味します。た
とえば、当初は秒が<timespan>に使⽤されていて返される結果が多すぎる場合、<timespan>は分などの⻑い値に変
更され、より少ない時間バケツを返すようになります。
デフォルト: ⾃動
<timespan>
構⽂: auto | <int><timescale>
<timescale>
構⽂: <sec> | <min> | <hr> | <day> | <month>
説明 :タイムスケールの単位。tstatsコマンドでは、<timescale>は1秒未満をサポートしません。
デフォルト :sec

タイムスケールの単位 構⽂ 説明
<sec> s | sec | secs | second | seconds タイムスケール(秒)。

<min> m | min | mins | minute | minutes タイムスケール(分)。

<hr> h | hr | hrs | hour | hours タイムスケール(時)。

<day> d | day | days タイムスケール(⽇)。

<month> mon | month | months タイムスケール(⽉)。

使⽤法
tstatsコマンドは、prestats=trueである場合を除き、レポート⽣成コマンド となります。prestats=trueの場合、tstatsコマン
ドはイベント⽣成コマンド となります。「コマンドタイプ」を参照してください。
⽣成コマンドの先頭にはパイプ⽂字が付けられ、prestats=trueである場合を除いて、サーチの最初のコマンドである必要があ
ります。

ワイルドカード⽂字

tstatsコマンドは集計関数またはBY句のフィールド値でワイルドカード⽂字をサポートしません。

たとえば、| tstats avg(foo*)または| tstats count WHERE host=x BY source*を指定できません。

集計関数には、avg()、count()、max()、min()、sum()があります。詳細については「集計関数」を参照してください。

集計関数またはBY句がワイルドカード⽂字を含む場合に返される結果は、集計されていない直近数分間のデータだけです。
集計されたデータだけを返すにはsummariesonly=t引数をtstatsコマンドに含みます。

統計関数には名前付きフィールドが必要

countを除き、tstatsコマンドはフィールドまたはフィールドに解決されるeval式に適⽤される統計関数のみをサポートしま
す。たとえば、| tstats sumまたは| tstats sum()を指定できません。その代わりに、tstats構⽂では、最低1つのfield引数を必
要とします。| tstats sum(<field>)。

ネスト化されたeval式はサポートされない

tstatsコマンドでは、eval式を集計関数の内部で使⽤することはできません。

たとえば、| tstats count(eval(...))はサポートされません。

ネスト化されたeval式はstatsコマンドではサポートされますが、tstatsコマンドではサポートされません。

関数とメモリー使⽤量

メモリーの観点から⾒ると、いくつかの関数は他の関数よりも本質的に⾼価です。たとえば、distinct_count関数はcount関数
よりもはるかに多くのメモリーを必要とします。values関数とlist関数もまた多くのメモリーを消費する可能性があります。

スプリットバイ(split-by)フィールドを使⽤せずに、またはカーディナリティの低いカーディナリティ(split-by by)フィールド
を使⽤してdistinct_count関数を使⽤する場合は、distinct_count関数をestdc関数(推定個体数)で置き換えることを検討してく
ださい。estdc関数により、メモリー使⽤量と実⾏時間が⼤幅に低下する可能性があります。

PREF IX()を使⽤してインデックス済みデータのrawトークンで集計またはグループ化する

427
PREFIX()ディレクティブにより、インデックス済みデータのrawセグメントに対して、抽出されたフィールド/値ペアであるか
のようにサーチを実⾏できます。これにより、サーチはログ⾏ではなくインデクサーのtsidxファイルで実⾏されます。この
結果、インデクサーのCPU負荷を⼤幅に減らすことができます。

PREFIX()ディレクティブは、rawデータの⽂字列と⼀致するという点でCASE()ディレクティブやTERM()ディレクティブと似てい
ます。PREFIX()を使⽤することで、rawイベントデータで反復セグメント を特定できます。これは、実際には(=や:のような副
区切り⽂字でもある)区切り⽂字によって区切られているキー/値ペアです。PREFIX()に対して、値に先⾏するテキスト(プレ
フィックス)を指定すると、プレフィックスに続く値が返されます。これにより、これらの値によるグループ化が可能になり
ます。また、値が純粋な数値であれば、これらの値を集計できます。
たとえば、イベントデータにkbps=10やkbps=333のようなインデックス済みセグメントがあるとします。PREFIX()ディレクティ
ブを使⽤して、kbps=を共通のプレフィックス⽂字列として特定することにより、これらのセグメントの数値を分離して、集
計やグループ化を⾏うことができます。PREFIX(kbps=)と指定したtstatsサーチをイベントデータに対して実⾏する
と、10と333が返されます。これらのような数値は、tstats集計関数には最適です。

この例では、=区切り⽂字を含める必要がある点に注意してください。PREFIX(kbps)を実⾏すると、サーチは=10と=333を返しま
す。これらの結果は純粋な数値ではないため、集計することはできません。
Splunkソフトウェアは、データをインデックス処理するときに、segmenters.confで指定されているルールを使⽤して、イベン
トをrawセグメントに分割します。次のサーチを実⾏することで、インデックス済みイベントのrawセグメントを特定できま
す。
| walklex index=<target-index> type=term | stats sum(count) by term

PREFIX()ディレクティブは、セグメントのプレフィックスや、スペース、⾓括弧、中括弧、括弧、セミコロン、感嘆符などの
主区切り⽂字を含む値には適⽤できません。
CASE()ディレクティブとTERM()ディレクティブの詳細は、『サーチ』マニュアルの「CASE()とTERM()を使ったフレーズの照
合」を参照してください。
インデックス済みイベントのセグメント分割については、『データの取り込み』の「イベントのセグメント分割について」
を参照してください。

セグメントの主区切り⽂字と副区切り⽂字については、『サーチ』マニュアルの「イベントのセグメント分割とサーチ」を
参照してください。

メモリーとt st at sサーチパフォーマンス

limits.confの2つの設定により、tstatsサーチのパフォーマンスと、これらのコマンドがサーチプロセスで使⽤するメモリー
量(RAMとディスクスペース)のバランスを調整できます。tstatsサーチの完了に常に時間がかかる場合は、これらの設定を調
整することでパフォーマンスを⾼めることができますが、サーチ時のメモリー使⽤量が増えるため、サーチエラーの原因に
なることもあります。

Splunk Cloudを使⽤している場合、これらの設定を変更するにはサポートチケットの申請が必要です。
詳細は、『サーチ』マニュアルの「メモリーとstatsサーチパフォーマンス」を参照してください。

複雑な集計関数

tstatsコマンドは...count(eval('Authentication.action'=="failure"))などの複雑な集計関数に対応していません。

以下のクエリーを考慮します。複雑な集計関数はtstatsコマンドにより対応されていないため、このクエリーは正確な結果を
返しません。
| tstats summariesonly=false values(Authentication.tag) as tag, values(Authentication.app) as app,
count(eval('Authentication.action'=="failure")) as failure, count(eval('Authentication.action'=="success")) as success from
datamodel=Authentication by Authentication.src | search success>0 | where failure > 5 | `settags("access")` |
`drop_dm_object_name("Authentication")`

代わりに、以下のサーチに⽰すように、集計関数をeval関数から分離します。

| tstats `summariesonly` values(Authentication.app) as app, count from datamodel=Authentication.Authentication by


Authentication.action, Authentication.src | `drop_dm_object_name("Authentication")` | eval
success=if(action="success",count,0), failure=if(action="failure",count,0) | stats values(app) as app, sum(failure) as failure,
sum(success) as success by src

スパークライングラフ

tstatsコマンドのBY句で_timeフィールドを指定し、statsコマンドで実際のスパークラインを⽣成した場合にのみ、スパーク
ライングラフを作成できます。例:
428
| tstats count from datamodel=Authentication.Authentication BY _time, Authentication.src span=1h | stats
sparkline(sum(count),1h) AS sparkline, sum(count) AS count BY Authentication.src

選択されたデータ

tsidxファイルのインデックス作成されたフィールドに対して統計クエリーを実⾏するには、tstatsコマンドを使⽤します。イ
ンデックス作成されたフィールドのデータを選択するには複数の⽅法があります。
通常のインデックスデータ
FROM句を使⽤して名前スペース、サーチジョブID、またはデータモデルを指定します。FROM句を指定しない場合、
Splunkソフトウェアはsearchコマンドと同じ⽅法でインデックスデータを選択します。ユーザーロールで許可されたイ
ンデックスからデータを選択するように制限されています。WHERE句を使⽤することで、データを選択するインデッ
クスを正確に制御します。WHERE句にインデックスが指定されていない場合、Splunkソフトウェアはデフォルトのイ
ンデックスを使⽤します。デフォルトでは、ロールベースのサーチフィルターが適⽤されますが、limits.confファイル
でこれをオフにすることができます。
tscollectコマンドで⼿動収集されたデータ
FROM <namespace>を指定することでデータを名前空間から選択できます。tscollectコマンドに名前空間を指定しない場
合、データはそのジョブのdispatchディレクトリに収集されます。データがdispatchディレクトリにある場合、FROM
sid=<tscollect-job-id>を指定してデータを選択します。

⾼速化されたデータモデル
.tsidxデータサマリーの集合である、⾼性能分析ストアーから、⾼速化されたデータモデルのデータを選択できま
す。FROM datamodel=<data_model_name>.<root_dataset_name>を使⽤することでこの⾼速化されたデータモデルからデータを
選択できます。
tstatsサーチのデータモデルを選択する場合は、サーチするデータモデル内のルートデータセットを選択する必要があ
ります。データモデル内のすべてのルートデータセットを⼀度に選択することはできません。

サーチフィルターは⾼速化されたデータモデルには適⽤できません。これにはロールベースおよびユーザーベース両⽅
のサーチフィルターが含まれます。
⾼速化されたデータモデルの⼦データセット
⾼速化されたデータモデル内の⼦データセットからデータを選択できます。WHERE句を使⽤して、⼦データセット
のnodenameを指定します。nodename引数は、対象データセットがデータモデル階層のとこにあるかを⽰します。構⽂は次
のようになります。
...| tstats <stats-func> FROM datamodel=<data_model_name>.<root_dataset_name> where
nodename=<root_dataset_name>.<...>.<target_dataset_name>

たとえば、それぞれにデータセット階層がある、3つのルートデータセットを持つデータモデルがあるとします。

ButtercupGamesPromos
- NYC (BaseEvent)
- TShirtStore (NYC)
- FashionShows (TShirtStore)
- Giveaways (TShirtStore)
- Chicago (BaseEvent)
- BeerAndBrautsPopup (Chicago)
- BeerSales (BeerAndBrautsPopup)
- BrautSales (BeerAndBrautsPopup)
- Tokyo (BaseSearch)
- GiantRobotBattles (Tokyo)
- UFORobotGrendizer (GiantRobotBattles)
- MechaGodzilla (GiantRobotBattles)

この階層内で、東京オフィスで企画されたメカゴジラ(MechaGodzilla)ジャイアントロボットバトルのレコードを含む
データセットから選択するtstatsサーチを実⾏する場合、サーチは次のようになります。

... | tstats count FROM datamodel=ButtercupGamesPromos.Tokyo where nodename=Tokyo.GiantRobotBattles.MechaGodzilla

サーチフィルターは⾼速化されたデータモデルデータセットには適⽤できません。これにはロールベースおよびユー
ザーベース両⽅のサーチフィルターが含まれます。

tsidxファイルのサーチ時には、取得されたイベント内のカウントに不整合が⽣じることがあります。これは、tsidxファ
イル内のインデックス作成されたフィールドのトークンとrawトークンを区別することができないためです。⼀⽅、⾼
速化されたデータモデルに対して、またはtscollectコマンドからtstatsコマンドを実⾏すると、フィールドと値のみが
保管されており、rawトークンがないため、より明確な結果が得られます。

429
W HEREによるフィルタリング

実⾏する任意の数の集合(aggregate-opt)を指定できます。また、WHEREキーワードを使ってクエリーをフィルタリングする
ことができます。このクエリーは、サーチプロセッサー内で使⽤する標準のクエリーと似ています。これは、searchとすべ
て同⼀のサーチ引数をサポートしています(earliest=-1yなど)。

_t im eによるグループ化

任意の数のBYフィールドを指定できます。_timeでグループ化する場合は、時間バケツでグループ化するための期間をspanで
指定する必要があります。たとえば、...BY _time span=1hまたは...BY _time span=3dです。

t st at sとt sidxバケットの簡易化

tsidxバケットの簡易化が⾏われているインデックスに対してtstatsサーチを実⾏すると、正しくない結果が返されます。

詳細は、『インデクサーとインデクサークラスターの管理』の「tsidxディスク使⽤量を減らす」を参照してください。


例1:mydata名前空間内のすべてのイベント数を取得します。

| tstats count FROM mydata

例2:fooのmydataフィールドの平均を返します。barはvalue2で、bazは5より⼤きい値になります。

| tstats avg(foo) FROM mydata WHERE bar=value2 baz>5

例3:host=xのイベントに対して、ソース別カウントを与えます。
| tstats count WHERE host=x BY source

例4 :デフォルトのインデックス内のすべてのデータのタイムチャートを⽇単位の粒度で与えます。
| tstats prestats=t count BY _time span=1d | timechart span=1d count

例5:prestatsモードとappendモードを使って、異なる名前空間内に存在するfooとbarの中央値を算出します。
| tstats prestats=t median(foo) FROM mydata | tstats prestats=t append=t median(bar) FROM otherdata | stats median(foo)
median(bar)

例6:summariesonly引数を使って、⾼速化されたデータモデルmydmのサマリーの時間範囲を取得しています。

| tstats summariesonly=t min(_time) AS min, max(_time) AS max FROM datamodel=mydm | eval prettymin=strftime(min, "%c") | eval
prettymax=strftime(max, "%c")

例7 :summariesonlyとtimechartを使⽤して、⾼速化されたデータモデルmydmの、過去1時間にどのようなデータのサマリーが作
成されたかを表します。

| tstats summariesonly=t prestats=t count FROM datamodel=mydm BY _time span=1h | timechart span=1h count

例8: values統計関数を使⽤して、「Splunk's Internal Server Logs」データモデルにより返されるsourceのすべての異なる


値のリストを提供します。リストは複数値エントリとして返されます。

| tstats values(source) FROM datamodel=internal_server

結果はこのようになります。

values(so urce)
/Applications/Splunk/var/log/splunk/license_usage.log

/Applications/Splunk/var/log/splunk/metrics.log
/Applications/Splunk/var/log/splunk/metrics.log.1
/Applications/Splunk/var/log/splunk/scheduler.log
/Applications/Splunk/var/log/splunk/splunkd.log
/Applications/Splunk/var/log/splunk/splunkd_access.log

internal_serverデータモデルが定義されていない場合は、[ 設定] > [ データモデル] で、⾃分がアクセスできるデータモデル


のリストを確認してください。

430
例9: values統計関数を使⽤して、「Splunk's Internal Server Logs」データモデル内のアラートデータセットにより返され
るsourceのすべての異なる値のリストを提供します。

| tstats values(source) FROM datamodel=internal_server where nodename=server.scheduler.alerts

例10: PREFIX kbps=を使⽤してインデックス化されていないraw⽤語のカウントと平均を取得し、PREFIX group=を使⽤してイン


デックス済みソースと別のインデックスかされていない⽤語で分割します。
| tstats count avg(PREFIX(kbps=)) where index=_internal by source PREFIX(group=)

関連項⽬
コマンド
datamodel
stats
tscollect
walklex

t ypea h ea d
説明
指定されたプレフィックスの先⾏⼊⼒情報を返します。返される結果の最⼤数は、count引数に指定する値に基づきま
す。typeaheadコマンドはインデックスを対象として使⽤します。その動作を時間で制限できます。

構⽂
| typeahead prefix=<string> count=<int> [max_time=<int>] [<index=<string>] [<starttimeu=<int>]
[<endtimeu=<int>] [collapse=<bool>]

必須引数

prefix
構⽂ :prefix=<string>
説明 :typeahead情報を返すための、完全なサーチ⽂字列。

count
構⽂ :count=<int>
説明 :返す結果の最⼤数。

省略可能な引数

index-specifier
構⽂ :index=<string>
説明 :デフォルトインデックスではなく、指定されたインデックスをサーチします。
max_time
構⽂: :max_time=<int>
説明: :typeaheadを実⾏できる最⼤時間(秒)。max_time=0の場合、制限はありません。

startimeu
構⽂ :starttimeu=<int>
説明 :開始時間をUNIX時でN秒後に設定します。
デフォルト :0
endtimeu
構⽂ :endtimeu=<int>
説明 :終了時間をUNIX時でN秒後に設定します。
デフォルト :now

collapse
構⽂ :collapse=<bool>
説明 :他の単語のプレフィックスでイベントカウントが同じ単語を表⽰しないかどうかを指定します。
デフォルト :真(True)

使⽤法
typeaheadコマンドは⽣成コマンドで、サーチにおける最初のコマンドでなければなりません。⽣成コマンドでは、先頭のパイ
プ⽂字が使⽤されます。

Typeaheadおよびsourcet ypeの名前変更
431
props.confファイルのsourcetypeの名前を変更した後、キャッシュのデータが消去されるまで5分ほどかかります(正確な時間は
サーバーの性能によります)。キャッシュがクリアされているときにtypeaheadサーチを実⾏すると、キャッシュされている
ソースタイプデータが返されます。これは想定されている動作です。
キャッシュされているデータを削除するには、ターミナルウィンドウで以下のコマンドを実⾏します。

rm $SPLUNK_HOME/var/run/splunk/typeahead/*, then re-run the typeahead search.

typeaheadサーチを再度実⾏すると、名前が変更されたソースタイプが表⽰されます。

詳細は、『データの取り込み』マニュアルの「ソースタイプ名の変更」を参照してください。

先⾏⼊⼒とt sidxバケットの簡略化

tsidxバケットの簡易化が⾏われているインデックスに対してtypeaheadサーチを実⾏すると、正しくない結果が返されます。

詳細は、『インデクサーとインデクサークラスターの管理』の「tsidxディスク使⽤量を減らす」を参照してください。

例1:

インデックス「_internal」内のソースの先⾏⼊⼒情報を返します。
| typeahead prefix=source count=10 index=_internal

t ypel ea r ner
typelearnerコマンドは、Splunk
Enterpriseバージョン5.0から⾮推奨(廃⽌予定)となっています。つまり、このコマンドはま
だ利⽤できますが、将来のバージョンでは削除される可能性があることを意味しています。
代わりにfindtypesコマンドを使⽤してください。

説明
以前のサーチの結果から、推奨するイベントタイプを⽣成し、イベントタイプとして使⽤できるサーチのリストを作成しま
す。デフォルトで、typelearnerコマンドはgrouping-fieldの値に従って、最初にイベントをグループに分類します。そして、
含まれているキーワードに沿って分類されたグループをひとつに結合します。

構⽂
typelearner [<grouping-field>] [<grouping-maxlen>]

省略可能な引数

grouping-field
構⽂ :<field>
説明 :最初にイベントをグループ化するときに使⽤するtypelearnerコマンドのための値を持つフィールドです。
デフォルト :_rawで⾒られる句読点、punctです。

grouping-maxlen
構⽂ :maxlen=<int>
説明 :grouping-field値内で注⽬する⽂字数を指定します。負の値を設定すると、grouping-fieldの値全体がイベント
のグループ化に使⽤されます。
デフォルト :15

例1:

サーチはイベントタイプを⾃動的に発⾒し、サーチ結果に適⽤します。
... | typelearner

関連項⽬
typer
432
t yper
説明
既知のイベントタイプをもつサーチ結果の「eventtype」フィールドを計算します。

構⽂
typer [eventtypes=<string>] [maxlen=<unsigned_integer>]

省略可能な引数

eventtype
構⽂ :eventtype=<string>
説明: typerがeventtypeフィールドに戻すことのできるイベントタイプを絞り込むためのイベントタイプのカンマ区切り
リストを指定します。eventtypes引数は、リストで指定されている有効なイベントタイプ以外のすべてのイベントタイプ
を除外します。eventtypesで指定されたすべてのイベントタイプが無効であるか、イベントタイプが指定されていない
か、またはtyperが無効されている場合には、イベントタイプは何も返されません。eventtypes引数では、ワイルドカー
ドを使⽤できます。
デフォルト: デフォルトなし(デフォルトではtyperは利⽤可能なすべてのイベントタイプを返します)

maxlen
構⽂: maxlen=<unsigned_integer>
説明: デフォルトでは、typerコマンドは、イベントの最初の10000⽂字を⾒てイベントタイプを判断します。このデ
フォルトを上書きするには、maxlenを使⽤します。たとえば、maxlen=300と指定すると、typerはイベントの最初の300⽂
字を⾒てイベントタイプを判断します。

使⽤法
typerコマンドは、分散可能ストリーミングコマンドです。「コマンドタイプ」を参照してください。

m axlenのデフォルト設定の変更

システム管理者など、ファイルシステムにアクセスできるユーザーであれば、maxlenのデフォルト設定を変更できます。

前提条件

システム管理者など、ファイルシステムにアクセスできるユーザーのみが、設定ファイルを使⽤してmaxlenのデフォル
ト設定を変更できます。
Splunk Enterpriseの『管理』マニュアルの「設定ファイルの編集⽅法」の⼿順を確認してください。
同名の設定ファイルを、default、local、およびappディレクトリに保管できます。Splunk Enterpriseの『管理』マ
ニュアルの「変更した設定ファイルの保管場所」を参照してください。
defaultディレクトリにある設定ファイルは、決して変更もコピーもしないでください。defaultディレクトリ内のファイルは
そのまま保持して元の位置にある必要があります。ファイルの変更はローカルディレクトリで⾏ってください。
⼿順
1. $SPLUNK_HOME/etc/apps/search/localで、サーチAppのローカルlimits.confファイルを開くか、または作成します。
2. Under the [typer] stanza, specify the default for the maxlen setting.

Splunk Cloudを使⽤していて、デフォルト設定を変更したい場合は、サポートチケットを開いてください。

例1:

サーチが設定されているイベントタイプを強制的に適⽤するようにします(「eventtype」フィールドを参照した時に、
Splunk Webは⾃動的にこれを⾏います)。
... | typer

関連項⽬
コマンド
typelearner

433
UN I ON
説明
2つかそれ以上のデータセットからの結果を1つのデータセットに統合します。データセットのうちの1つが結果のセット
で、unionコマンドに渡され、第⼆のデータセットと結合します。

unionコマンドは、データセットがストリーミングか否か、さらにコマンドがどこで実⾏されているかに応じて、指定された
データセットからのイベントに追加または結合します。unionコマンドは可能な場合はインデクサーで平⾏に実⾏され、イベ
ント処理の際に⾃動的に_timeに交互配置されます。「使⽤法」を参照してください。

SQLを理解していてSPLを初めて使う場合は、「SQLユーザー向けのSplunk SPL」を参照してください。

構⽂
太字 は必須構⽂です。
UNION
[<subsearch-options>]
<dat aset >
[<dataset>...]

必須引数

データセット
構⽂ :<dataset-type>:<dataset-name> | <subsearch>
説明 :unionで実⾏したいデータセット。データセットは名前のある、または名前がないデータセットのいずれかで
す。
名前のあるデータセットは以下から構成されています<dataset-type>:<dataset-name>.<dataset-type>につい
ては、データモデル 、保存済みサーチ 、またはinputlookupを指定できます。たとえ
ば、datamodel:"internal_server.splunkdaccess"です。
サブサーチは名前のないデータセットです。
1つ以上のデータセットを指定する場合は、データセット名の間に空欄またはカンマ区切りを使⽤します。

省略可能な引数

subsearch-options
構⽂ :maxtime=<int> maxout=<int> timeout=<int>
説明 :すべてのサブサーチに適⽤する⼀連のサブサーチオプションを指定できます。1つ以上のサブサーチオプション
を指定することができます。これらのオプションは、サブサーチが⾮ストリーミングサーチとして扱われる場合にのみ
適⽤されます。
maxtime引数は、最終化前にサブサーチを実⾏する最⼤秒数を指定します。デフォルトは60秒となっています。
maxout引数はサブサーチから返す結果の最⼤数を指定します。デフォルトは50000結果です。この値
はmaxresultrows設定で、limits.confファイルの[searchresults]スタンザです。
timeout引数はサブサーチ結果をキャッシュする最⼤時間を秒で指定します。デフォルトは300秒となっていま
す。

使⽤法
The unionコマンドは⽣成コマンド です。

unionコマンドのデータセットの処理⽅法は、データセットがストリーミングデータセットか、⾮ストリーミングデータセッ
トかによって異なります。データセットのタイプは、データセットの作成に使⽤されるコマンドによって決まります。「コ
マンドの種類」を参照してください。

分散可能ストリーミングと集中ストリーミングの2種類のストリーミングコマンドがあります。unionコマンドに関するこの説
明では、ストリーミングデータセットは分散可能ストリーミングを表しています。

コマンド実⾏場所

データセットがストリーミングかそうでないかによって、unionコマンドがインデクサーまたはサーチヘッドで実⾏されるか
が決まります。以下のテーブルはコマンドの実⾏箇所を指定します。

データセットタイプ データセット1はス データセット1は⾮ス


トリーミングです。 トリーミングです。
データセット2はスト
434
データセット2はスト インデクサー サーチヘッド
リーミングです。

データセット2は⾮ス サーチヘッド サーチヘッド


トリーミングです。

コマンドの処理⽅法

データセットのタイプによって、unionコマンドの処理⽅法も決まります。

データセットタイプ 処理への影響

集中ストリーミングまたは⾮ストリーミング appendコマンドとして処理されます。

multisearchコマンドとして処理されます。

分散可能ストリーミング
unionコマンドの後に<streaming_dataset1>を配置すると、より効率的になります。

ストリーミングデータセット⽤に最適化された構⽂

ストリーミングデータセットでは、この構⽂の代わりに:

<streaming_dataset1> | union <streaming_dataset2>

サーチはこの構⽂でさらに効率よくなります。

... | union <streaming_dataset1>, <streaming_dataset2>

結合された結果が切り詰められることがある理由

unionコマンドを使⽤して、3つのインデックスのイベントを結合する以下のサーチを考えます。各インデックスには60,000
件のイベントが含まれ、合計は180,000件になります。

| union maxout=10000000 [ search index=union_1 ] [ search index=union_2 ] [ search index=union_3 ] | stats count by index

このサーチを実⾏すると、以下の結合結果が⽣成されます。

インデックス co unt
union_1 60000

union_2 60000

union_3 60000

この例では、すべてのサブサーチが分散可能ストリーミングであるため、multisearchコマンドと同じ処理を使⽤して結合され
ます。各インデックスの60,000件のすべての結果が結合され、結合されたイベントの合計は180,000件になります。
ただし、いずれかのサブサーチで集中ストリーミングコマンド(headコマンドなど)を指定する場合、結果が変わります。

| union maxout=10000000 [ search index=union_1 | head 60000] [ search index=union_2 ] [ search index=union_3 ] | stats count by
index

このサーチを実⾏すると、以下の結合結果が⽣成され、結合されたイベントの合計は160,000件になります。

インデックス co unt
union_1 60000

union_2 50000

union_3 50000

headコマンドは、分散可能ストリーミングコマンドではなく集中ストリーミングコマンドであるため、headコマンドに続くサ
ブサーチはappendコマンドを使⽤して処理されます。つまり、コマンドによって強制的にサーチヘッドで処理が実⾏される
435
と、後続のすべてのコマンドもサーチヘッドで処理されます。
このサーチは、内部的に以下のように変換されます。
| search index=union_1 | head 60000 | append [ search index=union_2 ] | append [ search index=union_3 ] | stats count by index

unionコマンドが⾮ストリーミングコマンドとともに使⽤される場合、maxout引数のデフォルトが適⽤されます。maxout引数の
デフォルトのイベント数は50,000です。この例では、⾮ストリーミングコマンドを使⽤したサブサーチからmaxout引数のデ
フォルトが適⽤されます。このデフォルトは、後続のすべてのサブサーチに適⽤されます。
⾮ストリーミングコマンドが最後のサブサーチにある場合、最初の2つのサブサーチはストリーミングとして処理されます。
これらのサブサーチは、multisearchコマンドの処理を使⽤して結合されます。最後のサブサーチには、⾮ストリーミングコマ
ンド(headコマンド)が含まれています。そのサブサーチは、appendコマンドの処理を使⽤して結合されます。

このサーチは、内部的に以下のように変換されます。
| multisearch [ search index=union_1 ] [ search index=union_2 ]| | append [ search index=union_3 | head 60000 ] | stats count
by index

この例では、maxout引数のデフォルトが最後のサブサーチにのみ適⽤されます。そのサブサーチは、60,000件のイベントセッ
ト全体ではなく50,000件のイベントのみを返します。結合されたイベントの合計数は170,000件です。最初と2番⽬のサブ
サーチのイベントが60,000件、最後のサブサーチのイベントが50,000件です。

結果の交互配置

2つのデータセットが、デフォルトの並び替え順である時間の降順にディスクから取得されると、unionコマンドは結果を相互
配置します。相互配置は_timeフィールドに基づきます。たとえば、以下のデータセットがあるとします。

dat aset _A

_t im e ホスト バイト
4 mailsrv1 2412

1 dns15 231

dat aset _B

_t im e ホスト バイト
3 router1 23

2 dns12 22o

両⽅のデータセットは_time順に並び替えられます。| union dataset_A, dataset_Bが実⾏されると、以下のデータセットが結果


です。

_t im e ホスト バイト
4 mailsrv1 2412

3 router1 23

2 dns12 22o

1 dns15 231


1.2つのサブサーチからのイベントの結合

以下の例はindex aおよびindex bからのイベントを結合します。新規フィールドtypeおよびmytypeはevalコマンドを使⽤して各


サブサーチに追加されます。
| union [search index=a | eval type = "foo"] [search index=b | eval mytype = "bar"]

2.サブサーチの結果をメインサーチの結果と結合する

436
以下の例はメインサーチからの現在の結果を、サブサーチからのエラー結果に追加します。
... | chart count by category1 | union [search error | chart count by category2]

3.データモデルからのイベントとインデックスからのイベントを結合する

以下の例はREST API呼び出しの内部サーバーログである内蔵データモデルとindex aからのイベントを組み合わせます。

... | union datamodel:"internal_server.splunkdaccess" [search index=a]

4.サブサーチオプションを指定する

以下の例ではサブサーチから返す最⼤20,000結果を設定します。この例はサブサーチの持続制限を120秒に指定します。こ
の例はまた、サブサーチ結果をキャッシュする最⼤時間を600秒(5分)に設定しています。
... | chart count by category1 | union maxout=20000 maxtime=120 timeout=600 [search error | chart count by category2]

関連項⽬
関連情報
『サーチリファレンス』マニュアルの「サブサーチ」
『ナレッジ管理』マニュアルの「データモデルについて」
コマンド
search
inputlookup

u niq
説明
uniqコマンドはサーチ結果のフィルターです。このコマンドは、サーチ結果が⽬のサーチ結果と重複する場合、それを除外し
ます。このコマンドは引数を取りません。
⼤きなデータセットに対してこのコマンドを実⾏することはお勧めしません。

構⽂
uniq

例1:

過去1時間のすべてのWebトラフィックから⼀意の結果のみを保持します。
eventtype=webtraffic earliest=-1h@s | uniq

関連項⽬
dedup

u nt a bl e
説明
結果を、表形式からstats出⼒に似た形式に変換します。このコマンドはxyseriesコマンドと逆の処理を⾏います。

構⽂

untable <x-field> <y-name-field> <y-data-field>

必須引数

<x-field>
構⽂ :<field>
437
説明 :x-軸のフィールド。
<y-name-field>
構⽂ :<field>
説明 :データシリーズのラベルとして使⽤する値を含むフィールド。

<y-data-field>
構⽂ :<field>
説明 :グラフ化するデータを持つフィールド

使⽤法
untableコマンドは、分散可能ストリーミングコマンドです。「コマンドタイプ」を参照してください。

フィールド値が重複している結果

結果を表形式から変換する場合にxyseriesコマンドを使⽤して結果を組み合わせると、値が重複している結果は削除されま
す。
streamstatsコマンドを使⽤すると、⼀意のレコード番号を作成して、すべての結果を残すことができます。「その他の例」を
参照してください。

基本的な例

この例では、サーチチュートリアルのサンプルデータセットを使⽤しています。Splunkインスタンスでこの例を試すには、サンプルデータをダウン
ロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。サーチを実⾏するときは、時間範囲として[全時間] を使⽤し
ます。

untableコマンドの使い⽅を⽰すために、表形式で表⽰される結果が必要です。次のサーチを実⾏します。

sourcetype=access_* status=200 action=purchase | top categoryId

結果は、以下のような内容で[統計]タブに表⽰されます。

cat ego ryId co unt ⽐率


STRATEGY 806 30.495649

ARCADE 493 18.653046

TEE 367 13.885736

ACCESSORIES 348 13.166856

SIMULATION 246 9.307605

SHOOTER 245 9.269769

SPORTS 138 5.221339

topコマンドは⾃動的にカウントとパーセントのフィールドを結果に追加します。

各categoryIdに対して、カウントとパーセントの2つの値があります。これらの結果の表形式を解除すると、出⼒には3つの
列が残ります。
最初の列は、カテゴリIDです。
2番⽬の列は計算の種類(カウントまたはパーセント)です。
3番⽬の列は各計算の値です。
untableコマンドで表形式の結果を変換する場合は、categoryIdフィールドを最初に指定する必要があります。計算の種類と
値のフィールドにはどのような名前を付けても構いません。例:
sourcetype=access_* status=200 action=purchase | top categoryId | untable categoryId calculation value

結果は、以下のような内容で[統計]タブに表⽰されます。

cat ego ryId calculat io n value


STRATEGY count 806

STRATEGY ⽐率 30.495649

438
ARCADE count 493

ARCADE ⽐率 18.653046

TEE count 367

TEE ⽐率 13.885736

ACCESSORIES count 348

ACCESSORIES ⽐率 13.166856

SIMULATION count 246

SIMULATION ⽐率 9.307605

その他の例:
untableコマンドは、その名前が⽰すように、表形式の情報を個別の結果⾏に変換します。次のようなサーチがあるとしま
す。
...| table _time EventCode Message

このサーチは次の結果を返します。

_t im e Event Co de メッセージ
date-time1 4136 Too late now

date_time2 1234 I dont know


date_time3 3456 Too busy, ask again later
date_time4 1256 Everything is happening at once
date_time4 1257 And right now, as well

このイベントセットでは、date_time4の_timeフィールドに重複する値があります。この点については後ほど説明します。

untableコマンドを使⽤して表形式を解除します。

...| untable _time FieldName FieldValue

untableコマンドの結果は次のようになります。

_t im e F ieldNam e F ieldValue

date-time1 EventCode 4136

date-time1 メッセージ Too late now

date_time2 EventCode 1234

date-time2 メッセージ I dont know

date_time3 EventCode 3456

date-time3 メッセージ Too busy, ask again later

date_time4 EventCode 1256

date-time4 メッセージ Everything is happening at once

date_time4 EventCode 1257

date-time4 メッセージ And right now, as well

タイムスタンプが重複するイベント

この例の元のイベントセットではdate_time4重複する値がありました。イベントを何らかの⽅法で処理してから元のイベント
セットに戻す場合は、streamstatsコマンドを使えば、重複するイベントを排除せずに済みます。
439
streamstatsコマンドは、各イベントに⼀意のレコード番号を付与し、その番号をuntableコマンドとxyseriesコマンドのキー
フィールドとして使⽤します。
たとえば、次のようにstreamstatsコマンドを元のサーチに追加します。

...| table _time EventCode Message | streamstats count as recno

このサーチは次の結果を返します。

_t im e Event Co de メッセージ recno


date-time1 4136 Too late now 1

date_time2 1234 I dont know 2

date_time3 3456 Too busy, ask again later 3

date_time4 1256 Everything is happening at once 4

date_time4 1257 And right now, as well 5

そしてrecnoを<x-field>として使⽤することで、サーチにuntableコマンドを追加します。

...| table _time EventCode Message | streamstats count as recno | untable recno FieldName FieldValue

このサーチは次の結果を返します。

recno F ieldNam e F ieldValue

1 EventCode 4136

1 メッセージ Too late now

2 EventCode 1234

2 メッセージ I dont know

3 EventCode 3456

3 メッセージ Too busy, ask again later

4 EventCode 1256

4 メッセージ Everything is happening at once

4 EventCode 1257

4 メッセージ And right now, as well

これらのイベントは、xyseriesコマンドで同じくrecnoフィールドを<x-field>として使⽤することで、元に戻すことができま
す。例:
...| xyseries recno FieldName FieldValue

このサーチは次の結果を返します。

recno Event Co de メッセージ


1 4136 Too late now
2 1234 I dont know

3 3456 Too busy, ask again later


4 1256 Everything is happening at once
5 1257 And right now, as well

タイムスタンプの復元

streamstatsコマンドを使⽤してレコード番号を⽣成する以外に、renameコマンドを使⽤して、xyseriesコマンドの実⾏後にタイ

440
ムスタンプ情報を復元することができます。例:
...| table _time EventCode Message | streamstats count as recno | rename _time as time | untable recno FieldName FieldValue |
xyseries recno FieldName FieldValue | rename time as _time

(この例でご協⼒いただいたSplunkユーザーのDalJeanisさんとBigCostaさんに感謝の意を表明します。)

関連項⽬
xyseries

w a l kl ex
説明
イベントインデックスの各バケツから⽤語やインデックス済みフィールドのリストを⽣成します。結合された⽤語⽬録ファ
イルまたは単⼀のtsidxファイルを持つウォームバケツにのみ適⽤されます。
merged_lexicon.lexファイルと.tisidxファイルの内容は⼀定しないため、walklexは常に⼀貫した結果を返すことはありませ
ん。

構⽂
太字 は必須構⽂です。
| walklex
[ type=<walklex-type> ]
[ prefix=<string> | pattern=<wc-string> ]
<index-list >
[ splunk_server=<wc-string> ]
[ splunk_server_group=<wc-string> ]...

必須引数

<index-list>
構⽂: index=<index-name> index=<index-name> ...
説明: サーチを1つ以上のインデックスに限定します。たとえば、index=_internalです。

省略可能な引数

prefix | pattern
構⽂: prefix=<string> | pattern=<wc-string>
説明: 結果を特定のパターンまたはプレフィックスに⼀致する⽤語に限定します。プレフィックスまたはパターンのど
ちらかを指定できますが、両⽅は指定できません。merged_lexiconファイルまたは単⼀のtsidxファイルを持つウォー
ムバケツのみを含みます。つまり、⼀般にホットバケツは含まれません。
デフォルト: pattern=*
splunk_server
構⽂ :splunk_server=<wc-string>
説明 :結果を返す分散サーチピアーを指定します。
Splunk Cloudを使⽤している場合、このパラメーターを削除します。
Splunk Enterpriseを使⽤している場合、splunk_server引数は1つのみ指定できます。ただし複数のサーバーを⽰
すためにサーバー名を指定するときは、ワイルドカードを使⽤できます。たとえば、splunk_server=peer01また
はsplunk_server=peer*を指定することができます。サーチヘッドを参照するにはlocalを使⽤します。

デフォルト: 設定されているすべてのサーチピアーが情報を返します。

splunk_server_group
構⽂: splunk_server_group=<wc-string>
説明 :結果を1台以上のサーバーグループに制限します。似たような名前の複数のサーバーグループを指定する⽂字列
にワイルドカードを指定できます。Splunk Cloudを使⽤している場合、このパラメーターを削除します。
デフォルト :なし
type
構⽂: type = ( all | field | fieldvalue | term )
説明: ⽤語⽬録のどの⽤語タイプを返すのかを指定します。type引数オプションの使い⽅については「使⽤法」を参照
してください。
fieldを使⽤すると、各インデックスバケットの⼀意のフィールド名のみが返されます。
fieldvalueを使⽤すると、インデックス済みのフィールド⽤語のみが含まれます。

441
termを使⽤すると、「<field>::<value>」形式のインデックス済みフィールド⽤語がすべて除外されます。

デフォルト: all

使⽤法
walklexコマンドは⽣成コマンド で、先頭がパイプ⽂字になります。walklexコマンドは、サーチで最初のコマンドである必要
があります。「コマンドタイプ」を参照してください。
Splunkソフトウェアがイベントデータをインデックス処理するときは、segmenters.confファイルで指定されているルールを使
⽤して各イベントをrawトークンにセグメント分割します。最終的なrawトークンは、等号(=)などの任意の区切り⽂字で区切
られたキー/値ペアになることがあります。

以下のサーチでは、walklexコマンドとwhereコマンドを使⽤してインデックスでrawトークンを探します。また、statsコマン
ドを使⽤してrawトークンをカウントします。
| walklex index=<target-index> | where NOT like(term, "%::%") | stats sum(count) by term

インデックス済みのフィールド名のみを返す

type=field引数を指定すると、walklexはインデックス済みフィールドからフィールド名のみを返します。

walklexが返すインデックス済みフィールドとしては、host、source、sourcetypeなどのデフォルトフィールドや、date_*フィー
ルド、punctなどがあります。また、props.confやtransforms.confで設定されている追加のインデックス済みフィールド、さら
にはINDEXED_EXTRACTIONS設定や他のWRITE_METAメソッドで作成されているインデックス済みフィールドも返されます。これらの
追加のインデックス済みフィールドを検出することで、サーチを⾼速化することができます。

インデックス済み値を持つインデックス済みフィールドである⽤語のセットを返す

type=fieldvalue引数を指定すると、walklexは、インデックス済み値を持つインデックス済みフィールドである⽤語のセットを
インデックスから返します。

type=fieldvalue引数は、インデックス済み値を持つインデックス済みフィールドである⽤語のリストをインデックスから返し
ます。フィールド名⾃⾝のみを返すtype=field引数とは異なり、type=fieldvalue引数はフィールド値を持つインデックス済み
フィールドの名前を返します。
たとえば、インデックス済みフィールド⽤語がruntime::0.04である場合、type=fieldvalue引数によって返される値
はruntime::0.04になります。type=field引数によって返される値はruntimeになります。

インデックス済みフィールド構造の⼀部ではないすべてのTSIDXキーワードを返す

type=termと指定すると、walklexはインデックス済みフィールド構造の⼀部ではないTSIDXファイルからキーワードを返しま
す。つまり、<field>::<value>形式のインデックス済みフィールド⽤語はすべて除外されます。

3つすべてのタイプの⽤語を返す

タイプを指定しないか、またはtype=allと指定すると、walklexはデフォルトのtype=all引数を使⽤します。これによ
り、walklexはfield、fieldvalue、termの3つすべてのタイプのインデックスの⽤語を返します。

type=allと指定した場合は、インデックス済みフィールドがtype=field引数とは異なる⽅法で返されます。⽤語フィールド
を::で分割することによって、インデックス済み⽤語からフィールド値を取得する必要があります。

制限

walklexコマンドは、イベントインデックスにのみ適⽤されます。メトリックスインデックスでは使⽤できません。

サーチフィルター を1つ以上のロール に適⽤している場合は、さらにrun_walklex権限またはadmin_all_objects権限が付与


されたロールも持っていなければwalklexを使⽤することはできません。ロールベースのサーチフィルターについて
は、『Splunk Enterpriseのセキュリティ』の「Splunk Webを使ったロールの作成と管理」を参照してください。ロール
ベースの権限については、『Splunkプラットフォームのセキュリティ』の「権限を持つロールのSplunkプラットフォームで
の定義」を参照してください。

基本的な例

1:特定のバケツ内の各⽤語の合計数を返す

以下の例では、インデックスが「_internal」の各バケットから⽤語をすべて返し、各⽤語の合計数を特定します。

442
| walklex index=_internal | stats sum(count) BY term

2:複数インデックスの指定

次の例では、インデックスが「_internal」と「_audit」のバケットから「foo」で始まるすべての⽤語を返します。

| walklex prefix=foo index=_internal index=_audit

3.パターンを使⽤して、インデックス済みフィールドの⽤語を特定する

以下の例は、「_internal」インデックスの各バケットで「bar」で終わるすべてのインデックス済みフィールド⽤語を返しま
す。
| walklex pattern=*bar type=fieldvalue index=_internal

4.インデックス済みフィールドのすべてのフィールド名を返す

次の例は、「_audit」インデックスの各バケットで、インデックス済みフィールドのすべてのフィールド名を返します。

| walklex type=field index=_audit

関連項⽬
コマンド
metadata
tstats

w h er e
説明
whereコマンドはeval式を使ってサーチ結果をフィルタリングします。これらのeval式は、真(True)または偽(False)を返す論
理式でなければなりません。whereコマンドは、eval式が真(True)を返す結果のみを返します。

構⽂
where <eval-expression>

必須引数

eval式
構⽂ :<eval-mathematical-expression> | <eval-concatenate-expression> | <eval-comparison-expression> |
<eval-boolean-expression> | <eval-function-call>
説明 :宛先フィールドの値を表す、値、変数、演算⼦、および関数の組み合わせ。「使⽤法」を参照してください。

サーチの実⾏前にeval式の構⽂がチェックされ、無効な式の場合には例外が⽣成されます。
以下のテーブルは特殊な扱いが必要なeval式の特徴を説明しています。

式の特徴 説明 例

'5minutes'="late"

数値で始まるフィールド 式が数値で始まるフィールド名を参照する場合、フィールド名を単⼀ この式は、⽂字列値と等しいフィールド


名 引⽤符で囲む必要があります。 名です。フィールドは先頭が数値である
ため、⼀重引⽤符で囲む必要がありま
す。値は⽂字列なので、⼆重引⽤符で囲
む必要があります。

new=count+'server-1'

英数字以外のフィールド 英数字以外の⽂字を含むフィールド名を式が参照する場合は、それを この式は、ダッシュがマイナス記号と⾒


なされて数式として解釈されてしまうこ
名 単⼀引⽤符で囲む必要があります。 とがあります。これを回避するため、
フィールド名server-1を⼀重引⽤符で囲
む必要があります。

new="server-"+count

443
この例には問題があります。server-が
式がリテラル⽂字列を参照する場合は、リテラル⽂字列を⼆重引⽤符 フィールド名として、またはマイナス記
リテラル⽂字列 号とプラス記号を使⽤する数式の⼀部と
で囲む必要があります。
して解釈される可能性があるという点で
す。server-がリテラル⽂字列として解
釈されるようにするには、⽂字列を⼆重
引⽤符で囲みます。

使⽤法
whereコマンドは、分散可能ストリーミングコマンドです。「コマンドタイプ」を参照してください。

whereコマンドは、evalコマンドと同じ式構⽂を使⽤します。また両⽅のコマンドが、引⽤符で囲まれた⽂字列をリテラルと解
釈します。引⽤符で囲まれていない⽂字列はフィールド名として取り扱われます。このため、whereコマンドを使っ
て、searchコマンドではできない2つの異なるフィールドを⽐較することができます。

コマンド 例 説明

where ... | where foo=bar このサーチは、fooフィールドが⽂字列値barと等しいイベントを探します。

サーチ | search foo=bar このサーチは、fooフィールドが⽂字列値barを含むイベントを探します。

where ... | where foo="bar" このサーチは、fooフィールドが⽂字列値barを含むイベントを探します。

論理演算式

whereコマンドでの論理演算式の評価順序は、以下のとおりです。

1. 括弧内の式
2. NOT句
3. AND句
4. OR句

この評価順序は、searchコマンドで使⽤される順序とは異なります。searchコマンドは、AND句の前にOR句を評価します。

whereコマンドでのワイルドカードの使⽤

ワイルドカードを指定できるのは、whereコマンドでlike関数を使⽤した場合のみです。パーセント( % )記号は、like関数のワ
イルドカードとして使⽤します。「like()評価関数」を参照してください。

関数

whereコマンドでは、多くの評価関数を使⽤できます。関数の使⽤についての説明は、「評価関数」を参照してください。

カテゴリ別の評価関数のリストは、「関数のカテゴリ別リスト」を参照してください。
アルファベット順の評価関数のリストは、「関数のアルファベット順リスト」を参照してください。


1.whereコマンドでワイルドカードを指定する

ワイルドカードを指定できるのは、whereコマンドでlike関数を使⽤した場合のみです。パーセント( % )記号は、like関数のワ
イルドカードとして使⽤する必要があります。whereコマンドは、ipaddressが198.で始まる場合にlike=TRUEを返します。

... | where like(ipaddress, "198.%")

2.whereコマを使⽤してIPアドレスまたはサブネットと⼀致させる

IPが⼀致するか、または指定したサブネット内に存在する「CheckPoint」イベントを返します。

host="CheckPoint" | where like(src, "10.9.165.%") OR cidrmatch("10.9.165.0/25", dst)

444
3.whereコマンド式で計算を指定する

速度が100より⼤きい「physicjobs」イベントを返します。
sourcetype=physicsjobs | where distance/time > 100

関連項⽬
eval、search、regex

x1 1
説明
x11コマンドは、データの実際の傾向を確認できるように、時間ベースのデータシリーズのシーズン的パターンを除外しま
す。このコマンドの⽬的は、trendlineコマンドと似ていますが、より洗練されて業界に普及しているX11⼿法を採⽤してい
ます。
時系列データの季節コンポーネントは追加的または乗法的のいずれかである場合があり、x11で計算できる2種類のシーズナ
リティとして定義されます:追加的にはadd()、乗法的にはmult()。『サーチマニュアル』の「時系列予測について」を参照し
てください。

構⽂
x11 [<type>] [<period>] (<fieldname>) [AS <newfield>]

必須引数

<fieldname>
構⽂ :<field>
説明 :シーズン的な傾向を計算するフィールド名。

省略可能な引数

<type>
構⽂ :add() | mult()
説明 :計算するx11のタイプを指定します(加法的または乗法的)。
デフォルト: mult()
<period>
構⽂ :<int>
説明 :データポイント数と相対的なデータの期間で、5〜1000の範囲の整数として表されます。periodが7の場合、コ
マンドはデータの周期を7データポイントと想定します。このパラメーターを削除すると、期間は⾃動で計算されま
す。周期が5未満の場合このアルゴリズムは機能しません。また、1000を超えると、処理が極端に遅くなります。
<newfield>
構⽂ :<string>
説明: x11コマンドの出⼒のフィールド名を指定します。
デフォルト :なし


例1: この例では、タイプはデフォルトのmultで期間は15です。指定されたフィールド名はcountです。

index=download | timechart span=1d count(file) as count | x11 mult15(count)

Span=1dであるため、すべてのデータポイントは1⽇で作成されます。そのため、この例では周期は15⽇になります。multタ

445
イプはデフォルトタイプであるため、この例の構⽂を... | x11 15(count)に変更できます。

例2: この例では、タイプはaddで期間は20です。指定されたフィールド名はcountです。

index=download | timechart span=1d count(file) as count | x11 add20(count)

関連項⽬
predict、trendline

xml kv
説明
xmlkvコマンドは、XML形式のデータから⾃動的にキー/値ペアを抽出します。

JSON形式データの場合、spathコマンドを使⽤します。

構⽂
太字 は必須構⽂です。

xm lkv
[<field>]
maxinputs=<int>

必須引数

無し。

省略可能な引数

field
構⽂ :<field>
説明: キー/値ペアを抽出するフィールド。
デフォルト: _rawフィールド。

maxinputs
構⽂ :maxinputs=<int>
説明: xmlkvコマンドへの⼊⼒として使⽤するイベントまたはサーチ結果の最⼤数。
デフォルト :50000

使⽤法
xmlkvコマンドは、分散可能ストリーミングコマンドです。「コマンドタイプ」を参照してください。

XML要素のキーと値

次のXMLでは、最初の要素のキーはnameで値はSettlers of Catanです。

<game>
<name>Settlers of Catan</name>
<category>competitive</category>
</game>
<game>

446
<name>Ticket to Ride</name>
<category>competitive</category>
</game>

1.⾃動的にキー/値ペアを抽出する

_rawフィールドのXMLタグからキー/値ペアを抽出します。最⼤50000件のイベントを処理します。

... | xmlkv

2.特定数のキー/値ペアを抽出する

最初の10,000イベントからキー/値のペアを抽出します。
... | xmlkv maxinputs=10000

関連項⽬
コマンド
extract
kvform
multikv
rex
spath
xpath

xml u nesca pe
説明
&、<、>、といったエンティティへ参照など、xml⽂字を解除し、対応する元の⽂字に戻します。たとえば、&amp;は&になり
ます。

構⽂
xmlunescape maxinputs=<int>

必須引数

maxinputs
構⽂ :maxinputs=<int>
説明: ⼊⼒の最⼤数。


例1:すべてのXML⽂字のエスケープを解除します。
... | xmlunescape

xpa t h
説明
fieldからxpathの値を抽出して、outfield属性を設定します。

構⽂

xpath [outfield=<field>] <xpath-string> [field=<field>] [default=<string>]

必須引数

xpath-string
構⽂ :<string>
説明 :XPath参照を指定します。

447
省略可能な引数

field
構⽂ :field=<field>
説明 :参照するxpathの値を検索して抽出するフィールド。
デフォルト :_raw

outfield
構⽂ :outfield=<field>
説明 :xpathの値を書き込む(出⼒する)フィールド。
デフォルト :xpath

default
構⽂ :default=<string>
説明 :xpathで参照されている属性が存在しない場合に、outfieldに書き込む値を指定します。これが指定されていない
場合、デフォルト値はありません。

使⽤法
xpathコマンドは、分散可能ストリーミングコマンドです。「コマンドタイプ」を参照してください。

xpathコマンドは、『Python標準ライブラリ』の「19.7.2.2.サポートされるXPath構⽂」に記載されている構⽂をサポートし
ます。

1. _raw XMLイベントの単⼀の要素から値を抽出する

_raw XMLイベントの単⼀の要素から値を抽出して、特定のフィールドにこれらの値を書き込みたいとします。

_raw XMLイベントは次のようになります。

<foo>
<bar nickname="spock">
</bar>
</foo>
<foo>
<bar nickname="scotty">
</bar>
</foo>
<foo>
<bar nickname="bones">
</bar>
</foo>

nickname値を_raw XMLイベントから抽出します。これらの値をnameフィールドに出⼒します。

sourcetype="xml" | xpath outfield=name "//bar/@nickname"

2. _raw XMLイベントから複数の値を抽出する

_raw XMLイベントから複数の値を抽出する

_raw XMLイベントは次のようになります。

<DataSet xmlns="">
<identity_id>3017669</identity_id>
<instrument_id>912383KM1</instrument_id>
<transaction_code>SEL</transaction_code>
<sname>BARC</sname>
<currency_code>USA</currency_code>
</DataSet>

<DataSet xmlns="">
<identity_id>1037669</identity_id>

448
<instrument_id>219383KM1</instrument_id>
<transaction_code>SEL</transaction_code>
<sname>TARC</sname>
<currency_code>USA</currency_code>
</DataSet>

_raw XMLイベントからidentity_id要素を抽出します。

... | xpath outfield=identity_id "//DataSet/identity_id"

このサーチはidentity_id=3017669とidentity_id=1037669の2つの結果を返します。

2つの要素の組み合わせ(特定の値を持つsnameとinstrument_id)を抽出するには、次のサーチを使⽤します。

... | xpath outfield=instrument_id "//DataSet[sname='BARC']/instrument_id"

sname='BARC'を指定したため、このサーチは次の1件の結果を返します。instrument_id=912383KM1

3. XMLイベントからの抽出のテスト

makeresultsコマンドを使⽤して、xpathの抽出をテストできます。

サーチの最後にfield=xmlを追加する必要があります。例:

| makeresults
| eval xml="<DataSet xmlns=\"\">
<identity_id>1037669</identity_id>
<instrument_id>219383KM1</instrument_id>
<transaction_code>SEL</transaction_code>
<sname>TARC</sname>
<currency_code>USA</currency_code>
</DataSet>"
| xpath outfield=identity_id "//DataSet/identity_id" field=xml

関連項⽬
extract、kvform、multikv、rex、spath、xmlkv

xsDispl a yConcept
xsDisplayConceptコマンドは、Splunk Enterprise Securityで使⽤するエクストリームサーチコマンドです。

このコマンドの詳細については、『Splunk Enterprise Securityの管理』の「エクストリームサーチコマンド」を参照して


ください。

xsDispl a yCont ext


xsDisplayContextコマンドは、Splunk Enterprise Securityで使⽤するエクストリームサーチコマンドです。

このコマンドの詳細については、『Splunk Enterprise Securityの管理』の「エクストリームサーチコマンド」を参照して


ください。

xsF indBest Concept


xsFindBestConceptコマンドは、Splunk Enterprise Securityで使⽤するエクストリームサーチコマンドです。

このコマンドの詳細については、『Splunk Enterprise Securityの管理』の「エクストリームサーチコマンド」を参照して


ください。

xsL ist Concept s


xsListConceptsコマンドは、Splunk Enterprise Securityで使⽤するエクストリームサーチコマンドです。

このコマンドの詳細については、『Splunk Enterprise Securityの管理』の「エクストリームサーチコマンド」を参照して


ください。
449
xsL ist Cont ext s
xsListContextsコマンドは、Splunk Enterprise Securityで使⽤するエクストリームサーチコマンドです。

このコマンドの詳細については、『Splunk Enterprise Securityの管理』の「エクストリームサーチコマンド」を参照して


ください。

xsUpda t eDDCont ext


xsUpdateDDContextコマンドは、Splunk Enterprise Securityで使⽤するエクストリームサーチコマンドです。

このコマンドの詳細については、『Splunk Enterprise Securityの管理』の「エクストリームサーチコマンド」を参照して


ください。

xsWh er e
xsWhereコマンドは、Splunk Enterprise Securityで使⽤するエクストリームサーチコマンドです。

このコマンドの詳細については、『Splunk Enterprise Securityの管理』の「エクストリームサーチコマンド」を参照して


ください。

xyser ies
このトピックではxyseriesコマンドの使い⽅を説明します。

説明
結果をグラフ化に適した表形式に変換します。このコマンドはuntableコマンドと逆の処理を⾏います。

構⽂
xyseries [grouped=<bool>] <x-field> <y-name-field> <y-data-field>... [sep=<string>] [format=<string>]

必須引数

<x-field>
構⽂ :<field>
説明 :X軸のラベルとして使⽤するフィールド名。このフィールドのラベルは、X軸上で描画されるラベルとして表⽰
されます。
<y-name-field>
構⽂ :<field>
説明 :データシリーズのラベルとして使⽤する値を含むフィールド。
<y-data-field>
構⽂: <field> [,<field>] ...
説明: グラフ化するデータを持つ1つ以上のフィールド。複数のフィールドを指定するときは、フィールド名をカンマ
で区切ります。

省略可能な引数

format
構⽂ :format=<string>
説明 :複数のデータシリーズとsplit-by句が⼀緒に使⽤されている場合に、出⼒フィールド名を構築し、<y-name-
field>と<y-data-field>を分離するために使⽤します。formatはsepに優先し、stats集計⼦および関数($AGG$)および
split-byフィールドの値($VALUE$)を使って、パラメーター化した式を指定することができます。
grouped
構⽂ :grouped= true | false
説明 :真(True)の場合、⼊⼒は<x-field>の値でソートされ、複数ファイル⼊⼒が可能です。
デフォルト :false

sep
構⽂ :sep=<string>
説明: 複数のデータシリーズをsplit-byフィールドと共に使⽤する場合の出⼒フィールドの名前の作成に使⽤します。
これは、formatに$AGG$<sep>$VALUE$を設定したのと同等の意味を持ちます。

使⽤法
450
grouped=trueを指定することでxyseriesコマンドが変換コマンド にならない限り、xyseriesコマンドは分散型ストリーミング
コマンド になります。「コマンドタイプ」を参照してください。

エイリアス

xyseriesコマンドのエイリアスはmaketableです。

フィールド値が重複している結果

xyseriesコマンドを使⽤して結果を表形式に変換すると、重複する値を持つ結果は削除されます。

streamstatsコマンドを使⽤すると、⼀意のレコード番号を作成して、すべての結果を残すことができます。例は、untableコ
マンドの「その他の例」 を参照してください。


xyseriesコマンドを使⽤してサーチ結果の形式を変更する⽅法を例で⾒てみましょう。

サーチの作成

この例では、サーチチュートリアルのサンプルデータを使⽤していますが、Apache Webアクセスログ形式の任意のデータを利⽤できます。Splunkイ
ンスタンスでこの例を試すには、サンプルデータをダウンロードし、⼿順に従ってチュートリアルデータをSp lunkに取り込む 必要があります。
サーチを実⾏するときは、時間範囲として[全時間] を使⽤します。
サーチ&レポーティングAppで次のサーチを実⾏します。

sourcetype=access_* status=200 action=purchase | top categoryId

topコマンドは⾃動的にカウントとパーセントのフィールドを結果に追加します。各categoryIdに対して、カウントとパーセ
ントの2つの値があります。

サーチ結果は次のようになります。

cat ego ryId co unt ⽐率

STRATEGY 806 30.495649

ARCADE 493 18.653046

TEE 367 13.885736

ACCESSORIES 348 13.166856

SIMULATION 246 9.307605

SHOOTER 245 9.269769

SPORTS 138 5.221339

xyseriesコマンド構⽂でのフィールドの特定

この例では:
<x-field> = categoryId
<y-name-field> = count
<y-data-field> = percent

xyseriesによるサーチ結果の形式変更

xyseriesコマンドを適⽤すると、categoryIdがサーチ結果の<x-field>として使⽤されます。count計算の結果は、サーチ結果の
列<y-name-field>になります。<y-data-field>のpercentは、サーチ結果の値に対応します。

サーチ&レポーティングAppで次のサーチを実⾏します。

sourcetype=access_* status=200 action=purchase | top categoryId | xyseries categoryId count percent

サーチ結果は次のようになります。

cat ego ryId 138 245 246 348 367 493 806

451
SPORTS 5.221339

ACCESSORIES 13.166856

ARCADE 18.653046

SHOOTER 9.269769

SIMULATION 9.307605

STRATEGY 30.495649

TEE 13.885736

その他の例:
xyseriesコマンドに省略可能な引数を追加する⽅法を例で⾒てみましょう。

サーチの作成

xyseriesコマンドの省略可能な引数を追加するには、複数の集計に対するsplit-byフィールドコマンドを含むサーチを作成し
ます。sep引数とformat引数を使⽤して、サーチ結果の出⼒フィールド名を変更します。

サーチ&レポーティングAppで次のサーチを実⾏します。
sourcetype=access_combined_wcookie | stats count(host) count(productId) by clientip, referer_domain

このサーチは、referrerドメイン、count(host)、count(productId)をclientIpでソートします。

サーチ&レポーティングAppで次のサーチを実⾏します。
sourcetype=access_combined_wcookie | stats count(host) count(productId) by clientip, referer_domain | xyseries clientip
referer_domain count(host), count(productId)

この例では:
<x-field> = clientip
<y-name-field> = referrer domain
<y-data-field> = host, productId

xyseriesコマンドは2つの集計を必要とします。この例ではcount(host)とcount(productId)です。最初の数件のサーチ結果
は次のようになります。

省略可能な引数sepの追加

sep引数に⽂字列を追加することで、<y-name-field>のhostと<y-data-field>のproductIdを区切るためのデフォルト⽂字を
変更できます。format引数は、<y-name-field>を追加し、フィールドメイトフィールド値をデフォルトの「:」で区切りま
す。
サーチ&レポーティングAppで次のサーチを実⾏します。
452
sourcetype=access_combined_wcookie | stats count(host) count(productId) by clientip, referer_domain | xyseries clientip
referer_domain count(host), count(productId) sep="-"

最初の数件のサーチ結果は次のようになります。

省略可能な引数form at の追加

format引数は、<y-name-field>を追加し、フィールドメイトフィールド値をデフォルトの「:」で区切ります。たとえば、こ
の例のデフォルトでは「count(host):referrer_domain」となります。
<y-name-field>と<y-data-field>を区切りための⽂字列をformat引数で指定すると、sep引数による割り当てが上書きされ
ます。次の例では、sep引数を使⽤して、<y-name-field>フィールドと<y-data-field>フィールドを区切るための⽂字として
「-」を割り当てています。そして、format引数を使⽤してこの区切り⽂字に「+」を割り当て、sepの指定を上書きしていま
す。ここでは、$VAL$と$AGG$が<y-name-field>と<y-data-field>の両⽅を表します。サーチ結果に⽰されている⽤に<y-
name-field>のhostと<y-data-field>のproductIdは、$VAL$または$AGG$のどちらにも対応することができます。
サーチ&レポーティングAppで次のサーチを実⾏します。

sourcetype=access_combined_wcookie | stats count(host) count(productId) by clientip, referer_domain | xyseries clientip


referer_domain count(host), count(productId) sep="-" format="$AGG$ + $VAL$ TEST"

最初の数件のサーチ結果は次のようになります。

省略可能な引数groupedの追加

grouped引数は、xyseriesコマンドを分散可能ストリーミングコマンド または変換コマンド のどちらとして実⾏するかを指


定します。デフォルトはgrouped=FALSEで、xyseriesコマンドはストリーミングコマンドとして実⾏されます。

関連項⽬
コマンド
untable

サードパーティのカスタムコマンド
『サーチリファレンス』マニュアルにようこそ。左側のナビゲーションパネルには、ビルトインサーチコマンドへのリンク
があります。リストにないコマンドは、サードパーティAppまたはアドオンのコマンドである可能性があります。Appやア
ドオンのコマンドについては、Splunkbaseのドキュメントを参照してください。

453
内部コマンド
内部コマンドについて
内部サーチコマンドとは、通常はSplunkサポートの指⽰と⼿引きに従って、特定の状況で使⽤するように設計されているコ
マンドセットです。これらのコマンドは、今後のバージョンで削除されたり、更新されたり、別の機能で再実装されたりす
る可能性があります。

これらのコマンドを使⽤する場合は、必ず事前にSplunk管理者またはSplunkサポートに相談してください。
collapse
dump
findkeywords
mcatalog
noop
runshellscript
sendalert

col l a pse
collapseコマンドはサポートされていない、実験的な内部コマンドです。「内部コマンドについて」を参照してください。

説明
collapseコマンドは、複数ファイルの結果をchunksizeオプションで許可されているファイル数にまとめます。outputlookup
コマンドとoutputcsvコマンドを使⽤すると、このコマンドが⾃動的に実⾏されます。

構⽂
... ... | collapse [chunksize=<num>] [force=<bool>]

省略可能な引数

chunksize
構⽂:chunksize=<num>
説明 :結果ファイル数を制限します。
デフォルト :50000
force
構⽂ :force=<bool>
説明 :force=trueの場合、結果全体がメモリー内に残され、結果が適切なチャンクファイルに再分割されます。
デフォルト :false


例1:結果を簡略化します。
... | collapse

du mp
dumpコマンドはサポートされていない、実験的な内部コマンドです。「内部コマンドについて」を参照してください。

説明
Splunk Enterpriseのデプロイでは、サーチ結果をローカルディスクの⼀連のチャンクファイルにエクスポートします。その
他のエクスポート⽅法については、『サーチ』マニュアルの「サーチ結果のエクスポート」を参照してください。

構⽂

dump basefilename=<string> [rollsize=<number>] [compress=<number>] [format=<string>] [fields=<comma-


delimited-string>]

必須引数

basefilename
構⽂ :basefilename=<string>
説明 :エクスポートするファイル名のプレフィックス。
454
省略可能な引数

compress
構⽂ :compress=<number>
説明 :gzip圧縮レベル。0〜9の値を指定します。0は圧縮しないことを表しており、値を⼤きくするほど⾼圧縮になり
ますが、書き込み速度は低下します。
デフォルト :2
フィールド
構⽂ :fields=<comma-delimited-string>
説明 :エクスポートされるフィールドのリストです。リスト全体を引⽤符で囲む必要があります。無効なフィールド名
は無視されます。

format
構⽂ :format= raw | csv | tsv | json | xml
説明 :出⼒データフォーマット。
デフォルト :raw
rollsize
構⽂ :rollsize=<number>
説明 :最⼩ファイルサイズ(MB)。この値に達すると、ファイルにそれ以上のイベントは書き込まれず、HDFS転送の候
補となります。
デフォルト :63 MB

使⽤法
このコマンドは、イベントを「$SPLUNK_HOME/var/run/splunk/dispatch/<sid>/dump」にあるローカルディスクの
チャンクファイルセットにエクスポートします。このコマンド⼊⼒イベント内の特別なフィールド_dstpathを認識します。こ
のフィールドが設定されている場合は、最終的な宛先パスを算出するために、dstに追加するパスとして使⽤されます。

dumpコマンドは、コマンドが受けたイベントの順番を保持します。


例1:すべてのイベントをインデックス「bigdata」から、ローカルディスク上の
「$SPLUNK_HOME/var/run/splunk/dispatch/<sid>/dump/」ディレクトリにある場所「YYYYmmdd/HH/host」に、
エクスポートファイル名のプレフィックスとして「MyExport」を付けてエクスポートします。エクスポートデータのパー
ティション分割は、dumpコマンドの前にevalを使って⾏います。

index=bigdata | eval _dstpath=strftime(_time, "%Y%m%d/%H") + "/" + host | dump basefilename=MyExport

例2: すべてのイベントをインデックス「bigdata」からローカルディスクに、エクスポートファイル名のプレフィックスと
して「MyExport」を付けてエクスポートします。
index=bigdata | dump basefilename=MyExport

findkeyw or ds
findkeywordsコマンドはサポートされていない、実験的な内部コマンドです。「内部コマンドについて」を参照してくださ
い。

説明
いくつかのイベントの整数ラベルをグループとして、それらのグループを⽣成するサーチを探します。

構⽂
findkeywords labelfield=<field>

必須引数

labelfield
構⽂ :labelfield=<field>
説明 :フィールドの名前。

使⽤法
findkeywordsコマンドの後にclusterコマンド、またはイベントをグループ化する類似のコマンドを使⽤します。findkeywordコ
マンドは、結果を⼀連のグループに分割するフィールド(labelfield)を持つ、⼀連の結果を取ります。コマンドは、これらの
各グループを⽣成するサーチを算出します。このサーチは、イベントタイプ として保存できます。
455

特定のlog_level値と結果のグループを返す

log_levelがDEBUG、WARN、ERROR、FATALであるすべてのログを返し、クラスターカウントごとに結果をグループ化
します。

index=_internal source=*splunkd.log* log_level!=info | cluster showcount=t | findkeywords labelfield=cluster_count

結果は静的テーブルになります。

groupIDの値は、clusterコマンドから返されるcluster_countの値です。

関連項⽬
cluster、findtypes

ma kejson
makejsonコマンドはサポートされていない、実験的な内部コマンドです。「内部コマンドについて」を参照してください。

説明
サーチ結果内の指定されたフィールドセットからJSONオブジェクトを作成し、JSONオブジェクトを新しいフィールドに書
き込みます。

構⽂
makejson <wc-field-list> output=<string>

必須引数
output
構⽂: output=<string>
説明: JSONオブジェクトを書き込む出⼒フィールドの名前。

省略可能な引数
wc-field-list
構⽂: <field>(,<field>) ...
説明: JSONオブジェクトを⽣成するために使⽤するフィールドのカンマ区切りリスト。フィールド名にはワイルド
カードを使⽤できます。
デフォルト: リストを指定しないと、すべてのフィールドがJSONオブジェクトに含まれます。


456
1.使⽤できるフィールドをすべて使⽤してJSONオブジェクトを作成する

次のサーチは、使⽤できるすべてのフィールドの値からJSONオブジェクトを作成し、「data」というフィールドに書き込み
ます。
| makeresults count=5 | eval owner="vladimir", error=random()%3 | makejson output=data

makeresultsコマンドは、タイムスタンプを含む5件のサーチ結果を作成します。
evalコマンドは、各サーチ結果で2つのフィールドを作成します。⽚⽅のフィールドはownerという名前で、vladimirとい
う値が書き込まれます。他⽅のフィールドはerrorという名前で、乱数を取って、モジュロ演算⼦( % )を使⽤してその乱
数を3で除算します。
makejsonコマンドは、各サーチ結果のフィールドの値に基づいてJSONオブジェクトを作成します。

結果はこのようになります。

_t im e o wner erro r dat a


2020-03-10 21:45:14 vladimir 1 {"owner": "vladimir", "error": 1, "_time": 1583901914}

2020-03-10 21:45:14 vladimir 0 {"owner": "vladimir", "error": 0, "_time": 1583901914}


2020-03-10 21:45:14 vladimir 0 {"owner": "vladimir", "error": 0, "_time": 1583901914}
2020-03-10 21:45:14 vladimir 2 {"owner": "vladimir", "error": 2, "_time": 1583901914}
2020-03-10 21:45:14 vladimir 1 {"owner": "vladimir", "error": 1, "_time": 1583901914}

2.特定のフィールドセットを使⽤してJSONオブジェクトを作成する

_timeフィールドとownerフィールドのみの値を使⽤してJSONオブジェクトを作成し、「data」というフィールドに書き込み
ます。
| makeresults count=5 | eval owner="claudia", error=random()%5 | makejson _time, owner output=data

結果はこのようになります。

_t im e o wner erro r dat a


2020-03-10 21:45:14 claudia 2 {"owner": "claudia", "_time": 1583901914}
2020-03-10 21:45:14 claudia 2 {"owner": "claudia", "_time": 1583901914}
2020-03-10 21:45:14 claudia 3 {"owner": "claudia", "_time": 1583901914}
2020-03-10 21:45:14 claudia 4 {"owner": "claudia", "_time": 1583901914}

2020-03-10 21:45:14 claudia 1 {"owner": "claudia", "_time": 1583901914}

3.フィールドのワイルドカードリストを使⽤してJSONオブジェクトを作成する

_timeフィールドと、名前が_ownerで終わっているフィールドの値を使⽤してJSONオブジェクトを作成し、「json-object」
というフィールドに書き込みます。

| makeresults count=5 | eval product_owner="wei", system_owner="vanya", error=random()%5 | makejson _time, *_owner


output="json-object"

結果はこのようになります。

_t im e pro duct _o wner syst em _o wner erro r jso n-o bject


2020-03-10 {"product_owner": "wei", "system_owner": "vanya",
22:23:24
wei vanya 3
"_time": 1583904204}
2020-03-10
wei vanya 2
{"product_owner": "wei", "system_owner": "vanya",
22:23:24 "_time": 1583904204}
2020-03-10
wei vanya 1
{"product_owner": "wei", "system_owner": "vanya",
22:23:24 "_time": 1583904204}
2020-03-10
wei vanya 3
{"product_owner": "wei", "system_owner": "vanya",
457
22:23:24
wei vanya 3
"_time": 1583904204}

2020-03-10
wei vanya 2
{"product_owner": "wei", "system_owner": "vanya",
22:23:24 "_time": 1583904204}

4.スキーマ境界ルックアップを使⽤する

makejsonコマンドでスキーマ境界ルックアップを使⽤してJSONオブジェクトを作成し、後で処理するために説明フィールド
に書き込みます。
Splunk Appに、keyおよびdescriptionというフィールドを持つexample_ioc_indicatorsというKVストアーコレクションがあると
します。⻑期間のサポート性を確保するため、コレクションを変更せずに、Splunk Enterprise Security (ES)脅威フレーム
ワークなどのフレームワーク内でカスタムルックアップを使⽤するとします。

サーチの最初の部分を⾒てみましょう。
| makeresults count=1 | eval threat="maliciousdomain.example", threat_expiry="2020-01-01 21:13:37 UTC", threat_name="Sample
threat", threat_campaign="Sample threat", threat_confidence="100" | makejson threat_expiry, threat_name, threat_campaign,
threat_confidence output=description | table threat, description

このサーチは次のような結果を⽣成します。

t hreat descript io n

maliciousdomain.example
{"threat_name": "Sample threat", "threat_confidence": 100, "threat_expiry": "2020-01-01
21:13:37 UTC", "threat_campaign": "Sample threat"}

次に、outputlookupコマンドを追加して、サーチ結果をルックアップに送信します。

... | outputlookup append=t example_ioc_indicators

このカスタムルックアップをフレームワークで使⽤するには、サーチで次のように指定します。
...| lookup example_ioc_indicators OUTPUT description AS match_context | spath input=match_context

mca t a l og
mcatalogコマンドはサポートされていない、実験的な内部コマンドです。「内部コマンドについて」を参照してください。

説明
mcatalogコマンドはメトリックスインデックスにあるmetric_nameおよびdimensionフィールドの値の集計を実施します。

構⽂
| mcatalog [prestats=<bool>] [append=<bool>] ( <values"("<field> ")"> [AS <field>] )
[WHERE <logical-expression>] [ (BY|GROUPBY) <field-list> ]

必須引数

values (<field>)
構⽂: values(<field>) [AS <field>]
説明: 指定されたフィールドのすべての異なる値を複数値エントリとして返します。値の順序は、辞書的順序です。
「使⽤法」を参照してください。

省略可能な引数

append
構⽂ :append=<bool>
説明: prestats=trueの場合にのみ有効です。この引数はmcatalogコマンドを実⾏して新しい結果を⽣成するのではなく、
結果を既存の⼀連の結果に追加します。
デフォルト :偽(False)

<field-list>
構⽂ :<field>, ...
説明 :1つ以上のフィールドを指定して結果をグループ化します。
<logical-expression>
構⽂ :<time-opts>|<search-modifier>|((NOT)? <logical-expression>)|<index-expression>|<comparison-
458
expression>|(<logical-expression> (OR)? <logical-expression>)
説明: 時間、サーチ修飾⼦、⽐較式、インデックス式が含まれます。CASEまたはTERM指令をサポートしません。
WHERE句を使って⽤語や語句をサーチすることもできません。

prestats
構⽂ :prestats=true | false
説明 :prestats書式を使⽤するかどうかを指定します。Prestats書式はSplunk内部フォーマットで、集計統計を⽣成す
るコマンドにより使⽤されるように設計されています。prestats書式を使⽤する場合、prestats書式を許容するように
設計されているグラフ、統計、またはtimechartコマンドにデータをパイプできます。prestats=trueの場合、AS⼿順は
関係ありません。集計⽤のフィールド名は、Prestats書式を使⽤して集計出⼒を⽣成するコマンドにより決定されま
す。
デフォルト :偽(False)

論理式のオプション

<comparison-expression>
構⽂: <field><comparison-operator><value> | <field> IN (<value-list>)
説明 :フィールドをリテラル値と⽐較するか、またはフィールドに現れる値のリストを提供します。
<index-expression>
構⽂ :"<string>" | <term> | <search-modifier>
説明 :リテラル⽂字列およびサーチ修飾⼦を使って、インデックスから取得するイベントを指定します。
<time-opts>
構⽂ :[<timeformat>] (<time-modifier>)*
説明 :サーチのstarttimeおよびendtimeのフォーマットを指定します。

⽐較式のオプション

<comparison-operator>
構⽂: = | != | < | <= | > | >=
説明 :フィールド/値のペアをサーチする際に、⽐較演算⼦を使⽤できます。equal ( = )またはnot equal ( != )の演算
⼦が⽂字値を⽐較する⽐較式。たとえば、「1」は「1.0」と⼀致しません。演算⼦より⼤きいまたは⼩さい⽐較式<><=
>=は、2つの数字を数値的に⽐較し、その他の値は辞書学的に⽐較します。「使⽤法」を参照してください。

<field>
構⽂ :<string>
説明 :フィールド名です。
<value>
構⽂ :<literal-value>
説明 :⽐較式内で、フィールドのリテラル値またはフィールドの⽂字列値です。

<value-list>
構⽂ :(<literal-value>, <literal-value>, ...)
説明 :IN演算⼦と⼀緒に使⽤して2つ以上の値を指定します。たとえばerror=400 OR error=402 OR error=404 OR
error=406の代わりにerror IN (400, 402, 404, 406)を使⽤します。

インデックス式のオプション

<string>
構⽂ :"<string>"
説明 :照合するキーワードまたは引⽤符で囲んだフレーズを指定します。⽂字列や引⽤符で囲まれた⽂字列(サーチ修
飾⼦以外の任意の語句)をサーチする場合、Splunkソフトウェアは_rawフィールドと照合して、⼀致するイベントや結
果を検索します。
<search-modifier>
構⽂: <sourcetype-specifier> | <host-specifier> | <source-specifier> | <splunk_server-specifier>
説明: 指定されたフィールドからのイベントをサーチ。たとえば、ホスト、ソース、ソースタイプの1つまたは組み合
わせのサーチ。『ナレッジ管理』マニュアルの「デフォルトフィールドでのサーチ」を参照してください。
<sourcetype-specifier>
構⽂ :sourcetype=<string>
説明: 指定されたソースタイプフィールドからのイベントをサーチ。
<host-specifier>
構⽂ :host=<string>
説明 :指定したホストフィールドからイベントをサーチします。

<source-specifier>
構⽂ :source=<string>
説明 :指定したホストフィールドからイベントをサーチします。
<splunk_server-specifier>
459
構⽂ :splunk_server=<string>
説明 :特定のサーバーからイベントをサーチします。サーチヘッドを参照するには、「local」を使⽤します。

時間オプション

時間修飾⼦の⼀覧については、「サーチの時間修飾⼦」を参照してください。
<timeformat>
構⽂ :timeformat=<string>
説明 :starttime、endtimeのフォーマットを指定します。
デフォルト :timeformat=%m/%d/%Y:%H:%M:%S。
<time-modifier>
構⽂ :starttime=<string> | endtime=<string> | earliest=<time_modifier> | latest=<time_modifier>
説明 :開始時間、終了時間を相対時間または絶対時間で指定します。
注意 :earliestおよびlatest属性を使って、サーチの絶対/相対時間範囲を指定することもできます。この時間修飾⼦の構⽂に
ついての詳細は、サーチマニュアルの「サーチ時範囲について」を参照してください。
starttime
構⽂ :starttime=<string>
説明 :イベントはこの時間か、それ以降でなければなりません。timeformatと⼀致する必要があります。

endtime
構⽂ :endtime=<string>
説明 :すべてのイベントはこの時間か、それ以前でなければなりません。

使⽤法
mcatalogコマンドを使⽤してメトリックスデータをサーチします。メトリックスデータはメトリックスフィールドに特定の
フォーマットを使⽤します。メトリックスのメトリックスデータフォーマットを参照してください。_valuesフィールドはこ
のコマンドでは利⽤できません。
mcatalogコマンドはレポートの⽣成コマンド です。⽣成コマンドでは、先頭のパイプ⽂字が使⽤されます。mcatalogコマンド
は、append=trueの場合を除いて、サーチパイプラインで最初のコマンドである必要があります。

すべてのメトリックスサーチコマンドでは⼤⽂字と⼩⽂字が区別されます。つまり、mcatalogコマンドは、たとえ
ばcap.gear、CAP.GEAR、Cap.Gearをmetric_nameの3つの異なる値として扱います。

list_metrics_catalog権限を持っていない場合は、mcatalogを使⽤できません。

『Splunk Enterpriseのセキュリティ』マニュアルの「権限を持つロールの定義について」を参照してください。

W HERE

WHERE句を使⽤すると、サポートされているディメンションでフィルタリングできます。
WHERE句でインデックス名を指定しないと、mcatalogコマンドは、ユーザーのロールに関連付けられているデフォルトのメ
トリックスインデックスから結果を返します。インデックス名を指定せず、⾃分のロールに関連付けられているデフォルト
のメトリックスインデックスも存在しない場合、mcatalogコマンドは何も返しません。すべてのメトリックスインデックスに
対してサーチを⾏うには、WHERE index=*と指定します。

ロールのデフォルトメトリックスインデックスの定義についての詳細は、『Splunk Enterpriseのセキュリティ』の
「Splunk Webを使ったロールの追加と編集」を参照してください。

グループ

dimensionおよびmetric_nameフィールドをグループ化できます。

mcatalogコマンドでは、時間範囲ごとのグループ化はできません。:引数が構⽂に含まれていません。

時間ディメンション

mcatalogコマンドは、以下の時間に関連したディメンションを認識しません。

サポートされないディメンション
date_hour date_wday
timeendpos
date_mday date_year
date_minute date_zone timestamp

460
date_month metric_timestamp timestartpos
date_second time

辞書的順序

辞書的順序はアイテムをそのアイテムをコンピューターメモリーでエンコードするのに使⽤される値に基づいて並べ替えま
す。Splunkソフトウェアでは、これはほとんど常にUTF-8エンコードで、ASCIIよりも多くの機能があります。
数字は⽂字の前に並び替えられます。⽂字は最初の桁に基づいて並び替えられます。たとえば、10, 9, 70, 100は辞書
的には10, 100, 70, 9に並べ替えられます。
⼤⽂字は⼩⽂字の前に来ます。
記号は標準ではありません。数値の前に並び替えられる記号もあります。その他の記号は⽂字の前または後に並び替え
られます。
並び替えの順序は、辞書的順序からカスタム順序に変更できます。ブログ「Order Up! Custom Sort Orders (整列!カスタム
並び替え順序)」を参照してください。

1.すべてのメトリックス名を特定のメトリックスインデックスで返す

すべてのメトリックス名をnew-metric-idxで返します。

| mcatalog values(metric_name) WHERE index=new-metric-idx

2.ユーザーのロールに関連付けられているデフォルトメトリックスインデックスのすべてのメトリックス名を返す

ユーザーロールにデフォルトのメトリックスインデックスが割り当てられていない場合は、イベントを返しません。
| mcatalog values(metric_name)

3.すべてのメトリックスインデックス中の特定のメトリックス名のすべてのIPアドレスを返す

login.failureメトリックス名のIPアドレスを返します。

| mcatalog values(ip) WHERE index=* AND metric_name=login.failure

4.ユーザーのロールに関連付けられているデフォルトメトリックスインデックスで利⽤できるすべてのディメンショ
ンを返す

| mcatalog values(_dims)

noop
noopコマンドはサポートされていない、実験的な内部コマンドです。「内部コマンドについて」を参照してください。

説明
noopは、サーチをデバッグするための内部コマンドです。サーチ最適化の問題をトラブルシューティングするために使⽤でき
るいくつかの引数があります。
noopコマンドを使⽤してサーチにコメントを追加することはできません。サーチにコメントを追加する⽅法を探すに
は、『サーチ』マニュアルに記載の⽅法を参照してください。

構⽂
noop [<log-level-expression>] [<appender-expression>] [set_ttl = <timespan>] [search_optimization = <boolean>]
[search_optimization.<optimization_type> = <boolean>] [sample_ratio = <int>]...

必須引数

無し。

省略可能な引数

appender-expression
構⽂: log_appender = "<appender_name>; [<attribute_name> = <attribute_value>], ..."
461
説明: log-searchprocess.logからアペンダーを特定して、そのアペンダーに属する1つ以上の属性の変更後の値を指定し
ます。これらの変更は、ジョブの有効期間においてサーチジョブに適⽤されます。サーチの完了後に再利⽤されること
はありません。属性値の変更リストは引⽤符で囲む必要があります。「アペンダーの式オプション」を参照してくださ
い。

log-level-expression
構⽂: log_<level> = "<channel>, ..."
説明: サーチの開始時に1つ以上のログチャネルのログレベルを設定または変更します。ログチャネルのリストは⼆重
引⽤符で囲む必要があります。「ログレベルの式オプション」を参照してください。
optimization_type
構⽂: search_optimization.<optimization_type> = <boolean>
説明: サーチの特定タイプの最適化を有効化または無効化します。複数の最適化タイプを無効化するには、カンマで区
切ったsearch_optimization.<optimization_type>引数のリストを指定します。「最適化タイプ引数」を参照してください。
デフォルト :真(True)
sample_ratio
構⽂: sample_ratio = <int>
説明: 特定のサーチから返される結果からランダムにサンプリングされたサブセットを設定します。<sample_ratio>件の
イベントごとに1件を返します。たとえば、| noop sample_ratio=25と指定すると、Splunkソフトウェアは、サーチ結果
セットの25件のイベントごとに1件をランダムにサンプリングして返します。sample_ratio引数では、searchがnoopを適⽤
するサーチの⽣成コマンド である必要があります。
sample_ratioは、Splunk
Webで管理できるイベントサンプリング機能と同じ処理を⾏います。違いは、イベントサンプ
リングをサブサーチにも適⽤できるという点です。Splunk Webのイベントサンプリングは、メインサーチにしか適⽤
できません。『サーチ』マニュアルの「イベントサンプリング」を参照してください。
デフォルト :1
search_optimization
構⽂: search_optimization = <boolean>
説明: サーチのすべて最適化を有効化または無効化します。
デフォルト :真(True)
set_ttl
構⽂: set_ttl = <timespan>
説明: 1d (1⽇)や12h (12時間)などの時間修飾⼦を使⽤して、サーチジョブの有効期間を指定します。サーチジョブの有
効期間とは、ジョブが削除されるまでシステムに残る時間の⻑さです。アドホックサーチ のデフォルトの有効期間は
10分です。この設定を使⽤することで、アドホックサーチジョブをシステムに残す時間を24時間や7⽇間などに変更で
きます。

最適化タイプ引数

noopで使⽤できるsearch_optimization.<optimization_type>引数は以下の通りです。

search_o pt im iz at io n引数 コントロール


search_optimization.eval_merge eval結合最適化

search_optimization.merge_union union結合最適化

search_optimization.predicate_merge 叙述結合最適化

search_optimization.predicate_push 叙述プッシュダウン最適化

search_optimization.predicate_split 叙述分割最適化

search_optimization.projection_elimination 予測削除最適化

search_optimization.required_field_values 必須フィールド値最適化

search_optimization.replace_append_with_union appendコマンドとunionコマンド最適化の⼊れ替え

statsコマンドとtstatsコマンド最適化の⼊れ替え
search_optimization.replace_stats_cmds_with_tstats
この最適化タイプはデフォルトでは無効になっています。

search_optimization.search_flip_normalization 叙述反転正規化

search_optimization.search_sort_normalization 叙述ソート正規化

特定のサーチ最適化タイプの詳細は「内蔵最適化」を参照してください。

ログレベルの式オプション
462
level
構⽂: log_<level>
説明: Splunkプラットフォームの内部ログレベルであるdebug、info、warn、error、fatalを指定できます。チャネルの
セットごとに異なるログレベルを適⽤できます。

channel
構⽂: <channel>, ...
説明: ログレベルを適⽤する1つ以上のログチャネルを指定します。ワイルドカードを使⽤することで、⼀致する⽂字
列が名前に含まれるすべてのチャネルを指定できます。

アペンダーの式オプション

appender_name
構⽂ :<string>
説明: log-searchprocess.cfgファイルからのアペンダーの名前。ワイルドカードの*を使⽤すると、log-
searchprocess.cfgファイルのすべてのアペンダーを指定できます。noopパーサーでは、⼤⽂字と⼩⽂字が区別されます。
⼤⽂字と⼩⽂字を正しく使い分けずにアペンダー名を指定すると、エラーメッセージが返されます。
attribute_name
構⽂: maxFileSize | maxBackupIndex | ConversionPattern | maxMessageSize
説明: 特定のアペンダーで変更できる属性です。noopパーサーでは、⼤⽂字と⼩⽂字が区別されますので、これらの属
性では⼤⽂字と⼩⽂字の使い分けを変更しないでください。⼤⽂字と⼩⽂字を正しく使い分けずにアペンダー名を指定
すると、エラーメッセージが返されます。

属性名 説明 値の例

ロール前のsearch.logファイルの最⼤サイズ(バイト)を指定します。log-
maxFileSize searchprocess.cfgファイルで選択されているアペンダーに対して現在設定されている値よ 250000000
り⼤きな値を指定する必要があります。

ロールされるsearch.logファイルの最⼤数を設定します。log-searchprocess.cfgファイル
maxBackupIndex で選択されているアペンダーに対して現在設定されている値より⼤きな値を指定する必要が 5
あります。

ログエントリ形式を指定します。指定できる変数は、 %c (カテゴリ)、 %d (⽇付、直後に⽇ %d{%m-%d-


付変数を中括弧に⼊れて指定)、 %m (ログメッセージ)、 %n (改⾏)、 %p (優先度-ログレベ %Y %H:%M:%S.%l} %-
ConversionPattern
ル)、 %r (相対時間、msec)、 %R (相対時間、秒)、 %t (スレッド時間)、 %T (スレッドID) 5p
です。 %c - %m%n

ログから送信されるメッセージの最⼤サイズ(バイト)を指定します。デフォルトは16384で
maxMessageSize す。log-searchprocess.cfgファイルで選択されているアペンダーに対して現在設定されて 16384
いる値より⼤きな値を指定する必要があります。

attribute_value
構⽂ :<string>
説明: 選択されたアペンダー属性の更新後の値を指定します。maxFileSize、maxBackupIndex、およびmaxMessageSize属性に
指定する値は、log-searchprocess.cfgファイルでこれらの属性に対して現在設定されている値より⼤きな値である必要が
あります。たとえば、searchprocessAppenderのmaxFileSize設定が現在10000000に設定されている場合、maxFileSizeの値とし
て10000000より⼤きな値しか指定できません。

使⽤法
noopコマンドを使⽤すると、サーチの実⾏時にサーチ最適化を有効化または無効化できます。サーチ最適化の有効化または無
効化は、特定のサーチ問題をトラブルシューティングするのに役⽴ちます。たとえば、サーチ最適化を有効化または無効化
することによって、サーチに時間が掛かる原因が最適化にあるのかどうかを調べることができます。
Splunkプラットフォームデプロイのすべてのユーザーを対象としてlimits.confファイルでサーチ最適化を管理する⽅法につ
いては、『サーチ』マニュアルの「内蔵最適化」を参照してください。

noopコマンドですべてのサーチ最適化を管理する

noopコマンドは、サーチの単独実⾏においてすべてのサーチ最適化を有効化または無効化できます。

limits.confファイルで、Splunk導⼊環境におけるすべてのサーチ最適化が有効化されている場合は、サーチ⽂字列の最後に
以下の引数を追加することで、そのサーチにおいてのみすべての最適化を無効化できます。
.... | noop search_optimization=false

limits.confファイルで、Splunk導⼊環境におけるすべてのサーチ最適化が無効化されている場合は、サーチ⽂字列の最後に
以下の引数を追加することで、そのサーチにおいてのみすべての最適化を有効化できます。
463
.... | noop search_optimization=true

noopコマンドで特定のサーチ最適化を管理する

optimization_type引数を使⽤すると、特定のタイプのサーチ最適化を有効化または無効化することができます。

次の例では、noop引数を使⽤して叙述結合最適化と叙述プッシュダウン最適化を無効化しています。

.... | noop search_optimization.predicate_merge=f, search_optimization.predicate_push=f

この例は、limits.confですべての最適化が有効化されている場合にのみ正しく機能します。

limits.confファイルの[search_optimization]スタンザでenabled=falseと設定してある場合は、Splunkプラットフォームデプロ
イではすべてサーチ最適化が無効化されています。このlimits.conf設定の場合は、noopを使⽤してすべての最適化を有効化し
て、特定の最適化タイプのみを無効化できます。
たとえば、limits.confファイルの[search_optimization]スタンザでenabled = falseと設定してある場合は、次のように指定する
ことで、予測削除最適化以外のすべての最適化を有効化できます。
index=_internal | eval c = x * y / z | stats count BY a, b | noop search_optimization=true,
search_optimization.projection_elimination=false

ただし、limits.confファイルの[search_optimization]スタンザでenabled=falseと設定してある場合は、⼀定の条件が成⽴してい
ない限り、特定の最適化タイプのみを有効化することはできません。「noopコマンドとlimits.confでのサーチ最適化設定と
の関係」を参照してください。

noopコマンドとlim it s.confでのサーチ最適化設定との関係

noopコマンドで最適化タイプを有効化または無効化する前に、limits.confでSplunkプラットフォームデプロイでのサーチ最適
化がどのように設定されているかを確認してください。サーチプロセッサーは、[search_optimization]が有効化されている場
合にのみ、limits.confの最適化タイプ設定を反映します。

たとえば、limits.confで[search_optimization]スタンザがenabled=trueと設定されていれば、サーチプロセッサー
はlimits.confで個別の最適化タイプが有効化されているか無効化されているかを確認します。⼀⽅、[search_optimization]ス
タンザでenabled = falseと設定されていれば、サーチプロセッサーは他の最適化タイプの設定は確認しません。サーチプロ
セッサーは、すべての最適化タイプがenabled=falseと設定されているものと想定します。

このサーチプロセッサーのロジックは、noopコマンドを使⽤して個別のサーチ最適化を有効化または無効化する際の動作に影
響します。
たとえば、limits.confで次のように設定されているとします。

[search_optimization]
enabled=false

[search_optimization::projection_elimination]
enabled=false

この設定では、サーチプロセッサーは無効化されている予測削除最適化を無視します。[search_optimization]が無効化されて
いるため、サーチプロセッサーは他のすべての最適化も無効化されているものと想定します。
この設定で、noopコマンドを使⽤してサーチ最適化を有効化するために、以下のサーチを実⾏したとします。

.... | noop search_optimization=true

この場合、サーチ最適化を有効化しても、サーチプロセッサーはlimits.confで予測削除最適化が無効化されていることを検出
します。そのため、予測削除最適化以外のすべての最適化タイプが実⾏されます。
そこで、サーチでnoopコマンドを使⽤してサーチ最適化を有効化し、さらに予測削除最適化を選択的に有効化します。

.... | noop search_optimization=true search_optimization.projection_elimination=true

このサーチを実⾏すると、limits.confでの[search_optimization]と[search_optimization::projection_elimination]の設定の両⽅よ
り優先されます。その結果、すべての最適化が有効化されてサーチが実⾏されます。

noopを使⽤したサーチのデバッグチャネルの設定

log_<level>引数を使⽤すると、debugやwarnなどの特定のログレベルでサーチのデバッグチャネルを設定できます。特定のサー
464
チでログレベルを設定する必要があっても、CLIからSplunkプラットフォーム実装にアクセスできない場合などに、この属
性を使⽤します。
Splunkプラットフォームは、noopコマンドの解析後にログレベルを変更します。ログレベルの変更は、この引数が他のサー
チコマンドの後にあるサーチ⽂字列に含まれている場合でも、サーチヘッドが他のサーチコマンドからの引数を解析する前
に⾏われます。たとえば次のサーチは、noopコマンドより前にmakeresultsコマンドがありますが、makeresultsコマンドから
のデバッグメッセージを適切にログに記録します。
| makeresults count=1 | noop log_debug="MakeResultsProcessor"

ただし、log_<level>引数では、操作の順序でSPL引数処理の前にあるサーチプロセスコンポーネントのログレベルは設定でき
ません。たとえば、これらのコンポーネントの1つとしてLicenseMgrがあります。次のサーチを実⾏すると、SPLでdebugが指
定されていても、LicenseMgrについてデフォルトのログレベルであるinfoでメッセージがログに記録されます。

index=_internal | head 1 | noop log_debug="LicenseMgr"

コマンドラインにアクセスできる場合、このようなコンポーネントの問題をデバッグするには、$SPLUNK_HOME/etc/log-
searchprocess.cfgを直接編集して、サーチがディスパッチされる前にログレベルを設定することで、search.logにより詳細な出
⼒を送ることができます。
noopコマンドは、ストリーミングパイプラインの⼀部である必要があります。Splunkソフトウェアはサーチヘッドで引数を
解析してからサーチをインデクサーに配布するため、noopコマンドはストリーミングパイプラインの⼀部としてくださ
い。noopコマンドは、サーチ⽂字列内の最初の⾮ストリーミングコマンドの前に配置します。簡単な⽅法は、サーチ⽂字列の
最初のコマンド(通常はsearch)の直後に配置することです。

log_<level>引数は、ワイルドカードによる⼀致をサポートします。同じサーチ内のデバッグチャネルごとに異なるログレベル
を設定することもできます。
.... | noop log_debug=Cache* log_info="SearchOperator:kv,SearchOperator:multikv"

ログの概要とデバッグチャネルのログレベルの設定については、『トラブルシューティング』マニュアルの「Splunkがログ
に記録する情報」を参照してください。

noopを使⽤したlog-searchprocess.cfgアペンダー属性変更のサーチジョブへの適⽤

デバッグのために、noopを使⽤して、log-searchprocess.cfgのアペンダー属性の変更を、サーチの実⾏ごとに適⽤できます。ア
ペンダーとは、特定のログコンポーネントのサブグループに適⽤される設定ブロックです。アペンダーの例として
は、searchprocessAppender、watchdog_appender、searchTelemetryAppenderなどがあります。ワイルドカードの*を使⽤すると、す
べてのアペンダーを選択できます。

たとえば、次のサーチはsearch.logファイルの最⼤サイズを50 MBに変更し、ロールされるsearch.logファイルの最⼤数を99
に変更します。
.... | noop log_appender="searchprocessAppender;maxFileSize=50000000;maxBackupIndex=99"

これらの変更は、対象となるサーチの有効期間においてのみ適⽤されます。保存されたり、他のサーチに適⽤されたりする
ことはありません。
値を変更できる属性は、maxFileSize、maxBackupIndex、ConversionPattern、およびmaxMessageSizeのみで
す。maxFileSize、maxBackupIndex、およびmaxMessageSize属性に指定する値は、log-searchprocess.cfgファイルでこれらのアペン
ダー属性に対して現在設定されている値より⼤きな値である必要があります。
ログのデバッグを⽬的としたアペンダー属性の変更については、『トラブルシューティング』マニュアルの「ログデバッグ
の有効化」を参照してください。

pr job
prjobコマンドはサポートされていない、実験的な内部コマンドです。「内部コマンドについて」を参照してください。

説明
prjobコマンドを使⽤して、分散サーチ環境でのSPLサーチで並列縮約サーチプロセスを⾏います。prjobコマンドは、指定さ
れたSPLサーチを分析し、サーチ内のstatsやtransactionなどの最初の⾮ストリーミングSPLコマンドの前にredistributeコマ
ンドを⾃動的に配置することで、サーチの実⾏時間を短縮します。redistributeコマンドと同じ関数を使⽤できますが、構⽂
は単純です。redistributeコマンドと同じように、prjobコマンドを使⽤することで、多くのサーチ結果を集計する⾼濃度サー
チを⾃動的に⾼速化できます。

構⽂
prjob [<subsearch>]
465
または
prjob [num_of_reducers=<int>] [subsearch]

必須引数

subsearch
構⽂: [<subsearch>]
説明: prjobコマンドが並列処理するサーチ⽂字列を指定します。

省略可能な引数

num_of_reducers
構⽂: [num_of_reducers=<int>]
説明: インデクサープールで中間リデューサーとして機能できる適格なインデクサーの数を指定します。例:10台のイ
ンデクサー上でサーチを実⾏し、インデクサープールの60%(最⼤値は5)を使⽤するように設定されている場合は、中間
リデューサーとして5台のインデクサーのみが使⽤されます。num_of_reducersを5より⼤きい値に設定しても、上限値に
よって5台のリデューサーのみが使⽤されます。num_of_reducersを5より⼩さい値に設定すると、上限値の5台より少ない
リデューサーが使⽤されます。
num_of_reducersの値は、2つの設定グループによって制御されます。
reducers:
maxReducersPerPhase + winningRate

中間リデューサーの数は、reducersに設定されている値によって決まります。reducersの値が設定されていない場合
は、maxReducersPerPhaseとwinningRateで設定されている値によって中間リデューサーの数が決まります。

例:num_of_reducersがインデクサープールの50%、maxReducersPerPhase値が4台のインデクサーに設定されている場合、6台の
サーチピアー上で実⾏される並列縮約サーチには3台の中間リデューサーが割り当てられます。同様に、4台のサーチピアー
上で実⾏される並列縮約サーチには、2台の中間リデューサーが割り当てられます。ただし、10台のサーチピアー上で実⾏さ
れるサーチに割り当てられる中間リデューサーの数は、最⼤値である4台に限定されます。

使⽤法
redistributeコマンドの挿⼊場所を決めたりby-clauseフィールドを管理したりせずに並列縮約ジョブを実⾏する場合
は、redistributeコマンドではなくprjobコマンドを使⽤してください。

prjobコマンドは、サーチの最初のコマンドとしてのみ使⽤できます。また、サーチ全体をprjobコマンド内に含める必要があ
ります。このコマンドを実⾏するためには、run_multi_phased_searches権限が必要です。

prjobコマンドを使⽤するには、limits.conf設定ファイルの[search_optimization::pr_job_extractor]スタンザ
でphased_execution_modeをmultithreadedまたはauto に設定し、enabledをtrueに設定します。

prjobコマンドはリアルタイムサーチや詳細モードサーチには対応していません。prjobコマンドでもリアルタイムサーチや詳
細モードサーチは実⾏できますが、redistribute操作は無視されます。また、同じサーチ内でprjobコマンドとredistributeコマ
ンドを併⽤することはできません。
prjobコマンドは、redistributeコマンドと同じコマンドをサポートします。詳細は、redistributeを参照してください。prjob
コマンドは、次の⾮ストリーミングコマンドのいずれか1つ以上を含むSPLサーチの実⾏時間のみを短縮します。
stats
tstats
streamstats
eventstats
sistats
sichart
sitimechart
transaction (単⼀フィールドに対してのみ)


例1: サーチでprjobコマンドを使⽤すると、サーチ内の最初の⾮ストリーミングSPLコマンドの前にredistributeコマンドが⾃
動的に配置されます。これにより、多くの結果を集計するstatsサーチが⾼速化されます。サーチのstats count by host部分は
中間リデューサー上で処理され、サーチヘッドによって結果が集計されます。
そのため、次のサーチは:
| prjob [search index=myindex | stats count by host]

466
次のように変換されます。
search index=myindex | redistribute | stats count by host

例2: eventstatsを含み、sitimechartを使⽤してtimechart操作の統計計算を実⾏するサーチを⾼速化します。中間リデューサー
は、eventstats、where、およびsitimechart操作を処理します。サーチヘッドは、timechartコマンドを使⽤して、簡易化され
たsitimechart統計を、ソートされた、資格エフェクトに対応する結果に変換します。

| prjob [search index=myindex | eventstats count by user, source | where count>10 | sitimechart max(count) by source |
timechart max(count) by source]

例3: tstatsを使⽤してイベントを⽣成するサーチを⾼速化する。サブサーチの最初にはtstatsコマンドを配置する必要があ
り、prestats=tを使⽤してtimechartコマンドと連携します。sitimechartコマンドは中間リデューサー上、timechartコマンドは
サーチヘッド上で処理されます。
| prjob [search index=myindex | tstats prestats=t count by _time span=1d | sitimechart span=1d count | timechart span=1d count]

例4: eventstatsコマンドとwhereコマンドをリデューサー上で並列処理し、sortコマンドたのすべての後続コマンドをサーチ
ヘッド上で処理します。このような処理を⾏うのは、sortコマンドがprjobコマンドではサポートされない⾮ストリーミングコ
マンドであるためです。

prjobコマンドは、このサーチには影響しません。

| prjob [ search index=myindex | eventstats count by user, source | where count >10 | sort 0 -num(count) | ...]

r u nsh el l scr ipt


runshellscriptコマンドはサポートされていない、実験的な内部コマンドです。「内部コマンドについて」を参照してくださ
い。

説明
Splunk Enterpriseのデプロイでは、スクリプト化されたアラートを実⾏します。このコマンドはサーチコマンドとしてはサ
ポートされていません。

構⽂
runshellscript <script-filename> <result-count> <search-terms> <search-string> <savedsearch-name>
<description> <results-url> <deprecated-arg> <results_file>

使⽤法
スクリプトファイルは、$SPLUNK_HOME/etc/system/bin/scriptsまたは$SPLUNK_HOME/etc/apps/<app-name>/bin/scriptsに保管する必要
があります。次の表にはスクリプトに渡す引数が記載されています。これらの引数は検証されていません。

引数 説明
$0 スクリプトのファイル名。

$1 返す結果またはイベント数。

$2 サーチ単語。

$3 完全修飾クエリー⽂字列。

$4 Splunkの保存済みサーチ名。

$5 説明または⽣成理由。たとえば、「イベント数が1を超えた」です。

$6 保存済みサーチ結果へのリンク。

$7 廃⽌-空の⽂字列引数。

$8 結果ファイルresults.csvへのパス。結果ファイルにはraw結果が含まれています。

関連項⽬
script

senda l er t
467
sendalertコマンドはサポートされていない、実験的な内部コマンドです。「内部コマンドについて」を参照してください。

説明
sendalertコマンドを使ってカスタムアラートアクションを起動します。このコマンドは、alert_actions.confファイル、保存済
みサーチ、およびコマンドの引数で渡されたカスタムパラメーターからアラートアクションの設定を収集します。次に、
トークンの置換を実⾏します。実⾏するアラートアクションのスクリプトと引数を決定し、アラートアクションペイロード
を作成してスクリプトを実⾏します。ペイロードは、STDINを使⽤してスクリプトプロセスに渡されます。

alert_actions.confファイルのmaxtime設定に従って、sendalertコマンドはカスタムスクリプトの実⾏時間が設定されている閾値
に到達した時点でプロセスを終了します。デフォルトでは、閾値は5分に設定されています。
『Splunk Web⽤のビューとAppの開発』マニュアルの「カスタムアラートアクションの⾼度なオプション」を参照してくだ
さい。

構⽂
sendalert <alert_action_name> [results_link=<url>] [results_path=<path>] [param.<name>=<"value">...]

必須引数

alert_action_name
構⽂ :<alert_action_name>
説明 :alert_actions.confファイルに設定されているアラートアクションの名前

省略可能な引数

results_link
構⽂ :results_link=<url>
説明 :サーチ結果へのURLのリンクを設定します。
results_path
構⽂ :results_path=<path>
説明 :サーチ結果を含むファイルの場所を設定します。

param.<name>
構⽂ :param.<name>=<"value">
説明 :パラメーター名および値。この名前と値のペアを使⽤して多くのことを定義できます。たとえば、閾値、チーム
名やメッセージテキストなどです。

使⽤法
アドホックサーチ でsendalertコマンドを使⽤すると、サーチ結果が⼤量にある場合はコマンドが複数回呼び出されることが
あります。これは、[統計]タブでのサーチ結果のプレビューがデフォルトで有効になっているためです。アドホックサーチを
使⽤してsendalertコマンドをテストする場合は、プレビューをオフにすることで、コマンドが複数回呼び出されることを回避
できます。
sendalertコマンドがスケジュール済みレポートやスケジュールサーチなどの保存済みサーチに含まれている場合、コマンドは
1回のみ呼び出されます。

サーチ結果のフォーマット

sendalertコマンドがサーチやアラートアクションで使⽤されている場合、サーチ結果がCSVフォーマットを使⽤してディス
パッチディレクトリのアーカイブファイルに保存されます。ファイル名はresults.csv.gzです。サーチ結果のデフォルト
フォーマットは、SRS (Splunk固有のサーチ結果のバイナリフォーマット)です。アーカイブファイルにはCSVフォーマット
が使⽤されるため、スクリプトで結果ファイルを処理できます。デフォルトのSRSフォーマットは、スクリプトで解析される
ように設計されていません。

アーカイブされたサーチ結果のフォーマットは、forceCsvResults設定で制御します。この設定は、alert_actions.confファイル
の[default]スタンザにあります。


例1:引数なしでアラートアクションを起動します。アラートアクションスクリプトは、必要なパラメーターが⽋けている場
合に適切なエラーが報告されているかどうかを確認します。
... | sendalert myaction

例2:hipchatカスタムアラートアクションを起動し、カスタムパラメーターとしてスペースとメッセージを渡します。

468
... | sendalert hipchat param.room="SecOps" param.message="There is a security problem!"

例3:servicenowアラートオプションを起動します。
... | sendalert servicenow param.severity="3" param.assigned_to="DevOps" param.short_description="Splunk Alert: this is a
potential security issue"

469
CL Iでのサーチ
CL I でのサーチについて
Splunk Enterpriseをお使いの場合、Splunk CLIを使⽤してコマンドラインからサーチコマンドを発⾏できます。ここで
は、CLIからのサーチ⽅法について説明していきます。CLIへのアクセス⽅法とヘルプの参照⽅法については、『管理』マ
ニュアルの「CLIについて」を参照してください。

サ ー チ の C L Iヘ ル プ
履歴サーチはsearchコマンドを使⽤し、リアルタイムサーチはrtsearchコマンドを使⽤して実⾏できます。役に⽴つサーチ関
連のCLIヘルプ項⽬を以下の表に⽰します。各項⽬のヘルプを表⽰するには、CLIに以下のように⼊⼒します。

./splunk help <object>

オブジェクト 説明
rtsearch リアルタイムサーチのパラメーターと構⽂が表⽰されます。

search 履歴サーチのパラメーターと構⽂が表⽰されます。

search-commands CLIで利⽤できるサーチコマンドのリストが表⽰されます。

search-fields デフォルトフィールドのリストが表⽰されます。

search-modifiers サーチ結果を絞り込むための、サーチおよび時間ベースの修飾⼦のリストが表⽰されます。

C L Iで の サ ー チ
CLIでの履歴サーチやリアルタイムサーチは、Splunk Webを使ったサーチと同様に機能しますが、サーチ結果にタイムライ
ンは表⽰されず、デフォルトの時間範囲もありません。その代わりサーチの種類に応じて、rawイベントのリストまたはテー
ブルとして表⽰されます。

詳細は、『サーチ』マニュアルの「サーチの種類」を参照してください。
CLIサーチの構⽂はSplunk Webサーチの構⽂に似ています。しかし、サーチの時間制限、サーチの実⾏場所、結果の表⽰⽅
法を指定するためにクエリー以外のパラメーターも渡すことができます。
CLIサーチオプションの詳細は、この章の「CLIサーチ構⽂」を参照してください。
ローカルサーバーからの、リモートSplunkサーバーのサーチ⽅法については、『管理』マニュアルの「リモートサー
バーへのアクセスとCLIの利⽤」を参照してください。

CL I のサーチ構⽂
ここでは、CLIでsearchおよびrtsearchコマンドを使⽤する際の、構⽂と利⽤できるオプションについて簡単に説明していきま
す。
CLIサーチの構⽂は、Splunk Webから実⾏するサーチの構⽂と似ていますが、サーチオブジェクト外からパラメーターを渡
して、サーチの時間制限を制御し、サーチ実⾏対象サーバーを指定し、結果の表⽰⽅法などを指定することができます。
search | rtsearch [object][-parameter <value>]

サーチデフォルト
デフォルトにより、サーチをCLIから実⾏すると、サーチはAll Timeを時間範囲として使⽤します。時間範囲
はearliest_time、index_earliest、またはlatest_timeなどのCLIサーチパラメーターの1つを使⽤して指定できます。

CLIを使⽤した履歴サーチを実⾏すると、最初の100イベントが返されます。maxoutサーチパラメーターを使⽤して返すイベ
ント数を指定してください。

サーチオブジェクト
サーチオブジェクトは単⼀引⽤符(' ')で囲まれており、キーワード、式、または⼀連のサーチコマンドを使⽤できます。
Windowsの場合は、⼆重引⽤符(" ")でサーチオブジェクトを囲んでください。
サーチの詳細は、『サーチチュートリアル』の「サーチの開始」を参照してください。
サーチコマンドの簡単な説明は、『サーチリファレンス』の「コマンドクイックリファレンス」を参照してください。
Splunkのコンセプト、機能、サーチコマンド、関数については、『サーチリファレンス』の「クイックリファレンスガ
イド」を参照してください。

470
サーチオブジェクトには、キーワードやサーチコマンドだけでなく、取得するイベントや⽣成する結果を指定するフィール
ドや修飾⼦も使⽤できます。
フィールドの詳細は、『サーチチュートリアル』の「フィールドを使⽤したサーチ」を参照してください。
デフォルトのフィールドとその使⽤⽅法については、『ナレッジ管理』マニュアルの「デフォルトフィールドと内部
フィールドの使⽤」を参照してください。
時間修飾⼦の詳細は、『サーチリファレンス』マニュアルの「サーチの時間修飾⼦」を参照してください。

サーチパラメーター
サーチパラメーターは、サーチの実⾏⽅法やサーチ結果の表⽰⽅法を⽰します。これらのパラメーターは省略することがで
きます。論理値を取るパラメーターには、否定(偽)として{0, false, f, no}を、肯定(真)として{1, true, t, yes}を使⽤できま
す。

パラメー 値 Default s 説明
ター
app <app_name> search サーチを実⾏するApp名を指定します。

batch <bool> F プレビューモードでの更新の処理⽅法を⽰します。

detach <bool> F ⾮同期サーチを実⾏し、サーチのジョブIDとTTLを表⽰しま


す。

earliest_time <time-modifier> ­ サーチの開始時間の相対時間修飾⼦。これはsearchでは省略


可能ですが、rtsearchでは必須です。

header <bool> T テーブル出⼒モードでヘッダーを表⽰するかどうかを指定し


ます。

index_earliest <time-modifer> サーチの開始時刻。これはエポック時または相対時間修飾⼦


として指定でき、サーチ⾔語の「earliest」および「latest」
時間修飾⼦と同じ構⽂を使⽤します。これはsearchおよ
びrtsearchの両⽅に対して省略可能です。

index_latest <time-modifer> サーチの終了時刻。これはエポック時または相対時間修飾⼦


として指定でき、サーチ⾔語の「earliest」および「latest」
時間修飾⼦と同じ構⽂を使⽤します。これはsearchおよ
びrtsearchの両⽅に対して省略可能です。

latest_time <time-modifer> ­ サーチの終了時間の相対時間修飾⼦。searchの場合、これを


指定しないと、デフォルトの最後の時間(またはデータ内の最
後のイベントの時間)が使⽤されるため、「将来の」イベント
も含まれます。rtsearchの場合このパラメーターは必須
です 。指定しない場合、リアルタイムサーチを実⾏できませ
ん。

max_time <number> 0 サーチジョブを終了するまでのサーチジョブの実⾏時間


(秒)。0を指定すると、無期限になります。

maxout <number> searchの場 エクスポート時にstdoutに返す、または送信するイベントの


合100 最⼤数。0を指定すると、イベント数の出⼒制限はありませ
ん。
rtsearchの
場合0

output rawdata、table、csv、auto ⾮変換サー ジョブの表⽰⽅法を⽰します。


チで
はrawdataを
使⽤しま
す。
変換サーチ
ではtableを
使⽤しま
す。

preview <bool> T レポートサーチをプレビューする必要があることを⽰します


(計算された結果として出⼒)。

timeout <number> 0 サーチジョブ実⾏後のサーチジョブの存続時間(秒)。0を指定


すると、実⾏後すぐにジョブがキャンセルされます。

uri [http|https]://name_of_server:management_port サーバー名と管理⽤ポートを指定しま


す。name_of_serverには、Splunkサーバーの完全解決ドメ

471
イン名またはIPアドレスを使⽤することも可能です。
デフォルトのURI値は、Splunkサーバーのweb.confに定義し
ているmgmtHostPortの値になります。

詳細は、『管理』マニュアルのリモートSplunkサーバーへの
アクセスとCLIの使⽤に関する記事を参照してください。

wrap <bool> T 端末幅よりも⻑い⾏を折り返すかどうかを指定します。


他にも、CLIヘルプにはさまざまな例が記載されています。
例1:rootセッションに⼀致する昨⽇のイベントを取得します。
./splunk search "session root daysago=1"

例2:webアクセスエラーに⼀致するイベントを取得し、サーチを削除します。
./splunk search 'eventtype=webaccess error' -detach true
例3:ウィンドウを指定して、リアルタイムサーチを実⾏します。
./splunk rtsearch 'index=_internal' -earliest_time 'rt-30s' -latest_time 'rt+30s'

詳細は、『管理』マニュアルの「CLIでのリアルタイムサーチとレポート 」を参照してください。
例4 :⼀意のホスト名のリストを返します。
このために、2種類の推奨する⽅法が存在しています。最初の⽅法はstatsコマンドを使⽤します。
./splunk search 'index=* | stats count by host | fields - count' -preview true
ホストフィールドのみに注⽬している場合は、metadataコマンドを使⽤します。

./splunk search '| metadata type=hosts | fields host' -preview true


ここで、-previewフラグは省略可能で、返された結果を表⽰するために使⽤されます。反対に、表コマンドは、フィールド
コマンドとは異なり、⾮preview出⼒を返す前に、⼀般的にはすべての⼊⼒が必要です。この場合、サーチ結果を表⽰するに
は、previewフラグを使⽤する必要があります。
例5: 昨⽇の内部イベントを返します。
./splunk search 'index=_internal' -index_earliest -1d@d -index_latest @d

472

You might also like