Splunk Enterprise 6.2.0 サーチリファレンス: 作成:2014 年 11 ⽉ 21 ⽇ 午後 4 時 13 分 Copyright (c) 2015 Splunk Inc. All Rights Reserved Table of Contents はじめに サーチリファレンスマニュアルにようこそ このマニュアルの使⽤⽅法 5 5 5 サーチリファレンスの概要 5 サーチコマンド早⾒表と Splunk Enterprise クイックリファレンス 5 カード よく使われるサーチコマンド 11 SQL ユーザーの⽅へ 12 サーチコマンドと関数 サーチコマンドの⼀覧 サーチコマンドのカテゴリ別⼀覧 eval と where の関数 stats、geostats、chart、および timechart の関数 共通の⽇付/時間書式変数 サーチの時間修飾⼦ データタイプの⼀覧 サーチコマンドリファレンス abstract accum addcoltotals addinfo addtotals analyzefields anomalies anomalousvalue append appendcols appendpipe arules associate audit autoregress bin bucket bucketdir chart cluster cofilter collect concurrency contingency convert correlate crawl datamodel dbinspect dedup delete delta diff erex 15 15 19 26 33 35 36 39 56 56 57 57 58 59 60 60 63 64 66 67 68 69 70 71 72 73 75 75 83 85 86 87 90 92 95 96 97 99 101 102 103 106 106 eval eventcount eventstats extract (kv) fieldformat fields fieldsummary filldown fillnull findkeywords findtypes folderize foreach format gauge gentimes geostats head highlight history iconify input inputcsv inputlookup iplocation join kmeans kvform loadjob localize localop lookup makecontinuous makemv map metadata metasearch multikv multisearch mvcombine mvexpand nomv outlier outputcsv outputlookup outputtext overlap pivot predict rangemap rare regex relevancy reltime rename replace rest return reverse rex 108 113 114 115 116 117 118 119 120 121 121 122 123 124 125 126 127 129 130 131 132 132 133 134 135 137 138 139 140 141 142 142 143 145 146 147 149 150 151 152 153 154 155 156 157 158 159 159 161 163 164 165 166 167 167 168 169 170 171 171 rtorder run savedsearch script scrub search searchtxn selfjoin set setfields sendemail sichart sirare sistats sitimechart sitop sort spath stats strcat streamstats table tags tail timechart top transaction transpose trendline tscollect tstats typeahead typelearner typer uniq untable where x11 xmlkv xmlunescape xpath xyseries 172 173 173 174 174 175 178 179 179 180 181 183 183 184 185 185 186 188 191 195 196 198 200 201 201 208 210 216 216 217 218 220 221 221 222 222 222 223 224 225 225 227 内部サーチコマンド 内部コマンドについて collapse dispatch dump runshellscript 227 227 227 228 228 229 CLI でのサーチ CLI でのサーチについて CLI のサーチ構⽂ 229 230 230 はじめに サーチリファレンスマニュアルにようこそ このマニュアルは、サーチコマンドの構⽂、説明、および使⽤例を探しているユーザーの⽅向けのリファレンスガ イドです。 Splunk でのサーチ⽅法の基本を学びたい場合は、『サーチチュートリアル』をご覧ください。Splunk サーチの 詳細は、『サーチマニュアル』を参照してください。 「サーチ・コマンドと関数」の「サーチ・コマンド⼀覧」には、サーチ・コマンドの⼀覧とその機能の簡単な説 明、および関連するサーチ・コマンドが記載されています。各サーチ・コマンドからは、このマニュアルの「サー チ・コマンド・リファレンス」の章に移動できるリンクがあります。概要を把握してすぐにサーチを開始したい⽅ のために、「サーチコマンド早⾒表」には簡単な説明と使⽤例が記載されています。 続⾏する前に、「このマニュアルの使⽤⽅法」でこのマニュアルの表記規則などをご確認ください。 PDF を作成 このマニュアルの PDF 版が欲しい場合は、このページの⽬次の左下にある⾚い [Download the Search Reference as PDF ] リンクをクリックしてください。PDF 版のマニュアルがその場で作成されます。作成され た PDF は後で利⽤するために保存、印刷することができます。 このマニュアルの使⽤⽅法 このマニュアルは、サーチコマンドの構⽂、説明、および使⽤例を探しているユーザーの⽅向けのリファレンスガ イドです。 各トピックのレイアウト それぞれのサーチコマンドの記事には、⾒出しとして概要、説明、例、および関連項⽬が記載されています。 概要 概要には、サーチコマンドの簡単な説明、サーチコマンドの構⽂、および各引数の説明が記載されていま す。引数にさらにオプションを指定できる場合は、引数の説明に続いてそれらのオプションが説明されてい ます。 必要な引数 必要なパラメータとその構⽂の⼀覧です。 オプション引数 オプションで指定できるパラメータとその構⽂の⼀覧です。 説明 説明には、サーチコマンドの使⽤⽅法の詳細が記載されています。 例 サーチコマンドの使⽤例が記載されています。 関連項⽬ 関連するサーチコマンドや類似のサーチコマンドへのリンクが記載されています。 構⽂を説明するために使われている表記規則 各サーチコマンドの構⽂は、「概要」に定義されています。引数は、構⽂の所に指定する順序で記載されていま す。 引数を説明するために使われている表記規則 必須の引数と省略できるオプション引数が存在しています。これらの引数は、アルファベット順に表⽰されていま す。各引数に対して「構⽂ 」と「説明 」が存在しています。説明には、使⽤情報とデフォルト値が記載されてい ます。 サーチリファレンスの概要 サーチコマンド早⾒表と Splunk Enterprise クイックリファレンス カード このトピックには、Splunk サーチ⾔語の学習に役⽴つ、クイックリファレンスや早⾒表として使⽤できるリソー スが記載されています。 Splunk Enterprise クイックリファレンスガイドのダウンロード Splunk Enterprise クイックリファレンスガイド (バージョン 6.1 で更新) は、PDF ファイルとしてのみ利⽤でき ます。これは 6 ページのリファレンスカードで、基本的なサーチの概念、コマンド、関数、および例を提供して 5 います。 サーチコマンド早⾒表のダウンロード サーチコマンド早⾒表には、コマンドの説明と使⽤例が記載されており、簡単にコマンドの概要を把握することが できます。この早⾒表は、ダウンロードできる 8 ページの PDF ファイル版も⽤意されています。 注意: このページの例で、先頭の省略記号 (...) は、パイプ演算⼦の前に search が存在していることを表してい ます。先頭のパイプは、サーチコマンドが⽣成コマンドで、コマンドラインインターフェイスや Splunk Web が、サーチの前に search コマンドを付けることを防⽌します。 管理 「audit」インデックスにある情報を表⽰します。 index=_audit | audit ルートおよびホームディレクトリをクロールして、⾒ つかったすべての利⽤可能な⼊⼒を追加します。次 に、環境設定情報を「inputs.conf」に追加します。 | crawl root="/;/Users/" | input add バケツに関する情報を、_internal インデックスに返し ます。 | dbinspect index=_internal 「_internal」インデックス内のイベントの「host」の値 を返します。 | metadata type=hosts index=_internal インデックス「_internal」内のソースの先⾏⼊⼒情報 を返します。 | typeahead prefix=source count=10 index=_internal アラート PDF を添付し、メッセージとインライン結果を記載し たメール通知を送信します。 index=_internal | head 5 | sendemail [email protected] 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 フィールド 追加 「total_count」フィールド内の「count」の、現在の合 計を保存します。 ... | accum count AS total_count サーチに関する情報を各イベントに追加します。 ... |addinfo 「404」イベントをサーチして、各イベントのフィー ルドを前のサーチ結果に追加します。 ... | appendcols [search 404] 「count」が存在する各イベントに対して、count とその 前の値の差異を算出して、結果を「countdiff」に保存 します。 ... | delta count AS countdiff 「7/01」のような値を抽出して、それを フィールドに配置します。 ... | erex monthday examples="7/01" monthday として計算されるフィールド を定義します。 distance / time velocity ... | eval velocity=distance/time フィールド/値のペアを抽出して、ディスクからフィー ルド抽出設定を再ロードします。 ... | extract reload=true 「|;」で区切られたフィールド/値のペア、および 「=:」で区切られたフィールドの値を抽出します。 ... | extract pairdelim="|;", kvdelim="=:", auto=f 場所情報を追加します (IP アドレスに基づく)。 ... | iplocation clientip ファイルが存在する場合、「eventtype.form」から値を 抽出します。 ... | kvform field=eventtype には、スタンザ名が「usertogroup」の ルックアップテーブルが指定されています。このルッ クアップテーブルには、最低でも 2 つのフィールド 「user」および「group」が存在しています。各イベン トに対して、テーブル内のフィールド「local_user」の 値をルックアップし、⼀致した任意の項⽬に対して、 ルックアップテーブル内の group フィールドの値が、 イベント内の user_group フィールドに書き込まれま す。 ... | lookup usertogroup user as local_user OUTPUT group transforms.conf as user_group 6 「splunkd」を含む⾏があった場合に、COMMAND フィール ドを抽出します。 ... | multikv fields COMMAND filter splunkd が 1〜30 の場合は range に「green」を、 31〜39の場合は「blue」を、40〜59の場合は「red」 を、範囲が⼀致しない (例:date_second=0) 場合は 「gray」を設定します。 ... | rangemap field=date_second green=1-30 blue=31-39 サーチの関連性を計算して、結果を降順に並べ替えま す。 disk error | relevancy | sort -relevancy 正規表現を使って from および to フィールドを抽出し ます。raw イベントに From: Susan To: Bob が含まれて いる場合は、from=Susan と to=Bob になります。 ... | rex field=_raw "From: (?<from>.*) To: (?<to>.*)" 書籍に関する XML または JSON 形式のデータから、 「author」フィールドを抽出します。 ... | spath output=author path=book{@author} 次のフィールドを追加します:comboIP。comboIP "sourceIP + "/" + destIP" の値。 ... | strcat sourceIP "/" destIP comboIP date_second = XML 形式データからフィールド/値のペアを抽出しま す。xmlkvを指定すると、XML タグ間の値を⾃動抽出 します。 red=40-59 default=gray ... | xmlkv 変換 フィールド foo の値を除いて、各フィールド値を数値 に変換します。無視するフィールドを指定するに は、none 引数を使⽤します。 ... | convert auto(*) none(foo) virtual フィールドのすべてのメモリー値を KB に変換 します。 ... | convert memk(virtual) sendmail syslog の期間の形式 (D+HH:MM:SS) を秒 に変更します。たとえば、delay="00:10:15" の場合、結 果の値は delay="615" になります。 ... | convert dur2sec(delay) duration フィールドの値から、⽂字列値を削除して数 値に変換します。たとえば、duration="212 sec" の場 合、結果の値は duration="212" になります。 ... | convert rmunit(duration) 「foo」の値を、複数の値に分離します。 ... | makemv delim=":" allowempty=t foo sendmail イベントに対して、senders フィールドの値 を単⼀値にまとめます。次に上位 10 件の値を表⽰し ます。 eventtype="sendmail" | nomv senders | top senders フィルタ および ip フィールドを保持し、次の順序で表⽰し ます:host、ip。 host host および ip フィールドを削除します。 ... | fields + host, ip ... | fields - host, ip 変更 Web イベントの host 別タイムライングラフを作成し ます。空のフィールドには NULL を記⼊します。 _ip フィールドの名前を localhost IPAddress で終了する任意の host に変更します。 値を localhost に変更 sourcetype="web" | timechart count by host | fillnull value=NULL ... | rename _ip as IPAddress ... | replace *localhost with localhost in host します。 フォーマット 各サーチ結果に対して、最⾼ 5 ⾏のサマリーを表⽰し ます。 ... |abstract maxlines=5 最初のサーチ結果と 3 番⽬のサーチ結果の「ip」値を ⽐較します。 ... | diff pos1=1 pos2=3 attribute=ip ⽤語 ... | highlight login,logout login および 現在のサーチの す。 logout _raw を強調表⽰します。 フィールドを、_xml に出⼒しま ... | outputtext 7 現在のサーチ結果を匿名化します。 ... | scrub すべての XML ⽂字のエスケープを解除します。 ... | xmlunescape 地域 Web アクセスイベントに場所情報を追加して、各クラ イアントエラーに対する IP アドレス、市および国の テーブルを返します。 sourcetype=access_* status=404 | head 20 | iplocation 座標の値でイベントをクラスタ化/グループ化した後 に、各性別の平均レーティングを計算します ... | geostats latfield=eventlat longfield=eventlong clientip | table clientip, City, Country avg(rating) by gender インデックス クロールで⾒つかった各ソースを、デフォルトのイン デックスに追加します。この時、ソースは⾃動的に分 類されます。 | crawl | input add 「invalid」を含むイベントを「imap」インデックスか ら削除します。 index=imap invalid | delete download す: イベントを、次のインデックスに保管しま eventtypetag="download" | collect index=downloadcount downloadcount 「summary」ehr 内の重複イベントを探します。 index=summary | overlap 予測とトレンド 前のダウンロード数に基づいて、今後のダウンロード 数を予測します。 predict count フィールド ... | trendline sma5(foo) as smoothed_foo ema10(bar) foo および bar の移動平均を算出します。 シーズンを考慮せずに、データ内のトレンドを計算し ます。 index=download | timechart span=1d count(file) as count | x11 mult15(count) レポート 各結果の数値フィールドの合計を算出し、合計を sum フィールドに保存します。 ... | addtotals fieldname=sum 「is_activated」の値を予測するために、数値フィール ドを分析します。 ... | af classfield=is_activated 例外的 (異常) な値を持つイベントを返します。 ... | anomalousvalue action=filter pthresh=0.02 相互に関係している結果を返します (相互に 3 つ以上 の参照が存在している)。 ... | associate supcnt=3 各イベントに対して、2 番⽬、3 番⽬、4 番⽬、およ び 5 番⽬の count フィールドの前の値を、それぞれ count_p2、count_p3、count_p4、および count_p5 フィール ドにコピーします。 ... | autoregress count p=2-5 バケツサーチ結果に 10 個のビンを使⽤し、各バケツ の raw イベント数を返します。 ... | bucket size bins=10 | stats count(_raw) by size 各 5 分間の期間の各「host」の平均スループット (thruput) を返します。 ... | bucket _time span=5m | stats avg(thruput) by _time ⼀意の各ホスト (host) に対して、平均サイズ (size) を 返します。 ... | chart avg(size) by host サイズ (size) による最⼤遅延 (delay) を返します。ここ で「size」は、最⼤ 10 個の同じサイズのバケツに分類 されます。 ... | chart max(delay) by size bins=10 ⼀意の各ホスト (host) とユーザー (user) のペアに対し て、最⼤遅延 (delay) に対する平均サイズ (size) の⽐率 を返します。 ... | chart eval(avg(size)/max(delay)) by host user の各値を す。 ... | chart max(delay) over foo by bar foo bar の値で分割した max(delay) を算出しま host すべてのイベントから、「datafields」の分割表を作成 します。 ... | contingency datafield1 datafield2 maxrows=5 すべてのフィールド間の共起相関関係を算出します。 ... | correlate type=cocur maxcols=5 usetotal=F 8 _internal インデックス内のイベント数を返します。 | eventcount index=_internal 総合的な平均期間を算出し、「avgdur」を duration フィールドが存在する各イベントの新しいフィールド として追加します。 ... | eventstats avg(duration) as avgdur 10 分の期間で、「_time」を連続にします。 ... | makecontinuous _time span=10m 範囲外の数値をすべて削除します。 ... | outlier url フィールドの、⼀番頻度が少ない値を表⽰します。 ... | rare url 同じ「host」値を持つ結果の重複項⽬を削除して、残 り結果の合計カウントを返します。 ... | stats dc(host) ⽂字列「lay」で終わる (例:delay、xdelay、relay な ど) 任意の⼀意のフィールドに対して、各時間の平均を 返します。 ... | stats avg(*lay) BY date_hour アクセスログをサーチして、「referer_domain」の上 位 100 件の値からヒット数を返します。 sourcetype=access_combined | top limit=100 現在までに発⾒されているイベント数 (当該イベントも 含む) を表す count フィールドを各イベントに追加し ます。つまり、最初のイベントには 1 、2 番⽬のイベ ントには 2、その後 3、4、... が追加されます。 ... | streamstats count hosts の平均スループット (thruput) の推移をグラフ化 します。 ... | timechart span=5m avg(thruput) by host ホスト (host) 別の平均「cpu_seconds」の時間グラフを 作成し、時間グラフの軸を歪める可能性があるデータ (範囲外の値) を削除します。 ... | timechart avg(cpu_seconds) by host | outlier 各ホスト (host) に対して、CPU の毎分の平均値を算出 します。 ... | timechart span=1m avg(CPU) by host ホスト (host) 別「web」ソースからのカウントの時間グ ラフを作成します。 ... | timechart count by host 各ホスト (host) に対して、毎分の平均「CPU」および平 均「MEM」を算出します。 ... | timechart span=1m eval(avg(CPU) * avg(MEM)) by url フィールドの、最多の値上位 20 件を返します。 referer_domain | stats sum(count) action=t host ... | top limit=20 url サーチ結果を再フォーマットして、指定フィールドの みを表⽰します。 ... | timechart avg(delay) by host | untable _time host サーチ結果をグラフ表⽰に適した形式に再フォーマッ トします。 ... | xyseries delay host_type host avg_delay 結果 追加 Web サーバーにアクセスした⼀意の IP アドレス数を カウントし、各ページ要求タイプ (method) でもっとも アクセス数が多いユーザーを検索します。 sourcetype=access_* | stats dc(clientip), count by 前の結果セットとサブサーチの結果の 結合します。 ... | join id [search foo] id フィールドを method | append [search sourcetype=access_* | top 1 clientip by method] フィルタ 変則イベントのみを返します。 ... | anomalies 同じホスト (host) 値を持つ重複する結果を削除しま す。 ... | dedup host foo の値とコロン区切り⽂字を組み合わせます。 ... | mvcombine delim=":" foo raw テキストに、ルーティング不可能クラス A (10.0.0.0/8) IP アドレスが含まれているサーチ結果の みを保持します。 ... | regex _raw="(? 結果の「id」フィールドを⾃⾝と結合します。 ... | selfjoin id 現在のサーチに対して、⼀意の結果のみを保持しま す。 ... | uniq 速度が 100 より⼤きい「physicsobjs」イベントを返し ます。 sourcetype=physicsobjs | where distance/time > 100 <!\d)10.\d{1,3}\.\d{1,3}\.\d{1,3}(?!\d)" 9 ⽣成 10 ⽉ 25 ⽇から今⽇までのすべての⽇次時間範囲 | gentimes start=10/25/07 id=1233886270.2 のサーチジョブが⽣成したイベントを 読み込みます。 | loadjob 1233886270.2 events=t 複数値フィールド「foo」の各値に対応する新しいイベ ントを作成します。 ... | mvexpand foo mysecurityquery という名前の保存済みサーチを実⾏し | savedsearch mysecurityquery ます。 グループ イベントをクラスタ化して、それを cluster_count 値で ソートします。次に、最⼤のクラスタ (データサイズ が) 上位 20 件を返します。 ... | cluster t=0.9 showcount=true | sort - 「date_hour」および「date_minute」フィールドの値に 基づいて、サーチ結果を 4 つのクラスタにグループ化 します。 ... | kmeans k=4 date_hour date_minute それぞれ30 秒の期間内に発⽣し、各イベント間に 5 秒を超える中断がない、同じホスト (host) と cookie を 持つサーチ結果をトランザクションにグループ化しま す。 ... | transaction host cookie maxspan=30s maxpause=5s 設定したイベントタイプを適⽤することを Splunk に 強制します。Splunk Web は、eventtype フィールドの 表⽰時に⾃動的にこれを⾏います。 ... | typer cluster_count | head 20 順序 最初の 20 件の結果を返します。 ... | head 20 結果セットの順序を逆にします。 ... | reverse 結果を す。 ... | sort ip, -url ip 値の昇順、次に url 値の降順に並べ替えま 最後の 20 件の結果を返します (逆順で)。 ... | tail 20 読み取り CSV ファイルから、結果を読み込みま す。$SPLUNK_HOME/var/run/splunk/all.csv。⽂字列 「error」を含む任意のデータを保持します。次に結果 を次のファイルに保存しま す:$SPLUNK_HOME/var/run/splunk/error.csv。 | inputcsv all.csv | search error | outputcsv errors.csv または にある、users.csv ルッ クアップファイルに読み込みます。 | inputlookup users.csv $SPLUNK_HOME/etc/system/lookups $SPLUNK_HOME/etc/apps/*/lookups 書き込み サーチ結果を CSV ファイル「mysearch.csv」に出⼒し ます。 ... | outputcsv mysearch または にある、users.csv ルッ クアップファイルに書き込みます。 | outputlookup users.csv $SPLUNK_HOME/etc/system/lookups $SPLUNK_HOME/etc/apps/*/lookups サーチ 指定された「src」または「dst」値を持つサーチ結果の みを保持します。 src="10.9.165.*" OR dst="10.9.165.8" 外部 Python スクリプト myscript を次の引数で実⾏しま す:myarg1および myarg2。次に結果をメール送信しま す。 ... | script python myscript myarg1 myarg2 | sendemail [email protected] 10 サブサーチ 上位 2 件の結果を取得して、その host、source、およ び sourcetype から _query フィールドを持つ単⼀のサー チ結果を返すサーチを作成します。 _query=( ( ... | head 2 | fields source, sourcetype, host | format "host::mylaptop" AND "source::syslog.log" AND "sourcetype::syslog" ) OR ( "host::bobslaptop" AND "source::bob-syslog.log" AND "sourcetype::syslog" ) ) 前の結果の時間範囲に対して「failure」をサーチしま す。 ... | localize maxpause=5m | map search="search failure 「url」の値に⽂字列「404」または「303」が含まれ る値を返します (両⽅を含む値は返されません)。 | set diff [search 404 | fields url] [search 303 | starttimeu=$starttime$ endtimeu=$endtime$" fields url] その他 ローカルのサーチヘッド上でのみコマンドを実⾏しま す。この場合、初期サーチ「FOO and BAR」から返 されるすべてのイベントが、リモートピアからローカ ルのサーチヘッドに転送され、そこで iplocation コマ ンドが実⾏されます。 FOO BAR | localop | iplocation allfields=t clientip 時間 10 ⽉ 1 ⽇から 10 ⽉ 5 ⽇までに、各時間に発⽣した すべてのイベントを返します。 ... | gentimes start=10/1/14 end=10/5/14 increment=1h 前の結果の時間範囲に対して「failure」をサーチしま す。 ... | localize maxpause=5m | map search="search failure イベントの発⽣時刻を表す reltime フィールドを追加し ます (「5 seconds ago」や「1 minute ago」など)。 status=503 | reltime starttimeu=$starttime$ endtimeu=$endtime$" Splunk Answers でさらなる学習を ここで⽬的の情報が⾒つからない場合は、Splunk Answers に寄せられた、他の Splunk ユーザーが経験したサー チ⾔語に関する問題と回答を確認してください。 よく使われるサーチコマンド 頻繁に使⽤されている Splunk サーチコマンドを以下の表に⽰します。これらのコマンドの⼀部は同じ関数を共有 しています。これらの関数と説明および例については、以下のページを参照してください。「eval と where の関 数」および「stats、chart、および timechart の関数」。 コマンド bucket エイリア ス 説明 bin、 連続した数値を離散集合に配置します。 discretize 関連項⽬ chart, timechart chart グラフ化するために、結果を表形式で出⼒します。「stats、chart、 および timechart の関数」も参照してください。 bucket, sichart, dedup 指定した基準に⼀致する後続の結果を削除します。 uniq eval 式を計算して、値をフィールドに保管します。「eval と where の 関数」も参照してください。 where extract kv サーチ結果から、フィールドと値のペアを抽出します。 fields サーチ結果からフィールドを削除します。 head 指定した結果の最初の n 件を返します。 lookup 明⽰的にフィールド値のルックアップを起動します。 multikv を テーブルで書式設定された (table-formatted) イベントから フィールド値 (field-values) を抽出します。 rangemap RANGE フィールドに、⼀致する範囲名を設定します。 rare フィールドの⼀番少ない値を表⽰します。 rename 指定フィールドの名前を変更します (ワイルドカードを使って複数の フィールドを指定できます)。 11 timechart kvform, multikv, xmlkv, rex reverse, tail sirare, stats, top replace 指定フィールドの値を、指定値に置換します。 rex 「groups」と⾔う名前の Perl 正規表現を指定し、サーチ時に フィールドを抽出します。 search Splunk インデックスから、⼀致するイベントを探します。 spath XML または JSON 形式から、キーと値のペアを抽出します。 extract, kvform, multikv, xmlkv, regex extract, kvform, multikv, rex, xmlkv sort サーチ結果を指定フィールドで並べ替えます。 stats 統計情報を提供します。必要に応じてフィールド別にグループ化し ます。「stats、chart、および timechart の関数」も参照してくだ さい。 tail 指定した結果の最後の n 件を返します。 head, reverse timechart 対応する統計情報テーブルで、タイムライングラフを作成します。 「stats、chart、および timechart の関数」も参照してください。 chart, bucket rare, stats top common フィールドで⼀番多い値を表⽰します。 transaction transam 各結果をトランザクションにグループ化します。 where データに任意のフィルタリングを実⾏します。「eval と where の 関数」も参照してください。 xmlkv XML キーと値のペアを抽出します。 reverse eventstats, top, rare eval extract, kvform, multikv, rex, spath Answers サーチコマンドに関する質問がありませんか?Splunk Answers をご覧ください。ここには、他の Splunk ユー ザーがサーチ⾔語に対して⾏った、さまざまな質問と回答が掲載されています。 SQL ユーザーの⽅へ これは SQL と Splunk サーチコマンド間の完全な対応を表してはいませんが、SQL に慣れ親しんでいる⽅なら ば、この簡単な⽐較を参考に⼿軽に Splunk を使い始められることでしょう。 概念 データベース⽤語で表せば、Splunk は暗黙の時間次元を持つ分散、⾮リレーショナル、半構造化データベースと ⾔えるでしょう。⼀般的な観点からすると Splunk はデータベースではありません。リレーショナル・データベー スでは、すべてのテーブル列をあらかじめ定義しておく必要があり、また新しいハードウェアをつないでも⾃動的 に拡張されることはありません。ただし、Splunk はデータベースの多くの概念と類似性があります。 DB の概念 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 列 フィールド Splunk でフィールドは、サーチによって動的に返されます。あるサーチでは 特定のフィールドセットが返され、また別のサーチでは別のセットが返され ます。Splunk に raw データからフィールドの抽出⽅法を指⽰し、その後も う⼀度同じサーチを実⾏すると前回よりも多くのフィールドが返されること もあります。Splunk のフィールドは、データ型とは結びつけられていませ ん。 12 データベース/ スキーマ インデック ス/App データベースがテーブルの集合から構成されているように、Splunk でイン デックスはデータの集合体です。そのデータの詳細な知識、抽出⽅法、実⾏ するレポートなどが、Splunk の App に保管されています。 SQL から Splunk へ 以下の例では、Splunk のフィールド「source」の値を、「table」の代理として使⽤しています。Splunk でソー ス (source) は、ファイル、ストリーム、または他のデータの取り込み元の⼊⼒を表しています (例:/var/log/messages or UDP:514)。 ある⾔語を他の⾔語に変換する場合、元の⾔語には独特の⽤語が含まれているため変換作業には時間がかかりま す。以降のサーチ例はもっと簡潔にすることもできますが、並列性と明確性のために、テーブルとフィールド名は SQL と同じままにしています。また、サーチの場合は FIELDS コマンドを使って列をフィルタリングする必要は ほとんどありません。ユーザーインターフェイスにより⼿軽な⼿段が⽤意されており、また論理演算サーチでも 「AND」が暗黙的に仮定されるため、明⽰的に指定する必要はありません。 SQL コマンド SQL の例 Splunk の例 SELECT * SELECT * source=mytable FROM mytable SELECT * WHERE FROM mytable source=mytable mycolumn=5 WHERE mycolumn=5 SELECT SELECT mycolumn1, mycolumn2 source=mytable FROM mytable | FIELDS mycolumn1, mycolumn2 SELECT * AND/OR source=mytable FROM mytable AND (mycolumn1="true" OR mycolumn2="red") WHERE (mycolumn1="true" OR mycolumn2="red") AND mycolumn3="blue" source=mytable SELECT mycolumn AS column_alias AS (エイリアス) AND mycolumn3="blue" | RENAME mycolumn as column_alias FROM mytable | FIELDS column_alias SELECT * FROM mytable BETWEEN source=mytable mycolumn>=1 mycolumn<=5 WHERE mycolumn BETWEEN 1 AND 5 SELECT mycolumn, avg(mycolumn) source=mytable mycolumn=value FROM mytable GROUP BY | STATS avg(mycolumn) BY mycolumn WHERE mycolumn=value | FIELDS mycolumn, avg(mycolumn) GROUP BY mycolumn SELECT mycolumn, avg(mycolumn) source=mytable mycolumn=value FROM mytable HAVING | STATS avg(mycolumn) BY mycolumn WHERE mycolumn=value | SEARCH avg(mycolumn)=value GROUP BY mycolumn | FIELDS mycolumn, avg(mycolumn) HAVING avg(mycolumn)=value source=mytable mycolumn="*some text*" SELECT * LIKE FROM mytable WHERE mycolumn LIKE "%some text%" 注意: Splunk でもっとも⼀般的に使⽤さ れているサーチの使⽤例 (すべてのフィー ルドに対して⼀部の⽂字列をサーチする) は、SQL ではほとんど不可能です。以下の サーチでは、どこかに「some text」を含む すべての⾏が返されます。 source=mytable "some text" 13 SELECT * ORDER BY source=mytable FROM mytable | SORT -mycolumn ORDER BY mycolumn desc SELECT DISTINCT mycolumn1, mycolumn2 SELECT DISTINCT SELECT TOP FROM mytable source=mytable | DEDUP mycolumn1 | FIELDS mycolumn1, mycolumn2 SELECT TOP 5 mycolumn1, mycolumn2 source=mytable FROM mytable | TOP mycolumn1, mycolumn2 source=mytable1 | JOIN type=inner mycolumn [ SEARCH source=mytable2 ] 注意: 結合を⾏うには、他にも 2 種類の⽅ 法があります。 lookup コマンドを使⽤して、外部 テーブルからフィールドを追加: SELECT * ... | LOOKUP myvaluelookup mycolumn OUTPUT FROM mytable1 INNER JOIN myoutputcolumn INNER JOIN mytable2 サブサーチの使⽤: ON mytable1.mycolumn=mytable2.mycolumn source=mytable1 [ SEARCH source=mytable2 mycolumn2=myvalue | FIELDS mycolumn2 ] SELECT * LEFT (OUTER) JOIN source=mytable1 FROM mytable1 | JOIN type=left mycolumn [ SEARCH source=mytable2 ] LEFT JOIN mytable2 ON mytable1.mycolumn=mytable2.mycolumn source=old_mytable | EVAL source=new_mytable | COLLECT index=mydb2 SELECT * SELECT INTO 注意: ⼀般的に COLLECT は、コストが ⾼い計算で算出されたフィールドを Splunk に保管するために⽤いられます。 そうすることにより、それ以降のアクセス が⾼速になります。この現在の例は特殊な ものですが、SQL のコマンドと⽐較するた めに記載しています。source は orig_source に名前が変更されます。 INTO new_mytable IN mydb2 FROM old_mytable source=mytable TRUNCATE TABLE TRUNCATE TABLE mytable | DELETE INSERT INTO mytable INSERT INTO VALUES (value1, value2, value3,....) SELECT mycolumn source=mytable1 FROM mytable1 UNION 注意: SELECT INTO も参照してくださ い。サーチ⾔語で個別のレコードは追加さ れませんが、必要に応じて API を使って追 加することができます。 | APPEND [ SEARCH source=mytable2] UNION | DEDUP mycolumn SELECT mycolumn FROM mytable2 SELECT * FROM mytable1 UNION ALL UNION ALL source=mytable1 14 | APPEND [ SEARCH source=mytable2] UNION ALL | APPEND [ SEARCH source=mytable2] SELECT * FROM mytable2 DELETE DELETE FROM mytable source=mytable1 mycolumn=5 WHERE mycolumn=5 | DELETE UPDATE mytable UPDATE SET column1=value, column2=value,... WHERE some_column=some_value 注意: Splunk でレコードを更新する際に は、いくつか考慮しておくことがありま す。まず、Splunk には単純に新しい値を 追加することができます (INSERT INTO を参照)。Splunk では最新の結果が先に返 されるため、古い値の削除を気にする必要 はありません。次に、取得時には最新の値 のみが使われるように、常に結果から重複 項⽬を排除することができます (SELECT DISTINCT を参照)。最後に、実際に古い レコードを削除できます (DELETE を参 照)。 サーチコマンドと関数 サーチコマンドの⼀覧 以下の表に、すべてのサーチコマンドと簡単な説明、および個別のコマンドの説明ページへのリンクを⽰します。 これらのサーチコマンドの使⽤例を含めたクイックガイドについては、「サーチコマンド早⾒表」を参照してくだ さい。 これらのコマンドの⼀部は同じ関数を共有しています。これらの関数と説明および例については、以下のページを 参照してください。「eval と where の関数」および「stats、chart、および timechart の関数」。 コマンド 説明 関連項⽬ abstract 各サーチ結果のサマリーを⽣成します。 highlight accum 指定された数値フィールドの現在までの合計値を保持し ます。 autoregress, delta, trendline, addcoltotals 以前のイベントのすべての数値フィールドの合計を含む イベントを算出します。 addtotals、 stats addinfo 現在のサーチについて、共通の情報を含むフィールドを 追加します。 search addtotals 各結果のすべての数値フィールドの合計を算出します。 addcoltotals、 stats analyzefields 他の離散型フィールドを予測できるかどうか、数値 フィールドを分析します。 anomalousvalue anomalies イベントの「unexpectedness」 (意外さ) スコアを算出 します。 anomalousvalue 不正な、または異常なサーチ結果を探します。 append サブサーチの結果を現在の結果に追加します。 appendcols サブサーチの結果フィールドを現在の結果に追加します (最初の結果を最初の結果に、2 番⽬の結果を 2 番⽬の 結果に、以降同様)。 append, appendcsv, join, set appendpipe 現在の結果セットに適⽤した、サブパイプラインの結果 を追加します append、appendcols、join。 set arules フィールド値間の相関ルールを検索します。 associate, correlate associate フィールド間の相関関係を識別します。 correlate, contingency audit ローカル監査インデックスに保管されている、監査証跡 情報を返します。 autoregress 移動平均を計算するためにデータを設定します。 bucket, bin, discretize bucketdir chart streamstats anomalousvalue, cluster, kmeans, outlier analyzefields, anomalies, cluster, kmeans, outlier appendcols, appendcsv, appendlookup, join, set accum, autoregress, delta, trendline, streamstats 連続した数値を離散集合に配置します。 chart, timechart フィールド値を上位レベルのグループに置換します (ファイル名をディレクトリで置換するなど)。 cluster, dedup グラフ化するために、結果を表形式で出⼒します。 「stats、chart、および timechart の関数」も参照して 15 bucket, sichart, timechart ください。 anomalies, anomalousvalue, cluster, cluster 類似イベントをクラスタ化します。 collect, stash サーチ結果をサマリーインデックスに保管します。 overlap concurrency 期間 (duration) フィールドを使って、各イベントの同 時 (concurrent) イベント数をサーチします。 timechart 2 つのフィールドの分割表を作成します。 associate, correlate convert フィールド値を数値に変換します。 eval correlate 異なるフィールドの相関関係を算出します。 associate, contingency crawl インデックスを作成する新たなソースのファイルシステ ムをクロールします。 datamodel データモデルまたはデータモデルオブジェクトを調査 し、データモデルオブジェクトをサーチします。 dbinspect 指定したインデックスに関する情報を返します。 dedup 指定した基準に⼀致する後続の結果を削除します。 delete 特定のイベントまたはサーチ結果を削除します。 delta 隣接する結果間でフィールド値の差異を算出します。 diff 2 つのサーチ結果の差異を返します。 dispatch ⻑期間稼働するストリーミングレポートをカプセル化し ます。 erex 類似の値を持つフィールドを⾃動抽出するための、例ま たはカウンタ例の値を指定できます。 eval 式を計算して、値をフィールドに保管します。「eval と where の関数」も参照してください。 where eventcount インデックス内のイベント数を返します。 dbinspect eventstats すべてのサーチ結果に、サマリー統計情報を追加しま す。 stats extract, kv サーチ結果から、フィールドと値のペアを抽出します。 kvform, multikv, xmlkv, rex fieldformat 出⼒時に値を変更せずにフィールドを表⽰する⽅法を指 定します。 eval, where fields サーチ結果からフィールドを削除します。 fieldsummary すべてのフィールドまたはフィールドのサブセットのサ マリー情報を⽣成します。 file このコマンドは、もうサポートされていませ ん。inputcsv を参照してください。 filldown NULL 値を最後の⾮ NULL 値で置換します。 fillnull null 値を指定値で置換します。 findtypes 提案するイベントタイプのリストを⽣成します。 folderize 上位レベルのグループを作成します (ファイル名をディ レクトリで置換するなど)。 foreach ワイルドカード指定されたフィールドリスト内の各 フィールドに対して、テンプレート化されたストリーミ ングサブサーチを実⾏します。 format サブサーチの結果を取得し、それを単⼀の結果にまとめ ます。 gauge 結果をゲージグラフでの表⽰に適した形式に変換しま す。 gentimes 時間範囲結果を⽣成します。 geostats 世界地図に表⽰する地域ビンにクラスタ化される統計情 報を⽣成します。 stats, xyseries head 指定した結果の最初の n 件を返します。 reverse, tail highlight Splunk Web で指定した単語を強調表⽰します。 kmeans, outlier contingency, counttable, ctable 16 pivot uniq accum, autoregress, trendline, streamstats extract、kvform、multikv、regex、rex。 xmlkv af, anomalies, anomalousvalue, stats fillnull typer eval history イベントリストまたはテーブル形式でサーチの履歴を返 します。 input Splunk が処理するソースを Splunk に追加または無効 にします。 inputcsv 指定した CSV ファイルから、サーチ結果を読み込みま す。 loadjob, outputcsv inputlookup 指定した静的ルックアップテーブルからサーチ結果を読 み込みます。 inputcsv、join、lookup。 outputlookup iplocation IP アドレスから場所情報を抽出します。 join メイン結果パイプラインの結果をサブパイプラインの結 果と、SQL のように結合します。 kmeans 選択フィールドに対して、K-Means クラスタリングを 実施します。 kvform フォームテンプレートを使ってサーチ結果から値を取得 します。 extract, kvform, multikv, xmlkv, rex loadjob 前に完了したサーチジョブのイベントまたは結果を読み 込みます。 inputcsv localize サーチ結果が⾒つかった時間範囲のリストを返します。 map, transaction localop Splunk に後続のコマンド (このコマンドに続くすべて のコマンド) を、リモートピア上ではなくローカルに実 ⾏するように指⽰します。 lookup 明⽰的にフィールド値のルックアップを起動します。 makecontinuous フィールドを X 軸連続にします (グラフ/時間グラフが 開始)。 chart, timechart makemv サーチ時に、指定フィールドを複数値フィールドに変更 します。 mvcombine, mvexpand, nomv map ループ演算⼦、各サーチ結果に対してサーチを実⾏しま す。 metadata 指定したインデックスまたは分散サーチピアから、ソー ス、ソースタイプ、またはホストのリストを返します。 dbinspect metasearch 論理式内の単語に基づいて、インデックスからイベント のメタデータを取得します。 metadata、 search multikv を テーブルで書式設定された (table-formatted) イベン トからフィールド値 (field-values) を抽出します。 multisearch 複数のストリーミングサーチ を同時実⾏します。 append, join mvcombine サーチ結果内で 1 つのフィールド値が異なっている複 数のイベントを、複数値フィールドを持つ単⼀の結果に まとめます。 mvexpand, makemv, nomv mvexpand 複数値フィールドの値を、その各値を持つ個別のイベン トにデプロイします。 mvcombine, makemv, nomv nomv 指定した複数値フィールドを、サーチ時に単⼀値フィー ルドに変更します。 makemv, mvcombine, mvexpand outlier 範囲外の数値を削除します。 outputcsv サーチ結果を指定した CSV ファイルに出⼒します。 inputcsv, outputtext outputlookup サーチ結果を、指定した静的ルックアップテーブルに書 き込みます。 inputlookup、lookup、outputcsv。 outputtext 結果の raw テキストフィールド (_raw) を ドに出⼒します。 overlap サマリーインデックス内で、時間が重なる、または⾒逃 したイベントをサーチします。 collect pivot 特定のデータモデルオブジェクトに対して、ピボット サーチを実⾏します。 <code>datamodel predict 時系列アルゴリズムを使って、フィールドの将来の値を 予測します。 x11 rangemap RANGE フィールドに、⼀致する範囲名を設定します。 rare フィールドの⼀番少ない値を表⽰します。 sirare, stats, top regex 指定した正規表現に⼀致しない結果を削除します。 rex、 search search selfjoin, appendcols anomalies, anomalousvalue, cluster, outlier anomalies, anomalousvalue, cluster, kmeans 17 _xml フィール outputlookup outputtext relevancy イベントとクエリーの⼀致度を計算します。 reltime 「now」と「_time」間の差をユーザーが認識できる値 に変換し、その値をサーチ結果の reltime フィールドに 追加します。 rename 指定フィールドの名前を変更します (ワイルドカードを 使って複数のフィールドを指定できます)。 replace 指定フィールドの値を、指定値に置換します。 rest REST エンドポイントにアクセスして、返されたエン ティティをサーチ結果として表⽰します。 return サブサーチから返す値を指定します。 format, search reverse 結果の並び順を逆にします。 head, sort, tail rex 「groups」と⾔う名前の Perl 正規表現を指定し、サー チ時にフィールドを抽出します。 extract, kvform, multikv, xmlkv, regex rtorder リアルタイムサーチからイベントをバッファに格納し て、可能な時にそれらを時間の昇順に⽣成します run 「script」を参照してください。 savedsearch 保存済みサーチのサーチ結果を返します。 script, run サーチの⼀環として外部 Perl または Python スクリプ トを実⾏します。 scrub サーチ結果を匿名化します。 search Splunk インデックスから、⼀致するイベントを探しま す。 searchtxn 指定したサーチ制約内のトランザクションイベントを検 索します。 transaction selfjoin 結果を⾃⾝と結合します。 join sendemail サーチ結果を指定したメールアドレスに送信します。 set サブサーチで⼀連の操作 (union、diff、intersect) を実 ⾏します。 append, appendcols, join, diff setfields すべての結果のフィールド値を共通値に設定します。 eval、fillnull、 rename sichart サマリーインデックス版の chart。 chart、sitimechart、timechart sirare サマリーインデックス版の rare。 rare sistats サマリーインデックス版の stats。 stats sitimechart サマリーインデックス版の timechart。 chart、sichart、timechart sitop サマリーインデックス版の top。 上 sort サーチ結果を指定フィールドで並べ替えます。 reverse spath 構造化データフォーマット XML および JSON から フィールドを抽出するための、直接的な⼿段を提供して います。 xpath stats 統計情報を提供します。必要に応じてフィールド別にグ ループ化します。「stats、chart、および timechart の 関数」も参照してください。 eventstats, top, rare strcat ⽂字列値を連結します。 streamstats ストリーミングを利⽤して、サマリー統計情報をすべて eventstats、stats のサーチ結果に追加します。 table 指定フィールドを使ってテーブルを作成します。 fields tags サーチ結果の指定フィールドに、タグを使って注釈を付 けます。 eval tail 指定した結果の最後の n 件を返します。 head, reverse timechart 対応する統計情報テーブルで、タイムライングラフを作 成します。「stats、chart、および timechart の関数」 も参照してください。 chart, bucket top フィールドで⼀番多い値を表⽰します。 rare, stats transaction 各結果をトランザクションにグループ化します。 transpose サーチ結果の⾏を列として再フォーマットします。 18 convert trendline フィールドの移動平均を算出します。 timechart tscollect 後ほど tstats コマンド で使⽤するために、結果を tsidx ファイルに書き込みます。 collect, stats, tstats tstats tscollect コマンドで作成された tsidx ファイルの統計 情報を算出します。 stats, tscollect typeahead 指定されたプリフィックスの先⾏⼊⼒情報を返します。 typelearner 提案するイベントタイプを⽣成します。 typer typer サーチ結果の eventtype を算出します typelearner uniq 前の結果と完全に重複する任意のサーチを削除します。 dedup untable 結果を、表形式から stats 出⼒に似た形式に変換しま す。xyseries および maketable と逆の処理を⾏います。 where データに任意のフィルタリングを実⾏します。「eval と where の関数」も参照してください。 eval x11 季節パターンを削除して、データの傾向を判断できま す。 predict xmlkv XML キーと値のペアを抽出します。 extract, kvform, multikv, rex xmlunescape XML のエスケープを解除します。 xpath XML パスを再定義します。 xyseries 結果をグラフ化に適した形式に変換します。 サーチコマンドのカテゴリ別⼀覧 使⽤法別に分類したサーチコマンドを以下の表に⽰します。⼀部のコマンドは、指定するオプションによって、複 数のカテゴリに該当することもあります。 相関 これらのコマンドは、相関サーチの作成に使⽤できます。 コマンド 説明 append サブサーチの結果を現在の結果に追加します。 appendcols サブサーチの結果フィールドを現在の結果に追加します (最初の結果を最初の結果 に、2 番⽬の結果を 2 番⽬の結果に、以降同様)。 appendpipe 現在の結果セットに適⽤した、サブパイプラインの結果を追加します arules フィールド値間の相関ルールを検索します。 associate フィールド間の相関関係を識別します。 contingency, counttable, ctable 2 つのフィールドの分割表を作成します。 correlate 異なるフィールドの相関関係を算出します。 diff 2 つのサーチ結果の差異を返します。 join メイン結果パイプラインの結果をサブパイプラインの結果と、SQL のように結合 します。 lookup 明⽰的にフィールド値のルックアップを起動します。 selfjoin 結果を⾃⾝と結合します。 set サブサーチで⼀連の操作 (union、diff、intersect) を実⾏します。 stats 統計情報を提供します。必要に応じてフィールド別にグループ化します。 「stats、chart、および timechart の関数」も参照してください。 transaction 各結果をトランザクションにグループ化します。 19 ⽇付とインデックス これらのコマンドは、データの詳細の学習、データソースの追加と削除、サマリーインデックス内のデータの管理 に使⽤できます。 データの表⽰ これらのコマンドは、インデックス内のデータに関する情報を返します。データやインデックスが変更されること はありません。 コマンド 説明 audit ローカル監査インデックスに保管されている、監査証跡情報を返します。 datamodel データモデルまたはデータモデルオブジェクトに関する情報を返します。 dbinspect 指定したインデックスに関する情報を返します。 eventcount インデックス内のイベント数を返します。 metadata 指定したインデックスまたは分散サーチピアから、ソース、ソースタイプ、また はホストのリストを返します。 typeahead 指定されたプリフィックスの先⾏⼊⼒情報を返します。 データの管理 インデックスにデータソースを追加する、またはインデックスから特定のデータを削除するために使⽤できるコマ ンドです。 コマンド 説明 crawl インデックスに追加する新たなソースのファイルシステムをクロールします。 delete 特定のイベントまたはサーチ結果を削除します。 input Splunk が処理するソースを Splunk に追加または無効にします。 サマリーインデックスの管理 これらのコマンドは、サマリーインデックスの作成と管理に使⽤されます。 コマンド 説明 collect, stash サーチ結果をサマリーインデックスに保管します。 overlap サマリーインデックス内で、時間が重なる、または⾒逃したイベントをサーチし ます。 sichart サマリーインデックス版の chart。サマリーインデックスに対して、後ほど chart サーチを実⾏するために必要な情報を算出します。 sirare サマリーインデックス版の rare。サマリーインデックスに対して、後ほど rare サーチを実⾏するために必要な情報を算出します。 sistats サマリーインデックス版の stats。サマリーインデックスに対して、後ほど stats サーチを実⾏するために必要な情報を算出します。 sitimechart サマリーインデックス版の timechart。サマリーインデックスに対して、後ほど timechart サーチを実⾏するために必要な情報を算出します。 sitop サマリーインデックス版の top。サマリーインデックスに対して、後ほど top サーチを実⾏するために必要な情報を算出します。 フィールド フィールドまたはフィールド値の追加、抽出、および変更に仕様できるコマンドです。フィールドを操作するため にもっとも役⽴つコマンドは、eval とその関数です。 フィールドの追加 20 新しいフィールドを追加するには、これらのコマンドを使⽤します。 コマンド 説明 accum 指定された数値フィールドの現在までの合計値を保持します。 addinfo 現在のサーチについて、共通の情報を含むフィールドを追加します。 addtotals 各結果のすべての数値フィールドの合計を算出します。 delta 隣接する結果間でフィールド値の差異を算出します。 eval 式を計算して、値をフィールドに保管します。「eval と where の関数」も参照し てください。 iplocation IP アドレスに基づいて市、国、緯度、経度などの場所情報を追加します。 lookup 設定されたルックアップテーブルに対して、明⽰的にフィールド値ルックアップ を開始して、ルックアップテーブルからイベントにフィールドを追加します。 multikv を テーブルで書式設定された (table-formatted) イベントからフィールド値 (field-values) を抽出します。 rangemap RANGE フィールドに、⼀致する範囲名を設定します。 relevancy イベントがクエリとどれだけ⼀致しているかを⽰す関連フィールドを追加しま す。 strcat ⽂字列値を連結し、結果を指定フィールドに保存します。 フィールドの抽出 サーチ結果から新しいフィールドを抽出するさまざまな⽅法を提供しています。 コマン ド 説明 類似の値を持つフィールドを⾃動抽出するための、例またはカウンタ例の値を指定できます。 erex extract, kv サーチ結果から、フィールドと値のペアを抽出します。 kvform フォームテンプレートを使ってサーチ結果から値を取得します。 rex 「groups」と⾔う名前の Perl 正規表現を指定し、サーチ時にフィールドを抽出します。 spath 構造化データフォーマット XML および JSON からフィールドを抽出するための、直接的な⼿段 を提供します。 xmlkv XML キーと値のペアを抽出します。 フィールドおよびフィールド値の変更 フィールドまたはその値を変更するには、これらのコマンドを使⽤します。 コマンド 説明 convert フィールド値を数値に変換します。 filldown NULL 値を最後の⾮ NULL 値で置換します。 fillnull null 値を指定値で置換します。 makemv サーチ時に、指定フィールドを複数値フィールドに変更します。 nomv 指定した複数値フィールドを、サーチ時に単⼀値フィールドに変更します。 21 reltime 「now」と「_time」間の差をユーザーが認識できる値に変換し、その値をサーチ 結果の reltime フィールドに追加します。 rename 指定フィールドの名前を変更します (ワイルドカードを使って複数のフィールドを 指定できます)。 replace 指定フィールドの値を、指定値に置換します。 異常の検索 データの異常を検索するには、これらのコマンドを使⽤します。⼀般的ではないまたは範囲外のイベントとフィー ルドのサーチ、または同様のイベントのクラスタ化。 コマンド 説明 analyzefields, af 他の離散型フィールドを予測できるかどうか、数値フィールドを分析します。 anomalies イベントの「unexpectedness」 (意外さ) スコアを算出します。 anomalousvalue 不正な、または異常なサーチ結果を探します。 cluster 類似イベントをクラスタ化します。 kmeans 選択フィールドに対して、K-Means クラスタリングを実施します。 outlier 範囲外の数値を削除します。 rare フィールドの⼀番少ない値を表⽰します。 Geo IP と場所 これらのコマンドは、サーチ結果に地域情報を追加します。 コマンド 説明 iplocation IP アドレスに基づいて市、国、緯度、経度などの場所情報を返します。 geostats 世界地図に表⽰する地域ビンにクラスタ化される統計情報を⽣成します。 予測とトレンド これらのコマンドは将来の値を予測し、視覚エフェクトの作成に利⽤できるトレンド線を計算します。 コマンド 説明 predict 時系列アルゴリズムを使って、フィールドの将来の値を予測します。 trendline フィールドの移動平均を算出します。 x11 季節パターンを削除して、データの傾向を判断できます。 レポート これらのコマンドは、変換サーチ の作成に使⽤されます。これらのコマンドは、グラフや他の種類の視覚エフェ クトに必要な統計データテーブルを返します。 コマンド 説明 addtotals 各結果のすべての数値フィールドの合計を算出します。 bucket, bin, discretize 連続した数値を離散集合に配置します。 chart グラフ化するために、結果を表形式で出⼒します。「stats、chart、および timechart の関数」も参照してください。 contingency, counttable, 22 contingency, counttable, ctable 2 つのフィールドの分割表を作成します。 correlate 異なるフィールドの相関関係を算出します。 eventcount インデックス内のイベント数を返します。 eventstats すべてのサーチ結果に、サマリー統計情報を追加します。 gauge 結果をゲージグラフでの表⽰に適した形式に変換します。 makecontinuous フィールドを X 軸連続にします (グラフ/時間グラフが開始)。 outlier 範囲外の数値を削除します。 rare フィールドの⼀番少ない値を表⽰します。 stats 統計情報を提供します。必要に応じてフィールド別にグループ化します。 「stats、chart、および timechart の関数」も参照してください。 streamstats ストリーミングを利⽤して、サマリー統計情報をすべてのサーチ結果に追加しま す。 timechart 対応する統計情報テーブルで、タイムライングラフを作成します。「stats、 chart、および timechart の関数」も参照してください。 top フィールドで⼀番多い値を表⽰します。 trendline フィールドの移動平均を算出します。 untable 結果を、表形式から stats 出⼒に似た形式に変換します。xyseries および と逆の処理を⾏います。 xyseries 結果をグラフ化に適した形式に変換します。 maketable 結果 これらのコマンドは、サーチ結果の管理に使⽤できます。たとえば、⼀連の結果を他の結果への追加、結果からの イベントのフィルタリング、結果の再フォーマットなどの作業を⾏えます。 アラート サーチ結果をメールで送信するには、このコマンドを使⽤します。 コマンド sendemail 説明 サーチ結果をインラインで、または添付ファイルとして、指定した 1 つまたは複 数のメールアドレスに送信します。 追加 1 つの結果セットを、他のセットまたはそれ⾃⾝に追加します。 コマンド 説明 append サブサーチの結果を現在の結果に追加します。 appendcols サブサーチの結果フィールドを現在の結果に追加します (最初の結果を最初の結果 に、2 番⽬の結果を 2 番⽬の結果に、以降同様)。 join メイン結果パイプラインの結果をサブパイプラインの結果と、SQL のように結合 します。 selfjoin 結果を⾃⾝と結合します。 フィルタ 現在の結果からイベントやフィールドを削除する場合に使⽤します。 23 コマン ド 説明 dedup 指定した基準に⼀致する後続の結果を削除します。 fields サーチ結果からフィールドを削除します。 mvcombine サーチ結果内で 1 つのフィールド値が異なっている複数のイベントを、複数値フィールドを持つ単 ⼀の結果にまとめます。 regex 指定した正規表現に⼀致しない結果を削除します。 searchtxn 指定したサーチ制約内のトランザクションイベントを検索します。 table 指定フィールドを使ってテーブルを作成します。 uniq 前の結果と完全に重複する任意のサーチを削除します。 where データに任意のフィルタリングを実⾏します。「eval と where の関数」も参照してください。 フォーマット 現在の結果を再フォーマットする場合に使⽤します。 コマンド 説明 untable 結果を、表形式から stats 出⼒に似た形式に変換します。xyseries および と逆の処理を⾏います。 xyseries 結果をグラフ化に適した形式に変換します。 maketable ⽣成 イベントを⽣成または返す場合に使⽤します。 コマンド 説明 gentimes 時間範囲に⼀致する結果を返します。 loadjob 前に完了したサーチジョブのイベントまたは結果を読み込みます。 mvexpand 複数値フィールドの値を、その各値を持つ個別のイベントにデプロイします。 savedsearch 保存済みサーチのサーチ結果を返します。 search Splunk インデックスから、⼀致するイベントを探します。このコマンドは、各 サーチパイプラインの先頭に暗黙的に存在しており、他の⽣成コマンドで開始す ることはありません。 グループ 現在の結果をグループ化または分類する場合に使⽤します。 コマンド 説明 cluster 類似イベントをクラスタ化します。 kmeans 選択フィールドに対して、K-Means クラスタリングを実施します。 mvexpand 複数値フィールドの値を、その各値を持つ個別のイベントにデプロイします。 transaction 各結果をトランザクションにグループ化します。 typelearner 提案するイベントタイプを⽣成します。 24 サーチ結果の eventtype を算出します typer 再配置 現在のサーチ結果を並べ替える場合に使⽤します。 コマンド 説明 head 指定した結果の最初の n 件を返します。 reverse 結果の並び順を逆にします。 sort サーチ結果を指定フィールドで並べ替えます。 tail 指定した結果の最後の N 件を返します。 読み取り 外部ファイルまたは前のサーチから結果を読み込む場合に使⽤します。 コマンド 説明 inputcsv 指定した CSV ファイルから、サーチ結果を読み込みます。 inputlookup 指定した静的ルックアップテーブルからサーチ結果を読み込みます。 loadjob 前に完了したサーチジョブのイベントまたは結果を読み込みます。 書き込み 現在のサーチ結果の出⼒⽅法を定義する場合に使⽤します。 コマンド 説明 outputcsv サーチ結果を指定した CSV ファイルに出⼒します。 outputlookup サーチ結果を、指定した静的ルックアップテーブルに書き込みます。 outputtext 結果の raw テキストフィールド (_raw) を sendemail サーチ結果をインラインで、または添付ファイルとして、指定した 1 つまたは複 数のメールアドレスに送信します。 _xml フィールドに出⼒します。 サーチ コマンド 説明 map ループ演算⼦、各サーチ結果に対してサーチを実⾏します。 search Splunk インデックスから、⼀致するイベントを探します。このコマンドは、各 サーチパイプラインの先頭に暗黙的に存在しており、他の⽣成コマンドで開始す ることはありません。 sendemail サーチ結果をインラインで、または添付ファイルとして、指定した 1 つまたは複 数のメールアドレスに送信します。 localop Splunk に後続のコマンド (このコマンドに続くすべてのコマンド) を、リモート ピア上ではなくローカルに実⾏するように指⽰します。 サブサーチ サブサーチ で使⽤できるコマンドです。 コマンド append 説明 サブサーチの結果を現在の結果に追加します。 25 appendcols サブサーチの結果フィールドを現在の結果に追加します (最初の結果を最初の結果 に、2 番⽬の結果を 2 番⽬の結果に、以降同様)。 appendpipe 現在の結果セットに適⽤した、サブパイプラインの結果を追加します format サブサーチの結果を取得し、それを単⼀の結果にまとめます。 join メイン結果パイプラインの結果をサブパイプラインの結果と、SQL のように結合 します。 return サブサーチから返す値を指定します。 set サブサーチで⼀連の操作 (union、diff、intersect) を実⾏します。 時間 時間範囲に基づいてサーチする、または時間情報をイベントに追加する場合に使⽤します。 コマンド 説明 gentimes 時間範囲に⼀致する結果を返します。 localize サーチ結果が⾒つかった時間範囲のリストを返します。 reltime 「now」と「_time」間の差をユーザーが認識できる値に変換し、その値をサーチ 結果の reltime フィールドに追加します。 eval と where の関数 これらの関数は、eval および where コマンドと⼀緒に、および eval 式の⼀部として使⽤できます。 ⽂字列を受け付けるすべての関数は、リテラル⽂字列または任意のフィールドを受け付けられます。 数値を受け 付けるすべての関数は、リテラル数値または任意の数値フィールドを受け付けられます。 関数 abs(X) 説明 例 この例では、absnum を返します。absnum の値は、数値 フィールド number の絶対値です。 この関数は数値 X を取 り、その絶対値を返しま す。 ... | eval absnum=abs(number) case(X,"Y",...) この関数は引数ペア X と Y を取ります。X 引数は論 理式で、最初から最後まで この例は、対応する HTTP ステータスコードの説明を返しま 評価していきます。X 式の す。 評価が最初に真 (True) と ... | eval description=case(error == 404, "Not found", error == なった時に、対応する Y 引数が返されます。どれも 500, "Internal Server Error", error == 200, "OK") 真 (True) でない場合は、 デフォルトでは NULL が 返されます。 ceil(X), ceiling(X) この関数は値 X を次に⼤ きな整数に丸めます。 この例では、n=2 を返します。 cidrmatch("X",Y) ... | eval n=ceil(1.9) この関数は、IP アドレス Y が特定のサブネット X に所属する場合に真 (True) を返します。この 関数は、CIDR サブネット と照合する IP アドレス の、2 つの⽂字列引数を使 ⽤します。 この例では cidrmatch を使って、ip がサブネットと⼀致した場 合は isLocal フィールドに「local」を、⼀致しない場合は「not local」を設定しています。 ... | eval isLocal=if(cidrmatch("123.132.32.0/25",ip), "local", "not local") この例は、cidrmatch をフィルタとして使⽤しています。 ... | where cidrmatch("123.132.32.0/25", ip) coalesce(X,...) IP アドレスが clientip または ipaddress に抽出されている、⼀ 連のイベントがある場合を考えてみましょう。この例は、新し いフィールド ip を定義しています。このフィールドは、どちら この関数は任意の数の引数 を取得して、NULL ではな が NULL (イベントに存在している) ではないかに応じ 26 coalesce(X,...) を取得して、NULL ではな て、clientip または い最初の値を返します。 ipaddress の値を取ります。 ... | eval ip=coalesce(clientip,ipaddress) commands(X) この関数はサーチ⽂字列 X またはサーチ⽂字列 X を 含むフィールドを取り、X ... | eval x=commands("search foo | stats count | sort count") 内で使⽤されているコマン ドのリストを含む複数値 フィールドを返します (ロ 「search」、「stats」、および「sort」を含む複数値フィール グイベントの監査を分析す ド x を返します。 る場合を除いて、⼀般的に これの使⽤はお勧めできま せん)。 exact(X) この関数は、数値 eval 計 算を⼤きな精度で書式設定 された出⼒を表⽰します。 exp(X) この関数は数値 X を取 り、eX を返します。 floor(X) この関数は値 X を次に⼩ さな整数に丸めます。 if(X,Y,Z) この関数は 3 つの引数を 取ります。最初の引数 X は論理演算式でなければな error の値を評価して、error=200 の場合は err=OK を、そうで ない場合は err=Error を返します。 りません。X の評価が 真 (True) の場合、結果は 2 ... | eval err=if(error == 200, "OK", "Error") 番⽬の引数 Y になりま す。X の評価が偽 (False) の場合、結果は 3 番⽬の 引数 Z を返します。 isbool(X) この関数は引数 X を取 または り、X がブールの場合は真 (True) を返します。 ... | eval n=exact(3.14 * num) この例は y=e3 を返します。 ... | eval y=exp(3) この例では、1 を返します。 ... | eval n=floor(1.9) ... | eval n=if(isbool(field),"yes","no") ... | where isbool(field) ... | eval n=if(isint(field), "int", "not int") isint(X) この関数は引数 X を取 り、X が整数の場合は真 (True) を返します。 または ... | where isint(field) isnotnull(X) ... | eval n=if(isnotnull(field),"yes","no") この関数は引数 X を取 り、X が NULL でない場 合は真 (True) を返しま または す。フィールド (X) に値が 含まれているかどうかを確 ... | where isnotnull(field) 認する場合に役⽴ちます。 isnull(X) この関数は引数 X を取 り、X が NULL の場合は 真 (True) を返します。 ... | eval n=if(isnull(field),"yes","no") または ... | where isnull(field) ... | eval n=if(isnum(field),"yes","no") isnum(X) この関数は引数 X を取 り、X が数値の場合は真 (True) を返します。 または ... | where isnum(field) ... | eval n=if(isstr(field),"yes","no") isstr(X) len(X) この関数は引数 X を取 り、X が⽂字列の場合は真 または (True) を返します。 ... | where この関数は⽂字列 X の⽂ 字⻑を返します。 isstr(field) ... | eval n=len(field) この関数は、照合する⽂字 27 like(TEXT, PATTERN) この関数は、照合する⽂字 この例では、フィールド値が foo で始まる場合に islike=TRUE 列 TEXT と照合式⽂字列 PATTERN の、2 つの引数 を返します。 を取ります。 最初の引数 が Y の SQLite パターンの ... | eval is_a_foo=if(like(field, "foo%"), "yes a foo", "not a foo") ような場合にのみ真 (True) を返します。パ ターン⾔語はテキスト完全 または ⼀致、およびワイルドカー ド %、および 1 ⽂字に⼀ ... | where like(field, "foo%") 致する _ ⽂字をサポートし ています。 ln(X) この関数は数値 X を取 り、その⾃然対数を返しま す。 log(X,Y) log(X) lower(X) ltrim(X,Y) ltrim(X) この関数は、1 つまたは 2 つの数値引数を取り、2 番 ⽬の引数を底とした最初の 引数 X の対数を返しま す。2 番⽬の引数 Y が省 略されている場合、この関 数は 10 を底とした数値 X の対数を返します。 この例は、bytes の値の⾃然対数を返します。 ... | eval lnBytes=ln(bytes) ... | eval num=log(number,2) この関数は⽂字列引数を取 この例は、username フィールドの値を⼩⽂字で返します。 り、⼩⽂字版の⽂字列を返 します。⼤⽂字を返すため ... | eval username=lower(username) の、upper() 関数も⽤意さ れています。 この関数は 1 つまたは 2 つの⽂字列引数 X および Y を取り、Y 内の⽂字を左 この例は、x="abcZZ" を返します。 側からトリミングした X を返します。Y が指定され ... | eval x=ltrim(" ZZZZabcZZ ", " Z") ていない場合、スペースお よびタブがトリミングされ ます。 match(SUBJECT, "REGEX") この関数は正規表現⽂字列 この例は、フィールドが IP アドレスの基本パターンに⼀致して REGEX を SUBJECT の いる場合にのみ真を返します。この例では完全⼀致のために、^ 値と⽐較して、論理値を返 と $ を使⽤していることに注意してください。 します。REGEX で SUBJECT の任意のサブ⽂ ... | eval n=if(match(field, 字列との⼀致が⾒つかった 場合、真 (True) が返され "^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$"), 1, 0) ます。 max(X,...) この関数は数値または⽂字 この例では、field の値に応じて「foo」またはフィールドが返さ 列引数の任意数を取り、最 れます。 ⼤値を返します。X は数値 または⽂字列になります。 ... | eval n=max(1, 3, 6, 7, "foo", field) ⽂字列は数値よりも⼤きく なります。 md5(X) この関数は、⽂字列値 X の MD5 ハッシュを返しま す。 min(X,...) この関数は数値または⽂字 この例では、field の値に応じて 1 またはフィールドが返されま 列引数の任意数を取り、最 す。 ⼩値を返します。X は数値 または⽂字列になります。 ... | eval n=min(1, 3, 6, 7, "foo", field) ⽂字列は数値よりも⼤きく なります。 mvappend(X,"Y",Z) この関数は 2 つの⽂字列 またはフィールド X およ び Z、および 1 つの⽂字列 Y の 3 つの引数を取り、 複数値結果を返します。結 果は X の 1 つまたは複数 の値、Y の値、および Z の 1 つまたは複数の値す べてを、1 つの複数値結果 に追加したものになりま す。フィールド X および Z は、複値または単⼀値 フィールドになります。 mvcount(MVFIELD) この関数はフィールド MVFIELD を取り、フィー ルドが複数値フィールドの 場合は値数を、単⼀値 フィールドの場合は 1 ... | eval n=md5(field) ... | eval fullName=mvappend(last_values, "middle value", initial_values) ... | eval n=mvcount(multifield) 28 を、それ以外の場合は NULL を返します。 mvdedup(X) この関数は複数値フィール ド X を取り、その重複値 を取り除いた複数値フィー ルドを返します。 ... | eval s=mvdedup(mvfield) この関数は任意の論理演算 式 X に基づいて、複数値 フィールドをフィルタリン グします。論理演算式 X この例は、最後が .net または .org で終了する、すべての は、⼀度に 1 つのフィー フィールドの値を返します: ルドのみを参照できます。 mvfilter(X) mvfind(MVFIELD,"REGEX") 注意 :フィールド x の NULL 値も返します。 NULL 値が不要な場合は、 次の式を使⽤してくださ い:mvfilter(x!=NULL)。 この関数は、複数値フィー ルド X 内に、正規表現 REGEX と⼀致する値があ るかどうかを確認します。 ⼀致する値があった場合、 最初に⼀致した値のイン デックスが返されます (0 から始まる)。⼀致する値 がない場合は、NULL が返 されます。 ... | eval n=mvfilter(match(email, "\.net$") OR match(email, "\.org$")) ... | eval n=mvfind(mymvfield, "err\d+") この関数は 2 つまたは 3 つの引数 (フィールド MVIELD、数値 STARTINDEX および ENDINDEX) を取り、提 供されたインデックスを 使って複数値フィールドの サブセットを返します。 mvindex(mvfield, mvindex(MVFIELD,STARTINDEX, startindex, [endindex]) の ENDINDEX) 場合、endindex は包括的 mvindex(MVFIELD,STARTINDEX) インデックスは 0 から開始するため、この例では multifield 内 の 3 番⽬の値が返されます (存在する場合)。 で省略することができま す。startindex と endindex の両⽅が負の値 になることもあります。こ の場合、-1 が最後のエレ メントになります。 endindex を指定しない場 合は、単純に startindex に対応する値が返されま す。インデックスが範囲外 または無効な場合、結果は NULL になります。 ... | eval n=mvindex(multifield, 2) mvjoin(MVFIELD,STR) この関数は複数値フィール この例は、セミコロンを区切り⽂字に使って、「foo」の個別の ド MVFIELD および⽂字 列区切り⽂字 STR の 2 つ 値を結合します。 の引数を取り、MVFIELD の個別の値を STR を区切 ... | eval n=mvjoin(foo, ";") り⽂字として使って連結し ます。 mvrange(X,Y,Z) この関数は、数値範囲の複 数値フィールドを作成しま す。開始番号 X、終了番号 この例は、値 1、3、5、7、9 を持つ複数値フィールドを返しま Y (除外)、およびオプショ す。 ンの増分 Z の、最⾼で 3 つの引数を取ります。増分 ... | eval mv=mvrange(1,11,2) が期間 ('7'd など) の場 合、開始番号と終了番号は エポック時として処理され ます。 mvsort(X) この関数は複数値フィール ド X を取り、その値を辞 書的にソートした複数値 フィールドを返します。 ... | eval s=mvsort(mvfield) この関数は 2 つの複数値 フィールド X と Y を取 り、X の最初の値 を Y の 最初の値と、次に 2 番⽬ 29 mvzip(X,Y,"Z") の値同⼠を...のように結合 していきます。Python の zip コマンドと似ていま す。3 番⽬の引数 Z は省略 可能で、2 つの値を結合す るための区切り⽂字の指定 に⽤いられます。デフォル トの区切り⽂字はカンマで す。Python の zip コマン ドと同様です。 ... | eval nserver=mvzip(hosts,ports) now() この関数は引数を取らず、 サーチの開始時刻を返しま す。時刻は UNIX 時刻ま たはエポックからの秒数で 表されます。 null() この関数は引数を取らず、 NULL を返します。評価エ ンジンは NULL を使って 「値なし」を表し、フィー ルドの値を消去するために NULL を設定します。 nullif(X,Y) この関数はフィールド X と Y の 2 つの引数を取 り、引数が異なる場合は X を返します。そうでない場 合は NULL を返します。 ... | eval n=nullif(fieldA,fieldB) pi() この関数は引数を取らず、 精度が 11 桁のパイ定数を 返します。 ... | eval area_circle=pi()*pow(radius,2) pow(X,Y) この関数は 2 つの数値引 数 X と Y を取り、X Y を 返します。 ... | eval area_circle=pi()*pow(radius,2) random() この関数は引数を取らず、 0〜231-1 の範囲の疑似乱 数 (整数) を返します。 例:0…2147483647 relative_time(X,Y) この関数はエポック時 X を最初の引数、相対時間指 定⼦ Y を 2 番⽬の引数と して取り、Y を X に適⽤ したエポック時値を返しま す。 replace(X,Y,Z) この関数は、⽂字列 X 内 の正規表現⽂字列 Y に⼀ この例では、⽉と⽇を⼊れ替えた⽇付を返します。たとえば、 致する各⽂字列を、代替⽂ ⼊⼒が 1/12/2009 の場合、12/1/2009 が返されます。 字列 Z で修正した⽂字列 を返します。3 番⽬の引数 ... | eval n=replace(date, "^(\d{1,2})/(\d{1,2})/", "\2/\1/") Z も、正規表現に⼀致する グループを参照することが できます。 round(X,Y) rtrim(X,Y) rtrim(X) searchmatch(X) sha1(X) ... | eval n=relative_time(now(), "-1d@d") この例では、n=4 を返します。 この関数は 1 つまたは 2 つの数値引数 X と Y を取 ... | eval n=round(3.5) り、X を Y に指定されて いる⼩数位で丸めた値を返 この例では、n=2.56 を返します。 します。デフォルトでは、 整数に丸められます。 ... | eval n=round(2.555, 2) この関数は 1 つまたは 2 つの⽂字列引数 X および Y を取り、Y 内の⽂字を右 この例は、x="ZZZZabc" を返します。 側からトリミングした X を返します。Y が指定され ... | eval n=rtrim(" ZZZZabcZZ ", " Z") ていない場合、スペースお よびタブがトリミングされ ます。 この関数は、サーチ⽂字列 となる 1 つの引数 X を取 ります。この関数は、イベ ントがサーチ⽂字列に⼀致 した場合にのみ、真 (True) を返します。 この関数は、FIPS 互換 SHA-1 ハッシュ関数に基 づいて、⽂字列値 X の保 護されたハッシュを計算し ... | eval n=searchmatch("foo AND bar") ... | eval n=sha1(field) 30 て返します。 sha256(X) この関数は、FIPS 互換 SHA-256 ハッシュ関数に 基づいて、⽂字列値 X の 保護されたハッシュを計算 して返します。 ... | eval n=sha256(field) sha512(X) この関数は、FIPS 互換 SHA-512 ハッシュ関数に 基づいて、⽂字列値 X の 保護されたハッシュを計算 して返します。 ... | eval n=sha512(field) sigfig(X) この関数は 1 つの数値引 数 X を取り、その数値を 適切な有効数字に丸めま す。 1.00*1111 = 1111、しかし ... | eval n=sigfig(1.00*1111) は n=1110 を返します。 spath(X,Y) ⼊⼒ソースフィールド X、 および spath 式 Y (X から 抽出する値の場所を表した XML または JSON 形式の この例は、locDesc エレメントの値を返します。 パス) を取ります。Y がリ テラル⽂字列の場合は、引 ... | eval locDesc=spath(_raw, ⽤符で囲む必要があります (spath(X,"Y"))。Y がフィー "vendorProductSet.product.desc.locDesc") ルド名 (パスの値を持つ) の場合は、引⽤符は必要あ この例は、twitter イベントから hashtags を返します。 index=twitter | eval output=spath(_raw, "entities.hashtags") りません。結果が複数値 フィールドになることもあ ります。詳細は、spath サーチコマンドを参照して ください。 split(X,"Y") この関数は、フィールド X および区切り⽂字 Y の 2 つの引数を取り、X の値を 区切り⽂字 Y で分割した 複数値フィールドを返しま す。 sqrt(X) この関数は 1 つの数値引 数 X を取り、その平⽅根 を返します。 strftime(X,Y) この引数はエポック時の値 X を最初の引数として取 り、2 番⽬の引数 Y に指 この例では、_time フィールドから時間と分を返します。 定されている書式で⽂字列 として表⽰します。書式設 ... | eval n=strftime(_time, "%H:%M") 定オプションの詳細につい ては、「共通の時間書式設 定変数」を参照してくださ い。 strptime(X,Y) この引数は⽂字列 X で表 される時刻を取り、Y に指 timeStr の形式が「11:59」の場合は、タイムスタンプとしてそ 定されている書式を使って れを返します。 それのタイムスタンプを解 析します。書式設定オプ ... | eval n=strptime(timeStr, "%H:%M") ションの詳細については、 「共通の時間書式設定変 数」を参照してください。 substr(X,Y,Z) ... | eval n=split(foo, ";") この例では、3 を返します。 ... | eval n=sqrt(9) この関数は、2 つまたは 3 つの引数を取ります。X は ⽂字列、Y と Z は数値と なります。Y から始まり、 Z に指定されている⽂字数 までの、X の⽂字列の⼀部 を返します。Z が指定され この例では、「str」と「ing」を連結して「string」を返しま ていない場合は、残りの⽂ す。 字列を返します。 ... | eval n=substr("string", 1, 3) + substr("string", -3) インデックスは 1 から始 まる SQLite セマンティク スに従います。⽂字列の最 後からの開始を指⽰するた めに、負のインデックスを 使⽤することができます。 この関数は実時間をマイク 31 time() tonumber(NUMSTR,BASE) tonumber(NUMSTR) ロ秒の単位まで返します。 time() の値は、eval コマン ドによりイベントが処理さ れた時期に基づいて、各イ ベントに対して異なりま す。 この関数は⼊⼒⽂字列 NUMSTR を数値に変換し ます。BASE はオプション で、変換する数値の基数を 定義するために⽤いられま す。BASE は 2..36 になり この例では、164 を返します。 ます。デフォルトは 10 で す。tonumber がフィール ... | eval n=tonumber("0A4",16) ド値を数字にパーシングで きない場合は、NULL が返 されます。 tonumber が リテラル⽂字列を数値に パーシングできない場合、 エラーが返されます。 この関数は、⼊⼒値を⽂字 列に変換します。⼊⼒値が 数値の場合、それが⽂字列 に変換されます。⼊⼒値が 論理値の場合は、対応する ⽂字列値、真 (True) また は偽 (False) が返されま す。 この関数には、最低 1 つ の引数 X が必要です。X が数値の場合、2 番⽬の引 数 Y は省略可能で、また "hex" "commas" または "duration" になります。 tostring(X,Y) tostring(X,"hex") この例は、「True 0xF 12,345.68」を返します。 ... | eval n=tostring(1==1) + " " + tostring(15, "hex") + " " tostring(12345.6789, "commas") この例は、foo=615 は、X を 16 進形式 に変換します。 and foo2=00:10:15 を返します。 ... | eval foo=615 | eval foo2 = tostring(foo, "duration") tostring(X,"commas") はカンマを使って X に書式を設定し、数 値に⼩数が含まれて いる場合は、⼩数第 2 位に丸めます。 tostring(X,"duration") は、秒の X を認識で きる時間形式 HH:MM:SS に変換 します。 trim(X,Y) trim(X) この関数は 1 つまたは 2 つの⽂字列引数 X および Y を取り、Y 内の⽂字を両 この例は、「abc」を返します。 側からトリミングした X を返します。Y が指定され ... | eval n=trim(" ZZZZabcZZ ", " ていない場合、スペースお よびタブがトリミングされ ます。 Z") この例は、「NumberStringBoolInvalid」を返します。 typeof(X) upper(X) urldecode(X) この関数は 1 つの引数を 取り、そのタイプの⽂字列 表記を返します。 ... | eval n=typeof(12) + typeof("string") + typeof(1==2) + typeof(badfield) この関数は⽂字列引数を取 この例は、username フィールドの値を⼤⽂字で返します。 り、⼤⽂字版の⽂字列を返 します。⼩⽂字を返すため ... | eval n=upper(username) の、lower() 関数も⽤意さ れています。 この例では、「http://www.splunk.com/download? この関数は 1 つの URL ⽂ r=header」が返されます。 字列引数 X を取り、エス ケープされていない、また ... | eval は復号化された URL ⽂字 n=urldecode("http%3A%2F%2Fwww.splunk.com%2Fdownload%3Fr%3Dheader") 列を返します。 この関数は、論理式 X と ⽂字列 Y の 2 つの引数ペ アを取り、偽 (False) と判 定された最初の式 X に対 この例は、有効なポートを確認するための簡単なチェックを⾏ います。 32 validate(X,Y,...) 定された最初の式 X に対 応する⽂字列 Y を返しま す。すべてが真 (True) の 場合はデフォルトの NULL が返されます。 ... | eval n=validate(isint(port), "ERROR: Port is not an integer", port >= 1 AND port <= 65535, "ERROR: Port is out of range") stats、geostats、chart、および timechart の関数 これらは、chart、stats、および timechart コマンドで使⽤できる統計関数です。 stats に関連する関数は、eventstats、streamstats、および geostats とも関連しています。 chart、stats、および timechart に関連する関数は、それぞれに対応する次のサマリーインデックス版の関 数にも関連しています:sichart、sistats、および sitimechart。 スパークラインに関連する関数も同様です。スパークラインはサーチコマンドではないことに注意してくだ さい。これは、chart および stats にのみ適⽤される関数で、他の関数を呼び出すことができます。詳細は、 『サーチマニュアル』の「サーチ結果へのスパークラインの追加」を参照してください。 関数 avg(X) 説明 この関数は、フィールド X の平均値を返します。 mean(X) も参照してくだ さい。 コマンド 例 この例は、平均応答時間を返 します。 chart、stats、timechart、 sparkline() avg(responseTime) この例では、status の値が 404 のイベント数を返しま す。 count(eval(status="404")) c(X) | count(X) この関数は、フィールド X の登場回数を返しま す。⼀致する特定の フィールド値を⽰す場合 は、X を eval(field="値") として指定してくださ い。 chart、stats、timechart、 sparkline() これらはイベント数のスパー クラインを⽣成します。最初 の関数は _raw フィールドを参 照します。2 番⽬は、user フィールドでイベントをカウ ントします。 sparkline(count) sparkline(count(user)) この例は、⼀意の device 数 のスパークラインを⽣成し、 フィールド名を 「numdevicesnumdevices」 に変更します。 sparkline(dc(device)) AS dc(X) | distinct_count(X) この関数は、フィールド X の⼀意の値数を返しま す。 chart、stats、timechart、 sparkline() numdevices この例は、各 sourcetype の ⼀意のソース数をカウント し、カウントを 5 分間の期間 で分割します。 sparkline(dc(source),5m) by sourcetype earliest(X) この関数は、フィールド X の値の、時系列的に もっとも早く登場した値 を返します。 chart、stats、 timechart estdc(X) この関数は、フィールド X の⼀意の値の推定数を 返します。 chart、stats、 timechart estdc_error(X) この関数は、フィールド の⼀意の値の推定数の理 論的誤差。誤差は、 「abs(estimate_value real_value)/real_value」 の⽐率を表しています。 chart、stats、 timechart first(X) この関数は、フィールド X の初めて登場した値を 返します。⼀般的に、 フィールドの最初に登場 した値は、stats コマンド のイベント⼊⼒順序と相 chart、stats、 timechart 33 対的な、このフィールド のもっとも最近のインス タンスになります。 last(X) この関数は、フィールド X の最後に登場した値を 返します。⼀般的に、 フィールドの最後に登場 した値は、stats コマンド のイベント⼊⼒順序と相 対的な、このフィールド のもっとも古いインスタ ンスになります。 chart、stats、 timechart latest(X) この関数は、フィールド X の値の、時系列的に もっとも遅く登場した値 を返します。 chart、stats、 timechart list(X) この関数は、フィールド X のすべての値のリスト を、複数値エントリとし て返します。値の順序 は、⼊⼒イベントの順序 を反映しています。 chart、stats、 timechart max(X) この関数は、フィールド X の最⼤値を返します。 X の値が数値でない場 合、辞書的順序によって 最⼤値が検索されます。 mean(X) この関数は、フィールド X の算術平均を返しま す。avg(X) も参照してく ださい。 この例は、「size」の最⼤値 を返します。 chart、stats、timechart、 sparkline() max(size) この例は、「kbps」の値の平 均値を返します。 chart、stats、timechart、 sparkline() mean(kbps) この関数は、フィールド X の中央値を返します。 median(X) 注意: 中央値の計算は、 イベント数が奇数の場合 により正確になります。 イベント数が偶数の場 合、中央値は 2 つの値の 中で⼤きな⽅を近似値と して採⽤します。 chart、stats、 timechart min(X) この関数は、フィールド X の最⼩値を返します。 X の値が数値でない場 合、辞書的順序によって 最⼩値が検索されます。 chart、stats、 timechart mode(X) この関数は、フィールド X の最頻値を返します。 chart、stats、 timechart この関数は、数値フィー ルド Y の X 番⽬のパーセ ンタイル値を返します。 ここで X は、1〜99 の整 数です。パーセンタイル の X 番⽬の関数は、Y の 値を⼩さい⽅から⼤きい ⽅へとソートします。次 に、0% が最低値で 100% が最⾼値とみなす場合、 関数は X% 値の位置に対 応する値を取得します。 p<X>(Y) | perc<X>(Y) | exactperc<X>(Y) | upperperc<X>(Y) 関数 perc、p、および upperperc は、要求され た整数パーセンタイルの 近似値を提供します。利 ⽤されている近似アルゴ リズムは、任意のパーセ ンタイルに対して実際値 の厳密な境界を提供して います。関数 perc および p は、範囲の下限を表す 単⼀の数字を返します。 upperperc は、概算の上 限を返します。exactperc は正確な値を提供します が、濃度が⾼いフィール 値のリスト Y = {10,9,8,7,6,5,4,3,2,1} 合: chart、stats、 timechart perc50(Y)=6 perc95(Y)=10 34 の場 ドの場合、コストが⾮常 に⾼くなります。 per_day(X) per_hour(X) per_minute(X) per_second(X) range(X) この関数は、⽇当たりの フィールド X の値を返し ます。 この関数は、時間当たり のフィールド X の値を返 します。 この関数は、分当たりの フィールド X の値を返し ます。 timechart per_day(total) この例は、時間当たりの フィールド「total」の値を返 します。 timechart per_hour(total) この例は、分当たりのフィー ルド「total」の値を返しま す。 timechart per_minute(total) この例は、秒当たりの「kb」 の値を返します。 この関数は、秒当たりの フィールド X の値を返し ます。 timechart この関数は、フィールド X の値が数値の場合にの み、フィールド X の最⼤ 値と最⼩値の差を返しま す。 chart、stats、timechart、 sparkline() この関数は、フィールド X の標本標準偏差を返し ます。 stdev(X) この例は、⽇当たりのフィー ルド「total」の値を返しま す。 per_second(kb) chart、stats、timechart、 sparkline() この例は、ワイルドカードが 使われているフィールド 「*delay」 (「delay」と 「xdelay」の両⽅に対応) の 標準偏差を返します。 stdev(*delay) stdevp(X) この関数は、フィールド X の⺟標準偏差を返しま す。 chart、stats、timechart、 sparkline() sum(X) この関数は、フィールド X の値合計を返します。 chart、stats、timechart、 sparkline() sumsq(X) この関数は、フィールド X の値の平⽅の合計を返 します。 chart、stats、timechart、 sparkline() values(X) この関数は、フィールド X のすべての⼀意の値の リストを、複数値エント リとして返します。値の 順序は、辞書的順序で す。 chart、stats、 timechart var(X) この関数は、フィールド X の標本分散を返しま す。 chart、stats、timechart、 sparkline() varp(X) この関数は、フィールド X の⺟分散を返します。 chart、stats、timechart、sparkline()。 sum(eval(date_hour * date_minute)) 共通の⽇付/時間書式変数 ここには、eval 関数の strftime() および strptime() の時間書式の定義、およびイベントデータ内のタイムスタン プの記述に⽤いられる変数を記載しています。また、他の時間関数 relative_time() および now() を引数として使⽤ することもできます。 時間変数 変数 説明 %Ez Splunk 固有のタイムゾーン (分)。 %H 先頭に 0 が付いた、10 進数の時間 (24 時間形式)。(00〜23) 35 %I 先頭に 0 が付いた時間 (12 時間形式)。(01-12) %k %H のように、10 進数の時間 (24 時間形式) だけれども、先頭の 0 はスペースに置換さ れます。(0〜23) %M 10 進数の 分。(00〜59) %N 幅による 1 秒未満の単位。(%3N = ミリ秒、 %6N = マイクロ秒、 %9N = ナノ秒) %p AM または PM。 %Q 1970-01-01 00:00:00 UTC の 1秒未満の単位コンポーネント。(%3Q = ミリ秒、 %6Q = マイクロ秒、 %9Q = ナノ秒で、値は 000〜999) %S 10 進数の 秒。(00〜61) %s UNIX エポック時のタイムスタンプ、またはエポック (1970-01-01 00:00:00 +0000 (UTC)) からの秒数。 (1352395800 は、2012 年 11 ⽉ 8 ⽇⽊曜⽇の 09:30:00) %T 24 時間表記の時刻 (%H:%M:%S)。 %Z タイムゾーンの省略形。(東部標準時は EST) %z 時間と分で表された (+hhmm または -hhmm) UTC からのタイムゾーンオフセット。 (東部標準時は -0500) %% リテラル「%」⽂字。 ⽇付変数 変数 %F 説明 %Y-%m-%d (ISO 8601 ⽇付フォーマット) と同じ。 ⽇の指定 変数 説明 %A 完全な曜⽇名。(Sunday、...、Saturday) %a 曜⽇の省略形。(Sun、...、Sat) %d 先頭の 0 が付いた 10 進数の⽇付。(01〜31) %e %d のように、10 進数の⽇付だけれども、先頭の 0 はスペースに置換されます。(1〜 31) %j 先頭の 0 が付いた 10 進数のその年の経過⽇数 (通⽇)。(001〜366) %w 10 進数の曜⽇。(0 = ⽇曜、...、6 = ⼟曜) ⽉の指定 変数 説明 %b ⽉名の省略形。(Jan、Feb、など) %B 完全な⽉名。(January、February、など) %m 10 進数の⽉。(01〜12) 年の指定 変数 説明 %y 10 進数の年 (世紀なし)。(00〜99) %Y 10 進数の年 (世紀付き)。(2012) 例 時間書式⽂字列 結果 %Y-%m-%d 2012-12-31 %y-%m-%d 12-12-31 %b %d, %Y Feb 11, 2008 q|%d%b '%y = %Y-%m-%d| q|23 Apr '12 = 2012-04-23| サーチの時間修飾⼦ 36 修飾⼦を使ってサーチの時間範囲をカスタマイズしたり、サーチ結果のタイムスタンプの書式を変更したりするこ とができます。 _time および _indextime フィールド Splunk Enterprise でイベントを処理する場合、そのタイムスタンプはデフォルトのフィールド _time として保存 されます。このタイムスタンプはイベントの発⽣時刻で、エポック表記で保存されます。相対時間修飾⼦ earliest または latest を使ってサーチすると、指定したタイムスタンプで始まる、終了する、またはその範囲内にある各 イベントがサーチされます。たとえば、earliest=@d でサーチする場合、相対時間修飾⼦は午前 0 時からの値が _time の各イベントがサーチされます。 Splunk Enterprise によりインデックスが作成された時期に基づいて、イベントをサーチすることもできます。エ ポックタイムスタンプは、デフォルトのフィールド _indextime に保存されます。_time に対する earliest や latest と同様に、_index_time に基づいてイベントをサーチするには、相対時間修飾⼦ _index_earliest および _index_latest を使⽤します。たとえば、前の時間にインデックスが作成されたイベントをサーチする場合は、次の ように指定します:_index_earliest=-h@h _index_latest=@h。 注意 :index_earliest や index_latest などの、インデックス時間ベースの修飾⼦を使⽤する場合、サーチにはイベ ントを取得するインデックス時ウィンドウも 必要です。つまり、Splunk Enterprise は⾮インデックス時ウィンド ウだけでなく、インデックス時ウィンドウに基づいて、イベント・チャンクを除外する可能性があります。イン デックス時に基づいて各イベントを確実に取得するために、サーチは全時間に対して実⾏する必要があります。 時間修飾⼦の⼀覧 カスタム/相対時間範囲を指定するには、修飾⼦ earliest および 際には、現在の時刻を表す now を使⽤できます。 修飾⼦ earliest _index_earliest _index_latest latest latest を使⽤します。また、相対時間を指定する 構⽂ 説明 earliest=[+|]<time_integer><time_unit>@<time_unit> _index_earliest=[+|]<time_integer><time_unit>@<time_unit> _index_latest=[+|]<time_integer><time_unit>@<time_unit> latest=[+|]<time_integer><time_unit>@<time_unit> サーチの時間範囲のもっとも早い _time を指定しま す。 サーチの時間範囲のもっとも早い _indextime を指定し ます。 サーチの時間範囲のもっとも遅い _indextime を指定し ます。 サーチの時間範囲のもっとも遅い _time を指定しま す。 now now() 現在の時刻を表します。earliest に指定すると、now() はサーチの開始時刻になります。 time time() リアルタイムサーチの場合、time() は現在のマシン時 刻になります。 サーチウィンドウのカスタマイズについては、『サーチマニュアル』の「サーチへのリアルタイム時間範囲ウィン ドウの指定」を参照してください。 相対時間修飾⼦の指定⽅法 時間の量を⽰す⽂字列を使って相対時間を指定することができます (整数と単位)。また、必要に応じて「スナッ プ」時間単位を使⽤することもできます。[+|-]<time_integer><time_unit>@<time_unit>。 1. ⽂字列は、現在の時刻からのオフセットを⽰すプラス (+) またはマイナス (-) 記号で開始します。 2. 時間量を数字と単位で定義します。以下の時間単位がサポートされています。 秒:s、sec、secs、second、seconds 分:m、min、minute、minutes 時間:h、hr、hrs、hour、hours ⽇:d、day、days 週:w、week、weeks ⽉:mon、month、months 四半期:q、qtr、qtrs、quarter、quarters 年:y、yr、yrs、year、years 注意: ⽇曜の場合は、w0 および w7 で指定できます。 たとえば 1 時間前からサーチを開始するには、以下のいずれかを使⽤します。 earliest=-h または earliest=-60m 時間指定⼦単体を指定した場合、1 が仮定されます。「s」は「1s」を、「m」は「1m」を、「h」は「1h」を表 します。 37 3. スナップ (snap to) 時間単位を使⽤して、時間量を切り捨てた最寄りの時間またはもっとも遅い時間を指定する こともできます。時間量とスナップ (snap to) 時間単位を、「@」⽂字で区切ってください。 ステップ 2 に記載されている任意の時間単位を使⽤できます。たとえば、⽇曜の場合は @w, @week、およ び @w0、⽉初めは @month、もっとも最近の四半期は (1 ⽉ 1 ⽇、4 1 ⽇、7 ⽉ 1 ⽇、10 ⽉ 1 ⽇) @q、 @qtr、または @quarter になります。特定の曜⽇として w0 (⽇曜⽇)、w1、w2、w3、w4、w5、および w6 (⼟曜⽇) を使⽤することができます。 より詳細な相対時間定義を⾏うために、スナップ時間からのオフセット を指定または時間修飾⼦と⼀緒に 「チェーン」することができます。たとえば、@d-2h は今⽇の開始 (午前 0 時) にスナップし、そこから 2 時 間差し引きます。 最寄りのまたは⼀番遅い時間にスナップする場合、Splunk Enterprise は常に後⽅にスナップ またはもっと も遅い時間に切り捨てた値 (指定時間以降ではない) にスナップします。たとえば、11:59:00 で時間に「ス ナップ」した場合、12 時ではなく 11 時にスナップします。 スナップ量の前に時間オフセットを指定しない場合、Splunk Enterprise は「現在の時刻を指定された時間 量にスナップ」するものと解釈します。たとえば、現在時刻が⾦曜⽇の午後 11 時 59 分で、⼟曜⽇にス ナップするために @w6 を使⽤した場合、結果は前の⼟曜⽇の午前12時 01 分になります。 例 1: 現在の週の最初からイベントをサーチするには: earliest=@w0 例 2: 先週の営業⽇からイベントをサーチするには: earliest=-7d@w1 latest=@w6 例 3: 11 ⽉ 5 ⽇午後 8 時から 11 ⽉ 12 ⽇午後 8 時までなどのように、正確な境界を指定するには、次の時間 形式を使⽤します: %m/%d/%Y:%H:%M:%S earliest="11/5/2012:20:00:00" latest="11/12/2012:20:00:00" その他の時間修飾⼦ これらのサーチ時間修飾⼦は有効ですが、今後のリリースで削除され、関数がサポートされなくなる可能性が あります 。 修飾⼦ 構⽂ 説明 daysago daysago=<int> 過去「整数値 」⽇間のイベントをサーチします。 enddaysago enddaysago=<int> 現在から「整数」⽇前の終了時間を設定します。 endhoursago endhoursago=<int> 現在から「整数」時間前の終了時間を設定します。 endminutesago endminutesago=<int> 現在から「整数」分前の終了時間を設定します。 endmonthsago endmonthsago=<int 現在から「整数」ヶ⽉前の終了時間を設定します。 endtime endtime=<string> 指定した時間より前のイベントをサーチします (指定時 間は除外)。タイムスタンプの書式設定に は、timeformat を使⽤します。 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 時間) からサーチします。 timeformat timeformat=<string> starttime と endtime 修飾⼦の時間書式を設定しま す。デフォルト: timeformat=%m/%d/%Y:%H:%M:%S 38 データタイプの⼀覧 このトピックはすでに失効しています。 このページには、サーチ⾔語の構⽂を定義するために使⽤するデータタイプが記載されています。これらの例で使 ⽤されているコマンドの詳細は、「サーチコマンドリファレンス」を参照してください。 after-opt 構⽂: timeafter=<int>(s|m|h|d)? 説明: endtime に追加する時間 (時間領域を時間の前⽅向に拡張) anovalue-action-option 構⽂: action=(annotate|filter|summary) 説明: アクションが ANNOTATE の場合、変則な値が存在するイベントに、値の変則性スコアを⽰す新た なフィールドが追加されます。アクションが FILTER の場合、変則値を持つイベントは隔離されます。アク ションが SUMMARY の場合、各フィールドの変則性の統計を要約したテーブルが⽣成されます。 anovalue-pthresh-option 構⽂: pthresh=<num> 説明: 値を変則とみなすために、満たす必要がある確度閾値 (10 進数)。 associate-improv-option 構⽂: improv=<num> 説明: ターゲットキーの最低エントロピー向上値。つまり、「エントロピー (ターゲットキー) - エントロ ピー (ターゲットキーに与えられた参照キー/値)」が、この値以上でなければなりません。 associate-option 構⽂: <associate-supcnt-option>|<associate-supfreq-option>|<associate-improv-option> 説明: associate コマンドのオプション associate-supcnt-option 構⽂: supcnt=<int> 説明: 「参照キー=参照値」の組み合わせが現れる最低回数。正の整数でなければなりません。 associate-supfreq-option 構⽂: supfreq=<num> 説明: 「参照キー=参照値」の組み合わせの登場頻度 (合計イベント数に対する割合)。 before-opt 構⽂: timebefore=<int>(s|m|h|d)? 説明: starttime から差し引く時間 (時間領域を時間の後⽅向に拡張) bucket-bins 構⽂: bins=<int> 説明: 離散化に使⽤するビンの最⼤数を設定します。この上限境界ガイダンスを使⽤して、ビンが適切な境 界にスナップされます。 例: bins=10 bucket-span 構⽂: span=(<span-length>|<log-span>) 説明: 各バケツのサイズを設定します。 例: span=2d 例: span=5m 例: span=10 bucket-start-end 構⽂: (start=|end=)<num> 説明: 数値バケツの最⼩/最⼤範囲を設定します。 bucketing-option 構⽂: <bucket-bins>|<bucket-span>|<bucket-start-end> 説明: 離散化オプション。 39 by-clause 構⽂: by <field-list> 説明: グループ化するフィールド。 例: BY addr, port 例: BY host cmp 構⽂: =|!=|<|<=|>|>= 説明: なし collapse-opt 構⽂: collapse=<bool> 説明: 他の単語のプレフィックスでイベントカウントが同じ単語を表⽰しないかどうかを⽰します 例: collapse=f collect-addinfo 構⽂: 構⽂なし 説明: なし collect-addtime 構⽂: addtime=<bool> 説明: イベントに _raw フィールドが存在しない場合に、各イベントの先頭に時間を付けるかどうかを指定 します。次の時間の中で、最初に⾒つかったフィールドが使⽤されます:info_min_time、_time, now()。デ フォルトは真。 collect-arg 構⽂: <collect-addtime> | <collect-index> | <collect-file> | <collect-spool> | <collect-marker> | <collect-testmode> 説明: なし collect-file 構⽂: file=<string> 説明: イベントの書き込み先ファイル名。省略可。デフォルトは「<random-num>_events.stash」になり ます。ファイル名内にプレースホルダとして $timestamp$、$random$ を使⽤できます。これらのプレー スホルダは、それぞれタイムスタンプ、および乱数に置換されます。 collect-index 構⽂: index=<string> 説明: Splunk がイベントを追加するインデックス名。注意:イベントを追加するインデックスは存在して いなければいなければなりません。インデックスは⾃動的には作成されません。 collect-marker 構⽂: marker=<string> 説明: 各イベントに追加する⽂字列で、通常はキーと値のペアになります。省略可。デフォルトは「」で す。 collect-spool 構⽂: spool=<bool> 説明: 真 (True) を設定すると (デフォルト)、サマリーインデックスファイルが Splunk のスプールディレ クトリに書き込まれ、そこで⾃動的にインデックスが作成されます。偽 (False) を設定した場合、ファイル は $SPLUNK_HOME/var/run/splunk に書き込まれます。 collect-testmode 構⽂: testmode=<bool> 説明: テストモードとリアルモードを切り替えます。テストモードでは、結果は新しいインデックスには書 き込まれません。ただし、サーチ結果は、まるでインデックスに送信されたかのように表⽰が変更されま す。(デフォルトは false) comparison-expression 構⽂: <field><cmp><value> 説明: なし connected-opt 構⽂: connected=<bool> 説明: フィールドが空でない場合にのみ関連します。トランザクションのフィールドと整合性のあるまたは 40 整合性のないイベントを、新しいトランザクションで開く (connected=t) か、またはトランザクションに追 加するかを指定します。トランザクションが必要とするフィールドを持つけれども、トランザクション内で これらのフィールドがどれもインスタンス化されていない (前のイベント追加により) 場合、イベントは⾮不 整合および⾮整合にできます。 contingency-maxopts 構⽂: (maxrows|maxcols)=<int> 説明: 最⼤⾏数または列数。フィールドの⼀意の値数がこの最⼤値を超えた場合は、もっとも少ない値が無 視されます。0 は、⾏数/列数が無制限であることを表します。 contingency-mincover 構⽂: (mincolcover|minrowcover)=<num> 説明: ⾏または列フィールドに対して、この割合の値のみをカバーします。必要な値の割合をカバーするた めに必要なエントリ数が、maxrows または maxcolsを超えた場合、maxrows または maxcols が優先され ます。 contingency-option 構⽂: <contingency-maxopts>|<contingency-mincover>|<contingency-usetotal>|<contingencytotalstr> 説明: 分割表のオプション contingency-totalstr 構⽂: totalstr=<field> 説明: 合計⾏/列のフィールド名 contingency-usetotal 構⽂: usetotal=<bool> 説明: ⾏および列合計を追加します convert-auto 構⽂: auto("(" (<wc-field>)?")")? 説明: 最適な⽅法を使って、フィールドを⾃動的に数字に変換します。既知の変換タイプを使って特定 フィールド内のすべての値を変換できない場合、そのフィールドは放置され変換処理は⾏われません。 例: ...| convert auto(*delay) as *delay_secs 例: ...| convert auto(*) as *_num 例: ...| convert auto(delay) auto(xdelay) 例: ...| convert auto(delay) as delay_secs 例: ...| convert auto 例: ...| convert auto() 例: ...| convert auto(*) convert-ctime 構⽂: ctime"("<wc-field>?")" 説明: エポック時を ASCII 形式のユーザーが理解できる時間に変換します。変換形式を指定するには、 timeformat オプションを使⽤します。 例: ...| convert timeformat="%H:%M:%S" ctime(_time) as timestr convert-dur2sec 構⽂: dur2sec"("<wc-field>?")" 説明: 期間の形式「D+HH:MM:SS」を秒数に変換します。 例: ...| convert dur2sec(*delay) 例: ...| convert dur2sec(xdelay) convert-function 構⽂: <convert-auto>|<convert-dur2sec>|<convert-mstime>|<convert-memk>|<convertnone>|<convert-num>|<convert-rmunit>|<convert-rmcomma>|<convert-ctime>|<convert-mktime> 説明: なし convert-memk 構⽂: memk"(" <wc-field>?")" 説明: {KB、MB、GB} 系のサイズ表記を KB に変換します。 例: ...| convert memk(VIRT) convert-mktime 構⽂: mktime"("<wc-field>?")" 説明: ユーザーが理解できる ASCII 形式の時間⽂字列をエポック時に変換します。変換元時刻の形式を正 しく指定するには、timeformat オプションを使⽤します。 例: ...| convert mktime(timestr) 41 convert-mstime 構⽂: mstime"(" <wc-field>?")" 説明: MM:SS.SSS 形式を秒数に変換します。 convert-none 構⽂: none"(" <wc-field>?")" 説明: その他のワイルドカードを使⽤した場合、⼀致するフィールドを変換しないことを⽰します。 例: ...| convert auto(*) none(foo) convert-num 構⽂: num"("<wc-field>?")" 説明: auto() と同様に、変換できない値を除いて削除されます。 convert-rmcomma 構⽂: rmcomma"("<wc-field>?")" 説明: 値からすべてのカンマを削除します (例:「1,000,000.00」 -> 「1000000.00」)。 convert-rmunit 構⽂: rmunit"(" <wc-field>?")" 説明: 値の先頭の数字を探し、後続のテキストを削除します。 例: ...| convert rmunit(duration) copyresults-dest-option 構⽂: dest=<string> 説明: 結果のコピー先となる宛先ファイル。⽂字列は SPLUNK_HOME からの相対パスとして解釈され、 (1) .csv ファイルを指す必要があります (2) ファイルはetc/system/lookups/ または etc/apps/<appname>/lookups/ になければなりません。 copyresults-sid-option 構⽂: sid=<string> 説明: 結果をコピーするジョブのサーチ ID。このコマンドを実⾏するユーザーには、この ID が指すジョブ に対する権限が必要であることに注意してください。 correlate-type 構⽂: type=cocur 説明: 算出する相関関係の種類。現在の所は、2 つのフィールドが同じイベント内に存在した回数の割合を 含んだ、共起相関関係マトリックスしか利⽤できません。 count-opt 構⽂: count=<int> 説明: 返す最⼤結果数 例: count=10 crawl-option 構⽂: <string>=<string> 説明: crawl.conf の設定に優先します。 例: root=/home/bob daysago 構⽂: daysago=<int> 説明: 過去 N ⽇間をサーチします。(「startdaysago」と同等) debug-method 構⽂: optimize|roll|logchange|validate|delete|sync|sleep|rescan 説明: デバッグコマンドで利⽤できるコマンド dedup-consecutive 構⽂: consecutive=<bool> 説明: 連続するイベントのみを排除します dedup-keepempty 構⽂: keepempty=<bool> 42 説明: イベントに 1 つまたは複数の指定フィールドにnull値が存在する場合、イベントは保持される (keepempty=true の場合) か、または破棄されます。 dedup-keepevents 構⽂: keepevents=<bool> 説明: すべてのイベントを保持し、代わりに特定の値を削除します default 構⽂: 構⽂なし 説明: なし delim-opt 構⽂: delim=<string> 説明: トランザクションのイベントフィールドにある元のイベント値を区切るために使⽤する⽂字列。 email_address 構⽂: <⽂字列> 説明: なし 例: [email protected] email_list 構⽂: <email_address> (, <email_address> )* 説明: なし 例: "[email protected], [email protected]" end-opt 構⽂: endswith=<transam-filter-string> 説明: サーチまたは eval フィルタリング式。あるイベントがこの条件を満たすと、新しいトランザクショ ンの終了としてマークされます。 例: endswith=eval(speed_field > max_speed_field/12) 例: endswith=(username=foobar) 例: endswith=eval(speed_field > max_speed_field) 例: endswith="logout" enddaysago 構⽂: enddaysago=<int> 説明: 終了時刻を設定するためのショートカット。終了時刻 = 現在 - (N ⽇) endhoursago 構⽂: endhoursago=<int> 説明: 終了時刻を設定するためのショートカット。終了時刻 = 現在 - (N 時間) endminutesago 構⽂: endminutesago=<int> 説明: 終了時刻を設定するためのショートカット。終了時刻 = 現在 - (N 分) endmonthsago 構⽂: endmonthsago=<int> 説明: 開始時刻を設定するためのショートカット。開始時刻 = 現在 - (N ヶ⽉) endtime 構⽂: endtime=<string> 説明: すべてのイベントはこの時刻以前でなければなりません。 endtimeu 構⽂: endtime=<int> 説明: 終了時刻をエポックから N 秒に設定します。(UNIX 時間) erex-examples 構⽂: ""<string>(, <string> )*"" 説明: なし 例: "foo, bar" eval-bool-exp 43 構⽂: (NOT|!)?(<eval-compare-exp>|<eval-function-call>) ((AND|OR|XOR) <eval-expression>)* 説明: なし eval-compare-exp 構⽂: (<field>|<string>|<num>) (<|>|<=|>=|!=|=|==|LIKE) <eval-expression> 説明: なし eval-concat-exp 構⽂: ((<field>|<string>|<num>) (.<eval-expression>)*)|((<field>|<string>) (+ <eval-expression>)*) 説明: フィールドと⽂字列を連結します 例: first_name."".last_nameSearch eval-expression 構⽂: <eval-math-exp> | <eval-concat-exp> | <eval-compare-exp> | <eval-bool-exp> | <eval-functioncall> 説明: 宛先フィールドの値を表す、リテラル、フィールド、演算⼦、および関数の組み合わせ。eval を使っ て実⾏できる基本的な操作を以下に⽰します。これらの評価が正常に機能するためには、操作の種類に応じ て有効な値を使⽤する必要があります。たとえば、追加の例外処理では、値が数値でないと算術操作で有効 な結果を得ることはできません。また、Splunk では 2 つのオペランドが両⽅とも⽂字列の場合、それを連 結することができます。「.」が存在する値を連結する場合は、実際の種類に関係なく両⽅の値が⽂字列とし て処理されます。 eval-field 構⽂: <field> 説明: 評価した値のフィールド名です。 例: velocity eval-function 構⽂: abs|case|cidrmatch|coalesce|exact|exp|floor|if|ifnull|isbool|isint|isnotnull|isnull|isnum|isstr|len|like|ln|log|lower|match|max|md5|mi 説明: 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") eval-function-call 構⽂: <eval-function> "(" <eval-expression> ("," <eval-expression>)* ")" 説明: なし eval-math-exp 44 構⽂: (<field>|<num>) ((+|-|*|/|%) <eval-expression>)* 説明: なし 例: pi() * pow(radius_a, 2) + pi() * pow(radius_b, 2) evaled-field 構⽂: "eval("<eval-expression>")" 説明: 動的に評価されたフィールド event-id 構⽂: <int>:<int> 説明: Splunk 内部イベント ID eventtype-specifier 構⽂: eventtype=<string> 説明: 指定した eventtype に⼀致するイベントをサーチします eventtypetag-specifier 構⽂: eventtypetag=<string> 説明: ⽂字列によりタグ付けされたすべての eventtype に⼀致するイベントをサーチします extract-opt 構 ⽂: (segment=<bool>)|(auto=<bool>)|(reload=<bool>)|(limit=<int>)|(maxchars=<int>)|(mv_add=<bool>)|(clean_keys=<bool> 説明: 抽出オプション。「segment」 キー/値のペアの場所を結果に記録するかどうかを指定します (内 部、false )。「auto」 「=」ベースの⾃動抽出を⾏うかどうかを指定します (true)。「reload」 props.conf および transforms.conf の再ロードを強制するかどうかを指定します (false)。「limit」 抽出するキー/値の ペア数を指定します (50)。「kvdelim」 キーと値を区別する区切り⽂字リストの⽂字列。「pairdelim」 キー-値のペアを相互に区別する区切り⽂字リストを指定した⽂字列。「maxchars」 イベント内を調査する ⽂字数を指定 (10240)。「mv_add」 複数値フィールドを作成するかどうかを指定します。 transforms.conf の MV_ADD に優先します。「clean_keys」 キーを消去するかどうかを指定します。 transforms.conf の CLEAN_KEYS に優先します。 例: reload=true 例: auto=false extractor-name 構⽂: <⽂字列> 説明: transforms.conf に存在するスタンザ 例: access-extractions fields-opt 構⽂: fields=<string>?(,<string>)* 説明: ⾮推奨:トランザクションの推奨する使⽤法は、フィールドのリストを直接引数として指定すること です。例:「transaction fields="foo,bar"」ではなく、「transaction foo bar」と指定します。「fields」制 約は、フィールドのリストを取ります。サーチ結果をトランザクションのメンバーにするために、指定され ている各フィールドに値が存在する場合、当該トランザクション内の他のメンバーと同じ値でなければなり ません。たとえば、ホストに制約がある場合、「host=mylaptop」を持つサーチ結果と「host=myserver」 を持つサーチ結果を同じトランザクションに⼊れることはできません。ただし、ホスト値を持たないサーチ 結果は不整合が⽣じないため、「host=mylaptop」を持つサーチ結果と同じトランザクションに⼊れること ができます。 例: fields=host,cookie grouping-field 構⽂: <field> 説明: デフォルトで typelearner は、まず grouping-field の値によりイベントをグループ化し、次に含ま れているキーワードに基づいて、それらのグループをさらに結合していきます。デフォルトのグループ化 フィールドは「punct」です (句読点は _raw にあります)。 例: host grouping-maxlen 構⽂: maxlen=<int> 説明: grouping-field 内で注⽬する⽂字数を指定します。負の値を設定すると、grouping-field の値全体が イベントのグループ化に使⽤されます。 例: maxlen=30 host-specifier 構⽂: host=<string> 説明: 指定した sourcetype からイベントをサーチします 45 hosttag-specifier 構⽂: hosttag=<string> 説明: ⽂字列によりタグ付けされたホストを持つイベントをサーチします hoursago 構⽂: hoursago=<int> 説明: 過去 N 時間をサーチします。(「starthoursago」と同等) increment 構⽂: <int:increment>(s|m|h|d)? 説明: なし 例: 1h index-expression 構⽂: \"<string>\"|<term>|<search-modifier> 説明: なし index-specifier 構⽂: index=<string> 説明: デフォルトインデックスの代わりに指定したインデックスをサーチします input-option 構⽂: <string>=<string> 説明: input.conf の設定に優先します。 例: root=/home/bob join-options 構⽂: usetime=<bool> | earlier=<bool> | overwrite=<bool> | max=<int> 説明: join コマンドへのオプション。usetime は、結合対象のメイン結果よりも早いまたは遅い (usetime=true の時にのみ有効な [earlier] オプションによる) サブ結果への⼀致を制限するかどうかを⽰し ます (デフォルト = false)。「overwrite」は、同じフィールド名が存在している場合に、サブ結果からの フィールドをメイン結果のフィールドに上書きするかどうかを⽰します (デフォルトは真 (True))。max は、各メイン結果が結合できる、最⼤サブ結果数を⽰します(デフォルトは 1、0 の場合無制限)。 例: max=3 例: usetime=t earlier=f 例: overwrite=f 例: usetime=t keepevicted-opt 構⽂: keepevicted=<bool> 説明: 削除したトランザクションを出⼒するかどうかを指定します。evicted フィールドの値を確認すれ ば、削除されたトランザクションと削除されていないトランザクションを判別することができます。削除さ れたトランザクションの場合、フィールドには 1 が設定されます。 key-list 構⽂: (<string> )* 説明: surrounding コマンドにフィルタを提供する、AND を使ったキーリスト kmeans-cnumfield 構⽂: cfield=<field> 説明: 各イベントのクラスタ番号のフィールド名を管理します。 kmeans-distype 構⽂: dt=(l1norm|l2norm|cityblock|sqeuclidean|cosine) 説明: 使⽤する距離メトリック (L1/L1NORM は CITYBLOCK と同等)。L2NORM は SQEUCLIDEAN と同等です。 kmeans-iters 構⽂: maxiters=<int> 説明: 収束の失敗までに許可されている最⼤反復数 kmeans-k 構⽂: k=<int>(-<int>)? 説明: 使⽤する初期クラスタ数。範囲を指定できます。この場合、範囲内の各値が 1 回使⽤され、サマリー データが与えられます。 46 kmeans-options 構⽂: <kmeans-reps>|<kmeans-iters>|<kmeans-tol>|<kmeans-k>|<kmeans-cnumfield>|<kmeansdistype>|<kmeans-showlabel> 説明: kmeans コマンドのオプション kmeans-reps 構⽂: reps=<int> 説明: 無作為の起動クラスタを使って、kmeans を繰り返す回数を指定します kmeans-showlabel 構⽂: showlabel=<bool> 説明: データにクラスタ番号を追加するかどうかを指定します。 kmeans-tol 構⽂: tol=<num> 説明: アルゴリズム収束許容範囲 lit-value 構⽂: <string>|<num> 説明: なし lmaxpause-opt 構⽂: maxpause=<int>(s|m|h|d)? 説明: 連続する時間領域内の 2 つの連続するイベント間の最⼤時間 (包含) log-span 構⽂: (<num>)?log(<num>)? 説明: 対数ベースの期間を設定します。最初の数が係数の場合、2 番⽬の数が基底関数の係数となります。 指定する場合、実数 >= 1.0 および < base でなければなりません。base を指定した場合、実数 > 1.0 (厳 密に 1 より⼤きい値) でなければなりません。 例: 2log5 例: log logical-expression 構⽂: (NOT)?<logical-expression>)|<comparison-expression>|(<logical-expression> OR?<logicalexpression>) 説明: なし max-time-opt 構⽂: max_time=<int> 説明: なし 例: max_time=3 maxevents-opt 構⽂: maxevents=<int> 説明: 1 つのトランザクション内の最⼤イベント数。負の値を指定した場合、この制約は無効になります。 maxinputs-opt 構⽂: maxinputs=<int> 説明: スクリプトに渡す上位の結果数を指定します。 例: maxinputs=1000 maxopenevents-opt 構⽂: maxopenevents=<int> 説明: LRU ポリシーを使って、トランザクションの削除を開始する前に、開かれているトランザクション の⼀部となるイベントの最⼤数を指定します。 maxopentxn-opt 構⽂: maxopentxn=<int> 説明: LRU ポリシーを使って、トランザクションの削除を開始する前に、開いているプール内に保持する 未終了トランザクションの最⼤数を指定します。 maxpause-opt 47 構⽂: maxpause=<int>(s|m|h|d)? 説明: maxpause 制約は、トランザクションの各イベント間の停⽌時間を maxpause 以下に制限します。 負の値を指定した場合、maxpause 制約は無効になります。 maxsearchesoption 構⽂: maxsearches=<int> 説明: 実⾏する最⼤サーチ数。これ以上のサーチ結果がある場合、警告が⽣成されます。 例: maxsearches=42 maxspan-opt 構⽂: maxspan=<int>(s|m|h|d)? 説明: maxspan 制約は、トランザクションのイベントの期間を maxspan 未満に制限します。負の値を指 定した場合、maxspan 制約は無効になります。 memcontrol-opt 構⽂: <maxopentxn-opt> | <maxopenevents-opt> | <keepevicted-opt> 説明: なし metadata-delete-restrict 構⽂: (host::|source::|sourcetype::)<⽂字列> 説明: 削除を特定のホスト、ソース、またはソースタイプに制限します。 metadata-type 構⽂: hosts|sources|sourcetypes 説明: 返すメタデータのタイプを指定します minutesago 構⽂: minutesago=<int> 説明: 過去 N 分間をサーチします。(「startminutesago」と同等) monthsago 構⽂: monthsago=<int> 説明: 過去 N ヶ⽉間をサーチします。(「startmonthsago」と同等) multikv-copyattrs 構⽂: copyattrs=<bool> 説明: 元のイベントから抽出したイベントに⾮メタデータ (non-metadata) 属性をコピーするかどうかを指 定します (デフォルトは真 (True)) multikv-fields 構⽂: fields <field-list> 説明: 抽出したイベントフィールドから、指定フィールドリストに存在しないフィールドをフィルタリング します multikv-filter 構⽂: filter <field-list> 説明: 指定した場合、テーブル⾏にリスト内のいずれかの単語が存在しないと、イベントには抽出されませ ん multikv-forceheader 構⽂: forceheader=<int> 説明: 特定の⾏番号 (1 ベース) をテーブルのヘッダーとして使⽤するように強制します。デフォルトでは、 1 つのヘッダー⾏がサーチされます。 multikv-multitable 構⽂: multitable=<bool> 説明: 元のイベントの単⼀の single _raw 内に、複数のテーブルを⼊れることができるかどうかを指定しま す。(デフォルトは真 (True)) multikv-noheader 構⽂: noheader=<bool> 説明: ヘッダーを持たないのテーブルを許可します。ヘッダーがない場合、フィールドには column1、 column2、... のような名前が使⽤されます。(デフォルトは偽 (False)) 48 multikv-option 構⽂: <multikv-copyattrs>|<multikv-fields>|<multikv-filter>|<multikv-forceheader>|<multikvmultitable>|<multikv-noheader>|<multikv-rmorig> 説明: multikv で利⽤できるオプション multikv-rmorig 構⽂: rmorig=<bool> 説明: 結果セットから元のイベントを削除するかどうかを指定します (デフォルトは真 (True)) mvlist-opt 構⽂: mvlist=<bool>|<field-list> 説明: トランザクションの複数値フィールドを、元のイベントのリストの到着順に並べるか、または⼀連の ⼀意のフィールド値を辞書式に並べるかを指定します。フィールドのカンマ/スペース区切りリストを指定し た場合、それらのフィールドのみをリストとして表⽰します。 outlier-action-opt 構⽂: action=(remove|transform) 説明: 外れ値の処理を指定します。RM | REMOVE は、数値の外れ値を持つイベントを削除します。TF | TRANSFORM は、外れ値をその閾値に切り捨てて、値にプレフィックス「000」を追加します。 outlier-option 構⽂: <outlier-type-opt>|<outlier-action-opt>|<outlier-param-opt>|<outlier-uselower-opt> 説明: outlier のオプション outlier-param-opt 構⽂: param=<num> 説明: 外れ値検出の閾値を管理するパラメータ。type=IQR の場合、外れ値は param を乗じた四分位範囲 の範囲外の値として定義されます。 outlier-type-opt 構⽂: type=iqr 説明: outlier 検出の種類。現在利⽤できるオプションは IQR (四分位範囲) のみです。 outlier-uselower-opt 構⽂: uselower=<bool> 説明: 中央値を下回る値の外れ値をサーチするかどうかを指定します prefix-opt 構⽂: prefix=<string> 説明: 先⾏⼊⼒をオンにするプレフィックス 例: prefix=source quoted-str 構⽂: "" <string> "" 説明: なし readlevel-int 構⽂: 0|1|2|3 説明: イベントを読み込む深度を指定します。0:source/host/sourcetype のみ。1:0 と _raw。2:1 と kv、3:2 と types (3.2 で廃⽌予定) regex-expression 構⽂: (\")?<string>(\")? 説明: pcre ライブラリがサポートする、Perl 互換の正規表現。 例: ...| regex _raw="(?<!\d)10.\d{1,3}\.\d{1,3}\.\d{1,3}(?!\d)" rendering-opt 構⽂: <delim-opt> | <mvlist-opt> 説明: なし result-event-opt 構⽂: events=<bool> 説明: ジョブのイベントまたは結果の読み込みを指定するオプション。(デフォルトは偽 (False)) 49 例: events=t savedsearch-identifier 構⽂: savedsearch="<user-string>:<application-string>:<search-name-string>" 説明: 成果物を読み込む保存済みサーチの⼀意の ID。保存済みサーチは、トリプレット {user, application, savedsearch name} で⼀意に識別されます。 例: savedsearch="admin:search:my saved search" savedsearch-macro-opt 構⽂: nosubstitution=<bool> 説明: 真 (True) の場合、マクロの置換は⾏われません。 savedsearch-opt 構⽂: <savedsearch-macro-opt>|<savedsearch-replacement-opt> 説明: なし savedsearch-replacement-opt 構⽂: <string>=<string> 説明: マクロ置換に使⽤するキーと値のペア。 savedsplunk-specifier 構⽂: (savedsearch|savedsplunk)=<string> 説明: 指定したサーチ/Splunk が⾒つけたイベントに対してサーチを⾏います savedsplunkoption 構⽂: <⽂字列> 説明: 保存済みサーチ名 例: mysavedsearch script-arg 構⽂: <⽂字列> 説明: スクリプトに渡される引数。 例: [email protected] script-name-arg 構⽂: <⽂字列> 説明: 実⾏するスクリプト名からパスとファイル拡張⼦を除いたもの。 例: sendemail search-modifier 構⽂: <sourcetype-specifier>|<host-specifier>|<source-specifier>|<savedsplunkspecifier>|<eventtype-specifier>|<eventtypetag-specifier>|<hosttag-specifier>|<tag-specifier> 説明: なし searchoption 構⽂: search=\"<string>\" 説明: map を実⾏するサーチ。 例: search="search starttimeu::$start$ endtimeu::$end$" searchtimespandays 構⽂: searchtimespandays=<int> 説明: なし searchtimespanhours 構⽂: searchtimespanhours=<int> 説明: 期間演算⼦は、常に最後の時間境界セットから適⽤する必要があります。そのため、timespan 演算 ⼦の左側に⼀番近いのが endtime 演算⼦である場合、これが starttime に適⽤されます。「enddaysago::1 searchtimespanhours::5」は、「starthoursago::29 enddaysago::1」と同等になります。 searchtimespanminutes 構⽂: searchtimespanminutes=<int> 説明: なし searchtimespanmonths 50 構⽂: searchtimespanmonths=<int> 説明: なし select-arg 構⽂: <⽂字列> 説明: SQL SELECT ステートメントの引数の値や構⽂については、 http://www.sqlite.org/lang_select.html をご覧ください。select-arg に「from results」が指定されていな い場合、それが⾃動的に挿⼊されます。SQL select クエリを、渡されたサーチ結果に対して実⾏します。 select ステートメント内のすべてのフィールド参照には、先頭にアンダースコアを付ける必要があります。 そのため、「ip」は「_ip」として、「_raw」は「__raw」として\\参照する必要があります。select コマン ドの実⾏前には、前のサーチ結果が⼀時データベーステーブル「results」に保管されます。⾏に値が存在し ていない場合は、空のサーチ結果を防⽌するために無視されます。 selfjoin-options 構⽂: overwrite=<bool> | max=<int> | keepsingle=<int> 説明: selfjoin は、各結果を、join フィールドに同じ値を持つ他の結果と結合します。「overwrite」は、そ の他 (other)の結果のフィールドで、結合の基盤として使⽤する結果のフィールドを上書きするかどうかを指 定します (デフォルトは真 (True))。max は、各メイン結果が結合できるその他 (other) の結果の最⼤数を⽰ します(デフォルトは 1、0 の場合無制限)。「keepsingle」は、結合フィールドに⼀意の値を持つ結果 (結合 する他の結果が存在しない) を保持するかどうかを指定します。(デフォルトは偽 (False)) 例: max=3 例: keepsingle=t 例: overwrite=f server-list 構⽂: (<string> )* 説明: 差異の観点からの、ワイルドカード指定されている可能性があるサーバーの変更のリストです。これ が正常かどうかを確認してください。* - header=[true | false] :必要に応じて、diff 出⼒を説明するヘッ ダーを表⽰することができます。 * - attribute=[属性名] :結果の単⼀属性にのみ diff を使⽤できます。 sid-opt 構⽂: <⽂字列> 説明: 成果物を読み込むジョブのサーチ ID。 例: 1233886270.2 single-agg 構⽂: count|<stats-func>(<field>) 説明: 単⼀の集計を単⼀のフィールドに適⽤します (評価したフィールドも可能)。ワイルドカードは使⽤で きません。イベントにまとめて適⽤する特別集計⼦「count」を使⽤する場合を除き、フィールドを指定す る必要があります。 例: avg(delay) 例: sum({date_hour * date_minute}) 例: count slc-option 構 ⽂: (t=<num>|(delims=<string>)|(showcount=<bool>)|(countfield=<field>)|(labelfield=<field>)|(field=<field>)|(labelonly=<b 説明: 単純なログクラスタを設定するオプションです。「T=」には > 0.0 および < 1.0 の閾値を設定しま す。閾値が 1 に近いほど、より類似性が⾼いイベントが同じクラスタであるとみなされます。デフォルトは 0.8 です。「delims」には、raw ⽂字列をトークン化するために使⽤する⼀連の区切り⽂字を設定します。 デフォルトでは、0〜9、A〜Z、a〜z、および「_」を除くすべての⽂字が区切り⽂字となります。 「showcount」が yes の場合、これは各クラスタのサイズを表します (labelonly に真 (True) が設定されて いない限りデフォルトは真 (True) )。「countfield」は、クラスタサイズを書き込むフィールド名です。デ フォルトは「cluster_count」です。「labelfield」は、クラスタ番号を書き込むフィールド名です。デフォ ルトは、「cluster_label」です。「field」は、分析対象フィールド名です。デフォルトは「_raw」です。 「labelonly」が真 (True) の場合、各クラスタを単⼀イベントに減らす代わりに、元のすべてのイベントを 保持して、単に各⾃のクラスタ番号でラベルを付けます。「match」は、使⽤する類似性判断⼿法を決定し ます。デフォルトは「termlist」です。termlist の場合、単語の並び順が完全に同⼀でなければなりません。 termset の場合は、⼀連の単語セット内で並び順が違っていても許容されます。ngramset の場合は、 trigram (3 ⽂字のサブ⽂字列) セットが⽐較されます。ngramset は、フィールド値が⼤きい場合⾮常に処理 が遅くなります。「punct」のような、短い⾮テキストフィールドに対して役⽴ちます。 例: t=0.9 delims=" ;:" showcount=true countfield="SLCCNT" labelfield="LABEL" field=_raw labelonly=true sort-by-clause 構⽂: ("-"|"+")<sort-field> "," 説明: 並べ替えるフィールドのリストと、その並べ替え順序 (昇順または降順) 例: - time, host 例: -size, +source 例: _time, -host 51 sort-field 構⽂: <field> | ((auto|str|ip|num) "(" <field> ")") 説明: sort-field は、フィールドまたは sort-type とフィールドになります。sort-type には、フィールド値 を IP アドレスとして解釈する場合は「ip」を指定します。数字として処理する場合は「num」を指定しま す。辞書式順序で並べ替える場合は「str」を指定します。⾃動的に判断する場合は、「auto」を指定しま す。何もタイプを指定しない場合は、「auto」が仮定されます。 例: host 例: _time 例: ip(source_addr) 例: str(pid) 例: auto(size) source-specifier 構⽂: source=<string> 説明: 指定した source からイベントをサーチします sourcetype-specifier 構⽂: sourcetype=<string> 説明: 指定した sourcetype からイベントをサーチします span-length 構⽂: <int:span>(<timescale>)? 説明: 各ビンの期間。タイムスケールを使⽤する場合、これは時間範囲として使⽤されます。使⽤しない場 合、これは絶対バケツ「length」になります。 例: 2d 例: 5m 例: 10 split-by-clause 構⽂: <field> (<tc-option> )* (<where-clause>)? 説明: 分割対象フィールドを指定します。数値フィールドの場合、デフォルトの離散化が適⽤されます。 srcfields 構⽂: (<field>|<quoted-str>) (<field>|<quoted-str>) (<field>|<quoted-str> )* 説明: フィールドはキー名または引⽤符で囲んだリテラルでなければなりません。 start-opt 構⽂: startswith=<transam-filter-string> 説明: サーチまたは eval フィルタリング式。あるイベントがこの条件を満たすと、新しいトランザクショ ンの開始としてマークされます。 例: startswith=eval(speed_field < max_speed_field/12) 例: startswith=(username=foobar) 例: startswith=eval(speed_field < max_speed_field) 例: startswith="login" startdaysago 構⽂: startdaysago=<int> 説明: 開始時刻を設定するためのショートカット。開始時刻 = 現在 - (N ⽇) starthoursago 構⽂: starthoursago=<int> 説明: 開始時刻を設定するためのショートカット。開始時刻 = 現在 - (N 時間) startminutesago 構⽂: startminutesago=<int> 説明: 開始時刻を設定するためのショートカット。開始時刻 = 現在 - (N 分) startmonthsago 構⽂: startmonthsago=<int> 説明: 開始時刻を設定するためのショートカット。開始時刻 = 現在 - (N ヶ⽉) starttime 構⽂: starttime=<string> 説明: イベントはこの時刻以降でなければなりません。時間形式が⼀致していなければなりません。 starttimeu 52 構⽂: starttimeu=<int> 説明: 開始時刻をエポックから N 秒に設定します。(UNIX 時間) stats-agg 構⽂: <stats-func>( "(" ( <evaled-field> | <wc-field> )?")" )? 説明: 1 つまたは複数のフィールドに適⽤する集計関数で構成された指定⼦。4.0 では、任意の評価式に適 ⽤する集計関数も該当します。eval 評価式は、「{」と「}」で囲む必要があります。括弧内に式を指定しな い場合、集計は個別にすべてのフィールドに対して適⽤されます。フィールド値「*」での呼び出しと同等の 処理が⾏われます。数値集計⼦を不完全数値フィールドに適⽤した場合、その集計で列が⽣成されることは ありません。 例: count({sourcetype="splunkd"}) 例: max(size) 例: stdev(*delay) 例: avg(kbps) stats-agg-term 構⽂: <stats-agg> (as <wc-field>)? 説明: 必要に応じて新しいフィールド名に変更される統計指定⼦。 例: count(device) AS numdevices 例: avg(kbps) stats-c 構⽂: count 説明: フィールドの発⽣カウント。 stats-dc 構⽂: distinct-count 説明: フィールドの⼀意の値数。 stats-first 構⽂: first 説明: フィールドの先頭の値。 stats-func 構⽂: <stats-c>|<stats-dc>|<stats-mean>|<stats-stdev>|<stats-var>|<stats-sum>|<stats-min>|<statsmax>|<stats-mode>|<stats-median>|<stats-first>|<stats-last>|<stats-perc>|<stats-list>|<statsvalues>|<stats-range> 説明: 統計集計⼦。 stats-last 構⽂: last 説明: フィールドの最後の値。 stats-list 構⽂: list 説明: 複数値エントリとしての、このフィールドのすべての値のリスト。値の並び順は、⼊⼒イベントの並 び順を反映しています。 stats-max 構⽂: max 説明: フィールドの最⼤値 (⾮数値の場合は、辞書式)。 stats-mean 構⽂: avg 説明: フィールドの算術的平均。 stats-median 構⽂: median 説明: フィールドの中央値。 stats-min 構⽂: min 説明: フィールドの最⼩値 (⾮数値の場合は、辞書式)。 stats-mode 53 構⽂: mode 説明: フィールドの最頻値。 stats-perc 構⽂: perc<int> 説明: このフィールドの n 番⽬のパーセンタイル値。 stats-range 構⽂: range 説明: 最⼤値と最⼩値の差 (数値の場合のみ)。 stats-stdev 構⽂: stdev|stdevp 説明: フィールドの {標本,⺟集団} 標準偏差。 stats-sum 構⽂: sum 説明: フィールドの値合計。 stats-values 構⽂: values 説明: 複数値エントリとしての、このフィールドのすべての⼀意の値のリスト。値の並び順は、辞書式で す。 stats-var 構⽂: var|varp 説明: フィールドの {標本,⺟集団} 分散。 subsearch 構⽂: [<string>] 説明: サブサーチを指定します。 例: [search 404 | select url] subsearch-options 構⽂: maxtime=<int> | maxout=<int> | timeout=<int> 説明: サブサーチの実⾏⽅法を指定します。 tc-option 構⽂: <bucketing-option>|(usenull=<bool>)|(useother=<bool>)|(nullstr=<string>)|(otherstr=<string>) 説明: フィールドによる分割処理を制御するオプションです。bucketing-option の他に:usenull は、 split-by フィールドが存在しないイベントに対して、シリーズを作成するかどうかを⽰します。このシリー ズには、nullstr オプションの値でラベルが付けられます。デフォルトは NULL です。useother は、 <where-clause> の基準を満たさないためグラフに含まれていないデータシリーズに対して、シリーズを追 加するかどうかを⽰します。このシリーズには、otherstr オプションの値でラベルが付けられます。デフォ ルトは OTHER です。 例: otherstr=OTHERFIELDS 例: usenull=f 例: bins=10 time-modifier 構 ⽂: <starttime>|<startdaysago>|<startminutesago>|<starthoursago>|<startmonthsago>|<starttimeu>|<endtime 説明: なし time-opts 構⽂: (<timeformat>)?(<time-modifier> )* 説明: なし timeformat 構⽂: timeformat=<string> 説明: starttime および endtime の期間の時間形式を設定します。 例: timeformat=%m/%d/%Y:%H:%M:%S timescale 54 構⽂: <ts-sec>|<ts-min>|<ts-hr>|<ts-day>|<ts-month>|<ts-subseconds> 説明: タイムスケールの単位。 タイムスタンプ 構⽂: (MM/DD/YY)?:(HH:MM:SS)?|<int> 説明: なし 例: 10/1/07:12:34:56 例: -5 top-opt 構 ⽂: (showcount=<bool>)|(showperc=<bool>)|(rare=<bool>)|(limit=<int>)|(countfield=<string>)|(percentfield=<string>) 説明: Top 引数:showcount:count フィールド (countfield オプションを参照)およびその組のカウント を作成するかどうかを指定します。(T) showperc:percent フィールド (percentfield オプションを参照) およびその組の相対普及度を作成するかどうかを指定します。(T) rare:設定して top または common を呼 び出すと、呼び出し動作を rare として呼び出します。(F) limit:返す組数を指定します。0 を指定すると、 すべての値が返されます。(10) countfield:カウントを書き込む新規フィールド名 (デフォルトは 「count」)。percentfield:パーセンテージを書き込む新規フィールド名 (デフォルトは「percent」)。 transaction-name 構⽂: <⽂字列> 説明: トランザクションのサーチに使⽤する、transactions.conf に指定されているトランザクション定義 名。他の引数 (例:maxspan) を transam の引数として指定した場合、それらの指定はトランザクション定 義に指定されている値に優先します。 例: purchase_transaction transam-filter-string 構⽂: "<search-expression>" | (<quoted-search-expression>) | eval(<eval-expression>) 説明: ここで:\i\ <search-expression> は、引⽤符を含む有効なサーチ式です。\i\ <quoted-searchexpression> は、引⽤符を含む有効なサーチ式です。\i\ <eval-expression> は、論理式を評価する有効な eval 式です。 例: eval(distance/time < max_speed) 例: "user=mildred" 例: ("search literal") 例: (name="foo bar") trend_type 構⽂: (sma|ema|wma)<num> 説明: 算出するトレンドのタイプ、トレンドタイプとトレンドの期間 (2〜10000 の整数) から成り⽴って います 例: sma10 ts-day 構⽂: days 説明: タイムスケール (⽇)。 ts-hr 構⽂: hours 説明: タイムスケール (時間)。 ts-min 構⽂: minutes 説明: タイムスケール (分)。 ts-month 構⽂: months 説明: タイムスケール (⽉)。 ts-sec 構⽂: seconds 説明: タイムスケール (秒)。 ts-subseconds 構⽂: us|ms|cs|ds 説明: マイクロ秒 ("us")、ミリ秒("ms")、1/100 秒 ("cs")、または 1/10 秒 ("ds") のタイムスケール txn_definition-opt 55 構⽂: <maxspan-opt> | <maxpause-opt> | <maxevents-opt> | <field-list> | <start-opt> | <end-opt> | <connected-opt> 説明: なし 値 構⽂: <lit-value>|<field> 説明: なし 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 where-comp 構⽂: <wherein-comp>|<wherethresh-comp> 説明: where 句の基準です。 wherein-comp 構⽂: (in|notin) (top|bottom)<int> 説明: 集計したシリーズ値を、上位/下位項⽬でグループ化するための基準です。 例: notin top2 例: in bottom10 例: in top5 wherethresh-comp 構⽂: (<|>)( )?<num> 説明: 集計したシリーズ値が、⼀定の閾値より⼤きいまたは⼩さい必要があることを指定する基準です。 例: <100 例: >2.5 x-field 構⽂: <field> 説明: X 軸として使⽤するフィールド y-data-field 構⽂: <field> 説明: グラフ化するデータを持つフィールド y-name-field 構⽂: <field> 説明: データシリーズのラベルとして使⽤する値があるフィールド サーチコマンドリファレンス abstract 概要 結果のテキストを、簡単なサマリー表記に短縮します。 構⽂ abstract [maxterms=int] [maxlines=int] オプション引数 maxterms 構⽂: maxterms=<int> 説明: 最⼤⼀致⽤語数。1〜1000 の値を指定できます。 56 maxlines 構⽂: maxlines=<int> 説明: 最⼤⼀致⾏数。1〜500 の値を指定できます。 説明 サーチ結果のテキストの要約 (簡素化したもの、サマリー) を⽣成します。オリジナルのテキストは、スコアリン グ機能により⽣成されたサマリーに置換されます。イベントが選択された maxlines よりも⼤きい場合、隣接する ⾏により多くの単語がある⽅が、単語が少ない⽅よりも優先されます。ある⾏にサーチ単語が存在している場合、 その隣接⾏も部分⼀致となり、コンテキストが返される場合があります。選択⾏間にギャップがある場合、⾏の前 に省略記号「...」が付けられます。 結果のテキストの⾏数が maxlines 以下の場合、何も変更は⾏われません。 例 例 1: 各サーチ結果に対して、最⾼ 5 ⾏のサマリーを表⽰します。 ... |abstract maxlines=5 関連項⽬ highlight Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、abstract コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 accum 概要 指定された数値フィールドの現在までの合計値を保持します。 構⽂ accum <field> [AS <newfield>] 必要な引数 field 構⽂: <⽂字列> 説明: 数値を持つフィールド名。 オプション引数 newfield 構⽂: <⽂字列> 説明: 結果の書き込み先フィールド名。 説明 が数値の各イベントに対して、その数値の現在までの合計を保持し、それを同じフィールド (newfield が指定さ れている場合はそのフィールド) に書き込みます。 例 例 1: 「total_count」フィールド内の「count」の、現在の合計を保存します。 ... | accum count AS total_count 関連項⽬ autoregress, delta, streamstats, trendline Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、accum コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 addcoltotals 概要 57 ⼊⼒結果のすべての数値フィールドの値合計を表すフィールドを持つ、新しい結果を算出して追加します。 構⽂ addcoltotals [labelfield=<field>] [label=<string>] [<fieldlist>] オプション引数 <fieldlist> 構⽂: <field> <field>... 説明: 有効なフィールド名のリスト。指定した場合、addcoltotals は名前付きフィールドのみの合計が算出 されます。addcoltotals の fieldlist 内の⽤語では、ワイルドカードとしてアスタリスク「*」を使⽤できま す。 labelfield 構⽂: labelfield=<fieldname> 説明: サマリー・イベントに追加するフィールド名を指定します。label がない場合、値は「Total」になり ます。 label 構⽂: label=<string> 説明: labelfield を指定した場合、この⽂字列が値として作成されます。labelfield がない場合、何の効果 もありません。 説明 コマンドは、サーチ結果セットの最後に、各数値フィールドの合計を表す新たな結果を追加しま す。labelfield を指定した場合、label オプションに設定された値で、新しい結果上に作成されます。 addcoltotals 例 例 1: すべてのフィールドの合計を算出し、合計をサマリーイベント「change_name」に保存します。 ... | addcoltotals labelfield=change_name label=ALL 例 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 関連項⽬ addtotals, stats Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、addcoltotals コマンド の使⽤⽅法に関する質問と回答をご覧いただけます。 addinfo 概要 現在のサーチについて、共通の情報を含むフィールドを追加します。 構⽂ | addinfo 説明 サーチに関するグローバル情報を各イベントに追加します。addinfoは⼀般的に、内部的に使⽤されるサマリー・イ ンデックスのコンポーネントです。 現在の所、次のフィールドが追加されます: info_min_time:サーチのもっとも早い時間境界を指定します。 info_max_time:サーチのもっとも遅い時間境界を指定します。 info_sid:イベントを⽣成したサーチの ID。 58 info_search_time:サーチが実⾏された時間。 例 例 1: サーチに関する情報を各イベントに追加します。 ... | addinfo 関連項⽬ search Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、adinfo コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 addtotals 概要 各結果のすべての数値フィールドの合計を算出します。 構⽂ addtotals [row=bool] [col=bool] [labelfield=field] [label=string] [fieldname=field] field-list 必要な引数 field-list 構⽂: <field>... 説明: 1 つまたは複数の数値フィールドをスペースで区切ります。ワイルドカードを使⽤できます。 オプション引数 row データタイプ: <bool> 説明: 各結果に対して、field-list の算術的合計を計算するかどうかを⽰します。デフォルトは真 (True) で す。 col データタイプ: <bool> 説明: 各フィールドの合計を表す新たな結果 (サマリーイベント) を追加するかどうかを⽰します。デフォ ルトは偽 (false) です。 fieldname データタイプ: <field> 説明: row=true の場合、この名前付きフィールドに合計が保管されます。 labelfield データタイプ: <field> 説明: col=true の場合、これを使ってサマリー・イベントに追加するフィールド名を指定します。ラベルが ない場合、値は「Total」になります。col=false の場合、何の効果もありません。 label データタイプ: <⽂字列> 説明: labelfield を指定し、col=true の場合、この⽂字列を値として作成されます。どちらの ない場合、または col=false の場合、何も効果はありません。 labelfield も 説明 デフォルトの addtotals コマンド (row=true) は、field-list (ワイルドカードを使ったフィールドリスト) に⼀致す る、すべての数値フィールドの算術的合計を算出します。リストが空の場合は、すべてのフィールドが考慮されま す。デフォルトで、合計は fieldname が指定するフィールドまたは Total フィールドに保管されます。 col=true の場合、addtotals は列合計を計算し、各フィールドの合計を表す新たな結果を最後に追加しま す。labelfield を指定した場合、「label」オプションで設定された値で、このサマリーイベントにそのフィール ドが追加されます。| addtotals を算出することもできます。 col=true を使⽤する代わりに、addcoltotals コマンドを使ってサマリーイベント 例 例 1: 各結果のすべての数値フィールドの合計を算出します。 ... | addtotals 例 2: 各結果の数値フィールドの合計を算出し、合計を sum フィールドに保存します。 59 ... | addtotals fieldname=sum 例 3: 与えられたリストに⼀致する数値フィールドの合計を算出し、合計を sum フィールドに保存します。 ... | addtotals fieldname=sum foobar* *baz* 例 4: すべてのフィールドの合計を算出し、合計をサマリーイベント「change_name」に保存します。 ... | addtotals col=t labelfield=change_name label=ALL 関連項⽬ stats Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、addtotals コマンドの 使⽤⽅法に関する質問と回答をご覧いただけます。 analyzefields 概要 ターゲット離散型フィールドと他の数値フィールド間の相関の度合いを検索します。 構⽂ analyzefields classfield=field 必要な引数 classfield 構⽂: classfield=<field> 説明: 複数クラス分析が可能ですが、最良の結果を得るためには、classfield に 2 つの⼀意の値が必要で す。 説明 field を離散型確率変数として使⽤して、すべての数値フィールドを分析し、それらのフィールドが classfield の 値を予測 (predict) できるかどうかを判断します。つまり、analyzefields はターゲット classfield の値と他の フィールドの数値間の関係の安定性を決定します。 レポート・コマンドである analyzefields は、⼊⼒されたすべて結果を使⽤して、識別した数値フィールドあたり 1 つの出⼒結果を⽣成します。 複数クラス分析が可能ですが、最良の結果を得るためには、classfield に 2 つの⼀意の値が必要です。 analyzefields コマンドは、field、count、cocur、acc、および balacc の 5 つの列を持つテーブルを返します。 は、⼊⼒サーチ結果内の数値フィールド名です。 は、サーチ結果内のフィールドの登場回数です。 cocur は、classfield に対するフィールドの co-occurrence です。classfield が存在する中で、field が存在し ている結果の⽐率です。classfield のある各イベントに field が存在する場合、cocur は 1 になります。 acc は、フィールドの値を使って classfield の値を予測する際の精度です。関係で field の存在数合計を正確 に予測できた回数の⽐率。これは数値フィールドに対してのみ有効になります。 balacc(balanced accuracy) は、classfield の各値を予測する際の、⾮加重平均です。これは数値フィールド に対してのみ有効になります。 field count 例 例 1: 「is_activated」の値を予測するために、数値フィールドを分析します。 ... | analyzefields classfield=is_activated 関連項⽬ anomalousvalue Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、analyzefields コマンド の使⽤⽅法に関する質問と回答をご覧いただけます。 anomalies 60 データのスライディング・ウィンドウ内で異常なイベント (またはフィールド値) を探すには、anomalies コマンド を使⽤します。anomalies コマンドは、イベントの新しい unexpectedness フィールドに、各イベントの意外性スコア を割り当てます。イベントが異常 (意外) とみなされるかどうかは、計算された意外性スコアに対して⽐較される threshold の値によって判断されます。threshold よりも意外性スコアが⼤きい場合に、イベントは意外または異常 とみなされます。 注意: タイムラインサーチビューで anomalies を実⾏後、[フィールドの選択] メニューを使ってイベントリスト に unexpectedness フィールドを追加してください。 概要 イベントの「unexpectedness」 (意外さ) スコアを算出します。 構⽂ anomalies [threshold=num] [labelonly=bool] [normalize=bool] [maxvalues=int] [field=field] [blacklist=filename] [blacklistthreshold=num] [by-clause] オプション引数 threshold データタイプ: threshold=<num> 説明: 意外性の限度を表す数値。イベントで計算された意外性スコアがこの限度を超えた場合、そのイベン トは意外または異常とみなされます。デフォルトは 0.01 です。 labelonly データタイプ: labelonly=<bool> 説明: 出⼒を返す⽅法を指定します。すべてのイベントに unexpectedness フィールドが追加されます。真 (True) を設定すると、イベントは削除されません。偽 (False) を設定すると、unexpected スコアが閾値未満 のイベントが出⼒結果セットから削除されます。デフォルトは偽 (false) です。 normalize データタイプ: normalize=<bool> 説明: フィールド内の数値テキストを正規化するかどうかを⽰します。これは、アルゴリズムの⽬的として フィールド内の 0〜9 のすべての⽂字が同じとみなされることを意味していますが、数値の配置と数量は引 き続き有意になります。field に正規化しないでカテゴリとして処理する数値データが存在する場合 は、normalize=false を設定します。デフォルトは真 (True) です。 maxvalues データタイプ: maxvalues=<int> 説明: イベントのフィールド値の意外性を判断する際に、前のイベントを含めるスライディングウィンドウ のサイズを指定します。この値は、10〜10000 です。デフォルトは 100 です。maxvalues の値を増やすと、 イベントあたりの合計 CPU コストが線形に増加していきます (値を⼤きくすると、サーチ実⾏時間が⾮常に ⻑くなります)。 field データタイプ: field=<field> 説明: イベントの意外性を判断する際の、分析対象フィールド。デフォルトは _raw です。 blacklist データタイプ: blacklist=<filename> 説明: $SPLUNK_HOME/var/run/splunk/BLACKLIST.csv にある、イベントの CSV ファイル名。到着 イベントがこのブラックリスト内のイベントに類似している場合、そのイベントは正常な (注⽬しない) イベ ントとして取り扱われ、意外性スコア 0.0 が与えられます。 blacklistthreshold データタイプ: blacklistthreshold=<num> 説明: 到着イベントをブラックリストイベントとして判断するための、類似度スコアを指定します。到着イ ベントの類似度スコアが blacklistthreshold を超えている場合、それは意外なイベントとしてマークされま す。デフォルトは 0.05 です。 by clause 構⽂: by <fieldlist> 説明: 意外性検出の結果を分離するための、フィールドのリストを指定するために⽤いられます。指定した フィールドの各値の組み合わせに対して、それらの値を持つイベントが別個に取り扱われます。 説明 イベントの意外性スコアの算出⽅法に興味がある⽅のために、このアルゴリズムは当社独⾃のものですが、おおま かに⾔えばイベント (X) の、前の⼀連のイベントセット (P) との類似性に基づいて算出されます。 unexpectedness = [s(P and X) - s(P)] / [s(P) + s(X)] ここで、s() はデータの類似性または均⼀性を表す測定基準です。この式は、X の追加が⼀連のイベントの類似性 にどれだけ影響するかの評価基準を提供し、異なるイベントサイズの正規化も⾏います。 前の anomalies コマンドの結果に対して再度 anomalies コマンドを実⾏し、結果をさらに絞り込むことができま す。各実⾏では 100 件のイベントに対して実⾏され、2 回⽬の anomalies の呼び出しでは約 10,000 件の前のイベ 61 ントウィンドウに対して実⾏されます。 例 例 1: この例は、threshold を使った意外な (異常) イベントのサーチの調整⽅法を表しています。 index=_internal | anomalies by group | search group=* このサーチは、_internal インデックス内のイベントに注⽬して、同じ group 値を持つイベントセットの unexpectedness スコアを算出します。これは、各⼀意の group に対する unexpectedness スコアの算出に⽤いられる、 スライディングウィンドウ内のイベントセットには、同じ group 値を持つイベントのみが含まれることを意味して います。次に group フィールドを含むイベントのみを表⽰するために、search コマンドが⽤いられます。結果の 例を以下に⽰します。 デフォルトの 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コマン ドは、threshold フィールドの定義と値の設定に⽤いられています。anomalies コマンドの threshold 属性はフィール ドではないため、この処理は明⽰的に⾏う必要があります。次に eval コマンドを使⽤して、他の新規フィールド score を定義します。このフィールドの値は、unexpectedness による threshold 値の⽐較に基づいて、 「anomalous」 (異常) または「boring」 (注⽬は不要) になります。これらの結果の例を以下に⽰します。 その他の例 例 1: もっとも関連するイベントを最初に表⽰します。ブラックリスト「boringevents」にあるイベントは無視 します。 ... | anomalies blacklist=boringevents | sort -unexpectedness 62 例 2: トランザクションと⼀緒に使⽤して、異常な時間領域を探します。 ... | transaction maxpause=2s | anomalies 例 3: 各ソースの意外 (異常) なイベントを別個に探します。あるソースのパターンが、別のソースの意外性スコ アに影響することはありません。 ... | anomalies by source 関連項⽬ anomalousvalue、cluster、kmeans、outlier Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、anomalies コマンドの 使⽤⽅法に関する質問と回答をご覧いただけます。 anomalousvalue 概要 不正な、または異常なサーチ結果を探す、フィルタリングする、または要約します。 構⽂ anomalousvalue <av-option> [action] [pthresh] [field-list] 必要な引数 <av-option> 構⽂: minsupcount=<integer> | maxanofreq=<float> | minsupfreq=<float> | minnormfreq=<float> 説明: ほんのわずかなイベントにのみ登場するフィールドは、あまり情報として有益ではありません (3 つ の値の中でどれが異常か?など)。minsupcount、maxanofreq、minsupfreq、および minnormfreq は、そ のような情報として役⽴たないフィールドをフィルタリングするための閾値を設定します。 最⼤異常頻度:異常が頻繁な場合、フィールドを検討から除外します。フィールドの発⽣頻度 合計に対するフィールド異常の発⽣⽐率が p を超えた場合、そのフィールドは検討から除外されます。p は ⽐率として、0〜1 の浮動⼩数点数で表されます。 minnormfreq=p 最低正常頻度:異常がさほど頻繁ではないフィールドを検討から除外します。フィールドの発 ⽣頻度合計に対するフィールド異常の発⽣⽐率が p を下回った場合、そのフィールドは検討から除外されま す。p は⽐率として、0〜1 の浮動⼩数点数で表されます。 minsupcount=N 最低サポート・カウント:⼊⼒データセット内の、発⽣数が少ないフィールドを破棄します。 ⼊⼒イベント内にフィールドが N 回未満しか登場しない場合、そのフィールドは検討から除外されます。N は正の整数でなければなりません。 minsupfreq=p 最低サポート頻度:発⽣頻度が低いフィールドを破棄します。minsupcount と似ていますが、 イベント数合計に対するフィールドの発⽣⽐率をチェックします。この⽐率が p 未満の場合、そのフィール ドは検討から除外されます。p は⽐率として、0〜1 の浮動⼩数点数で表されます。 maxanofreq=p オプション引数 action 構⽂: action=annotate | filter | summary 説明: 意外性スコアを返すかどうか (annotate)、異常値を持つイベントをフィルタリングするかどうか (filter)、または異常統計の概要を返すかどうか (summary) を指定します。デフォルトは filter です。 action が annotate の場合、異常値を持つイベントに、値の意外性スコアを⽰す新たなフィールドが追加され ます。 action が filter の場合、異常値を持つイベントが保持され、その他のイベントは破棄されます。保持された イベントには、次の注釈が付けられます: annotate action が summary の場合、各フィールドに対して異常統計を要約したテーブルが⽣成されます。 field-list 構⽂: <field>, ... 説明: 考慮するフィールドのリスト。フィールド・リストが指定されていない場合は、すべてのフィールド が考慮されます。 pthresh 構⽂: pthresh=<num> 説明: 値を変則とみなすために、満たす必要がある確度閾値 (10 進数)。デフォルトは 0.01 です。 説明 コマンドは、イベントセット全体に注⽬し、値が異常かどうかを決定する際に、値の分布を考慮し ます。数値フィールドに対して、発⽣頻度や平均からの標準偏差の値の点で異常と判断できるデータ値を識別また は要約します。 anomalousvalue 63 異常と判断されたフィールドに対して、以下の⽅法で新しいフィールドが追加されます。フィールドが数値の場合 (例:size)、新しいフィールドは Anomaly_Score_Num(size) になります。フィールドが⾮数値の場合 (例:name)、新し いフィールドは Anomaly_Score_Cat(name) になります。 例 例 1: サーチ結果から、異常な値のみを返します。 ... | anomalousvalue これは、以下のサーチを実⾏する場合と同じです。 ...| anomalousvalue action=filter pthresh=0.01 例 2: ホスト「reports」からの異常な値を返します。 host="reports" | anomalousvalue action=filter pthresh=0.02 例 3: 各数値フィールドに対して、異常統計の要約を返します。 source=/var/log* | anomalousvalue action=summary pthresh=0.02 | search isNum=YES 関連項⽬ af, analyzefields、anomalies、cluster、kmeans、outlier Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、anomalousvalue コマ ンドの使⽤⽅法に関する質問と回答をご覧いただけます。 append サブサーチの結果を現在のサーチ結果に追加するには、append コマンドを使⽤します。append command は、履歴 データに対してのみ実⾏されます。リアルタイムサーチに使⽤しても、正常な結果は⽣成されません。 append コマンドを使⽤する状況については、『サーチマニュアル』の「イベントのグループ化と相関」を参照し てください。 概要 サブサーチ の結果を現在の結果に追加します。 構⽂ append [subsearch-options]* subsearch 必要な引数 subsearch 説明: サーチパイプライン。サブサーチの詳細は、『サーチマニュアル』を参照してください。 オプション引数 64 subsearch-options 構⽂: maxtime=<int> | maxout=<int> | timeout=<int> 説明: サブサーチの実⾏⽅法を指定します。 サブサーチのオプション maxtime 構⽂: maxtime=<int> 説明: サブサーチの処理がここに指定した時間 (秒) 経過すると、終了されます。デフォルトは 60 です。 maxout 構⽂: maxout=<int> 説明: サブサーチから出⼒される結果⾏の最⼤数。デフォルトは 50000 です。 timeout 構⽂: timeout=<int> 説明: サブサーチの完全完了まで待機する最⼤時間 (秒)。デフォルトは 60 です。 説明 サブサーチの結果を、現在のサーチ結果の最後に新たな結果として追加します。 例 例 1 この例では、USGS Earthquakes Web サイトからダウンロードした最近の地震データを使⽤しています。 データはカンマ区切り形式の ASCII テキストファイルで、記録されている各地震のマグニチュード (mag)、座 標 (latitude、longitude)、地域 (place) が含まれています。 最新の CSV ファイルを USGS Earthquake Feeds からダウンロードして、それを Splunk への⼊⼒として 追加できます。 昨⽇カリフォルニア州周辺で発⽣した地震数を算出して、次に地震発⽣回数合計を計算します。 source=usgs place=*California* | stats count by magType | append [search index=usgs_* source=usgs place=*California* | stats count] この例では、カリフォルニア地域のすべての⾃⾝をサーチして (Region="*California")、次にマグニチュードのタイ プに応じて地震数をカウントします。 コマンドは、split-by を使ってフィールドを分割したイベント数のカウントと同時に、イベント数の合計を カウントすることはできません。そのため、サブサーチを使って、地震発⽣回数合計をカウントしています。この カウント数は、append コマンドを使って前のサーチ結果に追加されます。 stats 両⽅のサーチが count フィールドを共有しているため、サブサーチの結果は列内の最後の⾏として表⽰されます。 基本的にこのサーチは、append コマンドと類似の addcoltotals コマンドを使って、列合計を追加しています。 例 2 この例は、チュートリアルのサンプルデータセットを使⽤しています。[this topic in the tutorial] から データ セットをダウンロードした後、指⽰に従って Splunk にアップロードしてください。次に、時間範囲に [その他] > [昨⽇] を指定してサーチを実⾏します。 Flower & Gift shop で昨⽇何か商品を購⼊した⼀意の顧客数をカウントして、次にそれを商品種別 (Candy、 Flowers、Gifts、Plants、および Balloons) ごとに分類します。また、各商品種別の購⼊が多い顧客、および商品 の購⼊量を記載したリストも⽣成します。 sourcetype=access_* action=purchase | stats dc(clientip) by category_id | append [search sourcetype=access_* action=purchase | top 1 clientip by category_id] | table category_id, dc(clientip), clientip, count この例では、まず最初に購⼊イベント (action=purchase) をサーチしています。これらの結果がパイプ⽂字で 65 stats コマンドに渡され、dc() or distinct_count() 関数を使って、商品を購⼊した個別のユーザー数が算出されます。商 品カテゴリ (category_id) に基づいてこの数量を分類するために、by 句を使⽤しています。 購⼊イベントのサーチと各商品カテゴリの上位商品購⼊者のカウント (clientip を使⽤) には、サブサーチが使わ れています。これらの結果が、append コマンドを使って前のサーチ結果に追加されます。 ここで、table コマンドは、商品カテゴリ (category_id)、各商品カテゴリの商品を購⼊した個別の (⼀意の) ユー ザー数 (dc(clientip))、各商品カテゴリの商品を多く購⼊しているユーザー (clientip)、およびそのユーザーが購⼊ した商品数 (count) のみを表⽰するために使⽤されています。 結果が同じフィールド値を共有しているのに、append コマンドは単純に、前のサーチ結果の最後にサブサーチの結 果を追加していることがお分かりでしょうか。このコマンドで、出⼒の書式を再設定することはできません。 例 3 この例では、サーチチュートリアルのサンプルデータセットを使⽤していますが、Apache Web アクセスログ 形式の任意のデータを利⽤できます。サーチチュートリアルのこのトピック からデータ セットをダウンロー ドした後、指⽰に従って Splunk にアップロードしてください。 Web サーバーにアクセスした⼀意の IP アドレス数をカウントし、各ページ要求タイプ (method) でもっともアクセ ス数が多いユーザーを検索します。 sourcetype=access_* | stats dc(clientip), count by method | append [search sourcetype=access_* | top 1 clientip by method] Web アクセスイベントはパイプ⽂字で dc() or distinct_count() コマンドに渡され、stats 関数を使って、サイトに アクセスした個別の (⼀意の) ユーザー数が算出されます。count() 関数は、サイトにアクセスされた合計回数をカ ウントするために⽤いられています。これらの数が、ページ要求 (method) 別に分類されます。 各ページ要求タイプ (method) に対して、アクセス数が多いユーザーを検索するために、サブサーチが使⽤されてい ます。append コマンドは、テーブルの最後にサブサーチの結果を追加するために使⽤されています。 最初の 2 ⾏は、最初のサーチの結果です。最後の 2 ⾏は、サブサーチの結果です。両⽅の結果セットが、method および count フィールドを共有しています。 関連項⽬ appendcols、join、set Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、append コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 appendcols 概要 サブサーチ の結果フィールドを現在の結果に追加します (最初の結果を最初の結果に、2 番⽬の結果を 2 番⽬の 結果に、以降同様)。 66 構⽂ appendcols [override=bool|subsearch-options]* subsearch 必要な引数 subsearch 説明: サーチパイプライン。サブサーチの詳細は、『サーチマニュアル』を参照してください。 オプション引数 override データタイプ: <bool> 説明: override オプションに偽 (False) を指定すると (デフォルト)、メイン結果とサブサーチの結果の両⽅ にフィールドが存在する場合に、メイン結果の値が使⽤されます。override が真 (True) の場合、サブサー チ結果の値が使⽤されます。 subsearch-options 構⽂: maxtime=<int> | maxout=<int> | timeout=<int> 説明: サブサーチの実⾏⽅法を指定します。 サブサーチのオプション maxtime 構⽂: maxtime=<int> 説明: サブサーチの処理がここに指定した時間 (秒) 経過すると、終了されます。デフォルトは 60 です。 maxout 構⽂: maxout=<int> 説明: サブサーチから出⼒される結果⾏の最⼤数。デフォルトは 50000 です。 timeout 構⽂: timeout=<int> 説明: サブサーチの完全完了まで待機する最⼤時間 (秒)。デフォルトは 60 です。 説明 サブサーチの結果フィールドを⼊⼒サーチの結果に追加します。サブサーチの外部フィールド (「_」で始まらな いフィールド) が、現在の結果と結合されます。サブサーチの最初の結果が、メインサーチの最初の結果と、2 番 ⽬が 2 番⽬と、...のように、以降同様に結合されます。override オプションに偽 (False) を指定すると (デフォル ト)、メイン結果とサブサーチの結果の両⽅にフィールドが存在する場合に、メイン結果が使⽤されます。真 (True) を指定すると、当該フィールドのサブサーチ結果の値が使⽤されます。 例 例 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」を指定します。 次に appendcols を使ってサーバーをサーチして、そのサーバー上での特定のフィールドの発⽣回数をカウ ントします。このカウントの名前は「VariableA」に変更されます。addinfo コマンドは、このサブサーチ をinfo_min_time と info_max_time の範囲内に制限します。 eval コマンドは、「variableB」の定義に⽤いられます。 結果は、totalUsers、variableA、variableB のテーブルになります。 関連項⽬ append、join、set Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、appendcols コマンド の使⽤⽅法に関する質問と回答をご覧いただけます。 appendpipe 概要 67 現在の結果セットに適⽤した、サブパイプラインの結果を追加します 構⽂ appendpipe [run_in_preview=<bool>] [<subpipeline>] 引数 run_in_preview 構⽂: run_in_preview=<bool> 説明: コマンドをプレビューモードで実⾏するかどうかを⽰します。デフォルトは真 (True) です。 説明 を、レポート・コマンドの結果を既存の結果セットに追加するために利⽤できます。これは、テーブル やグラフの作成時に、データセット全体のサマリーや合計、または説明の⾏を追加する場合に役⽴ちます。また、 追加の計算を⾏うために、オリジナルの結果が必要な場合に役⽴つこともあります。 appendpipe 例 例 1: すべてのユーザーの各アクションの⼩計を追加します index=_audit | stats count by action user | appendpipe [stats sum(count) as count by action | eval user = "ALL USERS"] | sort action 関連項⽬ append、appendcols、join、set Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、appendpipe コマンド の使⽤⽅法に関する質問と回答をご覧いただけます。 arules arules は、フィールド値間の連合関係を探します。このアルゴリズムは、他の顧客が参照または購⼊した商品に 基づいて、関連する商品を提案する、オンラインショッピング Web サイトで使われているアルゴリズムと似てい ます。 概要 フィールド値間の相関ルールを探します。 構⽂ arules (<arules-option>)* <fields> 必要な引数 <arules-option> 構⽂: <support> | <confidence> 説明: arules コマンドのオプション。 fields 構⽂: <fields> 説明: フィールド名のリスト。フィールド数は任意です。 arules のオプション support 構⽂: sup=<int> 説明: サポート限度を指定します。算出されたサポート・レベルとの関係がこの値未満の場合、出⼒結果に は含まれません。サポートオプションは正の整数でなければなりません。デフォルトは 3 です。 confidence 構⽂: conf=<float> 説明: 信頼区間限度を指定します。信頼区間 (Strength フィールドが表す) との関係により、出⼒結果に含ま れるかどうかが決まります。0〜1 でなければなりません。デフォルトは .5 です。 説明 arules コマンドは、[Given fields]、[Implied fields]、[Strength]、[Given fields support]、および [Implied fields support] 列を持つテーブルを返します。[Given fields] と [Implied fields] の値は、⾃分が提供したフィー ルドの値です。[Strength] の値は、[Given fields] と [Implied fields] の値間の関係を表しています。 Michael Hahsler、Bettina Gruen、および Kurt Hornik (2012) による『arules: Mining Association Rules 68 and Frequent Itemsets』 (R package version 1.0-12) に記載されているように、arules アルゴリズムを実装し ています。 例 例 1: フィールドが関係している尤度をサーチします。 ... | arules field1 field2 field3 例 2: ... | arules sup=3 conf=.6 field1 field2 field3 関連項⽬ associate、correlate Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、arules コマンドの使⽤ に関する質問と回答をご覧いただけます。 associate コマンドは、値に基づいてエントロピーの変化を計算することにより、フィールドペア間の関係を探し ます。このエントロピーは、あるフィールドの値を知ることが、もう⼀⽅のフィールドの値を予測するために役⽴ つかどうかを表しています。 associate 情報理論において、エントロピーは乱数に関連付けられた不確実性の測定と定義されています。この場合、フィー ルドに 1 つの⼀意の値のみが存在していると、それのエントロピーは 0 になります。複数の値がある場合は、そ れらの値がより均等に分散しているため、エントロピーが⾼くなります。 概要 フィールド間の相関関係を識別します。 構⽂ associate [associate-option]* [field-list] オプション引数 associate-option 構⽂: supcnt | supfreq | improv 説明: associate コマンドのオプション。 field-list 構⽂: <field>, ... 説明: ワイルドカードを使⽤しない、フィールドのリスト。フィールドのリストが指定されている場合、分 析はそれらのフィールドにのみ限定されます。デフォルトでは、すべてのフィールドが使⽤されます。 Associate のオプション supcnt 構⽂: supcnt=<num> 説明: 「参照キー=参照値」の組み合わせが現れる最低回数を指定します。正の整数でなければなりませ ん。デフォルトは 100 です。 supfreq 構⽂: supfreq=<num> 説明: 「参照キー=参照値」の組み合わせの最低登場頻度 (合計イベント数に対する割合) を指定します。デ フォルトは 0.1 です。 improv 構⽂: improv=<num> 説明: 「ターゲットキー」の限度、またはエントロピー改善の最⼩値を指定します。結果として計算され る、無条件エントロピー (ターゲットキーのエントロピー) と条件付きエントロピー (参照キーが参照値の場 合の、ターゲットキーのエントロピー) 間の差となるエントロピーの改善は、この限度値以上でなければな りません。デフォルトは 0.5 です。 説明 associate コマンドは、次のフィールドを含む列を持つテーブルを出⼒します。 分析されるフィールド:Reference_Key、Reference_Value、および Target_Key 各フィールド値のペアに対して計算されるエントロピー:Unconditional_Entropy、Conditional_Entropy、および Entropy_Improvement エントロピーの計算に基づく、フィールド値間の関係を要約したメッセージ: 69 Description は結果をユーザーに分かりやすい形式で表現したものです。次の形式で記述されます:「When the 'Reference_Key' has the value 'Reference_Value', the entropy of 'Target_Key' decreases from Unconditional_Entropy to Conditional_Entropy.」 (Reference_Key に値「Reference_Value」が存在する場合、「Target_Key」のエントロ ピーは Unconditional_Entropy から Conditional_Entropy に減少する)。 Description 例 例 1: この例は、Web アクセスログのフィールド内の関係の分析⽅法を表しています。 sourcetype=access_* status!=200 | fields method, status | associate | table Reference_Key, Reference_Value, Target_Key, Top_Conditional_Value, Description サーチの最初の部分は、200 以外のステータスを返した Web アクセスイベントを取得します。Web アクセス データには多数のフィールドが含まれています。associate コマンドを使って、データ内のフィールドと値のすべ てのペアの関係を参照することができます。単純化するために、この例では、次の 2 つのフィールドにサーチを 限定します:methodおよび status。 また、出⼒を単純化するために、table コマンドを使って選択した列のみを表⽰します。 この特定の結果セットには、以下の項⽬が存在しています (左側のフィールド領域を参照)。 2 つの 5 つの method status の値:POST と GET の値:301、302、304、404、および 503 最初の結果⾏から、method=POST の場合に、それらのイベントの status フィールドがすべて 302 であることが分か ります。associate コマンドを使⽤した結果、method=POST の場合、status は 302 であると考えられます。methodの値 を予測するために status=302 を参照している 3 ⾏⽬からも、同様の結論を得られます。 Reference_Key と Reference_Value は Target_Key と相関しています。Top_Conditional_Value フィールドか らは、Reference_Value の最頻値、データセット内のそのフィールドの Reference_Value の頻度、およびその Reference Key 内に特定の Reference_Value を持つイベントに対して、もっとも⼀般的に関連付けられている Target_Key 内の値の頻度の、3 種類の事柄が分かります。これは、「CV (FRV% -> FCV%)」のように書式設定 されています。ここで、CV は条件値、FRV は参照値の登場割合 (パーセント)、そして FCV は参照値の場合に、 条件値の登場割合 (パーセント)になります。 注意: この例は、Splunk チュートリアルからのサンプルデータを使⽤しています。このデータをダウンロード、 追加してこのサーチを実⾏すれば、これらの結果が表⽰されます。詳細は、『サーチチュートリアル』の 「Splunk へのチュートリアルデータの取り込み」を参照してください。 例 2: 相互に関係している結果を返します (相互に 3 つ以上の参照が存在している)。 index=_internal sourcetype=splunkd | associate supcnt=3 例 3: ホスト「reports」からのすべてのイベントを分析し、相互に関係している結果を返します。 host="reports" | associate supcnt=50 supfreq=0.2 improv=0.5 関連項⽬ correlate、contingency Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、associate コマンドの 使⽤⽅法に関する質問と回答をご覧いただけます。 audit 概要 ローカル監査インデックスに保管されている、監査証跡情報を返します。 構⽂ audit 70 説明 ローカルの「audit」インデックスに保管されている、監査証跡情報を表⽰します。また、ギャップや改ざんを チェックする際に、署名された監査イベントを検証します。 例 例 1: 「audit」インデックスにある情報を表⽰します。 index="_audit" | audit Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、audit コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 autoregress 概要 前のフィールド値をコピーすることで、移動平均算出⽤のイベントまたは結果を設定します。 構⽂ autoregress field [AS <newfield>] [p=<p_start>[-<p_end>]] 必要な引数 field 構⽂: <⽂字列> 説明: フィールド名。数値を持つフィールドが多いです。 オプション引数 p 構⽂: p=<int>[-<int>] 説明: その値をコピーする、前のイベントを指定します。単⼀の整数または数値範囲の形式で指定できま す。3 などの単⼀値の場合、autoregress はその値に該当する件数の前のイベントからフィールド値をコピー します。範囲の場合、autoregress はその範囲の前のイベントからフィールド値をコピーします。たとえば p=3 の場合、前の 3 件のイベントからフィールド値がコピーされます。p=2-4の場合、2〜4 件前のイベン トからフィールド値がコピーされます。デフォルトは 1 です。 newfield 構⽂: <field> 説明: p=<int> の場合、単⼀のフィールド値をコピーするフィールド名を選択します。p に範囲が設定されて いる場合、無効になります。 説明 field の 1 つまたは複数の前の値を各イベントにコピーすることで、⾃動回帰 (移動平均) ⽤のデータを設定しま す。 newfield を指定した場合、p 件前のイベントから 1 つの前の値が newfield にコピーされます。この場合、p は 単⼀の整数でなければなりません。 newfield を指定しない場合、<field>_p<num> フィールドに、1 つまたは複数の値がコピーされます。この場 合、p は単⼀の整数または範囲 <p_start>-<p_end> になります。範囲の場合、p_start 件前のイベントから p_end 件前までのイベントの値がコピーされます。 p が指定されていない場合、デフォルトでは 1 が使⽤されます。この場合、field の前の 1 つの値のみ が、<field>_p1 にコピーされます。 最初の数件のイベントは、前の値が存在しないため、前の値による処理は⾏われません。 例 例 1: 各イベントに対して、「foo」フィールドの前の 3 番⽬の値をフィールド「oldfoo」にコピーします。 ... | autoregress foo AS oldfoo p=3 例 2: 各イベントに対して、「count」フィールドの前の 2〜5 番⽬の値を、それぞれ対応するフィールド 「count_p2」、「count_p3」、「count_p4」、および「count_p5」にコピーします。 ... | autoregress count p=2-5 例 3: 現在のイベントと 4 つ前までのイベントのイベント・サイズの移動平均を算出します。ここでは、初期イ ベントの moving_average を除外します (NULL フィールドの合計は NULL とみなされ、フィールド値が誤って いるため)。 71 ... | 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 Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、autoregress コマンド の使⽤⽅法に関する質問と回答をご覧いただけます。 bin bin コマンドは、bucket コマンドのエイリアスで、まったく同じ構⽂を使⽤します。 概要 連続した数値を離散集合に配置します。 構⽂ bin [<bucketing-option>]* <field> [as <field>] 必要な引数 <field> データタイプ: <field> 説明: フィールド名を指定します。 オプション引数 <bucketing-option> データタイプ: bins | minspan | span | start-end 説明: 離散化オプション。詳細は、「Bucketing のオプション」を参照してください。 <newfield> データタイプ: <⽂字列> 説明: フィールドの新たな名前。 Bucketing のオプション bins 構⽂: bins=<int> 説明: 離散化に使⽤するビンの最⼤数を設定します。 minspan 構⽂: minspan=<span-length> 説明: データの時間範囲から期間を⾃動推測する、最⼩の期間粒度を指定します。 span 構⽂: span = <log-span> | <span-length> 説明: 時間または対数ベースの期間に基づく期間⻑を使って、各バケツのサイズを設定します。 <start-end> 構⽂: end=<num> | start=<num> 説明: 数値バケツの最⼩/最⼤範囲を設定します。[start, end] の範囲外のデータは破棄されます。 L og-sp a n 構⽂ <log-span> 構⽂: [<num>]log[<num>] 説明: 対数ベースのスパンを設定します。最初の数値は係数です。2 番⽬の数値が底です。最初の数値を指 定する場合は、実数 >= 1.0 および < 底でなければなりません。底を指定する場合、> 1.0 の実数でなけれ ばなりません (厳密に 1 より⼤きい)。 sp a n-length 構⽂ span-length 構⽂: <int>[<timescale>] 説明: 各ビンのスパン。_time フィールドに基づいて離散化または timescale と⼀緒に使⽤した場合、これ は時間範囲として取り扱われます。そうでない場合、これは絶対バケツ⻑になります。 <timescale> 構⽂: <sec> | <min> | <hr> | <day> | <month> | <subseconds> 説明: タイムスケールの単位。_time フィールドに基づいて離散化した場合、デフォルトは秒になります。 <sec> 72 構⽂: 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)、1/100 秒 (cs)、または 1/10 秒 (ds) のタイムスケール 説明 特定のセット内のすべての項⽬が同じ値を持つように field の値を調整することで、フィールド内の連続した数値 を離散型セット (バケツ) に保管します。 注意: bin/bucket コマンドはグラフおよび時間グラフから⾃動的に呼び出されます。また、時間グラフおよびグ ラフが処理できない統計的操作を⾏う場合にのみ必要になります。 例 例 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 関連項⽬ bucket、chart、timechart Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、bin コマンドの使⽤⽅ 法に関する質問と回答をご覧いただけます。 bucket このコマンドは、エイリアスの bin を使って呼び出すことも可能です。 概要 連続した数値を離散集合に配置します。 構⽂ bucket [<bucketing-option>]* <field> [as <newfield>] 必要な引数 <field> データタイプ: <field> 説明: フィールド名を指定します。 オプション引数 <bucketing-option> データタイプ: bins | minspan | span | start-end 説明: 離散化オプション。詳細は、「Bucketing のオプション」を参照してください。 <newfield> データタイプ: <⽂字列> 説明: フィールドの新たな名前。 Bucketing のオプション 73 bins 構⽂: bins=<int> 説明: 離散化に使⽤するビンの最⼤数を設定します。 minspan 構⽂: minspan=<span-length> 説明: データの時間範囲から期間を⾃動推測する、最⼩の期間粒度を指定します。 span 構⽂: span = <log-span> | <span-length> 説明: 時間または対数ベースの期間に基づく期間⻑を使って、各バケツのサイズを設定します。 <start-end> 構⽂: end=<num> | start=<num> 説明: 数値バケツの最⼩/最⼤範囲を設定します。[start, end] の範囲外のデータは破棄されます。 L og-sp a n 構⽂ <log-span> 構⽂: [<num>]log[<num>] 説明: 対数ベースのスパンを設定します。最初の数値は係数です。2 番⽬の数値が底です。最初の数値を指 定する場合は、実数 >= 1.0 および < 底でなければなりません。底を指定する場合、> 1.0 の実数でなけれ ばなりません (厳密に 1 より⼤きい)。 sp a n-length 構⽂ span-length 構⽂: <int>[<timescale>] 説明: 各ビンのスパン。_time フィールドに基づいて離散化または timescale と⼀緒に使⽤した場合、これ は時間範囲として取り扱われます。そうでない場合、これは絶対バケツ⻑になります。 <timescale> 構⽂: <sec> | <min> | <hr> | <day> | <month> | <subseconds> 説明: タイムスケールの単位。_time フィールドに基づいて離散化した場合、デフォルトは秒になります。 <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)、1/100 秒 (cs)、または 1/10 秒 (ds) のタイムスケール 説明 特定のセット内のすべての項⽬が同じ値を持つように field の値を調整することで、フィールド内の連続した数値 を離散型セット (バケツ) に保管します。 注意:バケツはグラフおよび時間グラフから⾃動的に呼び出されます。また、時間グラフおよびグラフが処理でき ない統計的操作を⾏う場合にのみ必要になります。 例 例 1: 各 5 分間の期間の各「host」の平均スループット (thruput) を返します。 ... | bucket _time span=5m | stats avg(thruput) by _time host 例 2: バケツサーチ結果に 10 個のビンを使⽤し、各バケツの raw イベント数を返します。 ... | bucket size bins=10 | stats count(_raw) by size 関連項⽬ bin、chart、timechart 74 Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、bucket コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 bucketdir 概要 フィールド値を上位レベルのグループに置換します (ファイル名をディレクトリで置換するなど)。 構⽂ 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 によって異なります。 説明 到着イベントを取得して、複数のソースをディレクトリにまとめ、ファイル数が多くイベント数が少ないディレク トリを優先して、最⾼ MAXCOUNT 件のイベントを返します。パスを持つフィールドは PATHFIELD (例: source) で、⽂字列は SEP ⽂字で区切られます。デフォルトでは、pathfield=source、sizefield=totalCount、 maxcount=20、countfield=totalCount、sep="/" または "\\" (OS による) になります。 例 例 1: 上位 10 件のソースとディレクトリを取得します ... | top source | bucketdir pathfield=source sizefield=count maxcount=10 関連項⽬ cluster、dedup Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、bucket コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 chart コマンド は、グラフ (縦棒、折れ線、⾯、円グラフなど) での視覚化をサポートする、データ構造内の結果 を返すレポートコマンド です。グラフの X 軸に使⽤するフィールドを指定できます。Splunk の視覚化機能とオ プションについては、『データの視覚化マニュアル』の「視覚化リファレンス」を参照してください。 chart chart、timechart、stats、eventstats、および streamstats コマンドは、統計関数と連係動作します。これらの関数 の詳細については、『サーチリファレンスマニュアル』の「stats、chart、および timechart の関数」を参照して ください。 概要 グラフ化するために、結果を表形式で出⼒します。 構⽂ 75 chart [sep=<string>] [format=<string>] [cont=<bool>] [limit=<int>] [agg=<stats-agg-term>] ( <stats-aggterm> | <sparkline-agg-term> | <eval-expression>...)[ by <field> (<bucketing-option> )...[<split-by-clause>] ] | [ over <field> (<bucketing-option>)...(by <split-by-clause>] ] 説明と例が記載されたグラフ関数の⼀覧については、「stats、chart、および timechart の関数」を参照してくだ さい。 必要な引数 aggregator 構⽂: <stats-agg-term> | agg=<stats-agg-term> 説明: 集計⼦または関数を指定します。説明と例が記載された stats 関数の⼀覧については、「stats、 chart、および timechart の関数」を参照してください。 sparkline-agg-term 構⽂: <sparkline-agg> [AS <wc-field>] 説明: スパークライン指定⼦。必要に応じて、結果名を新たなフィールドに変更します。 eval-expression 構⽂: <eval-math-exp> | <eval-concat-exp> | <eval-compare-exp> | <eval-bool-exp> | <eval-functioncall> 説明: 宛先フィールドの値を表す、リテラル、フィールド、演算⼦、および関数の組み合わせ。詳細は、 「eval の関数」を参照してください。これらの評価が正常に機能するためには、操作の種類に応じて有効な 値を使⽤する必要があります。たとえば、追加の例外処理では、値が数値でないと算術操作で有効な結果を 得ることはできません。また、Splunk では 2 つのオペランドが両⽅とも⽂字列の場合、それを連結するこ とができます。「.」が存在する値を連結する場合は、実際の種類に関係なく両⽅の値が⽂字列として処理さ れます。 オプション引数 bucketing-option 構⽂: bins | span | <start-end> 説明: 離散化オプション。bucketing-option を指定しない場合、timechart のデフォルトは bins=300 になり ます。この場合、300 未満の⼀意のバケツとなる、最⼩のバケツが探されます。bucketing オプションの詳 細は、「bucket コマンドリファレンス」を参照してください。 cont 構⽂: cont=<bool> 説明: 偽 (False) の場合、出⼒内で x 値バケツの⾮連続シーケンスが隣接して表⽰されるように、X 軸を再 描画します。真 (True) の場合 (デフォルト)、値がないバケツはカウントが 0 または NULL のフィールドと して表⽰されます。 format 構⽂: format=<string> 説明: 複数のデータシリーズと split-by 句が⼀緒に使⽤されている場合に、出⼒フィールド名の構築に⽤い られます。format は sep に優先し、stats 集計⼦および関数 ($AGG$) および split-by フィールドの値 ($VALUE$) を使って、パラメータ化した式を指定することができます。 limit 構⽂: limit=<int> 説明: シリーズフィルタリングの限度を指定します。limit=0 の場合、フィルタリングされません。 single-agg 構⽂: count | <stats-func>(<field>) 説明: 単⼀の集計を単⼀のフィールドに適⽤します (評価したフィールドも可能)。ワイルドカードは使⽤で きません。イベントにまとめて適⽤する特別集計⼦「count」を使⽤する場合を除き、フィールドを指定する 必要があります。 sep 構⽂: sep=<string> 説明: 複数のデータシリーズと split-by 句が⼀緒に使⽤されている場合に、出⼒フィールド名の構築に⽤い られます。これは、format に $AGG$<sep>$VALUE$ を設定したのと同等の意味を持ちます。 split-by-clause 構⽂: <field> (<tc-option>)* [<where-clause>] 説明: 分割対象フィールドを指定します。フィールドが数値の場合、デフォルトの離散化が適⽤されます。 離散化は、tc-option で定義されます。 Stats 関数 stats-agg-term 構⽂: <stats-func>( <evaled-field> | <wc-field> ) [AS <wc-field>] 説明: 必要に応じて新しいフィールド名に変更される統計指定⼦。指定⼦には、フィールドに aggregation 関数を適⽤、または⼀連のフィールドセット、または任意の eval 式に aggregation 関数を適⽤したものを 利⽤できます。 stats-function 構⽂: avg() | c() | count() | dc() | distinct_count() | earliest() | estdc() | estdc_error() | exactperc<int>() | first() | last() | latest() | list() | max() | median() | min() | mode() | p<in>() | perc<int>() | range() | stdev() | stdevp() | sum() | sumsq() | upperperc<int>() | values() | var() | varp() 説明: stats コマンドと⼀緒に利⽤される関数。stats コマンドの起動時に、複数の関数を使⽤できます が、by clause は 1 つのみ利⽤できます。説明と例が記載された stats 関数の⼀覧については、「stats、 76 chart、および timechart の関数」を参照してください。 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() 説明: スパークラインの値の⽣成に⽤いられる集計関数。各スパークラインの値は、特定の時間バケツに該 当するイベントにこの集計を適⽤することにより⽣成されます。 Bucketing のオプション bins 構⽂: bins=<int> 説明: 離散化に使⽤するビンの最⼤数を設定します。 span 構⽂: span=<log-span> | span=<span-length> 説明: 時間または対数ベースの期間に基づく期間⻑を使って、各バケツのサイズを設定します。 <start-end> 構⽂: end=<num> | start=<num> 説明: 数値バケツの最⼩/最⼤範囲を設定します。[start, end] の範囲外のデータは破棄されます。 L og-sp a n 構⽂ <log-span> 構⽂: [<num>]log[<num>] 説明: 対数ベースのスパンを設定します。最初の数値は係数です。2 番⽬の数値が底です。最初の数値を指 定する場合は、実数 >= 1.0 および < 底でなければなりません。底を指定する場合、> 1.0 の実数でなけれ ばなりません (厳密に 1 より⼤きい)。 sp a n-length 構⽂ span-length 構⽂: [<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 77 説明: マイクロ秒 (us)、ミリ秒(ms)、1/100 秒 (cs)、または 1/10 秒 (ds) のタイムスケール tc オプション tc-option 構⽂: <bucketing-option> | usenull=<bool> | useother=<bool> | nullstr=<string> | otherstr=<string> 説明: フィールドによる分割処理を制御するオプションです。 usenull 構⽂: usenull=<bool> 説明: split-by フィールドが存在しないイベントに対して、シリーズを作成するかどうかを⽰します。 nullstr 構⽂: nullstr=<string> 説明: usenull が真 (True) の場合、このシリーズには nullstr オプションの値でラベルが付けられます。デ フォルトは NULL です。 useother 構⽂: useother=<bool> 説明: <where-clause> の基準を満たさないためグラフに含まれていないデータシリーズに対して、シリー ズを追加するかどうかを⽰します。 otherstr ⽂字列: otherstr=<string> 説明: useother が真 (True) の場合、このシリーズには otherstr オプションの値でラベルが付けられます。 デフォルトは OTHER です。 where 句 where clause 構⽂: <single-agg> <where-comp> 説明: tc-by-clause にフィールドが指定されている場合に、特定のデータシリーズを含めるかどうかの基準 を指定します。⼀般的にこのオプションは、シリーズ内の質量分布を選択するのではなく、スパイクを選択 するために⽤いられます。デフォルトでは、濃度曲線下⾯積別上位 10 件のシリーズを探します。sum を max に変更して、スパイクが⾼い上位 10 件のシリーズを探すこともできます。これに、where コマンドと の関係はありません。 <where-comp> 構⽂: <wherein-comp> | <wherethresh-comp> 説明: where 句の基準です。 <wherein-comp> 構⽂: (in|notin) (top|bottom)<int> 説明: 集計したシリーズ値を、上位/下位項⽬でグループ化するための基準です。 <wherethresh-comp> 構⽂: ( < | > ) <num> 説明: 集計したシリーズ値が、⼀定の閾値より⼤きいまたは⼩さい必要があることを指定する基準です。 説明 グラフの作成に適した表形式のデータ出⼒を作成します。X 軸変数は by field により指定され、必要に応じて離 散化されます。グラフ化されたフィールドは、必要に応じて数量に変換されます。 timechart はX 軸として _time を使⽤するグラフを⽣成するのに対して、chart は、任意のフィールドを X 軸とし たテーブルを⽣成します。また、chart では split-by フィールドを利⽤できます。そのようなフィールドが含まれ ている場合、各列が split-by フィールドの⼀意の値を表すテーブルが出⼒されます。 これは、stats とは対照的です。stats では、各⾏が group-by フィールドの単⼀で⼀意の値の組み合わせを表して います。デフォルトでは、含める列数は 10 に制限されています。ただし、オプションの where 句を指定して、 値を調節することができます。詳細については、「where-clause」を参照してください。 Chart では eval 式を利⽤できます。split-by clause 句を指定しない場合は、名前を変更する必要があります。ま た、over キーワードの後、任意の by およびそれ以降の split-by 句の前に、X 軸フィールドを指定することもでき ます。limit および agg オプションにより、シリーズのフィルタリングを簡単に指定することができます。 limit=0 の場合、シリーズのフィルタリングは⾏われません。where 句が明⽰的に指定されている場合、limit お よび agg オプションは無視されます。 split-by フィールドに関する注意 または timechart を使⽤する場合、関数内に指定したフィールドを split-by フィールドとして使⽤すること はできません。たとえば、以下のコマンドを実⾏することはできません。 chart ... | chart sum(A) by A span=log2 ただし、eval 式を使ってこの問題に対処することができます。以下に例を⽰します。 ... | eval A1=A | chart sum(A) by A1 span=log2 例 78 例 1 この例では、サーチチュートリアルのサンプルデータセットを使⽤していますが、Apache Web アクセスログ 形式の任意のデータを利⽤できます。サーチチュートリアルのこのトピック からデータ セットをダウンロー ドした後、指⽰に従って Splunk にアップロードしてください。 各 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 アクセスイベントをカウントしています。次 に、これらの結果を表すフィールド名を「GET」に変更しています (「AS」がこの処理を担当)。次に 2 番⽬の句 では、POST イベントに対して同様の処理を⾏います。次に両⽅のタイプのイベント数が、host フィールドが⽰す Web サーバー別に分割されます。 これによって、以下のテーブルが返されます。 レポートを縦棒グラフとして書式設定するには、[視覚エフェクト] タブをクリックします。 このグラフには、各イベントタイプ (GET と POST) のイベント数合計が、host の値に基づいて表⽰されます。 GET および POST イベントの値範囲が異なっているため、Y 軸には対数スケールが使⽤されています。 例 2 この例は、サーチチュートリアルのサンプルデータセットを使⽤しています。サーチチュートリアルのこのト ピック からデータ セットをダウンロードした後、指⽰に従って Splunk にアップロードしてください。次 に、時間範囲に [全時間] を指定してこのサーチを実⾏します。 期間 (秒) に基づいてトランザクション数を表⽰するグラフを作成します。 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) のビンにバケツ化して います。これによって、以下のテーブルが作成されます。 79 レポートを縦棒グラフとして書式設定するには、[視覚エフェクト] タブをクリックします。 予想通り、⼤半のトランザクションは 0〜2 秒間で完了しています。ここでは、次に⼤きなトランザクション数の スパンは、256〜512 秒 (約 4〜8 分) となっています。(ただし、この例ではデータの⽣成⽅法が原因で、少し極 端な値となっています。) 例 3 この例は、サーチチュートリアルのサンプルデータセットを使⽤しています。サーチチュートリアルのこのト ピック からデータ セットをダウンロードした後、指⽰に従って Splunk にアップロードしてください。次 に、時間範囲に [全時間] を指定してこのサーチを実⾏します。 トランザクションの期間に基づいて、トランザクション内の平均イベント数を表⽰するグラフを作成します。 sourcetype=access_* status=200 action=purchase | transaction clientip maxspan=30m | chart avg(eventcount) by duration span=log2 この例は、例 2 で定義したのと同じトランザクションを使⽤します。transaction コマンドは、単⼀のトランザク ション内のイベント数を表す新たなフィールド eventcount も作成します。 次にトランザクションはパイプ⽂字で chart コマンドに渡され、avg() 関数を使って各期間の平均イベント数が算 出されます。期間は秒単位で、多くの値が存在していると考えられるため、このサーチでは span 引数を使って期 間を log2 (span=log2) のビンにバケツ化しています。これによって、以下のテーブルが作成されます。 80 レポートを円グラフとして書式設定するには、[視覚エフェクト] タブをクリックします。 円グラフの各くさび形 (ウェッジ) は、期間に対応するトランザクション内の平均イベント数を表しています。円 グラフの作成後、各セクション上にマウスカーソルを移動することで、それらの値を参照できます (Splunk Web で)。 例 4 この例は、サーチチュートリアルのサンプルデータセットを使⽤しています。サーチチュートリアルのこのト ピック からデータ セットをダウンロードした後、指⽰に従って Splunk にアップロードしてください。次 に、時間範囲に [その他] > [昨⽇] を指定してサーチを実⾏します。 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 引数を使って値を持たないフィールドを除外しています。 これによって、以下のテーブルが作成されます。 81 レポートを折れ線グラフとして書式設定するには、[視覚エフェクト] タブをクリックします。 各折れ線グラフは、Buttercup Games オンラインストアで販売された各商品のタイプを表しています。各折れ線 の⾼さは、その時間帯に商品を購⼊した⼀意の⼈々の数を表しています。⼀般的に、オンラインショップでもっと も⼈気の商品は、戦略 (Strategy) ゲームのようです。 レポートを、その⽇の各時間の購⼊数合計を表すスタック縦棒グラフとして書式設定することができます。 例 5 この例では、USGS Earthquakes Web サイトからダウンロードした最近の地震データを使⽤しています。 データはカンマ区切り形式の ASCII テキストファイルで、記録されている各地震のマグニチュード (mag)、座 標 (latitude、longitude)、地域 (place) が含まれています。 最新の CSV ファイルを USGS Earthquake Feeds からダウンロードして、それを Splunk への⼊⼒として 追加できます。 カリフォルニア州周辺での地震発⽣回数およびそのマグニチュードを表すグラフを作成します。 source=usgs place=*California* | chart count over mag by place useother=f このサーチは、カリフォルニア地域で発⽣した地震数をカウントします。次にこの値が、マグニチュードに基づい て各 place に分割されます。place 値は数値ではないため、useother=f 引数を使って⼀致しないイベントを除外して います。 これによって、以下のテーブルが作成されます。 82 レポートをグラフとして表⽰するには、[視覚エフェクト] タブをクリックします。 その他の例 例 1: foo の各値の max(delay) を返します。 ... | chart max(delay) over foo 例 2: bar の値による foo 分割の各値の max(delay) を返します。 ... | chart max(delay) over foo by bar 例 3: ⼀意の各ホスト (host) ユーザー (user) のペアに対して、最⼤遅延 (delay) に対する平均サイズ (size) の ⽐率を返します。 ... | chart eval(avg(size)/max(delay)) AS ratio by host user 例 4: サイズ (size) による最⼤遅延 (delay) を返します。ここで「size」は、最⼤ 10 個の同じサイズのバケツに 分類されます。 ... | chart max(delay) by size bins=10 例 5: ⼀意の各ホスト (host) に対して、平均サイズ (size) を返します。 ... | chart avg(size) by host 例 6: イベント数を⽇付と時間でグループ化して返します。span を使って 7 ⽇間および 半⽇単位にグループ化 します。span は、コマンド直前のフィールドに適⽤されます。 ... | chart count by date_mday span=3 date_hour span=12 関連項⽬ timechart、bucket、sichart Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、chart コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 cluster コマンドを使って、データの詳細を学習し、データ内によく登場するイベントや希にしか登場しないイベ ントを探すことができます。たとえば、IT 上の問題を調査しているけれども何を探したら良いのか分からないよ cluster 83 うな場合は、cluster コマンドを使って異常なイベントを検索します。この場合、異常なイベントとは⼤きな集団 にグループ化されていないイベント、またはわずかなイベントしか含まない集団です。また、エラーを探している 場合は、cluster コマンドを使っておよそどの位の種類のエラーが存在しているか、またデータ内で多く⾒られる エラータイプを確認します。 概要 類似イベントをクラスタ化します。 構⽂ cluster [slc-option]* オプション引数 slc-option 構⽂: 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 で、この場合、サーチヘッドでクラス タリングが⾏われる前に、各インデクサーが各⾃のイベントをクラスタ化します。 countfield 構⽂: countfield=<field> 説明: showcount=true が真 (True) の場合に、クラスタサイズを書き込むフィールド名。クラスタサイズは、 クラスタ内のイベント数です。デフォルトは cluster_count です。 labelfield 構⽂: labelfield=<field> 説明: クラスタ数を書き込むフィールド名。Splunk は各クラスタをカウントして、イベントをクラスタに グループ化する際にそれぞれにラベルを設定します。デフォルトは cluster_label です。 field 構⽂: field=<field> 説明: 各イベント内の分析対象フィールド名。デフォルトは _raw です。 labelonly 説明: labelonly=<bool> 構⽂: 到着したイベントを保持し、単純に各イベントにクラスタフィールドを追加するか (labelonly=t)、 またはクラスタフィールドのみを新しいイベントとして出⼒するか (labelonly=f) を指定します。デフォル トは false です。 match 構⽂: match=(termlist | termset | ngramset) 説明: イベント間の類似度を判断するために使⽤する⼿段を指定します。termlistは、フィールドを単語に 分割し、同じ⽤語順序を必要とします。termsetは、順序付けられない⽤語セットを受け付けま す。ngramsetは、trigram (3⽂字のサブ⽂字列) のセットを⽐較します。ngramsetは、フィールド値が⼤きい場 合に⼤幅に遅くなり、punct のような短い⾮テキストフィールドに適しています。デフォルトは termlist で す。 説明 コマンドは、相互の類似度に基づいてイベントをグループ化します。別のフィールドを指定しない限 り、cluster は _raw フィールドの内容に基づいてイベントをグループ化します。デフォルトのグループ化⼿法で は、イベントを⽤語 (match=termlist) に分割し、イベント間のベクトルを算出します。どのイベントを⼀緒にグ ループ化するかをより際だたせる場合は、t に⾼い閾値を設定してください。 cluster cluster コマンドの結果は、各イベントに 2 つの新しいフィールドを追加します。countfield および labelfield パ ラメータを使ってこれらのフィールド名を指定することができます。デフォルトは、cluster_count および cluster_label になります。cluster_count の値は、クラスタの⼀部となるイベント数、またはクラスタサイズになり ます。クラスタ内の各イベントには、所属するクラスタの cluster_label 値が割り当てられます。たとえば、サー チが 10 件のクラスタを返す場合、クラスタには 1〜10 のラベルが付けられます。 84 例 例 1 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 のすべてのログをクラスタ化して返します。次に各クラスタ内のイベント 数で、クラスタをソートします。 例 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 コマンドを使って、データの概要を確認します。⼤量のデータがある場合は、⼩さな時間範囲 (15 分や 1 時間など) に対して以下のサーチを実⾏するか、またはサーチをソースタイプやインデックスに制限します。 cluster ... | 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 Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、cluster コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 cofilter 概要 85 field1 および field2 の値が⼀緒に発⽣している回数を探します 構⽂ cofilter <field1> <field2> オプション引数 field1 構⽂: <field> 説明: フィールド名。 field2 構⽂: <field> 説明: フィールド名。 説明 このコマンドで、field1 の値は「users」、field2 の値は「items」と考えています。このコマンドの⽬標は、各 項⽬のペアに対して、どれだけのユーザーが存在しているかを算出することにあります。 例 例 1: まずユーザーフィールドを指定して、次に項⽬フィールドを指定する必要があります。 ... | cofilter field1 field2 関連項⽬ associate、correlate Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、cofilter コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 collect 概要 サーチ結果をサマリーインデックスに保管します。 構⽂ collect index [arg-options]* 必要な引数 index 構⽂: index=<string> 説明: Splunk がイベントを追加するインデックス名。イベントを追加するインデックスは存在していなけ ればいなければなりません。インデックスは⾃動的には作成されません。 オプション引数 arg-options 構⽂: addtime=<bool> | file=<string> | spool=<bool> | marker=<string> | testmode=<bool> | run-inpreview=<bool> 説明: collect コマンドのオプション引数。 Collect オプション addtime 構⽂: addtime=<bool> 説明: 収集するサーチ結果に _raw フィールド (stats、chart、timechart の結果など) がない場合に、各イベ ントの先頭に時間フィールドを追加するかどうかを指定します。偽 (False) を設定すると、フィールドのサ マリー⾏への任意の登場順序に対して、汎⽤データ検出が使⽤されます。真 (True) を指定すると、サーチ 時間範囲 info_min_time (sistats が追加) または _time が使⽤されます。Splunk は、最初に⾒つかったフィー ルドに基づいて、時間フィールドを追加します:。info_min_time, _time, now()。デフォルトは真 (True) で す。 file 構⽂: file=<string> 説明: イベントの書き込み先ファイル名。省略可、デフォルトは「<乱数>_events.stash」です。ファイル 名内にプレースホルダとして $timestamp$、$random$ を使⽤できます。これらのプレースホルダは、そ れぞれタイムスタンプ、および乱数に置換されます。 データがメインインデックスに追加されるのではない場合、「index=」と⼀緒に使⽤する際には、 86 ファイル名の最後に「.stash」を追加する必要があります。 marker 構⽂: marker=<string> 説明: 各イベントに追加する⽂字列で、通常はキーと値のペアになります。省略可、デフォルトは空です。 run-in-preview 構⽂: run-in-preview=<bool> 説明: プレビュー⽣成時に、collect コマンドを有効にするかどうかを指定します。⼀般的には、サマリー インデックスにプレビュー結果を挿⼊しません (run-in-preview=false)。サーチの⼀環としてカスタムサー チコマンドが使⽤されている場合など、⼀部の事例では、このオプションを有効にして正確なサマリーイン デックス可能プレビューが⽣成されるように設定することもできます。デフォルトは偽 (false) です。 spool 構⽂: spool=<bool> 説明: 真 (True) を設定すると (デフォルト)、サマリーインデックスファイルが Splunk のスプールディレ クトリに書き込まれ、そこで⾃動的にインデックスが作成されます。偽 (False) を設定すると、ファイルは $SPLUNK_HOME/var/run/splunk に書き込まれます。このファイルは、何らかの形でさらに⾃動化や管 理作業が⾏われない限り、この場所に無期限に保持されます。 testmode 構⽂: testmode=<bool> 説明: テストモードとリアルモードを切り替えます。テストモードでは、結果は新しいインデックスには書 き込まれません。ただし、サーチ結果は、まるでインデックスに送信されたかのように表⽰が変更されま す。(デフォルトは false) 説明 サーチ結果を指定したインデックスに追加します。背後では、名前の形式が 無作為の数字_events.stash のファイル にイベントが書き込まれます (Splunk が新しいイベントを監視しているディレクトリ内で上書きされない限り)。 イベントに _raw フィールドが含まれている場合は、このフィールドが保存されます。イベントに _raw フィールド がない場合は、すべてのフィールドをキー=値 ペアのカンマ区切りリストに連結したフィールドが作成されます。 collect コマンドも、全時間リアルタイムサーチに利⽤することができます。 タイムスタンプを持たないイベントに collect コマンドを適⽤した場合、サーチ範囲のもっとも早い (または最⼩ の) 時間を使ってすべてのイベントの時間が指定されます。たとえば、過去 4 時間に対して collect を使⽤する場 合 (範囲:-4h to +0h)、サーチ実⾏時の 4 時間前のタイムスタンプが、タイムスタンプを持たないすべてのイベ ントに割り当てられます。 全時間サーチで collect を使⽤し、イベントにタイムスタンプがない場合、現在のシステム時刻がタイムスタンプ として使⽤されます。 タイムスタンプを持たないデータのサマリーインデックス作成の詳細は、『ナレッジ管理』マニュアルの「サマ リーインデックスを使ったレポート効率の向上」を参照してください。 例 例 1: download イベントを、インデックス「downloadcount」に保管します。 eventtypetag="download" | collect index=downloadcount 関連項⽬ overlap、sichart、sirare、sistats、sitop、sitimechart、tscollect Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、collect コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 concurrency 概要 期間 (duration) フィールドに基づいて、各イベントの開始時刻の同時 (concurrent) イベント数を探します。 構⽂ concurrency duration=<field> [start=<field>] [output=<field>] 必要な引数 duration 構⽂: duration=<field> 説明: 期間を表すフィールド。このフィールドは、start フィールドと同じ単位の数値でなければなりませ ん。たとえば、トランザクション・コマンドで⽣成された duration フィールドは「秒」で (例 1 を参照)、 単位が同じ秒である _time のデフォルトと⼀緒に利⽤することができます。 87 オプション引数 start 構⽂: start=<field> 説明: 開始時間を表すフィールド。デフォルトは、_time です。 output 構⽂: output=<field> 説明: 結果となる同時イベント数を書き込むフィールド。デフォルトは「concurrency」です。 説明 concurrency は、各イベントの開始とオーバーラップする期間があるイベント数を測定します。または、特定の 各イベントが開始された時間内に処理中であった項⽬数の合計を表します。 つまり、このコマンドは、合計期間中にオーバーラップする特定のイベント数合計を測定するのではありません。 イベント X は、X.start が Y.start と (Y.start + Y.duration) の間にある場合にイベント Y と同時発⽣になりま す。 イベントにイベント完了を表す時間、および完了前の時間を表す期間がある場合、次のように concurrency コマ ンドの前で開始時刻から期間を減算する必要があります: ... |eval new_start = start - duration | concurrency start=new_start duration=duration 制限事項 オーバーラップする項⽬の数量については、制限事項があります。 追跡する最⼤同時発⽣が limits.conf の [concurrency] スタンザにある max_count を超えた場合、UI/サーチ出 ⼒で警告が⽣成され値が固定されます。その結果、値が不正確になる可能性があります。 この制限のデフォルト 値は 10000000 です。 例 例 1 この例は、チュートリアルのサンプルデータセットを使⽤しています。[this topic in the tutorial] から データ セットをダウンロードした後、指⽰に従って Splunk にアップロードしてください。次に、時間範囲に [全時間] を指定してこのサーチを実⾏します。 トランザクションの期間またはスパンを使って、同時に発⽣した他のトランザクション数をカウントします。 sourcetype=access_* | transaction JSESSIONID clientip startswith="view" endswith="purchase" | concurrency duration=duration | eval duration=tostring(duration,"duration") この例では、同じ値の JSESSIONID および clientip を持つイベントをトランザクションにグループ化し、⽂字列 「view」を含むイベントをトランザクションの開始イベント、⽂字列「purchase」を含むイベントをトランザク ションの最後のイベントとして定義します。 次にトランザクションは、パイプ⽂字で concurrency コマンドに渡されます。このコマンドは、トランザクション のタイムスタンプと duration に基づいて、同時に発⽣したイベント数をカウントします。 このサーチは、eval コマンドと HH:MM:SS に変換します。 tostring() 関数を使って、duration フィールドの値をより分かりやすい形式 例 2 88 この例は、チュートリアルのサンプルデータセットを使⽤しています。[this topic in the tutorial] から データ セットをダウンロードした後、指⽰に従って Splunk にアップロードしてください。次に、時間範囲に [その他] > [昨⽇] を指定してサーチを実⾏します。 同時に発⽣した個別の購⼊数をカウントするために、各購⼊間の時間を使⽤します。 sourcetype=access_* action=purchase | delta _time AS timeDelta p=1 | eval timeDelta=abs(timeDelta) | concurrency duration=timeDelta この例では、delta コマンドと _time フィールドを使って、ある購⼊イベント (action=purchase) とその直前の購⼊ イベント間の時間を算出しています。サーチは、この変更を timeDelta として名前を変更します。 ⼀部の の値は負です。負の値では concurrency コマンドは機能しないため、eval コマンドを使って をその絶対値 (abs(timeDelta)) に再定義します。この timeDelta が同時イベントを算出するための として使⽤されます。 timeDelta timeDelta duration 例 3 この例は、チュートリアルのサンプルデータセットを使⽤しています。[this topic in the tutorial] から データ セットをダウンロードした後、指⽰に従って Splunk にアップロードしてください。次に、時間範囲に [その他] > [昨⽇] を指定してサーチを実⾏します。 連続する各トランザクションの時間を使って、同時に発⽣したトランザクション数を算出します。 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」を含むイベントをトランザク ションの最後のイベントとして定義します。 トランザクションはパイプ⽂字で delta コマンドに渡されます。このコマンドは、_time フィールドを使って、あ るトランザクションとその直前のトランザクション間の時間を算出します。サーチは、この変更を timeDelta とし て名前を変更します。 ⼀部の の値は負です。負の値では concurrency コマンドは機能しないため、eval コマンドを使って をその絶対値 (abs(timeDelta)) に再定義します。この timeDelta が同時トランザクションを算出するため の duration として使⽤されます。 timeDelta timeDelta 例 4 89 各 HTTP リクエストの開始時にブラウザから splunkd にアクセスしている、オーバーラップする HTTP リクエ スト数を判断します。 これは、記録されているメッセージのタイムスタンプが、リクエストが来た時点の時間で、spent フィールドがリ クエストの処理に費やされた時間 (ミリ秒) であることを前提にしています。この作業を⾏うには、admin ユー ザーまたは _internal インデックスにアクセスできるロールを持つユーザーである必要があります。 index=_internal sourcetype=splunkd_ui_access | eval spent_in_seconds = spent / 1000 | concurrency duration=spent_in_seconds その他の例 例 1: 各イベントに対する同時イベント数を算出して、それを foo フィールドに出⼒します。 ... | concurrency duration=total_time output=foo 例 2: et フィールドを開始時刻、length を期間として、同時イベント数を算出します。 ... | concurrency duration=length start=et 関連項⽬ timechart Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、concurrency コマンド の使⽤⽅法に関する質問と回答をご覧いただけます。 contingency 統計学で分割表は、複数の変数 (通常はカテゴリ) 間の関係を記録、分析するために⽤いられます。分割表に基づ いて、ファイ係数やクラメールの V などの、各種関連や⾮依存性などを算出できます。 コマンドを使って分割表を作成することができます (この場合は、データ内の 2 つのフィールドの値の 共起相関関係マトリックス)。このマトリックス内の各セルは、両⽅のクロス表フィールド値が存在しているイベ ント数を表⽰します。つまり、この表の最初の⾏と列は、2 つのフィールドの値で構成されています。表内の各セ ルには、その⾏と列の組み合わせとなるフィールドの 2 つの値を含むイベントカウントを表す数字が含まれてい ます。 contingency 2 つのフィールド間の関係またはパターンが存在している場合は、テーブルの情報を分析して簡単にそれを特定で きます。たとえば、⾏間で列値が⼤幅に異なっている場合 (またはその反対)、2 つのフィールド間には偶発性が存 在しています (独⽴していない)。偶発性がない場合、2 つのフィールドは独⽴しています。 概要 2 つのフィールドの分割表を作成します。 構⽂ contingency [<contingency-option>]* <field> <field> 必要な引数 <field> 構⽂: <field> 説明: 任意のフィールド、ワイルドカードなし。 オプション引数 contingency-option 構⽂: <maxopts> | <mincover> | <usetotal> | <totalstr> 説明: 分割表のオプション Contingency のオプション maxopts 構⽂: maxrows=<int> | maxcols=<int> 説明: 表⽰する最⼤⾏/列数。フィールドの⼀意の値数がこの最⼤値を超えた場合は、もっとも少ない値が 無視されます。0 は、⾏数/列数の制限が最⼤値であることを表します。この制限値は limits.conf の [ctable] スタンザにある maxvalues で表されます。デフォルトは、maxrows=maxvals および maxcols=maxvals です。 mincover 構⽂: mincolcover=<num> | minrowcover=<num> 説明: 出⼒テーブルに表⽰する列または⾏あたりの値の割合 (パーセント) を指定します。テーブルの作成 時には、各⾏または列に対する合計値数と表⽰する値数の⽐率がこの値になるために⼗分な数の⾏または列 が含まれます。ただし、これらの値に達した場合は、最⼤⾏数/列数が優先されます。デフォルト 90 は、mincolcover=1.0 および minrowcover=1.0 です。 usetotal 構⽂: usetotal=<bool> 説明: ⾏合計、列合計、全合計を追加するかどうかを指定します。デフォルトは、usetotal=true です。 totalstr 構⽂: totalstr=<field> 説明: 合計⾏/列のフィールド名デフォルトは、totalstr=TOTAL です。 説明 このコマンドは、2 つのフィールドの分割表を作成します。多くの値を持つフィールドがある場合、maxrows およ び maxcols パラメータを使って、⾏/列数を制限することができます。デフォルトでは、分割表に⾏合計、列合 計、および表内に記載されているイベントカウントの総計が表⽰されます。 空⽂字列 ("") の値は、テーブル内では EMPTY_STR として表されます。 制限事項 maxrows または maxcols の値にはデフォルトで制限があります。フィールドで値が 1000 個を超える場合、使⽤ されません。 例 例 1 log_level と component の値間に関係が存在するかどうかを確認するために、分割表を作成します。 index=_internal | contingency log_level component maxcols=5 これらの結果により、Splunk インスタンスの問題の原因となっているコンポーネントを⼀⽬で把握することがで きます。component フィールドには多数の値が存在しているため (>50)、この例では maxcols を使って 5 件の値の みを表⽰しています。 例 2 分割表を作成して、使⽤プラットフォームに基づくユーザーによるインストーラのダウンロードパターンを確認し ます。 host="download"| contingency name platform これはかなり直接的なやり⽅です。⼀般的には、あるプラットフォームを使⽤しているユーザーが、別のプラット フォーム⽤のインストーラをダウンロードすることはありません。ここで、contingency コマンドは、これらの特 定のフィールドが独⽴していないことを単純に確認しています。たとえば、多くの Windows ユーザーが OSX イ ンストーラをダウンロードしていることがこのグラフに表されている場合は、Web サイトのダウンロードリソー スが正しいかどうかを確認する必要があるでしょう。 例 3 この例では、USGS Earthquakes Web サイトからダウンロードした最近の地震データを使⽤しています。 データはカンマ区切り形式の ASCII テキストファイルで、記録されている各地震のマグニチュード (mag)、座 標 (latitude、longitude)、地域 (place) が含まれています。 91 最新の CSV ファイルを USGS Earthquake Feeds からダウンロードして、それを Splunk への⼊⼒として 追加できます。 ⼀般的に深度 70km 未満で発⽣した地震は、浅発 地震、70〜300km の震源域で発⽣した地震は深発 地震とし て分類されます。沈み込み帯では、より深い所で深発 地震が発⽣することもあります (300〜700 km)。 分割表を作成して、最近の地震のマグニチュードと深度間の関係を確認します。 index=recentquakes | contingency mag depth | sort mag このサーチはとても単純です。ただし、Magnitude および Depth フィールドの値の範囲はとても幅広いため、結果は 巨⼤な⾏列となってしまいます。そこで表を構築する前に、フィールドの値のフォーマットを変更します。 source=usgs | 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」 (深) の 3 つに定義し直します。こうすることで、より分かりやすいテーブルが作成されます。 この 2 週間には、多数の地震が発⽣しています。マグニチュードの⼤きな地震は、⼩さな地震と⽐べてより深い 場所で発⽣しているでしょうか?そうではないようです。このテーブルからは、最近の地震の⼤半は、どの範囲の マグニチュードでも浅めの場所で発⽣しています。また、中〜深場で発⽣している地震は⼤幅に少なくなっていま す。このデータセットの場合は、深発地震のマグニチュードはすべて中の範囲になっています。 関連項⽬ associate、correlate Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、contingency コマンド の使⽤⽅法に関する質問と回答をご覧いただけます。 convert convert コマンドは、フィールド値を数値に変換します。代わりに、strftime()、strptime()、tostring() など の、eval コマンドの関数を使⽤することもできます。 概要 フィールド値を数値に変換します。 構⽂ convert [timeformat=string] (<convert-function> [AS <new_fieldname>])... 必要な引数 <convert-function> 構⽂: auto() | ctime() | dur2sec() | memk() | mktime() | mstime() | none() | num() | rmcomma() | rmunit() 説明: 変換⽤の関数。 オプション引数 timeformat 構⽂: timeformat=<string> 説明: 変換した時間フィールドの出⼒形式を指定します。timeformat オプションは、ctime および mktime 関 数が使⽤します。書式設定オプションの⼀覧と説明については、「共通の時間書式設定変数」を参照してく ださい。デフォルトは %m/%d/%Y %H:%M:%S です。このデフォルトは、ロケール設定に準拠していないことに注 92 意してください。 <new_fieldname> 構⽂: <⽂字列> 説明: 関数を新たなフィールドに名前変更します。 Convert の関数 auto() 構⽂: auto(<wc-field>) 説明: 最適な⽅法を使って、フィールドを⾃動的に数字に変換します。既知の変換タイプを使って特定 フィールド内のすべての値を変換できない場合、そのフィールドは放置され変換処理は⾏われません。 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>) 説明: ユーザーが理解できる ASCII 形式の時間⽂字列をエポック時に変換します。変換元時刻の形式を正 しく指定するには、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>) 説明: 値の先頭の数字を探し、後続のテキストを削除します。 説明 フィールドの値を数値に変換します。「AS」を使って名前を変更する場合、元のフィールドはそのまま残されま す。 例 例 1 この例では、sendmail メールサーバーログを使って、sourcetype=sendmail を持つログを参照します。 sendmail ログには 2 種類の期間フィールド delay と xdelay が存在しています。 は、メッセージの配信またはバウンスまでにかかった合計時間です。delay は、「D+HH:MM:SS」とし て表されます。これはそれぞれ、メッセージの配信または拒否を処理するための時間 (HH)、分 (MM)、秒 (SS) を⽰しています。delay が 24 時間を超えた場合は、時間表記の先頭に⽇数とプラス記号 (D+) が追加さ れます。 delay xdelay は、メッセージの最終的な配信までにかかった時間の合計で、「HH:MM:SS」で表されます。 sendmail の delay および xdelay の期間の形式を秒に変更します。 sourcetype=sendmail | convert dur2sec(delay) dur2sec(xdelay) このサーチは、パイプ⽂字ですべての sendmail イベントを 93 convert コマンドに渡し、dur2sec() 関数を使って delay と xdelay フィールドの期間を秒に変換します。 フィールドサイドバー を使ってイベントにフィールドを追加した後の、サーチ結果の表⽰例を以下に⽰します。 イベントリストで、変換したフィールド値と元のフィールド値を⽐較できます。 例 2 この例では、syslog データを使⽤します。 UNIX エポック時を、より分かりやすい形式に変換して、時、分、秒を表⽰します。 sourcetype=syslog | convert timeformat="%H:%M:%S" ctime(_time) AS c_time | table _time, c_time 関数は syslog イベント (sourcetype=syslog) の値 _time を、timeformat に指定されている形式に変換しま す。timeformat="%H:%M:%S" 引数は、Splunk に _time の値を HH:MM:SS 形式に変換するように指⽰していします。 ctime() ここで、table コマンドは、元の られています。 _time の値と、名前が c_time に変更された、変換後の時間を表⽰するために⽤い 関数は、タイムスタンプを⾮数値に変換します。これは、レポート内でイベントリストの視認性を向上す るために役⽴ちます。 ctime() 例 3 この例では、syslog データを使⽤します。 MM:SS.SSS (分、秒、およびミリ秒などの秒未満の単位) 形式の時間を、秒数に変換します。 sourcetype=syslog | convert mstime(_time) AS ms_time | table _time, ms_time mstime() 関数は syslog (sourcetype=syslog) イベントの ここで、table コマンドは、元の られています。 _time _time の値と、名前が の値を、分と秒から秒数に変換します。 ms_time 94 に変更された、変換後の時間を表⽰するために⽤い mstime() 関数は、タイムスタンプを数値に変換します。これは、値を計算に使⽤するような場合に役⽴ちます。 その他の例 例 1: duration フィールドの値から、⽂字列値を削除して数値に変換します。たとえば、「duration="212 sec"」の場合、結果の値は「duration="212"」となります。 ... | convert rmunit(duration) 例 2: sendmail syslog の期間の形式 (D+HH:MM:SS) を秒に変更します。たとえば、「delay="00:10:15"」の 場合、結果の値は「delay="615"」となります。 ... | convert dur2sec(delay) 例 3: virt フィールドのすべてのメモリー値を KB に変換します。 ... | convert memk(virt) 例 4: foo フィールドの値を除いて、各フィールド値を数値に変換します (無視するフィールドの指定には、引数 「none」を使⽤)。 ... | convert auto(*) none(foo) 例 5: 使⽤例 ... | convert dur2sec(xdelay) dur2sec(delay) 例 6: 使⽤例 ... | convert auto(*) 関連項⽬ eval Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、convert コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 correlate コマンドを使って、データ内のフィールドの共起性の概要を確認することができます。結果はマトリッ クス形式で表⽰されます。2 つのフィールドのクロス表が、同じイベント内に存在する 2 つのイベントの時間の 割合 (パーセント) を表すセル値になります。 correlate 結果が固有となるフィールドの名前は RowField フィールドの値で指定されます。それに対して⽐較されるフィー ルドは、他のフィールド名になります。 注意: このコマンドは、⼀連のサーチ結果内のすべてのフィールドにまたがって関係を探します。フローチャー トの値間の関係を分析する場合は、contingency コマンドを使⽤してください。このコマンドは、イベント内の フィールドペアの共起をカウントします。 概要 異なるフィールドの相関関係を算出します。 構⽂ 95 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 インデックス内のすべてのフィールド間の共起性を探します。 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 未満 なのかに基づいて、問題を特定できる可能性があります。 関連項⽬ associate、contingency Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、correlate コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 crawl 概要 ファイルシステムから Splunk に、関連するファイルをクロールします。 構⽂ crawl [ files | network ] [crawl-option]* オプション引数 crawl-option 構⽂: <string>=<string> 説明: crawl.conf の設定に優先します。 説明 96 インデックスを作成する新たなソースの検出をクロールします。デフォルトの crawl 設定は crawl.conf に保存さ れ、crawl 操作は $splunk_home/var/log/splunk/crawl.log に記録されます。⼀般的には、input コマンドと⼀緒 に使⽤されます。クロールオプションの設定を上書きするには、crawl.conf に設定を指定してください。注意: サーチに crawl を追加すると、crawl から⽣成されたデータのみが返されます。「 | crawl」の前に⽣成された データは返されません。 例 例 1: ルートおよびホームディレクトリをクロールして、⾒つかったすべての利⽤可能な⼊⼒を追加します (環境 設定情報を「inputs.conf」に追加します)。 | crawl root="/;/Users/" | input add 例 2: bob のホームディレクトリをクロールします。 | crawl root=/home/bob 例 3: bob のホームディレクトリで⾒つかったすべてのソースを preview インデックスに追加します。 | crawl root=/home/bob | input add index=preview 例 4: クロールでは、crawl.conf に定義されているデフォルト設定が使⽤されます。 | crawl 関連項⽬ input Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、crawl コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 datamodel データモデルは 1 つまたは複数のデータセットに関する、意味的ナレッジのサーチ時マッピングで、階層構造に なっています。データセットに対するさまざまな特殊サーチを作成するために必要な、ドメインナレッジをエン コードします。これらの特殊サーチは、その後 Splunk がピボットユーザー向けの、レポートを⽣成するために⽤ いられます。詳細については、『ナレッジ管理』の「データモデルについて」および「データモデルオブジェクト の設計」を参照してください。 サーチコマンドにより、既存のデータ・モデルおよびそのオブジェクトをサーチ・インターフェイスで サーチすることができます。datamodel コマンドは⽣成サーチで、パイプライン中の最初のコマンドでなければな りません。 datamodel 概要 データモデルまたはデータモデルオブジェクトを調査し、データモデルオブジェクトをサーチします。 構⽂ | datamodel [<data model name>] [<object name>] [<search>] 必要な引数 なし オプション引数 data model name 構⽂: <⽂字列> 説明: サーチ対象データモデル名。データモデルのみを指定した場合、単⼀データモデルの JSON が返さ れます。 object name 構⽂: <⽂字列> 説明: サーチ対象データモデルオブジェクト名。データ・モデル名の後に指定する必要があります。単⼀オ ブジェクトの JSON が返されます。 search 構⽂: <search> 説明: 指定されたデータ・モデルとオブジェクトに関連するサーチを実⾏することを⽰します。詳細は、 「search コマンド」を参照してください。 説明 すべてまたは特定のデータモデルおよびそのオブジェクトの JSON を返すには、datamodel コマンドを使⽤しま 97 す。指定したデータモデルオブジェクトに対してサーチを実⾏することもできます。 例 以下の例は、『データモデルとピボットチュートリアル』のデータを使⽤しています。 例 1: 現在の App コンテキスト内で利⽤できるすべてのデータモデルの JSON を返します。 | datamodel 例 2: モデル ID が「Tutorial」の「Buttercup Games」データモデルの JSON を返します。 | datamodel Tutorial 例 3: 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 status=404 | stats count 関連項⽬ pivot 98 Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、datamodel コマンドの 使⽤⽅法に関する質問と回答をご覧いただけます。 dbinspect Splunk のインデックス は、Splunk データのリポジトリです。Splunk インデックス作成処理、または到着した データをイベント に変換する処理では、raw データ とメタデータ (インデックスファイル )が作成されます。⼀ 連のディレクトリに保管されているファイルは、その経過時間で管理されています。これらのディレクトリは、バ ケツ と呼ばれています。 詳細は、『インデクサーとクラスタの管理』の「インデックス、インデクサー、およびクラスタ」および 「Splunk によるインデックスの保管⽅法」を参照してください。 概要 指定した Splunk インデックス内の、バケツの状態情報を返します。 構⽂ dbinspect [index=<string>]...[<span>|<timeformat>] オプション引数 index 構⽂: index=<string> 説明: 調査するインデックス名を 1 つ指定します。このオプションを繰り返して複数のインデックスを指定 できます。⾮内部インデックスに対しては、「*」などのワイルドカードを使⽤できます。指定しない場合、 dbinspect はデフォルト・インデックス (⼀般的には main) に関するバケツ情報を返します。 <span> Syntax: span=<int>|<int><timescale> 説明: バケツのスパン⻑を指定します。タイムスケール単位 (sec、min、hr、day、month、または subseconds) を使⽤した場合、これは時間範囲として⽤いられます。使⽤しない場合、これは絶対バケツ 「length」になります。 <timeformat> 構⽂: timeformat=<string> 説明: modTime フィールドの時間フォーマットを設定します。デフォルトは です。 timeformat=%m/%d/%Y:%H:%M:%S タイムスケールの単位 これらは、バケツのスパンのタイムスケールを指定するオプションです。 <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)、1/100 秒 (cs)、または 1/10 秒 (ds) のタイムスケール 説明 dbinspect コマンドにバケツのスパンを指定して実⾏した場合、各バケツのスパンのテーブルが返されます。 バケツのスパンを指定せずに 返されます。 dbinspect コマンドを実⾏した場合、指定されたインデックスに関する以下の情報が 99 フィールド名 説明 で構成される⽂字列。ここで、区切り⽂字は波形記号です。 例:summary~2~4491025B-8E6D-48DA-A90E-89AC3CF2CE80。 <index>~<id>~<guId> bucketId endEpoch UNIX エポック時からの秒数で表される、バケツ内の最後のイベントのタイムスタンプ (未来に 向けたバケツの時間境界)。 eventCount バケツ内のイベント数。 hostCount バケツ内の⼀意のホスト数。 guId インデックスを提供するサーバーの guID。これはインデックスレプリケーションに関係してい ます。 id 元のバケツが存在しているインデクサーが⽣成した、バケツのローカル ID 番号。 index サーチに指定されているインデックス名。すべてのインデックスを対象にする場合、index=* と 指定します。また、インデックスフィールドはそれぞれ異なります。 modTime 最後にバケツが変更された時のタイムスタンプ。フォーマットは す。 timeformat フラグで指定しま バケツの場所。バケツ path の命名規則は、インデクサーがクラスタピアとして動作している間 に、バケツがウォームに移⾏されたかどうかによって、わずかに異なっています。 ⾮クラスタバケツの場合: db_<newest_time>_<oldest_time>_<localid> クラスタ化された元のバケツコピーの場合: db_<newest_time>_<oldest_time>_<localid>_<guid> path クラスタ化された複製バケツコピーの場合: rb_<newest_time>_<oldest_time>_<localid>_<guid> 詳細は、『インデクサーとクラスタの管理』の「Splunk によるインデックスの保管⽅法」およ び「基本的なクラスタのアーキテクチャ」を参照してください。 rawSize 各バケツ内の raw データファイルの量 (バイト)。この値は、圧縮およびインデックスファイル の追加を⾏う前の量を表しています。 sizeOnDiskMB 浮動⼩数点数で表される、バケツが使⽤しているディスク・スペース・サイズ (MB)。この値 は、圧縮された raw データファイルとインデックスファイルの量を表しています。 sourceCount バケツ内の⼀意のソース数。 sourceTypeCount バケツ内の⼀意のソースタイプ数。 splunk_server 分散環境でインデックスを提供している Splunk サーバー名。 startEpoch UNIX エポック時からの秒数で表される、バケツ内の最初のイベントのタイムスタンプ (過去に 向けたバケツの時間境界)。 state バケツがウォーム、ホット、またはコールドかどうか。 例 例 1: CLI を使って、グラフを期間 1 ⽇で表⽰します。 myLaptop $ splunk search "| dbinspect index=_internal span=1d" _time hot-3 warm-1 warm-2 --------------------------- ----- ------ -----2013-01-17 00:00:00.000 PST 0 2013-01-17 14:56:39.000 PST 0 2013-02-19 00:00:00.000 PST 2013-02-20 00:00:00.000 PST 0 2 1 1 例 2: local _internal インデックスのデフォルトの dbinspect 出⼒。 | dbinspect index=_internal 100 この画⾯には、出⼒テーブル内のすべての列が表⽰されている訳ではありません。右側にスクロールすると、他の 情報が表⽰されます。 Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、dbinspect コマンドの 使⽤⽅法に関する質問と回答をご覧いただけます。 dedup 概要 選択したフィールドに対して同⼀の値の組み合わせを持つイベントを削除します。 構⽂ dedup [<N>] <field-list> [keepevents=<bool>] [keepempty=<bool>] [consecutive=<bool>] [sortby <sortby-clause>] 必要な引数 <field-list> 構⽂: <string> <string> ... 説明: フィールド名のリスト。 オプション引数 consecutive 構⽂: consecutive=<bool> 説明: 真 (True) の場合、連続して重複した値の組み合わせを持つイベントのみを削除します。デフォルト は偽 (false) です。 keepempty 構⽂: keepempty=<bool> 説明: 真 (True) の場合、1 つまたは複数の選択フィールドが NULL の (存在しない) イベントを保持しま す。デフォルト (false) では、いずれかの選択フィールドが NULL のすべてのイベントが破棄されます。 keepevents 構⽂: keepevents=<bool> 説明: 真 (True) の場合、すべてのイベントを保持しますが、特定の値の組み合わせを持つ最初のイベント より後のイベントから、選択されたフィールドを削除します。デフォルトは偽 (False) です。この場合、そ れぞれ特定の組み合わせを持つ最初のイベント後のイベントが破棄されます。 <N> 構⽂: <int> 説明: dedup では各フィールド値の組み合わせのイベントを 1 つだけ保持する代わりに、各組み合わせの複 数のイベントを保持することができます。N は、各組み合わせに対してほぞするイベント数を⽰します。こ の数字は 0 より⼤きな値でなければなりません。 <sort-by-clause> 構⽂: ( - | + ) <sort-field> [(- | +) <sort_field> ...] 説明: 並べ替えるフィールドのリストと、その並べ替え順序 (各フィールドに対して昇順 ( - ) または降順 ( + )) sort-field のオプション <sort-field> 構⽂: <field> | auto(<field>) | str(<field>) | ip(<field>) | num(<field>) 説明: sort-field ⽤のオプション。 <field> 構⽂: <⽂字列> 説明: ソートするフィールド名。 101 auto 構⽂: auto(<field>) 説明: フィールドの値の⾃動ソート⽅法を指定します。 ip 構⽂: ip(<field>) 説明: フィールドの値を IP アドレスとして解釈します。 num 構⽂: num(<field>) 説明: フィールドの値を数字として処理します。 str 構⽂: str(<field>) 説明: フィールド値を辞書的順序で並べます。 説明 コマンドでは、単⼀フィールドの各値に対して、または複数のフィールド間の値の組み合わせに対して、保 持する重複イベント数を指定できます。dedup が返すイベントは、サーチ順序で最初に⾒つかったイベントで、履 歴サーチの最新のイベント、またはリアルタイム・サーチで最初に到着したイベントになります。N に値を指定 した場合、dedup はそれを、保持する重複値または値の組み合わせを持つイベント量として解釈します。数字を指 定しない場合、最初に登場したイベントのみが保持され、その後の重複はすべて破棄されます。 dedup コマンドでは、フィールド・リストをソートすることもできます。この場合、dedup は指定された sort-by フィールドまたは複数フィールドに基づいて、結果の重複を排除します。他のオプションを使って、イベントを保 持するけれども重複フィールドを削除する、またはフィールドが存在しないイベントを保持することができます。 dedup はフィールド・リスト内のフィールドを持たない各イベントを保持するため、任意のフィールドに 対して aka は NULL 値を持つことになります。 NULL 値も含め、フィールド値の組み合わせに対して N 件のイ ベントを保持する場合は、fillnull を使ってそれらのフィールドに対する⾮ NULL 値を指定します。例: keepempty=true ...|fillnull value="MISSING" field1 field2 | dedup field1 field2 注意: ⼤量のデータに対してサーチを実⾏する場合、_raw フィールドに対して dedup コマンドを実⾏することはお 勧めできません。そうすることにより、Splunk はメモリー内の各イベントのテキストを保持するため、サーチ・ パフォーマンスに影響を与えてしまいます。これは想定されている動作です。これは、濃度が⾼くサイズが⼤きな 任意のフィールドに適⽤されます。 例 例 1: 同じホスト (host) 値を持つ重複する結果を削除します。 ... | dedup host 例 2: 同じソース値を持つ重複する結果を削除して、イベントを「_time」フィールドの昇順に並べ替えます。 ... | dedup source sortby +_time 例 3: 同じソース値を持つ重複する結果を削除して、イベントを「_size」フィールドの降順に並べ替えます。 ... | dedup source sortby -_size 例 4: 同じ「source」値を持つイベントに対しては、最初に発⽣した 3 件を保持して、それ以降のイベントをす べて削除します。 ... | dedup 3 source 例 5: 同じ「source」および 「host」値を持つイベントに対しては、最初に発⽣した 3 件を保持して、それ以降 のイベントをすべて削除します。 ... | dedup 3 source host 関連項⽬ uniq Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、dedup コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 delete 警告: 削除したデータを元に戻すことはできません。データを削除後に取り戻したい場合は、適切なデータソー スを再度インデックス作成する必要があります。 概要 Splunk インデックスからイベントを削除 (取得不能に) します。 102 構⽂ delete 説明 サーチを delete 演算⼦に渡すことにより、そのサーチから返されるすべてのイベントがマークされます。マーク されたイベントは、今後のサーチでは返されません。Splunk を使ってこのデータを参照できるユーザーは存在し ません (管理権限を持つユーザーでも)。現在、delete コマンドを使っても、ディスクスペースは解放されま せん。 注意: リアルタイムサーチ時には delete 演算⼦を実⾏できず、到着するイベントを削除することはできません。 リアルタイムサーチ時に delete の使⽤を試みると、エラーメッセージが表⽰されます。 delete 演算⼦は、「delete_by_keyword」権限 を持つユーザーのみがアクセスできます。Splunk にはデフォル トで、特殊ロール「can_delete」が⽤意されています。このロールがこの権限を保有しています (他は保有してい ない)。デフォルトで、管理者ロールにはこの権限が与えられていません。インデックスデータを削除する際にロ グインする、特別なユーザーを作成しておくことをお勧めします。 delete 演算⼦を使⽤するには、まず削除するイベントを返すサーチを実⾏します。このサーチが削除対象イベン トのみを返し、その他のイベントは返さないことを⼊念に確認してください。これらのデータが⽬的の削除データ だと確認できたら、そのサーチを delete にパイプ⽂字を使って渡します。 注意: delete 演算⼦は、影響するインデックスをウォームするために、ホットバケツを使⽤します。 詳細は、『インデクサーとクラスタの管理』の「Splunk からのインデックスとデータの削除」を参照してくださ い。 コマンドの出⼒は、フィールド splunk_server (インデクサーまたはサーチヘッド名) により削除されたイ ベント数量、インデックス、およびインデックス「__ALL__」による各サーバーのロールアップ・レコードのテー ブルになります。削除されたイベント数量は deleted フィールドにあります。errors フィールドも⽣成されま す。通常このフィールドは 0 になります。 delete 例 例 1: 「insecure」インデックスから、社会保障番号のような⽂字列を含むイベントを削除します。 index=insecure | regex _raw = "\d{3}-\d{2}-\d{4}" | delete 例 2: 「invalid」を含むイベントを「imap」インデックスから削除します。 index=imap invalid | delete Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、delete コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 delta 概要 特定の数値フィールドの値と、最寄りの結果との差異を算出します。 構⽂ delta (field [AS newfield]) [p=int] 必要な引数 field 構⽂: <fieldname> 説明: 分析するフィールド名。 オプション引数 <newfield> 構⽂: <⽂字列> 説明: 出⼒をこのフィールドに書き込みます。デフォルトは delta(field) です。 p 構⽂: p=<int> 説明: 現在の結果の field に対して⽐較する (サーチ順序で) 前の結果数を選択します。p=1 の場合、前の結 果と⽐較します。p=2 の場合、サーチ順序で前にある 2 つの結果内の同じフィールドに対して field を⽐較 します。デフォルトは 1 です。 説明 103 コマンドは field が数値の各イベントに対して、イベントの field 値と前のイベントの field 値の間の差を サーチ順に計算し、その差が newfield に書き込まれます。newfield が指定されていない場合、デフォルトでは delta(field) が使⽤されます。p が指定されていない場合、デフォルトでは p=1 が仮定されます。この場合、直前 の値が使⽤されます。p=2 の場合は、前の値のさらにもう 1 つ前の値が使⽤されます (それ以降も同様)。 delta field が 2 つのいずれかの値内の数値ではない場合、出⼒フィールドは⽣成されません。 注意: delta コマンドは、サーチから返された順序でイベントを処理します。デフォルトでは、履歴サーチから取 得するイベントは時間の逆順で、新しいイベントから古いイベントの順に取得されます。そのため、時間の昇順の 値では、負の差分が表⽰されます。リアルタイム・サーチの場合、イベントは受け取った順番で⽐較されます。⼀ 般的に、delta は任意のコマンド・シーケンスの後に適⽤できます。そのため、⼊⼒順序は保証されません。たと えば、結果を独⽴したフィールドでソートした後、delta コマンドを使⽤した場合、⽣成される値はその特定の順 序内の差分になります。 例 例 1 この例は、チュートリアルのサンプルデータセットを使⽤しています。[this topic in the tutorial] から データ セットをダウンロードした後、指⽰に従って Splunk にアップロードしてください。次に、時間範囲に [その他] > [昨⽇] を指定してサーチを実⾏します。 昨⽇に何か商品を購⼊した上位 10 ⼈の顧客を検索し、それぞれの購⼊商品数と各購⼊者の購⼊数の差を算出しま す。 sourcetype=access_* status=200 action=purchase | top clientip | delta count p=1 ここでは、購⼊イベント (action=purchase) が top コマンドに渡されて、何か商品を購⼊した上位 10 ⼈のユーザー (clientip) が検索されます。各 clientip の count を含むこれらの結果は、delta コマンドに渡されて、あるイベント の count 値とその直前のイベントの count 値の差が計算されます。デフォルトでは、この差分が delta(count) フィールドに保存されます。 これらの結果は、top コマンドによりテーブルとしてフォーマットされます。最初のイベントには、delta(count) 値がないことに注意してください。 例 2 この例では、USGS Earthquakes Web サイトからダウンロードした最近の地震データを使⽤しています。 データはカンマ区切り形式の ASCII テキストファイルで、記録されている各地震のマグニチュード (mag)、座 標 (latitude、longitude)、地域 (place) が含まれています。 最新の CSV ファイルを USGS Earthquake Feeds からダウンロードして、それを Splunk への⼊⼒として 追加できます。 北カリフォルニア (Northern California) の最近の地震発⽣時刻の差を計算します。 source=usgs place=*California* | delta _time AS timeDeltaS p=1 | eval timeDeltaS=abs(timeDeltaS) | eval timeDelta=tostring(timeDeltaS,"duration") この例は、カリフォルニアで発⽣した地震をサーチし、delta コマンドを使って、各地震のタイムスタンプ (_time) とその直前の地震のタイムスタンプの差を算出します。この時間の差分には、timeDeltaS と⾔う名前が付けられま す。 また、この例では eval コマンドと tostring() 関数を使って、認識しやすいように HH:MM:SS 形式に変更しています。 104 timeDeltaS のフォーマットを 例 3 この例は、チュートリアルのサンプルデータセットを使⽤しています。[this topic in the tutorial] から データ セットをダウンロードした後、指⽰に従って Splunk にアップロードしてください。次に、時間範囲に [その他] > [昨⽇] を指定してサーチを実⾏します。 連続するトランザクション間の時間差を計算します。 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 フィールドの値 に対応しています。他にも「addtocart」や「remove」などの値が存在していることもあるでしょう。 トランザクションはパイプ⽂字で delta コマンドに渡されます。このコマンドは、_time フィールドを使って、あ るトランザクションとその直前のトランザクション間の時間を算出します。サーチは、この変更を timeDelta とし て名前を変更します。 この例では、eval コマンドを使⽤して timeDelta を絶対値 (abs(timeDelta)) に定義し直して、tostring() 関数を使っ てそれを把握しやすい⽂字列形式に変換しています。 その他の例 例 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: 現在の count 値と 3 つ前の値の差異を算出して、結果を「delta(count)」に保存します。 ... | delta count p=3 例 3: 「count」が存在する各イベントに対して、count とその前の値の差異を算出して、結果を「countdiff」 に保存します。 ... | delta count AS countdiff 関連項⽬ accum、autoregress、streamstats、trendline Answers 105 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、delta コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 diff 概要 2 つのサーチ結果内のフィールド間の、⾏ごとの⽂字的差異を算出します。 構⽂ diff [position1=int] [position2=int] [attribute=string] [diffheader=bool] [context=bool] [maxlen=int] オプション引数 position1 データタイプ: <int> 説明: ⼊⼒サーチ結果のテーブルで、position2 と⽐較する特定のサーチ結果を選択します。デフォルトは position1=1 で、最初のサーチ結果を表しています。 position2 データタイプ: <int> 説明: ⼊⼒サーチ結果のテーブルで、position2 と⽐較する特定のサーチ結果を選択します。この値は 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> 説明: 2 つのイベントから取得されるデータの最⼤量 (バイト) を指定します。デフォルトは つまり 100KB になります。maxlen=0 と指定すると、制限はありません。 maxlen=100000、 説明 2 つのサーチ結果を⾏ごとに⽐較して、それらの差を返します。⽐較する 2 つのサーチ結果は 2 つの位置 (position) の値 position1 および position2 で指定します。これらのデフォルトは 1 と 2 です (最初の 2 件の結果 を⽐較)。 デフォルトでは、2 つのサーチ結果のテキスト (_raw フィールド) が⽐較されますが、「attribute」を使って他の フィールドを指定して、それと⽐較することもできます。 例 例 1: 最初のサーチ結果と 3 番⽬のサーチ結果の「ip」値を⽐較します。 ... | diff pos1=1 pos2=3 attribute=ip 例 2: 9 番⽬のサーチ結果を 10 番⽬のサーチ結果と⽐較します。 ... | diff position1=9 position2=10 関連項⽬ set Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、diff コマンドの使⽤⽅ 法に関する質問と回答をご覧いただけます。 erex 106 使⽤する正規表現が分からないけれども、取得したイベント内に例の値がある場合は、正規表現フィールド抽出に erex コマンドを使⽤します。 概要 値の例と類似するフィールド値を⾃動抽出します。 構⽂ erex [<field>] examples=<string> [counterexamples=<string>] [fromfield=<field>] [maxtrainers=<int>] 必要な引数 例 構⽂: examples=<string>,... 説明: 必要に応じて引⽤符で囲んだ、情報を抽出して新しいフィールドに保存するための、値の例のカンマ 区切りリスト。引⽤符で囲まない場合、スペースは使⽤できません。 オプション引数 counterexamples 構⽂: counterexamples=<string>,... 説明: 抽出しない情報を表す例値のカンマ区切りリスト。 field 構⽂: <⽂字列> 説明: fromfield から抽出された値を保管する新しいフィールド名。field を指定しない場合、値は抽出され ませんが、結果となる正規表現が⽣成され、Splunk Web の [ジョブ] メニュー下にメッセージが表⽰されま す。その正規表現を rex コマンドで使⽤して、より効率的な抽出を⾏えます。 fromfield 構⽂: fromfield=<field> 説明: 情報の抽出元フィールドとなる既存のフィールド名。このフィールドから情報が抽出されて、新しい フィールドに保存されます。デフォルトは _raw で、この場合イベントまたは結果のメイン・テキストにな ります。 maxtrainers 構⽂: maxtrainers=<int> 説明: 学習する値の最⼤数。1〜1000 でなければなりません。デフォルトは 100 です。 説明 の名前を指定した場合、それに fromfield から抽出された値が保存されます。そうでない場合は、フィールド を抽出するために rex コマンドで使⽤できる正規表現が返されます。 field 注意: examples および counterexample に指定する値は、erex コマンドにパイプで渡される抽出されたイベント内に 存在する必要があります。存在しない場合、コマンドは失敗します。erex が確実に機能するために、まず⽬的のイ ベントを返すサーチを実⾏してください。次に抽出するフィールド値をコピーして、それをerex の example 値とし て使⽤します。 例 例 1: 「7/01」や「7/02」のような値を抽出しますが、「99/2」のようなパターンは抽出しません。抽出した 値は、monthday 属性に保管します。 ... | erex monthday examples="7/01, 07/02" counterexamples="99/2" 例 2: 「7/01」のような値を抽出して、それを monthday 属性に保管します。 ... | erex monthday examples="7/01" 例 3: 潜在的な攻撃者のポートを表⽰します。まず、潜在的な攻撃者をサーチとして、例となるポート値を探し ます。次に、erex を使ってポート (port) フィールドを抽出します。 sourcetype=secure* port "failed password" | erex port examples="port 3351, port 3768" | top port このサーチはサーチに⼀致する上位のポート数を返します。また、[ジョブ] メニュー下にある、⽣成された正規表 現も探します。 107 関連項⽬ extract、kvform、multikv、regex、rex、xmlkv Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、erex コマンドの使⽤⽅ 法に関する質問と回答をご覧いただけます。 eval 概要 式を評価して、結果値をフィールドに保管します。 構⽂ eval <eval-field>=<eval-expression> 必要な引数 eval-field 構⽂: <⽂字列> 説明: 結果となる値の宛先フィールド名。イベント内にフィールド名がすでに存在している場合、eval が値 を上書きします。 eval-expression 構⽂: <⽂字列> 説明: 宛先フィールドの値の位置を判断するために実⾏される、値、変数、演算⼦、および関数の組み合わ せ。 サーチの実⾏前に eval 式の構⽂がチェックされ、無効な式の場合には例外が⽣成されます。 eval ステートメントの結果が、論理値になることは禁⽌されています。指定されたイベントに対して式を正 常に評価できなかった場合、結果フィールドは消去されます。 英数字以外の⽂字を含むフィールド名を式が参照する場合は、それを単⼀引⽤符 で囲む必要があります (例:new=count+'server-1')。 英数字以外の⽂字を含むリテラル⽂字列 を式が参照する場合は、それを⼆重引⽤符 で囲む必要があります (例:new="server-"+host)。 演算⼦ eval を使って実⾏できる基本的な操作を以下の表に⽰します。これらの評価が正常に機能するためには、操作の 種類に応じて有効な値を使⽤する必要があります。たとえば、追加の例外処理では、値が数値でないと算術操作で 有効な結果を得ることはできません。値を連結する際には、値は⽂字列として読み込まれます (値の種類に関係な く)。 タイプ 演算⼦ 算術 + - * / % 連結 . 論理値 AND OR NOT XOR < > <= >= != = == LIKE 数値を⽣成する演算⼦。 + 演算⼦は追加する 2 つの数字、または連結する 2 つの⽂字列を受け付けます。 -、*、/、および % 演算⼦は、それぞれ減算、乗算、除算、係数⽤の 2 つの数字を受け付けます。 ⽂字列を⽣成する演算⼦。 . 演算⼦は、⽂字列と数字の両⽅を連結します。数字は、その⽂字列を表す形で連結されます。 108 論理値を⽣成する演算⼦。 AND、OR、NOT、 XOR 演算⼦は、2 つの論理値のみを受け付けます。 <、>、<=、!=、= および == 演算⼦は、2 つの数字または 2 つの⽂字列を受け付けます。(単⼀の = は、 ⼆重 == の同義語です。) LIKE 演算⼦は、2 つの⽂字列を受け付けます。これは、SQL: string LIKE pattern で使われているよう な、パターン照合です。パターンは、リテラル・テキスト、ワイルドカード (%)、単⼀⽂字と⼀致する _ を サポートしています。たとえば、フィールド LIKE "a%b_" は、a で始まりその後に任意の項⽬が続き、次に b が来て、その後に 1 ⽂字が来る任意の⽂字列に⼀致します。 関数 eval コマンドには、次の関数が含まれています:abs, case, ceil, ceiling, cidrmatch, coalesce, commands, exact, exp, floor, if, ifnull, isbool, isint, isnotnull, isnull, isnum, isstr, len, like, ln, log, lower, ltrim, match, max, md5, min, mvappend, mvcount, mvindex, mvfilter, mvjoin, mvrange, mvzip, now, null, nullif, pi, pow, random, relative_time, replace, round, rtrim, searchmatch, sha1, sha256, sha512, sigfig, spath, split, sqrt, strftime, strptime, substr, time, tonumber, tostring, trim, typeof, upper, urldecode, validate。 各関数の説明と例 については、「eval と where の関数」を参照してください。 説明 eval コマンドは、任意の式の評価を⾏い、数的、⽂字列、および論理操作を実⾏します。eval コマンドには、評 価する式の結果を保管するフィールド名が必要です。この宛先フィールド名が既存のフィールド名と⼀致する場 合、フィールドの値が eval 式の結果に置換されます。 ⾓括弧 { } を利⽤することで、宛先フィールド名として、他のフィールドの値を使⽤することもできます。たとえ ば、aName=counter および aValue=1234 フィールドを持つイベントがある場合、| eval {aName}=aValue を使って counter=1234 を返します。 数字と⽂字列はフィールドに割り当てることができます。論理値は割り当てられないことがあります。ただし、 tostring() を使って論理値や NULL を⽂字列に変換すれば、フィールドに割り当てられることがあります。 計算時、数値は倍精度浮動⼩数点数で、通常の浮動⼩数点数のすべての動作に従います。フィールドに NaN を割 り当てる操作の結果は「nan」になります。正および負のオーバーフローの結果は、「inf」および「-inf」になり ます。0 で除算すると、NULL フィールドになります。 サーチを eval コマンドや関数の引数として使⽤する場合、保存済みサーチ名は使⽤できません。リテラル・サー チ⽂字列またはリテラル・サーチ⽂字列を含むフィールド (index=_audit events から抽出された search フィー ルドなど) を渡す必要があります。 ステートメントを使って、計算済みフィールドを定義することができます。そのためには、props.conf に eval ステートメントを設定します。サーチを実⾏すると、Splunk は背後にあるステートメントを⾃動的に評価して、 サーチ時のフィールド抽出と同じような⽅法でフィールドを作成します。この⽅法を利⽤する場合、サーチ⽂字列 に eval ステートメントを定義する必要はありません。結果となる計算済みフィールドを直接サーチできます。 eval 詳細は、後述する「計算済みフィールド」を参照してください。 例 例 1 この例は、異なる 2 つのソースタイプからのフィールドを融合し、それを使ってイベントのトランザクションを 作成する⽅法を表しています。sourcetype=Aには、number フィールドがあり、sourcetype=B の subscriberNumber フィールドには同じ情報が存在しています。 sourcetype=A OR sourcetype=B | eval phone=coalesce(number,subscriberNumber) | transaction phone maxspan=2m コマンドを使⽤して共通のフィールド phone を追加し 、各イベントが sourcetype=A からなのか、sourcetype=B からなのかを⽰す情報を追加します。coalesce() 関数を使って phone の値を定義しています (number および subscriberNumber の値として)。coalesce() 関数は、最初の NULL ではない (イベント内に存在している) フィール ドの値を取ります。 eval これで、同じ りました。 phone 値を保有している場合、ソースタイプ A または B からのイベントをグループ化できるようにな 例 2 この例では、USGS Earthquakes Web サイトからダウンロードした最近の地震データを使⽤しています。 データはカンマ区切り形式の ASCII テキストファイルで、記録されている各地震のマグニチュード (mag)、座 標 (latitude、longitude)、地域 (place) が含まれています。 最新の CSV ファイルを USGS Earthquake Feeds からダウンロードして、それを Splunk への⼊⼒として 追加できます。 ⼀般的に深度 70km 未満で発⽣した地震は、浅発 地震、70〜300km の震源域で発⽣した地震は深発 地震とし て分類されます。沈み込み帯では、より深い所で深発 地震が発⽣することもあります (300〜700 km)。 109 最近の地震を、その発⽣深度に基づいて分類します。 source=usgs | eval Description=case(depth<=70, "Shallow", depth>70 AND depth<=300, "Mid", depth>300, "Deep") | stats count min(mag) max(mag) by Description コマンドを使って Description フィールドを作成します。このフィールドは、地震の Depth に基づいて、 「Shallow」 (浅)、「Mid」 (中)、または「Deep」 (深) の値を取ります。case() 関数は、各説明に適合する深さ の範囲を指定するために⽤いられています。たとえば、深度が 70 km 未満の場合、その地震は浅発地震として分 類され、Description には Shallow が設定されます。 eval また、このサーチは eval の結果を stats コマンドに渡して、地震数をカウントし、各説明 (Description) にマグ ニチュードの最⼩値と最⼤値を表⽰します。 例 3 この例は、Splunk チュートリアルの「Splunk へのチュートリアルデータの取り込み 」のトピックで説明 されているサンプルデータセットを使⽤することを想定していますが、任意の形式の Apache Web アクセス ログにも対応しています。このトピックの説明に従ってデータセットをダウンロードして、Splunk に取り込 んでください。次に、時間範囲に [その他] > [昨⽇] を指定してサーチを実⾏します。 このサーチでは、IP アドレスを検索し、それが所属するネットワークに応じて分類します。 sourcetype=access_* | eval network=if(cidrmatch("192.0.0.0/16", clientip), "local", "other") この例は、cidrmatch() 関数を使って、clientip フィールド内の IP アドレスをサブネット範囲と⽐較します。この サーチは if() 関数も使⽤して、clientip の値がサブネット範囲内に該当する場合、network に値 local が与えられ ます。それ以外の場合は、network=other になります。 コマンドは、特に結果のフォーマットは⾏いません。単純に eval 式に基づく値を取る新規フィールドを作成 します。このサーチの実⾏後、フィールドサイドバー を使って結果に network フィールドを追加してください。 これで、サーチ結果内で local ネットワークに所属している IP アドレスと、所属していない IP アドレスを識別で きるようになりました。イベントリストの例を以下に⽰します。 eval 結果をフォーマットする別の⽅法として、eval の結果を することができます。(例 1 を参照) table コマンドに渡して、注⽬するフィールドのみを表⽰ 注意: この例は、cidrmatch 関数の単なる使⽤⽅法を表しています。イベントを分類して、それらのイベントを素 早くサーチしたい場合は、イベントタイプを使⽤することをお勧めします。詳細は、『ナレッジ管理マニュアル』 の「イベントタイプについて 」を参照してください。 例 4 この例は、⽣成されたメールデータ (sourcetype=cisco_esa) を使⽤しています。この例の sourcetype=cisco_esa を ご⾃分のデータの sourcetype 値に、そして mailfrom フィールドをご⾃分のメールアドレスフィールド名 (例:To, From, or Cc) に変更すれば、任意のメールデータに対して利⽤できます。 メールアドレスフィールドを使って、ユーザーの名前とドメインを抽出します。 110 sourcetype="cisco_esa" mailfrom=* | eval accountname=split(mailfrom,"@") | eval from_user=mvindex(accountname,0) | eval from_domain=mvindex(accountname,-1) | table mailfrom, from_user, from_domain この例は split() 関数を使って、mailfrom フィールドを複数値フィールド accountname に分割していま す。accountname の最初の値は、「@」記号の前にあるすべての⽂字列で、2 番⽬の値はこの記号の後にある⽂字列 です。 次に、mvindex() 関数を使って、from_user と 定します。 eval 式の結果は よび from_domain from_domain に、それぞれ accountname コマンドに渡されます。以下の結果テーブルでは、元の の値を確認できます。 table の 1 番⽬の値と 2 番⽬の値を設 mailfrom 値と、新しい from_user お 注意: この例は、実⽤的なものではありません。これは、eval 関数を使った、複数値フィールド内の個別の値の 識別⽅法をデモンストレーションする⽬的で作成されています。このメールデータセットには複数値フィールドが 存在していないため、この例では単⼀値フィールド (mailfrom) から複数値フィールド (accountname) を作成しまし た。 例 5 この例は、⽣成されたメールデータ (sourcetype=cisco_esa) を使⽤しています。この例の sourcetype=cisco_esa を ご⾃分のデータの sourcetype 値に、そして mailfrom フィールドをご⾃分のメールアドレスフィールド名 (例:To, From, or Cc) に変更すれば、任意のメールデータに対して利⽤できます。 この例では、メールアドレスのドメインに基づいて、メールの送信元を分類しています。.com、.net、および .org アドレスを国内 (local)、それ以外を 国外 (abroad) と分類します。(もちろんですが、.com/.net/.org 以外での分 類も可能です。) sourcetype="cisco_esa" mailfrom=*| eval accountname=split(mailfrom,"@") | eval from_domain=mvindex(accountname,-1) | eval location=if(match(from_domain, "[^\n\r\s]+\.(com|net|org)"), "local", "abroad") | stats count by location このサーチの前半は、例 3 と似ています。split() 関数は、mailfrom フィールド内のメールアドレスの分割に⽤い られます。mvindex 関数は from_domain を、mailfrom フィールドの @ 記号の後の部分として定義しています。 次に if() および match() 関数が使⽤されます。from_domain の値が .com, .net., or .org で終了する場合、location フィールドには local が割り当てられます。from_domain が⼀致しない場合は、location に abroad が割り当てられま す。 の結果は 成されます。 eval stats コマンドに渡されて、各 location 値の結果数がカウントされ、以下のような結果テーブルが⽣ サーチの実⾏後、イベントに mailfrom および location フィールドを追加して、イベントの分類をそのまま参照す ることができます。サーチ結果にこれらのフィールドを⼊れると、結果は以下のようになります。 111 注意: この例では、match() 関数の使⽤についてはほとんど描かれていません。イベントを分類して、それらのイ ベントを素早くサーチしたい場合は、イベントタイプを使⽤することをお勧めします。詳細は、『ナレッジ管理マ ニュアル』の「イベントタイプについて 」を参照してください。 例 6 この例では、サーチチュートリアルのサンプルデータセットを使⽤していますが、Apache Web アクセスログ 形式の任意のデータを利⽤できます。サーチチュートリアルのこのトピック からデータ セットをダウンロー ドした後、指⽰に従って Splunk にアップロードしてください。次に、時間範囲に [その他] > [昨⽇] を指定 してサーチを実⾏します。 時間を秒で測定している数値フィールドを、より把握しやすい形式に変換します。 sourcetype=access_* | transaction clientip maxspan=10m | eval durationstr=tostring(duration,"duration") この例は、tostring() 関数と duration オプションを使って、トランザクションの duration を把握しやすい HH:MM:SS 形式に変換しています。duration は、トランザクション内の最初のイベントと最後のイベント間の時 間差 (秒) です。 このサーチは、変換した duration 値⽤の新規フィールド durationstr を定義しています。サーチの実⾏後は、 フィールドピッカーを使って イベントと⼀緒に 2 つのフィールドをインラインに表⽰することができます。サー チ結果にこれらのフィールドを⼊れると、結果は以下のようになります。 その他の例 例 A: 速度 (velocity) に距離/時間を設定します。 ... | eval velocity=distance/time 例 B: エラーが 200 の場合 status に OK を、それ以外の場合は Error を設定します。 ... | eval status = if(error == 200, "OK", "Error") 例 C: lowuser に、ユーザー名を⼩⽂字で設定します。 ... | eval lowuser = lower(username) 例 D: sum_of_areas に、2 つの円領域の合計を設定します ... | eval sum_of_areas = pi() * pow(radius_a, 2) + pi() * pow(radius_b, 2) 例 E: status に、単純な HTTP エラーコードを設定します。 ... | eval error_msg = case(error == 404, "Not found", error == 500, "Internal Server Error", error == 200, "OK") 例 F: first_name、1 つのスペース、および last_name を連結した full_name を設定します。 ... | eval full_name = first_name." ".last_nameSearch 例 G: processor 別の cpu_seconds の平均を⼩数第 2 位で丸めた時間グラフを作成します。 112 ... | timechart eval(round(avg(cpu_seconds),2)) by processor 例 H: 数値フィールドの値を、カンマで区切った⽂字列に変換します。x の元の値が 1000000 の場合、返され る値は 1,000,000 になります。 ... | eval x=tostring(x,"commas") 計算済みフィールド 計算済みフィールドを使って、頻繁に使われる eval ステートメントをサーチから props.conf に移動して、サーチ 時に裏側で処理を⾏うことができます。計算済みフィールドを利⽤すれば、例 4 のサーチを以下のように変更す ることができます。 sourcetype="cisco_esa" mailfrom=* | table mailfrom, from_user, from_domain この例では、抽出されたフィールド mailfrom フィールドを含むイベントに対してサーチを実⾏する と、accountname、from_user、および from_domain フィールドを定義していた、サーチ内の 3 つの eval ステートメン トが裏側で実⾏されるようになっています。また、これらのフィールドを計算済みフィールドとして props.conf に 設定したら、フィールドを別個にサーチすることもできます。たとえば、from_domain=email.com に対してサーチを ⾏えます。 への計算済みフィールドの設定⽅法の詳細は、『ナレッジ管理マニュアル』の「計算済みフィールドの 定義」を参照してください。 props.conf Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、eval コマンドの使⽤⽅ 法に関する質問と回答をご覧いただけます。 eventcount は、指定したインデックス内に存在するイベント数を返します。eventcount コマンドは⽣成サーチで、 パイプライン中の最初のコマンドでなければなりません。 eventcount 概要 指定したインデックス内のイベント数を返します。 構⽂ | eventcount [index=<string>]...[summarize=<bool>] [report_size=<bool>] [list_vix=<bool>] オプション引数 index 構⽂: index=<string> 説明: レポートするインデックス名、またはレポートする複数のインデックスに⼀致するワイルドカード。 複数回指定できます (例:index=* index=_*)。index オプションを指定しない場合、デフォルトのインデック スがレポートされます。 list_vix 構⽂: list_vix=<bool> 説明: 仮想インデックスを記載するかどうかを指定します。偽 (False) の場合、仮想インデックスは記載さ れません。デフォルトは真 (True) です。 report_size 構⽂: report_size=<bool> 説明: インデックス・サイズをレポートするかどうかを指定します。真 (True) の場合、インデックス・サ イズをバイトで報告します。デフォルトは偽 (false) です。 summarize 構⽂: summarize=<bool> 説明: すべてのピアとインデックスにまたがってイベントを要約するかどうかを指定します。偽 (False) の 場合、インデックスとサーチ・ピア別にイベント数を分割します。デフォルトは真 (True) です。 例 例 1: すべてのサーチピアに対して、デフォルトインデックス内のイベントカウントを表⽰します。 | eventcount 例 2: 「_internal」インデックスのみのイベント数を返します。 | eventcount index=_internal 例 3: 各インデックス/サーバーのペアにより、イベントカウントを与えます。 | eventcount summarize=false index=* 113 内部インデックスをサーチする場合は、それを指定する必要があります。 | eventcount summarize=false index=_* Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、eventcount コマンドの 使⽤⽅法に関する質問と回答をご覧いただけます。 eventstats 概要 すべてのサーチ結果に、サマリー統計情報を追加します。 構⽂ eventstats [allnum=<bool>] <stats-agg-term>* [<by clause>] 必要な引数 <stats-agg-term> 構⽂: <stats-func>( <evaled-field> | <wc-field> ) [AS <wc-field>] 説明: 必要に応じて新しいフィールド名に変更される統計指定⼦。指定⼦には、フィールドに aggregation 関数を適⽤、または⼀連のフィールドセット、または任意の eval 式に aggregation 関数を適⽤したものを 利⽤できます。 オプション引数 allnum 構⽂: allnum=<bool> 説明: 真 (True) の場合、当該フィールドのすべての値が数値の場合にのみ、各フィールドの数値統計を算 出します。デフォルトは偽 (false) です。 <by clause> 構⽂: by <field-list> 説明: グループ化する 1 つ以上のフィールド名。 Stats 関数のオプション stats-function 構⽂: avg() | c() | count() | dc() | distinct_count() | first() | last() | list() | max() | median() | min() | mode() | p<in>() | perc<int>() | per_day() | per_hour() | per_minute() | per_second() | range() | stdev() | stdevp() | sum() | sumsq() | values() | var() | varp() 説明: stats コマンドと⼀緒に利⽤される関数。stats コマンドの起動時に、複数の関数を使⽤できます が、by clause は 1 つのみ利⽤できます。説明と例を含めた stats 関数の⼀覧については、「stats、chart、 および timechart の関数」を参照してください。 説明 サーチ結果内のすべての既存のフィールドのサマリー統計情報を⽣成し、それらを新しいフィールドの値として保 存します。eventstats は stats コマンドと似ていますが、集計が当該イベントに関連する場合にのみ、各イベント に集計結果がインラインに追加されるという違いがあります。 114 limits.conf の max_mem_usage_mb パラメータは、情報を追跡するために stats/eventstats が使⽤するメモリー 量の制限に⽤いられます。eventstats がこの制限値に達すると、要求されたフィールドのサーチ結果への追加が 中⽌されます。このような場合は、制限値を増やすことができます。また、代わりにシステムにメモリーを追加す ることもできます。 例 例 1: 総合的な平均期間を算出し、「avgdur」を duration フィールドが存在する各イベントの新しいフィール ドとして追加します。 ... | eventstats avg(duration) as avgdur 例 2: 例 1 とほぼ同じですが、date_hour の各⼀意の値に対して平均が計算され、次に各イベントに date_hour の値の平均値が与えられます。 ... | eventstats avg(duration) as avgdur by date_hour 例 3: エラーボリューム内のスパイクをサーチします。このサーチを利⽤して、エラー数が平均を超えた場合に アラートを⽣成することができます。以下に例を⽰します。 eventtype="error" | eventstats avg(foo) as avg | where foo>avg 関連項⽬ stats、streamstats Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、eventstats コマンドの 使⽤⽅法に関する質問と回答をご覧いただけます。 extract (kv) 概要 サーチ結果から、フィールドと値のペアを抽出します。 構⽂ extract | kv <extract-opt>* <extractor-name>* 必要な引数 <extract-opt> 構⽂: clean_keys=<bool> | kvdelim=<string> | limit=<int> | maxchars=<int> | mv_add=<bool> | pairdelim=<string> | reload=<bool> | segment=<bool> 説明: 抽出を定義するオプション。 <extractor-name> 構⽂: <⽂字列> 説明: transforms.conf に存在するスタンザprops.conf によりこのソース、ソースタイプ、またはホストに 対して明⽰的に抽出が⾏われない場合に使⽤されます。 Extract のオプション clean_keys 構⽂: clean_keys=<bool> 説明: キーをクリーンアップするかどうかを指定します。transforms.conf の CLEAN_KEYS に優先しま す。 kvdelim 構⽂: kvdelim=<string> 説明: キーを値から分離する⽂字区切り記号リストを指定します。 limit 構⽂: limit=<int> 説明: 抽出するキー/値のペア数を指定します。デフォルトは 50 です。 maxchars 構⽂: maxchars=<int> 説明: イベントで探す⽂字数を指定します。デフォルトは 10240 です。 mv_add 構⽂: mv_add=<bool> 説明: 複数値フィールドを作成するかどうかを指定します。transforms.conf の MV_ADD に優先します。 pairdelim 構⽂: pair=<string> 説明: キーと値のペアを互いに分離する⽂字区切り記号リストを指定します。 115 reload 構⽂: reload=<bool> 説明: props.conf および transforms.conf の再ロードを強制するかどうかを指定します。デフォルトは偽 (false) です。 segment 構⽂: segment=<bool> 説明: キー/値のペアの場所を結果に記録するかどうかを指定します。デフォルトは偽 (false) です。 説明 結果セットからフィールド-値の抽出を強制します。 例 例 1: 「=:」で区切られたフィールド/値のペア、および「=:」で区切られたフィールドの値を抽出します。区切 り記号は個別の⽂字であることに注意してください。 この例では、「=」または「:」が、キーと値を区切るのに ⽤いられます。同様に、「|」または「;」が、ペア⾃体を区切るために⽤いられます。 ... | extract pairdelim="|;", kvdelim="=:" 例 2: フィールド/値のペアを抽出して、ディスクからフィールド抽出設定を再ロードします。 ... | extract reload=true 例 3: transforms.conf のスタンザ 'access-extractions' に定義されているフィールド/値のペアを抽出します。 ... | extract access-extractions 関連項⽬ kvform、multikv、rex、xmlkv Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、extract コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 fieldformat fieldformat コマンドでは、eval 式を利⽤して結果表⽰時のフィールド値のフォーマットを変更することができま す。 注意: エクスポートの場合、表⽰⽤のフォーマットではなく元のデータフォーマットが保持されるため、データ のエクスポート (例:csv ファイルへのエクスポート) にこの機能は利⽤できません。Splunk Web のエクスポー ト機能には、フィールドをレンダリング表⽰するオプションはありません。 概要 出⼒時に値を変更せずにフィールドを表⽰する⽅法を指定します。 構⽂ fieldformat <field>=<eval-expression> 必要な引数 <field> 説明: eval 式の出⼒⽤の、ワイルドカードを使⽤しない新しいまたは既存のフィールド名。 <eval-expression> 構⽂: <⽂字列> 説明: 宛先フィールドの値を表す、値、変数、演算⼦、および関数の組み合わせ。詳細は、「eval コマンド リファレンス」および「eval 関数の⼀覧」を参照してください。 例 例 1: メインインデックス内のソースタイプに対する、metadata 結果を返します。 | 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 がない場合、時間フィールドには UNIX 時が表⽰されます。 116 fieldformat を使って、時間フィールド firstTime、lastTime、および recentTime の書式を再設定してみましょ う。 | 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") fieldformat は、Count フィールドの書式設定を変更して、カンマを表⽰するためにも使⽤されていることに注意 してください。結果がより把握しやすくなりました。 例 2: start_time を表⽰ するために start_time の値 (エポック数が前提) を取得し、それを解釈してそのエポック 時の時、分、秒のみを表⽰するように指定します。 ... | fieldformat start_time = strftime(start_time, "%H:%M:%S") 関連項⽬ eval、where Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、fieldformat コマンドの 使⽤⽅法に関する質問と回答をご覧いただけます。 fields 概要 サーチ結果のフィールドを保持または削除します。 構⽂ fields [+|-] <wc-field-list> 必要な引数 <wc-field-list> 構⽂: <string>, ... 説明: 保持 (+) または削除 (-) するフィールドのカンマ区切りリスト、ワイルドカードを使⽤できます。 説明 フィールドのリスト基準に基づいて、フィールドを保持 (+) または削除 (-) します。「+」を指定した場合、リス ト内のいずれかのフィールドに⼀致するフィールドのみが保持されます。「-」を指定した場合、リスト内のいず れかのフィールドに⼀致するフィールドのみが削除されます。どちらも指定されていない場合、デフォルトの + が使⽤されます。 重要: 先頭のアンダースコアは、_raw and _time などの、すべての内部 Splunk フィールド名⽤に予約されていま 117 す。デフォルトでは、出⼒には内部フィールド _raw and _time が含まれます。fields コマンドは、以下の項⽬を明 ⽰的に指定しない限り、内部フィールドを削除することはありません。 ... | fields - _* または、より明⽰的に以下のように指定します。 ... | fields - _raw,_time 注意: 結果を統計コマンドに渡す場合は、_time フィールドを削除しないでください。タイムチャートまたは時間 を使ったグラフは、_time なしでは利⽤できません。 例 例 1: 「host」および「ip」フィールドを削除します。 ... | fields - host, ip 例 2: 「host」および「ip」フィールドのみを保持し、それを「host」、「ip」の順序で表⽰します。この場合、 アンダースコアから始まる内部フィールドも削除されることに注意してください (_time など)。 ... | fields host, ip | fields - _* 例 3: フィールド「source」、「sourcetype」、「host」、および値の先頭が「error」で始まるすべてのフィー ルドのみが保持されます。 ... | fields source, sourcetype, host, error* 関連項⽬ rename、table Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、fields コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 fieldsummary 概要 すべてのフィールドまたはフィールドのサブセットのサマリー情報を⽣成します。 構⽂ fieldsummary [maxvals=<num>] [<wcfield-list>] オプション引数 maxvals 構⽂: maxvals=<num> 説明: 各フィールドに対して返す⼀意の値の最⼤値を指定します。デフォルトは、100 です。 wcfield-list 説明: ワイルドカードを含めることができる、1 つのフィールドまたはフィールドのリスト。 説明 fieldsummary は、イベントのすべてのフィールドまたはそのサブセットのサマリー統計を算出します。サマリー 情報は結果テーブルとして表⽰され、以下の計算を含んでいます。 フィー ルド名 説明 field イベント内のフィールド名。 count そのフィールドを持つイベント/結果数。 distinct count フィールド内の⼀意の値数。 is_exact フィールドが厳密かどうか。これは、フィールド値の⼀意のカウントに関連しています。フィールド の値数が maxvals を超えた場合、fieldsummary はすべての値の保持を中⽌して、完全な⼀意の値ではな く⼀意の近似値を算出します。1 は厳密を、0 はそうではないことを表しています。 max フィールドが数値の場合に、値の最⼤値。 mean フィールドが数値の場合に、値の平均値。 118 min numeric count フィールドが数値の場合に、値の最⼩値。 フィールド内の数値数。(NULL 値は含まれません。) stdev フィールドが数値の場合に、値の標準偏差。 values フィールドの⼀意の値数とそれぞれの値のカウント数。 例 例 1: すべてのフィールドのサマリーを返します。 index=_internal earliest=-15m latest=now | fieldsummary 例 2: 名前に「size」および「count」を含むフィールドのサマリーを返し、各フィールドのトップ 10 の値のみ を返します。 index=_internal earliest=-15m latest=now | fieldsummary maxvals=10 *size* *count* 関連項⽬ af、anomalies、anomalousvalue、stats Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、fields コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 filldown 概要 NULL 値を最後の⾮ NULL 値で置換します。 構⽂ filldown <wc-field-list> 説明 1 つのフィールドまたは⼀連のフィールドに対して、null値を最後の⾮null値と置換します。フィールドリストを 指定しない場合、すべてのフィールドに対して filldown が適⽤されます。フィールドに対して前の値が存在して いない場合は、そのまま空 (NULL) で放置されます。 例 119 例 1: すべてのフィールドの NULL 値に対して、filldown を実施します ... | filldown 例 2: count フィールドにのみ null 値の filldown を実施します ... | filldown count 例 3: count フィールドおよび先頭が「score」で始まる任意のフィールドの null 値に対して filldown を実施し ます ... | filldown count score* 関連項⽬ fillnull Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、filldown コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 fillnull 概要 null 値を指定値で置換します。 構⽂ fillnull [value=string] [<field-list>] オプション引数 field-list 構⽂: <field>... 説明: 1 つまたは複数のフィールドをスペースで区切ります。指定しない場合、すべてのフィールドに fillnull が適⽤されます。 value データタイプ: value=<string> 説明: NULL 値を置換する⽂字列値を指定します。デフォルトは 0 です。 説明 NULL 値は、特定の結果には存在していないけれども、他の結果には存在しているフィールド値です。NULL 値 を⽂字列で置換するには、fillnull を使⽤します。フィールドのリストを指定しない場合、fillnull はすべての NULL 値を 0 (デフォルト) またはユーザー指定⽂字列で置換します。 例 例 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 関連項⽬ streamstats Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、fillnull コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 120 findkeywords 概要 いくつかのイベントの整数ラベルをグループとして、それらのグループを⽣成するサーチを探します。 構⽂ findkeywords labelfield=<field> 必要な引数 labelfield 構⽂: labelfield=<field> 説明: 1 つのフィールド名。 説明 コマンドの後に findkeywords コマンド、またはイベントをグループ化する類似のコマンドを使⽤しま す。findkeyword コマンドは、結果を⼀連のグループに分割するフィールド (labelfield) を持つ、⼀連の結果を取り ます。コマンドは、これらの各グループを⽣成するサーチを算出します。このサーチは、イベント・タイプ とし て保存できます。 cluster 例 例 1: このサーチは、Splunk が⾃⼰に関する情報を _internal 内に記録しているログを活⽤しています。 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 Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、findkeywords コマン ドの使⽤⽅法に関する質問と回答をご覧いただけます。 findtypes 概要 提案するイベントタイプを⽣成します。 構⽂ findtypes max=<int> [notcovered] [useraw] 必要な引数 121 max データタイプ: <int> 説明: 返す最⼤イベント数デフォルトは 10 です。 オプション引数 notcovered 説明: このキーワードを使⽤した場合、findtypes はすでにカバーされていないイベントタイプのみを返し ます。 useraw 説明: このキーワードを使⽤した場合、findtypes はイベントの _raw テキスト内のフレーズを使って、イ ベントタイプを⽣成します。 説明 findtypes コマンドはサーチ結果を取得し、イベントタイプとして使⽤できる可能性がある有望なサーチのリスト を⽣成します。発⾒されたイベントタイプに対して、最⾼で 5000 件のイベントが分析されます。 例 例 1: 10 件の共通なイベントタイプを発⾒します。 ... | findtypes 例 2: 50 件の⼀般的なイベントタイプを探し、注⽬するテキストフレーズに対するサポートを追加します ... | findtypes max=50 useraw 関連項⽬ typer Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、findtypes コマンドの 使⽤⽅法に関する質問と回答をご覧いただけます。 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 です。 説明 属性の値をより汎⽤的な値に置換します。これは、他の結果からの他の値でグループ化した結果となりま す。グループ化は、sep セパレータ値に対して attr 属性をトークン化することにより⾏われます。 attr たとえば、Splunk ホームページで使われるようなサーチ結果をグループ化して、階層構造バケツ (ディレクトリ 122 やカテゴリ) を表⽰できます。Splunk ホームページに 200 件のソースを表⽰する代わりに、folderize によりセ パレータ (例:「/」) で区切ってソース⽂字列を分類し、要求された結果内のディレクトリ結果だけを表⽰するこ とができます。 例 例 1: ソースを 20 フォルダに折りたたみます。 | metadata type=sources | folderize maxfolders=20 attr=source sep="/"| sort totalCount d 例 2: 結果を URI に基づいてフォルダにグループ化します。 index=_internal | stats count(uri) by uri | folderize size=count(uri) attr=uri sep="/" Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、folderize コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 foreach 概要 ワイルドカード指定されたフィールドリスト内の各フィールドに対して、テンプレートされたストリーミングサブ サーチを実⾏します。 構⽂ foreach <wc-field> [fieldstr=<string>] [matchstr=<string>] [matchseg1=<string>] [matchseg2=<string>] [matchseg3=<string>] <subsearch> 必要な引数 wc-field 構⽂: <field> <field>... 説明: フィールド名のリスト。ワイルドカードを使⽤できます。 subsearch 構⽂: [ subsearch ] 説明: ワイルドカードが使⽤されているフィールドの値を置換する、テンプレートを含むサブサーチ。 オプション引数 fieldstr 構⽂: fieldstr=<string> 説明: <<FIELD>> を、フィールド名全体と置換します。 matchstr 構⽂: matchstr=<string> 説明: <<MATCHSTR>> を、指定されているワイルドカードに⼀致する、フィールド名の⼀部と置換しま す。 matchseg1 構⽂: matchseg1=<string> 説明: <<MATCHSEG1>> を、指定されている最初のワイルドカードに⼀致する、フィールド名の⼀部と 置換します。 matchseg2 構⽂: matchseg2=<string> 説明: <<MATCHSEG2>> を、指定されている 2 番⽬のワイルドカードに⼀致する、フィールド名の⼀部 と置換します。 matchseg3 構⽂: matchseg3=<string> 説明: <<MATCHSEG3>> を、指定されている 3 番⽬のワイルドカードに⼀致する、フィールド名の⼀部 と置換します。 例 例 1: 「test」から始まる名前を持つすべてのフィールドをまとめて合計フィールドに追加します。結果は total=6 になります。 a. ... | eval total=0 | eval test1=1 | eval test2=2 | eval test3=3 | foreach test* [eval total=total + <<FIELD>>] b. ... | eval total=0 | eval test1-1=1 | eval test1-2=2 | eval test1-3=3 | foreach test* [eval total=total + 123 '<<FIELD>>'] foreach サブサーチ内の <<FIELD>> トークンは、単なるフィールド名 (test*) の⽂字列置換です。フィールド名 に英数字以外の⽂字が含まれている場合、単⼀引⽤符でそれを囲まないと eval 式はその名前を認識できません。 つまり、フィールド名 test1-1 および test1-2 には、英数字以外の⽂字が含まれているため、1b に対して 1a の サブサーチにある eval 式は無効となります。eval 式を有効にするためには、<<FIELD>> を単⼀引⽤符で囲む 必要があります。 例 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: 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 = "X" ... | foreach foo*bar* fieldstr="#field#" matchseg2="#matchseg2#" [eval #field# = "#matchseg2#"] 関連項⽬ eval、map Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、foreach コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 format 概要 サブサーチ の結果を取得し、それを単⼀の結果にまとめます。 構⽂ format ["<string>" "<string>" "<string>" "<string>" "<string>" "<string>"] オプション引数 <string> 構⽂: "<string>" 説明: これらの 6 つのオプション⽂字列引数は、 ["<row prefix>" "<column prefix>" "<column separator>" "<column end>" "<row separator>" "<row end>"] に対応しています。デフォルトでは、⽂字 列を指定しない場合、フォーマット出⼒は次になります: "(" "(" "AND" ")" "OR" ")" 説明 サブサーチのサーチ結果を取得して、⼊⼒サーチ結果から作成されたクエリーとなる単⼀の結果を返します。 例 例 1: 上位 2 件の結果を取得して、その host、source、および sourcetype からサーチを作成し、query フィー ルドを持つ単⼀のサーチ結果を⽣成します: query=( ( "host::mylaptop" AND "source::syslog.log" AND "sourcetype::syslog" ) OR ( "host::bobslaptop" AND "source::bob-syslog.log" AND "sourcetype::syslog" ) ) ... | head 2 | fields source, sourcetype, host | format 例 2: サブサーチがサーチの⽣成時に使⽤できる、イベントの最⼤数をデフォルトから 2000 に増やします。 limits.conf: 124 [format] maxresults = 2000 サブサーチ: ... | head 2 | fields source, sourcetype, host | format maxresults=2000 関連項⽬ search Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、format コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 gauge gauge グラフタイプを利⽤して、単⼀の数値を⾊範囲にマップして、ビジネス上の意味やロジックを視覚的に表 すことができます。時間の経過に伴い値が変化すると、ゲージマーカーの位置がその範囲内で変化します。 gauge コマンドを利⽤して、ゲージグラフで値を追跡するフィールドを指定することができます。ゲージが表す 総合的な数値範囲を定義することができます。また、その範囲内でカラーバンドのサイズを定義できます。カラー バンドを使⽤する場合、サーチ⽂字列に範囲の開始と終了を表す 4 つの範囲値、およびその中にある各カラーバ ンドの相対サイズを追加します。 ゲージのグラフタイプを使った gauge コマンドの使⽤⽅法の詳細は、『視覚化リファレンス』のグラフに関する 説明を参照してください。 概要 結果をゲージグラフでの表⽰に適した形式に変換します。 構⽂ gauge <value> [<range_val1> <range_val2>...] 引数 value 説明: 現在のゲージの値として使⽤する数値フィールドまたはリテラル値。名前付きフィールドは、最初の ⼊⼒結果から値を取得します。 range_val1, range_val2... 説明: ゲージの表⽰範囲として使⽤する 複数の数値フィールドまたは数値。各パラメータは、独⽴した フィールド名またはリテラル数になります。 フィールド名は最初の⼊⼒結果から取得されます。ゲージの合 計範囲は、最初の range_val から最後の range_val となります。4 つ以上の range_val パラメータがある 場合、各値セット間の範囲は出⼒で視覚的に区別されます。デフォルトの範囲は 0〜100 で、範囲値が指定 されていない場合に使⽤されます。 説明 各引数は実数か、または数値フィールド名でなければなりません。最初の引数はゲージの値です。 最初の値後の値は、ゲージに表⽰する範囲を定義しています。範囲値を指定する場合、それは複数でなければなり ません。ゲージは最初に指定されている値から開始し、指定されている最後の値で終わります。中間の範囲値は、 全範囲をサブ範囲に分割するために使⽤されます。サブ範囲は視覚的に区別されます。 範囲値が指定されていない場合、範囲の下限値は 0、上限値は 100 となります。 単⼀の範囲値は意味がないため無視されます。 gauge コマンドの出⼒は単⼀の結果で、値は x フィールドにあり、範囲は y1、y2... のような、フィールドのシ リーズとして表されます。 例 例 1: イベント数をカウントして、4 つの領域 (0〜750、750〜1000、1000〜1250、1250〜1500) を持つ ゲージにカウント数を表⽰します。 index=_internal | stats count as myCount | gauge myCount 750 1000 1250 1500 125 放射状ゲージ、フィラーゲージ、およびマーカーの 3 種類のゲージを選択できます。ゲージのさまざまな例につ いては、『視覚化リファレンス』のグラフに関する説明を参照してください。 関連項⽬ eval、stats Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、gauge コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 gentimes 概要 時間範囲結果を⽣成します。このコマンドは、map コマンドと⼀緒に使⽤すると役⽴ちます。 構⽂ gentimes start=<timestamp> [end=<timestamp>] [<increment>] 必要な引数 先頭 構⽂: start=<timestamp> 説明: 開始時間を指定します。 <タイムスタンプ> 構⽂: MM/DD/YYYY(:HH:MM:SS)?|<int> 説明: 時刻を指定します (例:10/1/07:12:34:56 (2007 年 10 ⽉ 1 ⽇ 12:34:56) または -5 (5 ⽇前))。 オプション引数 最後 構⽂: end=<timestamp> 説明: 終了時間を指定します。デフォルトは、ローカルの現在時刻の前の午前 0 時です。 increment 構⽂: increment=<int>(s|m|h|d) 説明: 開始時間から終了時間への、期間の増分を指定します。デフォルトは 1d です。 説明 開始時刻として指定されたその時刻から開始する、タイムスタンプ結果を⽣成します。endtime 値に渡すために ⼗分な結果が⽣成されるまで、increment 値で指定されている、重なり合わない隣接する時間範囲で各結果が記 述されていきます。 例: | gentimes start=10/1/07 end=10/5/07 は、2007 年 10 ⽉ 1、2、3、4 ⽇の隣接する暦⽇期間を、1 ⽇単位で 4 つの区間を⽣成します。 このコマンドでは、将来の期間は利⽤できません。 例 例 1: 10 ⽉ 1 ⽇から 10 ⽉ 5 ⽇までのすべての毎時間範囲 126 | gentimes start=10/1/07 end=10/5/07 increment=1h 例 2: 30 ⽇前から 27 ⽇前までのすべての⽇次時間範囲 | gentimes start=-30 end=-27 例 3: 10 ⽉ 1 ⽇から 10 ⽉ 5 ⽇までのすべての⽇次時間範囲 | gentimes start=10/1/07 end=10/5/07 例 4: 10 ⽉ 25 ⽇から今⽇までのすべての⽇次時間範囲 | gentimes start=10/25/07 関連項⽬ map Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、gentimes コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 geostats 地域データとサマリーを Splunk から直接地図に表⽰できるようになりました。そのためには、まず geostats を 使ってレポートサーチを実⾏し、それをレポートとして、またはダッシュボードに保存します。次にシンプル XML を編集して、<map> 視覚エフェクトエレメントを追加します。詳細は、以下の項⽬を参照してください。 『データの視覚化』マニュアルの「視覚化リファレンス」 「シンプル XML リファレンス」の「<map> エレメント」 概要 世界地図に表⽰する地域ビンにクラスタ化される統計情報を⽣成します。 構⽂ geostats [translatetoxy=<bool>] [latfield=<string>] [longfield=<string>] [globallimit=<int>] [locallimit=<int>] [outputlatfield=<string>] [outputlongfield=<string>] [ binspanlat=<float> binspanlong=<float> ] [maxzoomlevel=<int>] <stats-agg-term> [AS <rename>] [by <split-by-fields>] 必要な引数 <stats-agg-term> 構⽂: <stats-agg-term> [AS <rename>] 説明: 集計⼦または関数を指定します。1 つまたは複数の関数を指定することができます。必要に応じて、 フィールド名を変更することもできます。説明と例が記載された stats 関数の⼀覧については、「stats、 chart、および timechart の関数」を参照してください。 オプション引数 binspanlat 構⽂: binspanlat=<float> 説明: 最⼩ズームレベルにおけるビンのサイズ (緯度)。デフォルトは 22.5 です。デフォルトの binspanlong=45.0 と組み合わせると、グリッドサイズは 8x8 になります。 binspanlong 構⽂: binspanlong=<float> 説明: 最⼩ズームレベルにおけるビンのサイズ (経度)。デフォルトは 45.0 です。デフォルトの binspanlat=22.5 と組み合わせると、グリッドサイズは 8x8 になります。 globallimit 構⽂: globallimit=<int> 説明: 各円グラフに追加する名前付きカテゴリ数を指定します。もう 1 つ「OTHER (その他)」カテゴリが 存在しており、ここには他のすべての split-by 値がグループ化されます。*chart* コマンドのドキュメントを 参照してください。globallimit=0 を設定すると、すべての制限が解除され、すべてのカテゴリが表⽰され ます。現在の所、「その他」へのグループ化は、count および additive 統計情報に対してのみ機能します。 デフォルトは 10 です。 latfield 構⽂: latfield=<field> 説明: 分析で使⽤する緯度座標を表す、事前サーチのフィールドを指定します。デフォルトは「lat」です。 longfield 構⽂: longfield=<field> 説明: 分析で使⽤する経度座標を表す、事前サーチのフィールドを指定します。デフォルトは「lon」で す。 127 maxzoomlevel 構⽂: maxzoomlevel=<int> 説明: クワッドツリー内で作成する最⼤レベル。デフォルトは 9 で、この場合 10 個のズームレベルが作成 されます (0〜9)。 outlatfield 構⽂: outlatfield=<string> 説明: geostats 出⼒データの緯度フィールド名を指定します。デフォルトは「latitude」です。 outlongfield 構⽂: outlongfield=<string> 説明: geostats 出⼒データの経度フィールド名を指定します。デフォルトは「longitude」です。 translatetoxy 構⽂: translatetoxy=<bool> 説明: 真 (True) の場合、geostats は位置的に区分された各場所あたり 1 つの結果を⽣成します。このモー ドは地図上に描画する場合に適しています。偽 (False) の場合は、位置的に区分された場所あたりの、カテ ゴリ (または多重分割データセットのタプル) あたり 1 つの結果が⽣成されます。これにより、基本的には データがカテゴリ別に分割されます。このモードでは、地図上に描画することはできません。デフォルトは 真 (True) です。 説明 世界地図上に描画するために適した統計関数を計算するには、geostats コマンドを使⽤します。まず、イベント 内の緯度および経度フィールドに基づいて、イベントがグループ化されます。次に、⽣成されたクラスタの統計が 評価され、必要に応じてグループ化または by 句を使ってフィールドに分割されます。地図の表⽰とズームを効率 的に⾏うために、geostats は 1 つのサーチでさまざまなズーム・レベルのクラスタ統計を⽣成し、それらの中か ら視覚エフェクトを選択します。ズーム・レベルの数量は、binspanlat/binspanlong/maxzoomlevel オプション で調整することができます。初期の解像度は、binspanlat と binspanlong を使って選択します。ズームの各レベ ルで、ビン数が両⽅の次元で倍加されます (各ズームインに対して合計 4 倍のビン)。 例 例 1: この例は、『サーチチュートリアル』の Buttercup Games データ (tutorialdata.zip) とルックアップファ イル (prices.csv および vendors.csv) を使⽤します。販売された各商品数をベンダー別に計算し、情報を地図上 に表⽰します。 sourcetype=vendor_* | lookup price_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 および各イベントは、以下のようになります。 [26/Sep/2013:18:24:02] VendorID=5036 Code=B AcctID=6024298300471575 price_lookup は、各イベントの Code フィールドを、テーブル内の product_name と照合するために⽤いられま す。vendors_lookup は、各イベント内の VendorID と⼀致する、vendors.csv 内のすべてのフィールド (Vendor、VendorCity、VendorID、VendorLatitude、VendorLongitude、VendorStateProvince、 VendorCountry) を出⼒するために⽤いられています。 注意: このサーチでは、csv が Splunk にアップロードされ、ルックアップが定義されていますが、⾃動ではあ りません。 このサーチは、統計テーブルを⽣成します。 サーチを実⾏したら、それをダッシュボードとして保存してください。ここでダッシュボード名は「Geostats example」、パネル名は「Vendor and Product Map」としています。次に、[ソースの編集] を選択して XML を編集し、table エレメントを map エレメントに変更します。 128 これで、ダッシュボードを表⽰すると、世界地図上に情報が表⽰されるようになります。ここでは、地図をズーム インして、マウスカーソルを北部 USA 地域の円グラフ上に移動します。 ズームイン/合うとして、地図の詳細を確認することができます。<map> エレメントと利⽤可能なオプションの 詳細は、「シンプル XML リファレンス」を参照してください。 例 2: 「eventlat」および「eventlong」の値でイベントをクラスタ化/グループ化した後に、各性別の平均レー ティングを計算します ... | geostats latfield=eventlat longfield=eventlong avg(rating) by gender 例 3: デフォルトの緯度/経度フィールド「lat」および「lon」でイベントをクラスタ化します。そのようなイベ ントのカウントを算出します。 ... | geostats count 関連項⽬ iplocation、stats、xyseries Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、geostats コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 head 概要 指定した結果の最初の n 件を、サーチ順序に返します。 このことは、履歴サーチの最新の n 件のイベント、またはリアルタイムサーチで最初に補⾜された n 件のイベン トを表しています。 構⽂ head [<N> | (<eval-expression>)] [limit=<int>] [null=<bool>] [keeplast=<bool>] オプション引数 <N> 構⽂: <int> 129 説明: 返す結果数。 limit 構⽂: limit=<int> 説明: 返す結果数を指定する、別の⽅法です。 eval-expression 構⽂: <eval-math-exp> | <eval-concat-exp> | <eval-compare-exp> | <eval-bool-exp> | <eval-functioncall> 説明: 論理演算式を評価する有効な eval 式です。この式の評価が偽 (False) となるまで、結果が返されま す。keeplast は、ターミナルの結果を保持するかどうかを⽰します。詳細は、「eval の関数」を参照して ください。 keeplast 構⽂: keeplast=<bool> 説明: eval 式の評価が偽 (False) または NULL となった、最後の結果を保持するかどうかを指定します。 null 構⽂: null=<bool> 説明: 論理 eval 式を使⽤する場合に、NULL 結果の処理を指定します。たとえば、eval 評価が (x > 10) で、フィールド x が存在しない場合、式の評価は真 (True) または偽 (False) ではなく、NULL になりま す。そのため、null=true は head コマンドの結果が NULL の場合には処理が続⾏され、null=false の場合 はそのような状況下ではコマンドが停⽌されます。デフォルトは偽 (false) です。 説明 サーチの結果を最初の結果 (サーチ順序で) に制限します。 適⽤できる制限のタイプには、2 種類があります。結果数量を絶対値で、または偽 (False) になるまですべての結 果を返す式で指定します。 オプションまたは制限が明⽰的に指定されていない場合は、最初の 10 件が返されます。 数値リテラルまたはフラグ limit=int などの数値制限を使⽤する場合、最初の N 件の結果が返されます。ここ で、N は選択された数字です。両⽅の数値制限構⽂を使⽤すると、エラーになります。 eval 式を使⽤した場合、式が偽 (False) になるまですべての結果が返されます。偽 (False) になった後の結果は 返されません。式が偽 (False) となった結果は、keeplast オプションの設定によって保持または破棄されます。 数値制限と eval 式の両⽅を指定した場合は、どちらか⼩さい⽅が適⽤されます。たとえば、 ... |head limit=10 (1==1) は、式が常に真 (True) になるため、最初の 10 件の結果を返します。ただし、 ... |head limit=10 (0==1) では式が常に偽 (False) になるため、結果は返されません。 例 例 1: 最初の 20 件の結果を返します。 ... | head 20 例 2: データの期間が 100 秒以上になるまでイベントを返します。 ... | streamstats range(_time) as timerange | head (timerange<100) 関連項⽬ reverse、tail Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、head コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 highlight 概要 ui で指定した単語を強調表⽰します。 構⽂ highlight <string>+ 必要な引数 130 <string> 構⽂: <string>,... 説明: 結果内の⼤⽂字⼩⽂字を区別しない⽂字列を強調表⽰するための、キーワードのカンマ区切りまたは スペース区切りリスト。 説明 ⽂字列または⽂字列のリストで⼤⽂字⼩⽂字の区別がないものを探し、それらを強調表⽰して Splunk Web に表 ⽰します。 例 例 1: 「login」および「logout」を強調表⽰します。 ... | highlight login,logout 例 2: 「Access Denied」および「Access Granted」を強調表⽰します。 ... | highlight "access denied" "access granted" Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、highlight コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 history 概要 ⼀連のイベントまたはテーブル形式で表された、サーチの履歴を返します。 構⽂ | history [events=<bool>] 引数 events 構⽂: events=bool 説明: デフォルトで、サーチ・テキストは「search」と呼ばれるフィールドで表されます。events=true の 場合、サーチ・テキストはイベント・テキストとして表⽰されます (_raw フィールド)。 デフォルトは偽 (false) です。 説明 現在のユーザーのサーチ履歴を表⽰する場合、⽣成コマンドを使⽤します。events=true を指定すると、history 葉 コマンドは情報をサーチ⽂字列のテキストを持つイベントのように表⽰します。これはイベント指向型の UI を表 ⽰します。UI を使って⼿軽に強調表⽰やフィールドの調査を⾏えます。events=false を指定すると、イベント・テ キストは表⽰されません。サーチ・テキストは search フィールドとして表されます。この場合静的ビューにテー ブルとしてデータが表⽰され、⼿軽に集計を⾏えます。 _time:サーチの開始時刻。 api_et:API 呼び出しのもっとも早い時間。(イベントがリクエストされたもっとも早い時間) 呼び出しのもっとも遅い時間。(イベントがリクエストされたもっとも遅い時間) event_count:サーチがイベントを取得または⽣成した場合、イベント数が返されます。 exec_time:サーチ実⾏時間 (UNIX エポック時で整数の秒数)。 is_realtime:サーチがリアルタイム (1) か、または履歴サーチ (0) かを⽰します。 result_count:サーチが変換サーチの場合、サーチの結果数。 scan_count:低レベルで Splunk インデックスから取得されたイベント数。 search:events=false で実⾏されたサーチ⽂字列。 search_et:サーチ実⾏のために設定された、もっとも早い時間。 search_lt:サーチ実⾏のために設定された、もっとも遅い時間。 sid:サーチジョブ ID。 splunk_server:サーチが実⾏された Splunk サーバー。 status:サーチのステータス。 total_run_time:サーチの実⾏時間合計 (秒)。 api_lt:API 例 例 1: サーチ履歴のテーブルを返します。 | history 関連項⽬ search 131 Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、history コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 iconify 概要 Splunk Web で、リストに表⽰する各フィールド値に対して、⼀意のアイコンを作成します。 構⽂ iconify <field-list> 必要な引数 field-list 構⽂: <field>... 説明: ワイルドカードを使⽤しないフィールドの、カンマまたはスペース区切りリスト。 説明 iconify コマンドはイベントのハッシュ値となる _icon フィールドを追加します。Splunk Web では、イベント・ リスト内に各フィールドの⼀意の値が、異なるアイコンで表⽰されます。複数のフィールドが記載されている場合 は、UI にはフィールド値の各⼀意の組み合わせに対して、別個のアイコンが表⽰されます。 例 例 1: eventtype ごとに異なるアイコンを表⽰します。 ... | iconify eventtype 例 2: clientip と method の値の⼀意のペアに対して、異なるアイコンを表⽰します。 ... | iconify clientip method Splunk がイベントリストに どのように結果を表⽰するかを以下に⽰します。 関連項⽬ highlight Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、iconify コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 input 概要 Splunk で処理するソースを追加または無効にします。 構⽂ input (add|remove) [sourcetype=string] [index=string] [string=string]* オプション引数 sourcetype データタイプ: <string> 説明: 新しい⼊⼒を追加する場合、取得したデータがこのソースタイプを使⽤するように、⼊⼒にラベルを 132 設定します。 index データタイプ: <string> 説明: 新しい⼊⼒を追加する場合、取得したデータがこのインデックスに送られるように、⼊⼒にラベルを 設定します。このインデックスが存在していることを確認してください。 説明 Splunk で処理するソースを追加または削除 (無効化) します。inputs.conf で⼊⼒を有効または無効にできます。 必要に応じて、ソースタイプおよびインデックスも設定できます。inputs.conf には、任意の「属性=値」を追加 できます。変更内容は、$SPLUNK_HOME/var/log/splunk/inputs.log に記録されます。inputは、⼀般的に crawl コ マンドと⼀緒に使⽤されます。 例 例 1: 現在処理中のすべての csv ファイルを削除します | crawl | search source=*csv | input remove 例 2: bob のホームディレクトリで⾒つかったすべてのソースを、preview インデックスに「sourcetype=text」 で追加します。また、カスタムユーザーフィールド「owner」および「name」を設定します。 | crawl root=/home/bob/txt | input add index=preview sourcetype=text owner=bob name="my nightly crawl" 例 3: クロールで⾒つかった各ソースを、デフォルトのインデックスに追加します。この時、ソースは⾃動的に 分類されます (sourcetyping)。 | crawl | input add 関連項⽬ crawl Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、input コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 inputcsv 概要 指定した csv ファイルから、サーチ結果を読み込みます。 構⽂ inputcsv [append=<bool>] [start=<int>] [max=<int>] [events=<bool>] <filename> 必要な引数 filename 構⽂: <filename> 説明: $SPLUNK_HOME/var/run/splunk にある CSV ファイル名を指定します。 オプション引数 append 構⽂: append=<bool> 説明: CSV ファイルからのデータを現在の結果セットに追加するか (true)、または現在の結果セットと置換 するか (false) を指定します。デフォルトは偽 (false) です。 events 構⽂: events=<bool> 説明: 適切なタイムラインとフィールドピッカーが表⽰されるように、インポートした結果のイベントとし ての処理を許可します。 max 構⽂: max=<int> 説明: ファイルから読み込むイベントの最⼤数を指定します。デフォルトは 1000000000 です。 start 構⽂: start=<int> 説明: 読み込む最初のイベントの、0 ベースのオフセットを指定します。デフォルトは 0 です。 説明 指定された csv ファイルを使って、変更されていない結果データ構造を取り込みます。ファイル名 133 は、$SPLUNK_HOME/var/run/splunk 内の相対パスを参照する必要があります。また、指定されたファイルが存在して おらず、ファイル名に拡張⼦が指定されていない場合は、ファイル名に拡張⼦ .csv を付けた名前が仮定されま す。 注意: inputcsv の実⾏でエラーが発⽣する場合は、CSV ファイルが BLANK LINE で終了していることを確認し てください。 例 例 1: CSV ファイル「$SPLUNK_HOME/var/run/splunk/all.csv」から結果を読み込んで、⽂字列「error」を 含む結果を保持し、それをファイル「$SPLUNK_HOME/var/run/splunk/error.csv」に書き込みます。 | inputcsv all.csv | search error | outputcsv errors.csv 例 2: ファイル「bar」 (存在する場合) または「bar.csv」のいずれかから 101〜600 イベントを読み込みます。 | inputcsv start=100 max=500 bar 例 3: イベントを CSV ファイル「$SPLUNK_HOME/var/run/splunk/foo.csv」から読み込みます。 | inputcsv foo.csv 関連項⽬ outputcsv Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、inputcsv コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 inputlookup 概要 指定したルックアップ・テーブルからサーチ結果を読み込みます。 構⽂ inputlookup [append=<bool>] [start=<int>] [max=<int>] (<filename> | <tablename>) 必要な引数 <filename> 構⽂: <⽂字列> 説明: ルックアップ・ファイル名 (.csv または .csv.gz で終了していなければなりません)。ルックアップが 存在しない場合は、警告メッセージが表⽰されます (ただし、構⽂エラーは⽣成されません)。 <tablename> 構⽂: <⽂字列> 説明: transforms.conf 内のスタンザに指定されたルックアップ・テーブル名。任意のルックアップ・タイプ (CSV、外部、または KV ストア) に対してルックアップ・テーブルを設定できます。 オプション引数 append 構⽂: append=<bool> 説明: true を設定すると、ルックアップ・ファイルのデータは、現在の結果セットに追加されます (置換さ れるのではない)。デフォルトは false です。 max 構⽂: max=<int> 説明: ファイルから読み込むイベントの最⼤数を指定します。デフォルトは 1000000000 です。 start 構⽂: start=<int> 説明: 読み込む最初のイベントの、0 ベースのオフセットを指定します。start=0 の場合、最初のイベントか ら開始されます。start=4 の場合は、5 番⽬のイベントから開始されます。デフォルトは 0 です。 説明 ファイル名 (.csv または .csv.gz で終了する必要があります) または transforms.conf 内のルックアップ・テーブル 設定で指定された、ルックアップ・テーブルのコンテンツをサーチします。ルックアップ・テーブルには、CSV ルックアップまたは KV ストア・ルックアップを使⽤できます。 に true を設定すると、ルックアップ・ファイルまたは KV ストア・コレクションから現在の結果セットに データが追加されます。appendは、デフォルトで false に設定されています。この場合、現在の結果セットがルッ append 134 クアップ・サーチからの結果で置き換えられます。 フィールド・ルックアップのテーブル設定の詳細は、『ナレッジ管理』マニュアルの「CSV および外部ルック アップの設定」および「KV ストア・ルックアップの設定」を参照してください。 App キー・バリュー・ストアの詳細は、『管理マニュアル』の「KV ストアについて」を参照してください。 例 例 1: transforms.conf に定義されているルックアップ・テーブル「usertogroup」を読み込みます。 | inputlookup usertogroup 例 2: transforms.conf 内のスタンザに定義されている、usertogroup テーブルを読み込みます。現在の結果に フィールドを追加します。 | inputlookup append=t usertogroup 例 3: users.csv ルックアップ・ファイル ($SPLUNK_HOME/etc/system/lookups または $SPLUNK_HOME/etc/apps/<app_name>/lookups 下) をサーチします。 | inputlookup users.csv 例 4: KV ストア・コレクション kvstorecoll の内容をサーチします。これは、ルックアップ・テーブル kvstorecoll_lookup 内で参照されます。テーブルから受け取るイベント数を指定します。 | inputlookup kvstorecoll_lookup | stats count 例 5: ルックアップ・テーブル kvstorecoll_lookup を使って、KV ストア・コレクション kvstorecoll の内部キー ID 値を表⽰します。内部キー ID は、コレクション内の各レコードに対する⼀意の ID です。このためには、eval および table コマンドを使⽤する必要があります。 | inputlookup kvstorecoll_lookup | eval CustKey = _key | table CustKey, CustName, CustStreet, CustCity, CustState, CustZip 例 6: 単⼀の KV ストア・コレクション・レコードのフィールド値を更新します。これに は、inputlookup、outputlookup、および eval を使⽤する必要があります。このサーチはレコードをその内部キー ID (_key フィールド) で指定し、新しい顧客名と顧客の市でレコードを更新します。レコードは KV ストア・コレク ション kvstorecoll に所属しており、ルックアップ・テーブル kvstorecoll_lookup を介してアクセスします。 | inputlookup kvstorecoll_lookup | search _key=544948df3ec32d7a4c1d9755 | eval CustName="Marge Simpson" | eval CustCity="Springfield" | outputlookup kvstorecoll_lookup append=True 例 7: ルックアップ・テーブル kvstorecoll_lookup を使って、CSV ファイルの内容を KV ストア・コレクション kvstorecoll に書き込みます。このためには、inputlookup および outputlookup の両⽅を使⽤する必要があります。 | inputlookup customers.csv | outputlookup kvstorecoll_lookup 関連項⽬ inputcsv、join、lookup、outputlookup Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、inputlookup コマンド の使⽤⽅法に関する質問と回答をご覧いただけます。 iplocation 概要 サードパーティのデータベースを使って、IP アドレスから場所情報を抽出します。 構⽂ iplocation [prefix=<string>] [allfields=<bool>] [lang=<string>] <ip-address-fieldname> 必要な引数 ip-address-fieldname 構⽂: <field> 説明: clientip などの、IP アドレスフィールドを指定します。 オプション引数 allfields 135 構⽂: allfields=<bool> 説明: 真 (True) の場合、フィールド City、Continent、Country、Region、MetroCode、Timezone、lat (緯度)、lon (経度) を追加します。デフォルトは偽 (False) で、この場合 Country、City、Region、lat、お よび lon フィールドのみが追加されます。 lang 構⽂: lang=<string> 説明: 結果の⽂字列を別の⾔語で表⽰します。たとえば、スペイン語にする場合は「lang=es」と指定しま す。使⽤する geoip データベースに応じて、使⽤できる⾔語セットは異なります。複数の⾔語を指定する場 合は、それらをカンマで区切ります。またこれは、降順の優先順位を表してもいます。「lang=code」と指 定すると、フィールドを 2 ⽂字の ISO 省略形として返します。 prefix 構⽂: prefix=<string> 説明: フィールド名の前に付ける⽂字列を指定します。これにより、追加するフィールド名が既存のフィー ルド名と競合することを回避できます。デフォルトは NULL/空⽂字列です。 説明 ip-address-fieldname に指定されている IP アドレスフィールドがデータベース内でルックアップされ、イベント に場所フィールド情報が追加されます。フィールドは City、Continent、Country、Region、MetroCode、 Timezone、lat (緯度)、lon (経度) です。各 IP フィールドですべての情報が利⽤できるとは限らないため、イベ ントに空のフィールドが存在することもあります。 内部アドレスなどの位置を持たない IP アドレスの場合、フィールドは追加されません。 例 例 1: Web アクセスイベントに場所情報を追加します。 sourcetype=access_* | iplocation clientip 例 2: Web アクセス内のクライアントエラーをサーチし、場所情報を追加して、各クライアントエラーに対する IP アドレス、市および国のテーブルを返します。 sourcetype=access_* status>=400 | head 20 | iplocation clientip | table clientip, status, City, Country 例 3: 追加されたフィールドの先頭に「iploc_」を付けます。 sourcetype = access_* | iplocation prefix=iploc_ allfields=true clientip | fields iploc_* 136 Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、iplocation コマンドの 使⽤⽅法に関する質問と回答をご覧いただけます。 join join は、指定フィールドが双⽅に共通な場合に、サーチとサブサーチの結果を結合するために⽤いられます。ま た、selfjoin コマンドを使ってテーブルを⾃⾝に結合することもできます。 join を使⽤する状況については、『サーチマニュアル』の「イベントのグループ化と相関」を参照してくださ い。 概要 メイン・サーチの結果をサブサーチの結果と、SQL のように結合します。 構⽂ join [join-options]* <field-list> [ subsearch ] 必要な引数 subsearch 説明: セカンダリ・サーチ。サブサーチの詳細は、『サーチマニュアル』を参照してください。 オプション引数 field-list 構⽂: <field>, ... 説明: join で結合に使⽤するフィールドを指定します。何も指定されていない場合、両⽅の結果セットに共 通のすべてのフィールドが使⽤されます。 join-options 構⽂: type=(inner | outer | left) | usetime=<bool> | earlier=<bool> | overwrite=<bool> | max=<int> 説明: join コマンドのオプション。 Join のオプション type 構⽂: type=inner | outer | left 説明: 使⽤する結合の種類を⽰します。基本的に inner と left (または outer) の差は、サブパイプライン内 のいずれとも⼀致しない主パイプライン内のイベントの処理⽅法です。どちらの場合でも、⼀致するイベン トが結合されます。inner 結合の結果には、メイン・サーチからの⼀致しないイベントは含まれません。left (または outer) 結合では、各イベントが⼀致するフィールド値を持たなくても構いません。また、結合され た結果には、サブサーチのいずれの⾏と⼀致しない場合でも、メイン・サーチからの各イベントが保持され ます。デフォルトは、内部結合 (inner) です。 usetime 構⽂: usetime=<bool> 説明: 結合する主結果よりも、早いまたは遅いサブサーチの結果に⼀致を制限するかどうかを指定します。 デフォルトは偽 (false) です。 137 earlier 構⽂: earlier=<bool> 説明: usetime=true の場合、earlier=true はメイン・サーチの結果がサブサーチからの以前の結果に対しての み照合されます。同様に earlier=false は、メイン・サーチの結果がサブサーチからの以降の結果に対しての み照合されます。同じ秒に発⽣した結果は、どちらの値でも除外されません。デフォルトは真 (True) で す。 overwrite 構⽂: overwrite=<bool> 説明: 同じフィールド名を持つ場合に、サブ結果からのフィールドで、主結果のフィールドを上書きするか どうかを⽰します。デフォルトは真 (True) です。 max 構⽂: max=<int> 説明: 各主結果が結合できるサブ結果の最⼤数を⽰します。max=0 の場合、制限はありません。デフォルト は 1 です。 説明 メイン結果パイプラインの結果と、最後の引数に指定されたサーチパイプラインの結果を結合する、従来の join コマンド。必要に応じて、結合するフィールドを直に指定します。フィールドを指定しない場合、両⽅の結果セッ トに共通なすべてのフィールドが使⽤されます。 例 例 1: 前の結果セットと「search foo」の結果の ID フィールドを結合します。 ... | join id [search foo] 関連項⽬ selfjoin、append、set、appendcols Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、join コマンドの使⽤⽅ 法に関する質問と回答をご覧いただけます。 kmeans 概要 選択フィールドに対して、K-Means クラスタリングを実施します。 構⽂ kmeans [kmeans-options]* <field-list> 必要な引数 field-list 構⽂: <field>, ... 説明: join で結合に使⽤するフィールドを指定します。何も指定されていない場合、両⽅の結果セットに共 通のすべてのフィールドが使⽤されます。 オプション引数 kmeans-options 構⽂: <reps>|<iters>|<tol>|<k>|<cnumfield>|<distype> 説明: kmeans コマンドのオプション。 kmeans のオプション reps 構⽂: reps=<int> 説明: 無作為の起動クラスタを使って、kmeans を繰り返す回数を指定しますデフォルトは 10 です。 iters 構⽂: maxiters=<int> 説明: 収束の失敗までに許可されている最⼤反復数を指定します。デフォルトは 10000 です。 t 構⽂: t=<num> 説明: アルゴリズム収束許容範囲を指定します。デフォルトは 0 です。 k 構⽂: k=<int>|<int>-<int> 説明: 単⼀の数字として指定した場合、使⽤するクラスタ数を⽰します。範囲を指定した場合、範囲内の各 138 clustercounts に対してクラスタ化が⾏われ、注釈付きのイベントではなく結果のサマリーが⽣成されま す。これらの結果はクラスタのサイズを表しています。また、distortion フィールドは、データがそれらの 選択されたクラスタにどのくらい適合しているのかを表します。値は 1 より⼤きく、maxkvalue 未満でな ければなりません (「制限事項」を参照)。デフォルトは 2 です。 cnumfield 構⽂: cfield=<field> 説明: 各イベントのクラスタ番号で結果に注釈を付けるフィールド名を指定します。デフォルトは CLUSTERNUM になります。 distype 構⽂: dt=l1|l1norm|cityblock|cb|l2|l2norm|sq|sqeuclidean|cos|cosine 説明: 使⽤する距離測定基準を指定します。l1、l1norm および cb は cityblock の同義語です。l2、 l2norm、および sq は sqEuclidean の同義語です。 cos は コサイン (cosine) の同義語です。デフォルト は sqEucildean です。 説明 選択フィールド (空の場合はすべての数値フィールド) に K-Means クラスタリングを実施します。同じクラスタ 内のイベントが隣同⼠になるように移動されます。必要に応じて、各イベントのクラスタ番号を表⽰できます。 制限事項 値を収集するクラスタ数 k に、limits.conf の [kmeans] スタンザに指定されている maxkvalue を超える値を指 定することはできません。デフォルトは 1000 です。 k オプションが範囲を表す場合、開始クラスタと終了クラスタ間の合計差異のカウントが、limits.conf の [kmeans] スタンザに指定されている maxkrange を超えることはできません。デフォルトは 100 です。 上記の制限は、計算処理のコストが不合理に⾼くなることを回避する⽬的で設定されています。 アルゴリズムがクラスタ化する値の合計数 (⼀般的には⼊⼒結果数) は、limits.conf の [kmeans] スタンザに指定 されている maxdatapoints により制限されています。実⾏時にこの制限を超えた場合、UI とアラートに警告の メッセージが表⽰されます。このデフォルト値は 100000000 です。 最後の制限はメモリーの過⼤な消費を避ける⽬的で設定されています。 例 例 1: 「date_hour」および「date_minute」フィールドの値に基づいて、サーチ結果を 4 つのクラスタにグルー プ化します。 ... | kmeans k=4 date_hour date_minute 例 2: すべての数値フィールドの値に基づいて、結果を 2 つのクラスタにグループ化します。 ... | kmeans 関連項⽬ anomalies、anomalousvalue、cluster、outlier Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、kmeans コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 kvform 概要 フォームテンプレートを使ってサーチ結果から値を取得します。 構⽂ kvform [form=<string>] [field=<field>] オプション引数 form 構⽂: form=<string> 説明: $SPLUNK_HOME/etc/apps/*/forms/ ディレクトリにある .form ファイルを指定します。 field 構⽂: <field> 説明: 抽出するフィールド名。デフォルトは sourcetype 説明 139 です。 値の抽出⽅法を記述したフォームテンプレートに基づいて、イベントからキー/値のペアを抽出します。form を指 定した場合、Splunk 設定フォームディレクトリ内に⾒つかった、インストールされた フォーム.form ファイルを 使⽤します。たとえば、form=sales_order の場合、すべての App に対して $PLUNK_HOME/etc/apps/<app_name>/forms 内 の sales_order.form ファイルが検索されます。処理されるすべてのイベントが、このフォームと照合され、値の抽 出が試みられます。 FORM を指定しない場合、field の値により抽出されるフィールド名が判断されます。たとえば、field=error_code の場合、error_code=404 があるイベントが 404.form ファイルに対して照合されます。 field のデフォルト値は sourcetype で、kvform コマンドはデフォルトで、値を抽出するために SOURCETYPE.form ファイルを検索します。 基本的に .form ファイルは、フォームのすべての静的部分のテキストファイルです。また、transforms.conf にあ るタイプの正規表現に対して、各所から名前付き参照が⾏われる場合もあります。.form ファイルの例を以下に⽰ します。 Students Name: [[string:student_name]] Age: [[int:age]] Zip: [[int:zip]] 例 例 1: ファイルが存在する場合、「eventtype.form」から値を抽出します。 ... | kvform field=eventtype 関連項⽬ extract、multikv、rex、xmlkv Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、kvform コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 loadjob サーチジョブが完了し、結果がキャッシュされたら、このコマンドを使って結果にアクセスまたはロードすること ができます。 概要 前に完了したサーチジョブのイベントまたは結果を読み込みます。 構⽂ loadjob (<sid>|<savedsearch-opt>) [<result-event>] [<delegate>] [<artifact-offset>] [<ignore-running>] 必要な引数 sid 構⽂: <⽂字列> 説明: 成果物を読み込むジョブのサーチ ID。例: 1233886270.2 savedsearch 構⽂: savedsearch="<user-string>:<app-string>:<search-name-string>" 説明: 成果物を読み込む保存済みサーチの⼀意の ID。保存済みサーチは、トリプレット {ユーザー,App, 保 存済みサーチ名} で⼀意に識別されます。例:savedsearch="admin:search:my Saved Search"ワイルドカードまた はすべて⼀致を指定する⽅法はありません。トリプレットの構成要素をすべて指定する必要があります。 オプション引数 result-event 構⽂: events=<bool> 説明: events=trueはイベントをロードします。events=false は結果をロードします。デフォルトは偽 (false) です。 delegate 構⽂: job_delegate=<string> 説明: savedsearch を指定した場合、このオプションで特定のユーザーが開始したジョブを選択できます。 スケジュールされたジョブは、スケジューラにより実⾏されます。ダッシュボード埋め込みサーチは、 savedsearch の dispatchAs パラメータで実⾏されます (⼀般的にはサーチの所有者)。デフォルトはスケ ジューラーになります。 artifact-offset 140 構⽂: artifact_offset=<int> 説明: ⼀致する最新の結果以外の、過去のサーチ結果を選択します。たとえば、artifact_offset=1 の場合、 2 番⽬に新しい過去のサーチ結果が使⽤されます。artifact_offset=2 の場合、3 番⽬に新しい過去のサーチ 結果が使⽤されます。利⽤可能なすべての過去のサーチ結果を選択する値を指定すると、エラーになりま す。デフォルトは 0 で、最新の結果を選択します。 ignore_running 構⽂: ignore_running=<bool> 説明: まだ実⾏中のサーチの過去のサーチ結果はスキップされます。デフォルトは真 (True) です。 説明 読み込む成果物は、サーチジョブ ID またはスケジュール済みサーチ名および現在のサーチの時間範囲で判断され ます。savedsearch が指定されており、その範囲内に複数の成果物が存在している場合は、最新の成果物が読み 込まれます。 さまざまな⽬的で利⽤できます。役⽴つ例としては、統計情報を算出する⽐較的コストの⾼いサーチを実⾏して、 それらの統計情報を |loadjob サーチでさらに集計、分類、フィールド選択、および他の操作を⾏ってさまざまな グラフや形式で表⽰することが挙げられます。 例 例 1: 管理者が保有する「search」アプリケーション内の、保存済みサーチ MySavedSearch の、最新のスケ ジュールされた実⾏結果を読み込みます。 | loadjob savedsearch="admin:search:MySavedSearch" 例 2: ID が 1233886270.2 のサーチジョブが⽣成したイベントを読み込みます。 | loadjob 1233886270.2 events=true 関連項⽬ inputcsv Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、loadjob コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 localize 概要 サーチ結果が⾒つかった時間範囲のリストを返します。 構⽂ 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 で分かれている、連続するイベントの期間。⾒つかった領域は timeafter および timebefore 修飾⼦を使って、そ れぞれ領域内の最後/最初のイベントの後/前に範囲を拡張することができます。これらの拡張は任意に⾏え、 maxpause よりも値が⼤きいと領域のオーバーラップが発⽣します。領域はサーチ順序で返されます (履歴サーチ の場合時間の降順、リアルタイム・サーチの場合データの到着順)。各領域の時間は、初期の拡張前の開始時刻で す。localize で⾒つかった領域は、map コマンドに渡されます。このコマンドは、各反復で異なる領域を使⽤しま す。また、localize は、(a) 範囲内のイベント数、(b) 範囲の期間 (秒)、(c) (範囲内のイベント数) / (範囲の期間) - 秒当たりのイベント数で定義される領域密度なども報告されます。 141 例 例 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 Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、localize コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 localop 概要 リモートピア上での後続のコマンドの実⾏を防⽌します。 構⽂ localop 説明 Splunk に後続のコマンド (このコマンドに続くすべてのコマンド) を、リモートピア上ではなくローカルに実⾏す るように指⽰します。localop コマンドは、後続のコマンドを mapreduce プロセスの reduce ステップの⼀部と なるように強制します。 例 例 1: この場合、iplocation コマンドがリモートピア上で実⾏されることはありません。単語 FOO および BAR に対する初期サーチによる、リモートピアからのすべてのイベントがサーチヘッドに送信され、そこで iplocation コマンドが実⾏されます。 FOO BAR | localop | iplocation Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、localop コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 lookup に定義したルックアップテーブルから、フィールドのルックアップを⼿動で実⾏する場合に lookup コマンドを使⽤します。props.conf に⾃動ルックアップを設定している場合、このコマンドはそれらの設 定を使⽤しません。詳細は、『ナレッジ管理』マニュアルの「CSV および外部ルックアップの設定」および「KV ストア・ルックアップの設定」を参照してください。 transforms.conf 概要 明⽰的にフィールド値のルックアップを起動します。 構⽂ lookup [local=<bool>] [update=<bool>] <lookup-table-name> ( <lookup-field> [AS <event-field>] ) [( OUTPUT | OUTPUTNEW <lookup-destfield> [AS <event-destfield>] )] 注意: 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> 構⽂: <⽂字列> 142 説明: transforms.conf 内のスタンザ名を表しています。このスタンザは、ルックアップテーブルファイル の場所を⽰します。 オプション引数 local 構⽂: local=<bool> 説明: local=true の場合、ルックアップはサーチヘッドで実⾏されます。リモート・ピアでは実⾏されませ ん。 update 構⽂: update=<bool> 説明: サーチの実⾏中にディスク上のルックアップテーブルが変更された場合、リアルタイムサーチにその 変更内容が⾃動的に反映されることはありません。反映するには、update=true を指定します。これは、⾮ リアルタイムサーチには適⽤されません。これでは、暗黙的に local=true を意味しています。デフォルトは 偽 (false) です。 <lookup-field> 構⽂: <⽂字列> 説明: イベントと照合する、ルックアップ・テーブル内のフィールドを参照します。<lookup-field> の値 は複数指定することができます。 <event-field> 構⽂: <⽂字列> 説明: ルックアップ・テーブルと照合する値を取得するイベントのフィールドを表します。デフォルトは、 <lookup-field> の値です。<local-field> の値は複数指定することができます。 <lookup-destfield> 構⽂: <⽂字列> 説明: イベントにコピーする、ルックアップ・テーブル内のフィールドを表します。<lookup-destfield> の値は複数指定することができます。 <event-destfield> 構⽂: <⽂字列> 説明: イベント内のフィールドを表します。デフォルトは、<lookup-destfield> の値となります。<localdestfield> の値は複数指定することができます。 説明 lookup コマンドを使⽤する場合、OUTPUT または OUTPUTNEW 句を指定しないと、ルックアップテーブル内 の⼀致フィールドではないすべてのフィールドが出⼒フィールドとして使⽤されます。OUTPUT を指定した場 合、出⼒ルックアップフィールドが既存のフィールドを上書きします。OUTPUTNEW を指定した場合、出⼒ フィールドがすでに存在しているイベントへのルックアップは実⾏されません。 例 例 1: transforms.conf には、スタンザ名が「usertogroup」のルックアップ・テーブルが指定されています。この ルックアップテーブルには、最低でも 2 つのフィールド「user」および「group」が存在しています。各イベント に対して、テーブル内のフィールド「local_user」の値をルックアップし、⼀致した任意の項⽬に対して、ルック アップ・テーブル内の group フィールドの値が、イベント内の user_group フィールドに書き込まれます。 ... | lookup usertogroup user as local_user OUTPUT group as user_group ルックアップサーチの最適化 lookup コマンドを変換コマンド と同じパイプライン内で使⽤する場合、変換コマンドの後までルックアップ対象 フィールドを保持できるならば、変換コマンドの後にルックアップを⾏ってください。以下に例を⽰します。 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 コマンドの結果のみを照合 すれば良いので、処理が⾼速に⾏われます。 関連項⽬ appendcols、inputlookup、outputlookup Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、lookup コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 makecontinuous 概要 143 フィールドを X 軸連続にします (グラフ/時間グラフが開始)。 構⽂ makecontinuous [<field>] <bucketing-option>* 必要な引数 <bucketing-option> データタイプ: bins | span | start-end 説明: 離散化オプション。詳細は、「Bucketing のオプション」を参照してください。 オプション引数 <field> データタイプ: <field> 説明: フィールド名を指定します。 Bucketing のオプション bins 構⽂: bins=<int> 説明: 離散化に使⽤するビンの最⼤数を設定します。 span 構⽂: <log-span> | <span-length> 説明: 時間または対数ベースの期間に基づく期間⻑を使って、各バケツのサイズを設定します。 <start-end> 構⽂: end=<num> | start=<num> 説明: 数値バケツの最⼩/最⼤範囲を設定します。[start, end] の範囲外のデータは破棄されます。 L og-sp a n 構⽂ <log-span> 構⽂: [<num>]log[<num>] 説明: 対数ベースのスパンを設定します。最初の数値は係数です。2 番⽬の数値が底です。最初の数値を指 定する場合は、実数 >= 1.0 および < 底でなければなりません。底を指定する場合、> 1.0 の実数でなけれ ばなりません (厳密に 1 より⼤きい)。 sp a n-length 構⽂ 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)、1/100 秒 (cs)、または 1/10 秒 (ds) のタイムスケール 144 説明 データがない期間に空のバケツを導⼊し、データがある期間を量⼦化することで、X 軸のバケツを数値的に連続に します。 例 例 1: 10 分の期間で、「_time」を連続にします。 ... | makecontinuous _time span=10m 関連項⽬ chart、timechart Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、makecontinuous コマ ンドの使⽤⽅法に関する質問と回答をご覧いただけます。 makemv 概要 区切られたフィールドを複数値フィールドに変換します。 構⽂ makemv [delim=<string>|tokenizer=<string>] [allowempty=<bool>] [setsv=<bool>] <field> 必要な引数 field 構⽂: <field> 説明: フィールド名を指定します。 オプション引数 delim 構⽂: delim=<string> 説明: この⽂字列が登場する所で field を分割します。デフォルトは 1 つのスペース (" ") です。 tokenizer 構⽂: tokenizer=<string> 説明: field のテキストに対して繰り返し照合される、捕捉グループ付きの正規表現。各⼀致に対して、最 初に取得されたグループが、新たに作成される複数値フィールドの値として使⽤されます。 allowempty 構⽂: allowempty=<bool> 説明: 複数値フィールド内で空⽂字列値を許可します。これを設定して delim を使⽤する場合、区切り⽂字 列の繰り返しがあると、空⽂字列値 (例:delim="," および field="a,,b") が⽣成されます。⼀⽅デフォルトで は、何も値は⽣成されません。これを設定して tokenizer を使⽤する場合、⻑さ 0 の⼀致では空⽂字列値が ⽣成されます。デフォルトでは、何も値は⽣成されません。デフォルトは偽 (false) です。 setsv 構⽂: setsv=<bool> 説明: 真 (True) の場合、makemv は決定されたフィールドの値を単⼀の値にまとめて、同じフィールドに 設定します。(同じフィールドに複数値と単⼀値が同時に存在すると、Splunk 内部処理での取り扱いが困難 です。このような場合は、このフラグを無視してください。)デフォルトは偽 (false) です。 説明 単⼀値フィールドを単純な⽂字列区切り⽂字 (複数⽂字可能) で分割、または正規表現を使って分割することで、 複数値フィールドに変換します。 例 例 1: sendmail のサーチ結果に対して、「senders」の値を複数の値に分離します。次に上位の値を表⽰しま す。 eventtype="sendmail" | makemv delim="," senders | top senders 例 2: 「foo」の値を、複数の値に分離します。 ... | makemv delim=":" allowempty=true foo 関連項⽬ 145 mvcombine、mvexpand、nomv Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、makemv コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 map 概要 ループ演算⼦、各サーチ結果に対してサーチを実⾏します。 構⽂ map (<searchoption>|<savedsplunkoption>) [maxsearches=int] 必要な引数 <savedsplunkoption> 構⽂: <⽂字列> 説明: 各⼊⼒結果に対して実⾏する保存済みサーチ名。デフォルトはありません。 <searchoption> 構⽂: [ <subsearch> ] | search="<string>" 説明: 各⼊⼒結果に対して実⾏するリテラル・サーチ。例:[search source="$source$"]。デフォルトはありません。 starttimeu::$start$ endtimeu::$end$ オプション引数 maxsearches 構⽂: maxsearches=<int> 説明: 実⾏する最⼤サーチ数。これ以上のサーチ結果がある場合、メッセージが⽣成されます。デフォルト は 10 です。 説明 コマンドは各⼊⼒イベントまたは結果に対して繰り返しサーチを実⾏します。savedsearchに、または を使⽤する場合、map コマンドでは⼊⼒結果内のフィールド名と照合する $variable$ ⽂字列を代 ⼊することができます。たとえば $count$ などの⽂字列を持つサーチは、⼊⼒サーチ結果内の count フィールド の値でその⽂字列が置換されます。 map search="string" は、$_serial_id$ として提供されるサーチ ID フィールドもサポートしています。これには、各サーチ実⾏時 に増加する数字が含まれます。つまり、最初に実⾏されるサーチの場合値は 1、2 番⽬のサーチは 2 などのよう になります。 map map コマンドの [subsearch] 形式は、$variable$ の代⼊をサポートしていません。 サブサーチの詳細は、以下の項⽬を参照してください。 『サーチマニュアル』の「サブサーチについて」を参照してください。 『サーチマニュアル』の「サーチコマンドの使⽤⽅法」を参照してください。 サブサーチのパーシングに失敗した場合、map コマンドは有益なエラー・メッセージを表⽰しないことに注意し てください。トラブルシューティングのためには、⽬的のサーチ⽂字列を⼿作業で作成し、それを直接実⾏してく ださい。 例 例 1: 保存済みサーチで map コマンドを起動します。 error | localize | map mytimebased_savedsearch 例 2: 開始/終了時間値をマップします。 ... | map search="search starttimeu::$start$ endtimeu::$end$" maxsearches=10 例 3: この例では、sudo イベントを検索し、次に map コマンドを使って sudo イベントの前にログオンした ユーザーのコンピュータと時間をトレースします。まず、sudo イベントを検索する以下のサーチを実⾏します。 sourcetype=syslog sudo | stats count by user host 以下のような結果テーブルが返されます。 ユーザー ホスト userA serverA 1 カウント userB serverA 3 146 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 インデックスのユーザーログオンイベントをサーチしま す。以下のような結果テーブルが返されます。 _time 10/12/12 8:31:35.00 AM computername Workstation$ computertime 10/12/2012 8:25:42 AM username userA usertime 10/12/2012 08:31:35 AM (この例を提供した Alacercogitatus さんに感謝の意を表明します。) 関連項⽬ gentimes、search Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、map コマンドの使⽤⽅ 法に関する質問と回答をご覧いただけます。 metadata 概要 指定したインデックスまたは分散サーチピアから、ソース、ソースタイプ、またはホストのリストを返します。 構⽂ | metadata type=<metadata-type> [<index-specifier>] [<server-specifier>] 必要な引数 type 構⽂: type= hosts | sources | sourcetypes 説明: 返すメタデータのタイプを指定します。 これは、リテラル⽂字列 hosts、sources、または sourcetypes のいずれかになります。type 引数を省略した場合、何も結果は返されません。 オプション引数 index-specifier 構⽂: index=<index_name> 説明: 結果を返すインデックスを指定します。ワイルドカード (*) を使⽤できます。index=* は、内部イン デックス以外のインデックスに⼀致します。index=_* は内部インデックスに⼀致します。デフォルトは、デ フォルト・インデックスです (⼀般的には main)。 server-specifier 構⽂: splunk_server=<string> 説明: 結果を返す分散サーチピアを指定します。使⽤する場合、1 つの splunk_server のみを指定できます。 デフォルトでは、設定されているすべてのサーチ・ピアが情報を返します。 説明 コマンドは、指定したインデックスまたは分散サーチピアに関するデータを返します。ホスト、ソース、 ソースタイプの⼀覧、指定したメタデータの各地で最初、最後、最新のイベントなどの情報が返されます。特定の 期間 (例:過去 7 ⽇間) のインデックスのスナップショットは提供されません。たとえば、以下のサーチを実⾏す ると: metadata | metadata type=hosts 以下のような結果が返されます。 ここで: firstTime は、インデクサーがこのホストからのイベントを初めて発⾒した時刻のタイムスタンプです。 147 は、インデクサーがこのホストからのイベントを最後に発⾒した時刻のタイムスタンプです。 は、このホストからのイベントをインデクサーが発⾒した最新の時刻の indextime です (前回の更 新時刻)。 totalcount は、このホストからのイベント数合計です。 type は、指定された表⽰するメタデータのタイプです。このサーチは type=hosts を指定しているため、host 列も存在しています。 lastTime recentTime たいていの場合、データがライブストリーム配信されている時には、lastTime と だし、履歴データの場合は、これらの値が異なる可能性があります。 recentTime は等しくなります。た ⼩規模なテスト環境では、データは完全です。ただし、カテゴリ値の値数が⼤きい⼤規模環境では、データが不完 全になることもあります。これは、metadata コマンドが妥当な時間とメモリー使⽤量で実⾏されるように、意図 的に⾏われています。 例 例 1: 「_internal」インデックス内のイベントの「sourcetypes」の値を返します。 | metadata type=sourcetypes index=_internal これによって、以下のレポートが返されます。 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") これで、結果がより把握しやすくなりました。 例 2: サーバー foo の「_audit」インデックス内のイベントの、sourcetype の値を返します。 | metadata type=sourcetypes index=_audit splunk_server=foo 関連項⽬ dbinspect Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、metadata コマンドの 148 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、metadata コマンドの 使⽤⽅法に関する質問と回答をご覧いただけます。 metasearch 概要 <logical-expression> 内の単語に基づいて、インデックスからイベントのメタデータを取得します。 構⽂ metasearch [<logical-expression>] オプション引数 <logical-expression> 構⽂: <time-opts>|<search-modifier>|((NOT)?<logical-expression>)|<indexexpression>|<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では、フィールド source、sourcetype、host、_time、index、および splunk_server のみが使⽤できます。 <lit-value> 構⽂: <string> | <num> 説明: フィールドの厳密値またはリテラル値で、⽐較式内で⽤いられます。 <値> 構⽂: <lit-value> | <field> 説明: ⽐較式内で、フィールドのリテラル (数値または⽂字列) 値または他のフィールド名。 インデックス式 <search-modifier> 構⽂: <field-specifier>|<savedsplunk-specifier>|<tag-specifier> 時間オプション Splunk では、時間に基づくサーチを⾏うための、さまざまなオプションが⽤意されています。時間修飾⼦の⼀覧 については、「サーチの時間修飾⼦」を参照してください。 <timeformat> 構⽂: timeformat=<string> 説明: starttime および endtime の期間の時間形式を設定します。デフォルトでは、タイムスタンプの フォーマットは次のようになります:timeformat=%m/%d/%Y:%H:%M:%S。 <time-modifier> 構⽂: earliest=<time_modifier> | latest=<time_modifier> 説明: 相対または絶対時間を使って、開始/終了時間を指定します。時間修飾⼦構⽂の詳細は、「サーチへ の時間修飾⼦の指定」を参照してください。 説明 <logical-expression> 内の単語に基づいて、インデックスからイベントのメタデータを取得します。メタデータ フィールドには、source、sourcetype、host、_time、index、および splunk_server が含まれます 例 例 1: ホスト「webserver1」からの「404」を持つイベントのメタデータを返します 149 ... | metasearch 404 host="webserver1" 関連項⽬ metadata、search Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、metasearch コマンド の使⽤⽅法に関する質問と回答をご覧いただけます。 multikv 概要 テーブルで書式設定された (table-formatted) イベントからフィールド値 (field-values) を抽出します。 構⽂ multikv [conf=<stanza_name>] [<multikv-option>]* オプション引数 conf 構⽂: conf=<stanza_name> 説明: multikv.conf にフィールド抽出を定義した場合、サーチ内でこの引数を使ってスタンザを参照しま す。詳細は、『管理マニュアル』の「設定ファイルリファレンス」に記載されている multikv.conf の説明を 参照してください。 <multikv-option> 構⽂: copyattrs=<bool> | fields <field-list> | filter <field-list> | forceheader=<int> | last_line=<int> | max_header_line=<int> | max_header_lookahead=<int> | multitable=<bool> | noheader=<bool> | passthru=<bool> | rmorig=<bool> | start_line=<int> 説明: 表形式イベントからフィールドを抽出するためのオプション。 Multikv のオプション copyattrs 構⽂: copyattrs=<bool> 説明: 真 (True) の場合、multikv はオリジナルのイベントからすべてのフィールドを、そのイベントから⽣ 成されたイベントにコピーします。偽 (False) の場合、オリジナルのイベントからフィールドはコピーされ ません。この場合、イベントには _time フィールドがないため、UI にそれを表⽰する⽅法がないことに注 意してください。デフォルトは真 (True) です。 fields 構⽂: fields <field-list> 説明: multikv 抽出が設定するフィールドをこのリストに制限します。このリストにないテーブル内の フィールドは無視されます。 filter 構⽂: filter <term-list> 説明: 指定した場合、multikv は最低でもフィルタ・リスト内のいずれかの⽂字列を含まないテーブル⾏を スキップします。"multiple words" や "trailing_space " などのように、引⽤符で囲んだ式を指定できます。 forceheader 構⽂: forceheader=<int> 説明: 特定の⾏番号 (1 ベース) をテーブルのヘッダーとして使⽤するように強制します。 空⾏はカウント されません。デフォルトで multikv はヘッダー⾏を⾃動的に決定しようと試みます。 last_line 構⽂: last_line=<int> 説明: 設定した場合、この⾏数を超えた⼊⼒イベントは考慮されません。イベント内のテーブルの後に、⾮ テーブル形式のデータがある場合に使⽤します。start_line が必要です。また、start_line よりも⼤きな値で なければなりません。 max_header_line=<int> 構⽂: max_header_line=<int> 説明: 設定すると、noheader=false および forceheader が設定されていない場合に、multikv がスキャン を実⾏してヘッダーを⾃動識別する⾏数を制限します。この数字が、ヘッダーとしてみなす最後の⾏を⽰し ます。 max_header_lookahead=<int> 構⽂: max_header_lookahead=<int> 説明: パフォーマンス最適化⽤の制約。ヘッダーを識別する場合に、ヘッダーとして⾃動識別するために、 より良い⾏ (よりヘッダーに近い⾏) を探すために、与えられた⾃動識別ヘッダーを超えてスキャンする⾏ 数。⾃動ヘッダー抽出で⽬的のヘッダーが⾒つからない最悪のケースでは、この値を増やすことも可能で す。multikv の処理に⻑時間かかっているような場合は、これに 1 を設定することもいいでしょう。デフォ ルトは 2 です。 multitable 150 構⽂: multitable=<bool> 説明: 元のイベントの単⼀の single _raw 内に、複数のテーブルを⼊れることができるかどうかを指定しま す。(デフォルトは真 (True)) noheader 構⽂: noheader=<bool> 説明: ヘッダー⾏識別なしでテーブルを処理します。テーブルのサイズは最初の⾏から推測され、フィール ドには Column_1、Column_2、... のような名前が付けられます。noheader=trueは、multitable=false (デフォ ルト = false) を暗⽰しています。 passthru 構⽂: passthru=<bool> 説明 :デフォルト (偽 (False)) では、multikv テーブルとして認識されない⼊⼒イベントは破棄されま す。passthru=true の場合、multikv テーブルとして認識されない⼊⼒イベントは、出⼒イベント内に保持さ れます。これは、multikv テーブルとして認識された⼊⼒イベントに適⽤される rmorig とは独⽴していま す。デフォルトは偽 (false) です。 rmorig 構⽂: rmorig=<bool> 説明: 真 (True) の場合、出⼒結果にオリジナルのイベントは含まれません。偽 (False) の場合、オリジナ ルのイベントは出⼒結果内に保持されます。オリジナルから⼀連の結果が⽣成された後、各オリジナルが⽣ 成されます。(デフォルトは真 (True)) start_line 構⽂: start_line=<int> 説明: 設定した場合、start_line より前の⼊⼒内の⾏は考慮されません。正の数値でなければなりません。 テーブル形式データの前に⾮テーブル形式のデータがある場合、または複数のテーブルがあるデータで、前 半のテーブルとは関係なく後半のテーブルを正確に抽出したい場合に使⽤します。 説明 表形式の情報を持つイベントからフィールドを抽出します (例:top、netstat、ps など)。各テーブル⾏に対し て、新しいイベントが作成されます。フィールド名は、テーブルのタイトル (title) ⾏から取得されます。 multikv で処理できるようになっている、この種類のデータの例を次に⽰します。 Name Age Occupation Josh 42 SoftwareEngineer Francine 35 CEO Samantha 22 ProjectManager ここで主な特徴は: テキストの各⾏が概念的レコードを表している。 列が揃っている。 テキストの最初の⾏が、列内のデータ名を表している。 multikv では、このテーブルを 1 つのイベントから、関連フィールドを持つ 3 つのイベントに変換することがで きます。固定揃えの⽅が簡単に処理できますが、単に順番に並んでいるフィールドでも処理できることがありま す。 ⼀般的な⽅針としては、ヘッダー、オフセット、およびフィールド数を判別し、次に後続の⾏のどのコンポーネン トをそれらのフィールド名に含めるかを決定します。単位単⼀イベント内の複数のテーブルを処理できます (multitable=true の場合)。ただし、2 番⽬のテーブルのヘッダー⾏は⼤⽂字にする、または ALLCAPS 名にする 必要があります。 ヘッダー⾏の⾃動検出はテキスト⾏、および ALLCAPS 処理またはすべて⼤⽂字になっている場合に正常に機能 します。 例 例 1: 「splunkd」を含む⾏があった場合に、COMMAND フィールドを抽出します。 ... | multikv fields COMMAND filter splunkd 例 2: pid および command フィールドを抽出します。 ... | multikv fields pid command 関連項⽬ extract、kvform、rex、xmlkv Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、multikv コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 multisearch 151 概要 複数サーチを同時実⾏します。 構⽂ | multisearch <subsearch1> <subsearch2> <subsearch3> ... 必要な引数 <subsearch> 構⽂: 説明: 最低 2 つのストリーミングサーチ。 説明 コマンドは、複数のストリーミングサーチを同時に実⾏する⽣成コマンドです。これには最低 2 つの サブサーチが必要で、各サブサーチでは純粋なストリーミング操作のみを⾏えます。ストリーミングサーチの例と しては、search、eval、where、fields、rex などのコマンドを使ったサーチが挙げられます。詳細は、『サーチ マニュアル』の「サーチの種類」を参照してください。 multisearch 例 例 1: インデックス a と b の両⽅のイベントをサーチし、各事例に eval を使って異なるフィールドを追加 | multisearch [search index=a | eval type = "foo"] [search index=b | eval mytype = "bar"] 関連項⽬ append、join Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、multisearch コマンド の使⽤⽅法に関する質問と回答をご覧いただけます。 mvcombine 概要 サーチ結果内で 1 つのフィールド値が異なっている複数のイベントを、複数値フィールドを持つ単⼀の結果にま とめます。 構⽂ mvcombine [delim=<string>] <field> 必要な引数 field 構⽂: <field> 説明: 結合するフィールド名、これにより複数値フィールドが⽣成されます。 オプション引数 delim 構⽂: delim=<string> 説明: 結合⽂字列形式の単⼀値フィールドを⽣成するために使⽤する⽂字列を定義します。たとえば、 フィールドの値が「1」、「2」、および「3」で、区切り⽂字が「,」の場合、結合された単⼀値フィールド は「1, 2, 3」になります。デフォルトは 1 つのスペース (" ") です。 説明 特定のフィールドを除けば同⼀の結果グループを、当該フィールドが複数値フィールドとなるように単⼀の結果に まとめます。 つまり、⼀連の⼊⼒結果を受け付けて、すべてのフィールド値が同⼀の結果グループを探し、選択したフィールド を保存します。これらの結果はすべて単⼀の結果に結合されます。フィールドは複数値フィールドになり、結合対 象結果からのすべての値が含まれます。 raw イベントでは多くのフィールドがそれぞれ異なっているため、⼀般的には fields コマンドを使って⼀連の利 ⽤可能フィールドをペアリングした後、または特定のレポート・コマンドの結果を操作する場合に、これが役⽴ち ます。 また特別な動作として、mvcombine は単⼀値版のフィールドも⽣成できます。この場合、すべての値が delim パ ラメータに指定された⽂字列で区切られて、単⼀の⽂字列にまとめられます。サーチ結果を調査する⼿段の中に は、このような単⼀値表記を好むものもあります (たとえば、UI での CSV へのエクスポート、splunk search 152 を使ったコマンド・ライン・サーチの実⾏など)。複数値対応でないコマンドの場合も、このよ うに単⼀値フィールドに変換してから、それを利⽤することができます。 "..." -output csv サーチ結果へのアクセス⼿法の⼤半は複数値表記を好みます (UI での結果の表⽰、JSON へのエクスポート、コ マンド・ライン・サーチから splunk search "..." -output json を使った JSON のリクエスト、REST API からの JSON または XML のリクエストなど)。このような⼿段では、指定された delim には何の効果もありません。 また、将来のリリースの Splunk では、同じフィールドの単⼀値表記と複数値表記の同時利⽤のサポートは廃⽌さ れる可能性があります。 例 例 1: IP アドレスの値を除いて同⼀の 3 件のイベントを考えてみましょう。 Nov 28 11:43:48 2010 host=datagen-host1 type=dhclient: bound to ip=209.202.23.154 message= ASCII renewal in 5807 seconds. Nov 28 11:43:49 2010 host=datagen-host1 type=dhclient: bound to ip=160.149.39.105 message= ASCII renewal in 5807 seconds. Nov 28 11:43:49 2010 host=datagen-host1 type=dhclient: bound to ip=199.223.167.243 message= ASCII renewal in 5807 seconds. 以下のサーチは、3 つの IP アドレスをカンマで区切った (ip="209.202.23.154, つのフィールドを返します。 160.149.39.105, 199.223.167.243")、1 ... | mvcombine delim="," ip 例 2: 複数値イベントで: sourcetype="WMI:WinEventLog:Security" | fields EventCode, Category,RecordNumber | mvcombine delim="," RecordNumber | nomv RecordNumber 例 3: 「foo」の値とコロン区切り⽂字を組み合わせます。 ... | mvcombine delim=":" foo 関連項⽬ makemv、mvexpand、nomv Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、mvcombine コマンド の使⽤⽅法に関する質問と回答をご覧いただけます。 mvexpand 概要 複数値フィールドの値を、その各値を持つ個別のイベントにデプロイします。 構⽂ mvexpand <field> [limit=<int>] 必要な引数 field 構⽂: <field> 説明: 複数値フィールド名。 オプション引数 limit 構⽂: limit=<int> 説明: 各⼊⼒イベントで使⽤する、<field> の値数を指定します。デフォルトは 0 (無制限) です。 説明 指定されたフィールドを持つ各結果に対して、当該フィールドが複数値フィールドの場合、そのフィールドの各値 に対応する新たな結果を作成します。 制限事項 153 特定の結果バッチの拡張時に mvexpand が利⽤できる RAM の量には制限があります。⼀般的に⼊⼒の結果群は maxresults 以下になり、それらの結果の拡張はメモリー内に 1 回のみ保持されます。必要な合計メモリーは、平 均結果サイズを結果群内の結果数で乗算し、さらに拡張する複数値フィールドの平均サイズで乗算した値になりま す。 これが、limits.conf の max_mem_usage_mb の値を超えた場合、その結果群の出⼒は切り詰められ、警告メッ セージが⽣成されます。この制限のデフォルト値は、200MB です。 例 例 1: 複数値フィールド「foo」の各値に対応する新しいイベントを作成します。 ... | mvexpand foo 例 2: 複数値フィールド「foo」の最初の 100 件の値に対応する新しいイベントを作成します。 ... | mvexpand foo limit=100 例 3: mvexpand コマンドは、1 つの複数値フィールドのみを処理できます。この例では、複数の複数値フィー ルドを持つイベントを、各フィールドの値に対応する個別のイベントに拡張する⽅法を説明していきます。たとえ ば、sourcetype=data の以下のイベントを考えてみましょう。 2012-10-01 00:11:23 a=22 b=21 a=23 b=32 a=51 b=24 2012-10-01 00:11:22 a=1 b=2 a=2 b=3 a=5 b=2 まず、rex コマンドを使ってフィールド a と b の値を抽出します。次にeval コマンドと mvzip 関数を使って、a と b の値から新しいフィールドを作成します。 sourcetype=data | 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 新しいフィールドに対して、mvexpand および rex コマンドを使って新しいイベントを作成し、フィールド alpha と beta を抽出します。 sourcetype=data | 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 フィールドのみを表⽰します。 (この例を提供した Duncan さんに感謝の意を表明します。JSON データと spath コマンド を使ったこの例の別 バージョンもあります。) 関連項⽬ makemv、mvcombine、nomv Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、mvexpand コマンドの 使⽤⽅法に関する質問と回答をご覧いただけます。 nomv 概要 指定した複数値フィールドを、単⼀値フィールドに変換します。 154 構⽂ nomv <field> 必要な引数 field 構⽂: <field> 説明: 複数値フィールド名。 説明 指定した複数値フィールドの値を、1 つの単⼀値に変換します (fields.conf 内の複数値フィールド設定に優先しま す)。 例 例 1: sendmail イベントに対して、senders フィールドの値を単⼀値に結合し、次に上位 10 件の値を表⽰しま す。 eventtype="sendmail" | nomv senders | top senders 関連項⽬ makemv、mvcombine、mvexpand、convert Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、nomv コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 outlier 概要 範囲外の数値を削除します。 構⽂ outlier <outlier-option>* [<field-list>] オプション引数 <outlier-option> 構⽂: <action> | <mark> | <param> | <uselower> 説明: outlier のオプション <field-list> 構⽂: <field>, ... 説明: フィールド名の、カンマまたはスペース区切りリスト。 outlier のオプション <action> 構⽂: action=rm | remove | tf | transform 説明: 外れ値の処理を指定します。RM | REMOVE は、数値の外れ値を持つイベントを削除します。TF | TRANSFORM は、外れ値をその閾値に切り捨てます。また、mark=true の場合、値にプレフィックス 「000」を追加します。デフォルトは tf です。 <mark> 構⽂: mark=<bool> 説明: action=transform (または tf)、および mark=true の場合、⾮外れ値範囲の値にプリフィックス「000」 を付けます。action=remove の場合、何の効果もありません。デフォルトは偽 (false) です。 <param> 構⽂: param=<num> 説明: 外れ値検出の閾値を管理するパラメータ。外れ値は param 外の数値を四分位範囲で乗算したものと して定義されます。デフォルトは 2.5 です。 <uselower> 構⽂: uselower=<bool> 説明: 上記に加えて、中央値を下回る値の外れ値を探すかどうかを指定しますデフォルトは偽 (false) で す。 説明 選択フィールド内の範囲外の数値を削除または切り捨てます。フィールドが指定されていない場合、outlier はす 155 べてのフィールドの処理を試みます。 例 例 1: webserver イベントの時間グラフで、範囲外の平均 CPU 値を変換します。 404 host="webserver" | timechart avg(cpu_seconds) by host | outlier action=tf 例 2: 範囲外の数値をすべて削除します。 ... | outlier 関連項⽬ anomalies、anomalousvalue、cluster、kmeans Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、outlier コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 outputcsv 概要 サーチ結果を指定した csv ファイルに出⼒します。 構⽂ outputcsv [append=<bool>] [create_empty=<bool>] [dispatch=<bool>] [usexml=<bool>] [singlefile=<bool>] [<filename>] オプション引数 append 構⽂: append=<bool> 説明: 「append」が真 (True) の場合、既存の CSV ファイルが存在する場合はそれに追加、ない場合は必 要に応じてファイルを作成します。CSV ヘッダーを持つファイルがすでに存在している場合は、そのヘッ ダーが参照しているフィールドのみを⽣成します。.gz ファイルには追加できません。デフォルトは偽 (false) です。 create_empty 構⽂: create_empty=<bool> 説明: 真 (True) を設定すると、結果がない 0 ⻑のファイルを作成します。偽 (False) の場合、ファイルは 作成されず、また append=false の場合は、すでに存在しているファイルが削除されます。デフォルトは偽 (false) です。 dispatch 構⽂: dispatch=<bool> 説明: 真 (True) を設定すると、$SPLUNK_HOME/var/run/splunk/dispatch/<job ファイルを参照します。 id>/ のジョブディレクトリにある filename 構⽂: <filename> 説明: サーチ結果を書き込む csv ファイル名を指定します。このファイルは、$SPLUNK_HOME/var/run/splunk になければなりません。ファイル名を指定しない場合、各結果の内容を CSV の⾏として「_xml」フィール ドに書き込みます。それ以外の場合は、ファイルに書き込みます (ファイル名に拡張⼦がない場合は、.csv が追加されます)。 singlefile 構⽂: singlefile=<bool> 説明: singlefile に真 (True) を設定しており、出⼒が複数のファイルにまたがる場合は、それを 1 つの ファイルにまとめます。デフォルトは真 (True) です。 usexml 構⽂: usexml=<bool> 説明: ファイル名がない場合に、csv 出⼒を XML にエンコードするかどうかを⽰します。UI から outputcsv を起動する場合は、このオプションを使⽤しないでください。 例 例 1: サーチ結果を CSV ファイル「mysearch.csv」に出⼒します。 ... | outputcsv mysearch 関連項⽬ inputcsv 156 Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、outputcsv コマンドの 使⽤⽅法に関する質問と回答をご覧いただけます。 outputlookup 概要 サーチ結果を、指定した静的ルックアップ・テーブル または KV ストア・コレクションに書き込みます。 構⽂ outputlookup [append=<bool>] [create_empty=<bool>] [max=<int>] [key_field=<field_name>] [createinapp=<bool>] (<filename> | <tablename>) 必要な引数 <filename> 構⽂: <⽂字列> 説明: ルックアップ・ファイル名。ファイルは .csv または .csv.gz で終了する必要があります。 <tablename> 構⽂: <⽂字列> 説明: transforms.conf 内のスタンザに指定されたルックアップ・テーブル名。任意のルックアップ・タイプ (CSV、外部、または KV ストア) に対してルックアップ・テーブルを設定できます。 オプション引数 append 構⽂: append=<bool> 説明: 真 (True) を設定した場合、outputlookup はサーチ結果を既存の .csv ファイルまたは KV ストア・コ レクションに追加しようと試みます (存在している場合、ない場合は必要に応じてファイルを作成します)。 既存のファイルまたはコレクションが存在している場合、outputlookup は既存の .csv ファイルまたはコレク ションにすでに存在していたフィールドのみを⽣成します。outputlookupは、.gz ファイルに追加することは できません。デフォルトは偽 (false) です。 create_empty 構⽂: create_empty=<bool> 説明: 真 (True) を設定すると、結果がない 0 ⻑のファイルを作成します。偽 (False) の場合、ファイルは 作成されず、すでに存在しているファイルは削除されます。デフォルトは真 (True) です。 createinapp 構⽂: createinapp=<bool> 説明: 偽 (False) を設定した場合、または現在のアプリケーションコンテキストが存在しない場合、システ ムのルックアップディレクトリ内にファイルが作成されます。デフォルトは真 (True) です。 key_field 構⽂: key_field=<field_name> 説明: KV ストア・ベースのルックアップの場合、指定されたフィールド名を値へのキーとして使い、その 値を置換します。 max 構⽂: max=<int> 説明: 出⼒する最⼤⾏数。デフォルトは無制限です。 説明 指定されたファイル名 (ファイル名の最後は .csv または .gz になる)、または transforms.conf のルックアップ・ テーブル設定で指定されたテーブル名で、結果をルックアップ・テーブルに保存します。ルックアップ・テーブル は KV ストア・コレクションまたは CSV ルックアップを参照できます。外部ルックアップに outputlookup コマ ンドは使⽤できません。 CSV ベースのルックアップの場合、ルックアップ・ファイルが存在しないと、現在のアプリケーションのルック アップ・ディレクトリ内にファイルが作成されます。ルックアップ・ファイルがすでに存在している場合は、その ファイルが outputlookup の結果で上書きされます。 オプションに false を設定した場合、または現在のアプリケーション・コンテキストが存在しない場合 は、システムのルックアップ・ディレクトリ内にファイルが作成されます。 createinapp フィールド・ルックアップのテーブル設定の詳細は、『ナレッジ管理』マニュアルの「CSV および外部ルック アップの設定」および「KV ストア・ルックアップの設定」を参照してください。 App キー・バリュー・ストア・コレクションの詳細は、『管理マニュアル』の「KV ストアについて」を参照して ください。 例 例 1: ルックアップ・テーブル usertogroup に書き込みます (transforms.conf に定義されています)。 157 | outputlookup usertogroup 例 2: $SPLUNK_HOME/etc/system/lookups または ファイルに書き込みます。 $SPLUNK_HOME/etc/apps/*/lookups 下にある、users.csv ルックアップ・ | outputlookup users.csv 例 3: Shalimar Restaurant の⾷品検査 (food inspection) イベントを KV ストア・コレクション kvstorecoll に 書き込みます。このコレクションは、ルックアップ・テーブル kvstorecoll_lookup 内で参照されます。 index=sf_food_health sourcetype=sf_food_inspections name="SHALIMAR RESTAURANT" | outputlookup kvstorecoll_lookup 例 4: ルックアップ・テーブル kvstorecoll_lookup を使って、CSV ファイルの内容を KV ストア・コレクション kvstorecoll に書き込みます。このためには、inputlookup および outputlookup の両⽅を使⽤する必要があります。 | inputlookup customers.csv | outputlookup kvstorecoll_lookup 例 5: 単⼀の KV ストア・コレクション・レコードのフィールド値を更新します。これに は、inputlookup、outputlookup、および eval を使⽤する必要があります。レコードはその内部キー ID (_key フィー ルド) の値で指定し、新しい顧客名と顧客の市でレコードを更新します。レコードは KV ストア・コレクション kvstorecoll に所属しており、ルックアップ・テーブル kvstorecoll_lookup を介してアクセスします。 | inputlookup kvstorecoll_lookup | search _key=544948df3ec32d7a4c1d9755 | eval CustName="Marge Simpson" | eval CustCity="Springfield" | outputlookup kvstorecoll_lookup append=True KV ストア・コレクション内のレコードの、内部キー ID 値の取得⽅法については、inputlookup コマンドの例 5 を 参照してください。 関連項⽬ inputlookup、lookup、inputcsv、outputcsv Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、outputlookup コマンド の使⽤⽅法に関する質問と回答をご覧いただけます。 outputtext 概要 結果の raw テキスト (_raw) を _xml フィールドに出⼒します。 構⽂ outputtext [usexml=<bool>] オプション引数 usexml 構⽂: usexml=<bool> 説明: usexml に真 (True) を設定した場合 (デフォルト)、_xml 内の _raw フィールドのコピーは xml エス ケープ処理されます。usexml に false を設定した場合、_xml フィールドは _raw の完全コピーとなりま す。 説明 出⼒のイベントテキストを⽣成するために、outputtext は内部機構として作成されています。 デフォルトでは、イベントのテキストの XML エスケープ処理が⾏われ、それが _xml フィールドにコピーされま す。usexml=false の場合は、単純に _xml フィールドにコピーされます。 outputtext はレポート・コマンドなので、すべてのイベントがサーチヘッドに取り込まれ、Web インターフェイ スを使⽤している場合は出⼒が統計 UI に表⽰されます。 例 例 1: 現在のサーチの _raw フィールドを、_xml に出⼒します。 ... | outputtext 関連項⽬ outputcsv Answers 158 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、outputtext コマンドの 使⽤⽅法に関する質問と回答をご覧いただけます。 overlap 注意: overlap コマンドを使って、サマリーインデックスをフィル/バックフィルすることはお勧めできません。 インデックスをバックフィルする、またはサマリーインデックスのギャップを埋める (フィル) ためのスクリプト fill_summary_index.py が⽤意されています。詳細は、『ナレッジ管理マニュアル』を参照してください。 概要 サマリーインデックス内で、時間が重なる、または⾒逃したイベントをサーチします。 構⽂ overlap 説明 サマリーインデックス内の時間が重複するイベントを探すか、または保存済みスケジュール済みサーチがイベント を⾒逃した可能性がある時間のギャップを探します。 ギャップを⾒つけたら、 その期間に対してサーチを実⾏し、結果のサマリーインデックスを作成してくだ さい (「 | collect」を使⽤)。 重複するイベントが⾒つかった場合は、 サーチ⾔語を使ってサマリーインデックスから重複を⼿動削除し てください。 コマンドは、外部 python スクリプトを起動します (etc/searchscripts/sumindexoverlap.py)。このスク リプトはサマリーインデックスからの⼊⼒イベントを受け取り、「info_search_name」は同じだけれども 「info_search_id」が違うイベント間の重複やギャップを探します。 overlap 重要: ⼊⼒イベントには、次のフィールドが存在していることが前提になっています。「info_min_time」、 「info_max_time」 (それぞれ包含および除外)、「info_search_id」および「info_search_name」フィールド。 インデックスに raw イベント (_raw) が存在する場合、overlap コマンドは機能しません。インデックスには、 chart、stats、および timechart などの結果が含まれていなければなりません。 例 例 1: 「summary」内の重複イベントを探します。 index=summary | overlap 関連項⽬ collect、sistats、sitop、sirare、sichart、sitimechart Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、overlap コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 pivot このページは現在作業中で、まもなく更新される予定です。 pivot コマンドは、⽐較的単純なピボット操作を⾏いますが、より洗練されたピボット操作を⾏うために、複雑に することも可能です。基本的にこのコマンドは、stats および xyseries のラッパーとなります。新しい動作を追加 する必要はありませんが、ピボット操作に慣れているならば、その⽅が簡単なこともあります。 このコマンドは⽣成サーチで、サーチパイプラインの先頭に指定する必要があります。これには、⼤量の⼊⼒が必 要です。データモデル、オブジェクト、および実⾏するピボットサーチを指定する必要があります。ピボットサー チには、セル、⾏、列、フィルタ、制限、⾏/列書式設定、および⾏ソートオプションを指定することができま す。 概要 特定のデータモデルオブジェクトに対して、ピボットサーチを実⾏します。 構⽂ | pivot <datamodel-name> <objectname> <pivot search> 必要な引数 datamodel-name 構⽂: <⽂字列> 説明: サーチ対象データモデル名。 159 objectname 構⽂: <⽂字列> 説明: サーチ対象データモデルオブジェクト名。 pivot search 構⽂: (<cellvalue>)* (SPLITROW <rowvalue>)* (SPLITCOL colvalue [options])* (FILTER <filter info>)* (LIMIT <limit info>)* (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。 ⾏の sp lit-by エレメント <rowvalue> 構⽂: fieldname [AS <label>] [RANGE start=<value> end=<value> max=<value> size=<value>] [PERIOD (auto | year | month| day | hour | minute | second)] [TRUELABEL <label>] [FALSELABEL <label>] 説明: 各 SPLITROW に対して、これらのオプションを指定しない、⼀部指定する、またはすべて指定する ことができます。これらは任意の順序で表⽰されます。フィールド名は「AS <label>」を使って変更するこ とができます。ここで「label」は、レポート内の⾏の名前です。 その他のオプションは、指定されたフィールドのデータタイプによって異なります (fieldname): RANGE は数値にのみ適⽤されます。オプション (start、end、max、および size) をすべて指定する必要は ありません。 PERIOD はタイムスタンプにのみ適⽤されます。これを使って、バケツを作成する期間を指定します。 TRUELABEL は論理値にのみ適⽤されます。これを使って、真の値のラベルを指定します。 FALSELABEL は論理値にのみ適⽤されます。これを使って、偽の値のラベルを指定します。 列の sp lit-by エレメント TBD フィルタエレメント <filter info> 構⽂: <fieldname> <comparator> <value> 説明: 値式に使⽤できるコンパレータ (comparator) は、フィールド値のタイプによって異なります。 ⽂字列: is、contains、isNot、doesNotContain、startsWith、endsWith、isNull、isNotNull、および regex。 ipv4: is、contains、isNot、doesNotContain、startsWith、isNull、isNotNull。 数値: =、 !=、<、<=、>、>=、isNull、isNotNull。 論理値: isNull、isNotNull、= 、または is 例 例 1: このコマンドは、「Tutorial」データモデルの「HTTP Requests』オブジェクトのイベント数をカウント します。 | pivot Tutorial HTTP_requests count(HTTP_requests) AS "Count of HTTP requests" これを、ダッシュボードパネルの単⼀値レポートとして書式設定することができます。 160 例 2: チュートリアルのデータモデルを使って、ホストあたりの HTTP リクエスト (HTTP Requests) 数のピ ボットテーブルを作成します。 | pivot Tutorial HTTP_requests count(HTTP_requests) AS "Count" SPLITROW host AS "Server" SORT 100 host 例 3: | pivot myModel myObject avg(myValue) SPLITROW foo AS bar FILTER thing BY top 10 count(otherThing) 関連項⽬ datamodel、stats、xyseries Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、pivot コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 predict 概要 フィールドの将来値を予測します。 構⽂ predict <variable_to_predict> [AS <newfield_name>] [<predict_option>] 必要な引数 <variable_to_predict> 構⽂: <field> 説明: 予測する変数のフィールド名。 オプション引数 <newfield> 構⽂: <⽂字列> 説明: <variable_to_predict> のフィールド名を変更します。 <predict_option> 構⽂: algorithm=<algorithm_name> | correlate_field=<field> | future_timespan=<number> | holdback=<number> | period=<number> | lowerXX=<field> | upperYY=<field> 説明: 予測のオプション。すべてのオプションを任意の順序で指定できます。 Predict のオプション algorithm 構⽂: algorithm= LL | LLP | LLT | LLB 説明: 適⽤する予測アルゴリズム名を指定します。LL (ローカルレベル)、LLP (シーズンに合わせたローカ ルレベル)、LLT (ローカルレベル傾向)、または LLB (⼆変量ローカルレベル) を指定できます。各アルゴリ ズムには、期待する最低データポイント数があります。詳細は、後述する「アルゴリズムのオプション」を 参照してください。 correlate 構⽂: correlate=<field> 説明: ⼆変量モデルに対して、相関するフィールドを⽰します。 future_timespan 構⽂: future_timespan=<number> 説明: 将来に向けた予測の⻑さ。正の数値でなければなりません。algorithm=LLB の場合は、このオプ 161 ションを使⽤できません。 holdback 構⽂: holdback=<number> 説明: モデルの構築に使⽤しない、最後からのデータポイント数 (<number>) を⽰します。たとえば、 「holdback=10」の場合、最後の 10 件の値の予測を算出します。⼀般的には、予測値と実際のデータを⽐ 較するために⽤いられます。algorithm=LLB の場合に必要です。 lowerXX 構⽂: lower<int>=<field> 説明: 下位 <int> パーセントの信頼区間に対するフィールド名を指定します。<int> は、0 以上 100 未満 になります。デフォルトは lower95 で、この場合 95% の予測が該当すると予測されます。 period 構⽂: period=<number> 説明: algorithm=LLP の場合に、時系列データのシーズン期間を指定します。指定しない場合、期間が⾃ 動算出されます。アルゴリズムが LLP 以外の場合は無視されます。 upperYY 構⽂: upper<int>=<field> 説明: 上位 <int> パーセントの信頼区間に対するフィールド名を指定します。<int> は、0 以上 100 未満 になります。デフォルトは upper95 で、この場合 95% の予測が該当すると予測されます。 アルゴリズムのオプション すべてのアルゴリズムは、Kalman フィルタに基づいたバリエーションです。アルゴリズム名は LL、LLP、 LLT、および LLB です。最初の 3 つは⼀変量時系列を、4 番⽬は⼆変量時系列を処理します。上記の各アルゴリ ズムには、期待する最低データポイント数があります。⼗分に有効なデータポイントが提供されない場合は、エ ラーメッセージが表⽰されます。たとえば、フィールド⾃体に⼗分な数のデータポイントがある場合もあります が、ホールドバックが⼤きいと有効なデータポイント数が⾜りないことがあります。 アル ゴリ ズム のオ プ ショ ン アル ゴリ ズム 名 説明 LL ローカ ルレベ これは⼀変量モデルで、傾向もシーズンもありません。最低 2 つのデータポイントが必要です。 ル LLP シーズ ンに合 わせた シーズンを持つ⼀変量モデル。時系列の周期性は⾃動的に算出されます。周期の 2 倍以上のデー ローカ タポイントが必要です。 ルレベ ル LLT ローカ これは⼀変量モデルで、傾向を考慮しますが、シーズンは考慮しません。最低 3 つのデータポイ ルレベ ントが必要です。 ル傾向 LLB ⼆変量 ローカ ルレベ ル これは⼆変量モデルで、傾向もシーズンもありません。最低 2 つのデータポイントが必要です。 LLB は、1 つのデータセットを使って、他の予測を⾏います。たとえば、それがデータセット Y を使ってデータセット X の予測を⾏う場合を考えてみましょう。holdback=10 の場合、このこ とは LLB が Y の最後の 10 件のデータポイントを使って、X の最後の 10 件のデータポイント の予測を⾏うことを意味しています。 信頼区間 信頼区間の lower および upper パラメータのデフォルトは、lower95 および upper95 です。これは、95% の予 測が該当すると期待される信頼区間を⽰しています。 ⼀般的に、たいていの場合、⼀部の予測は以下の理由で信頼区間外になります。 信頼区間が予測の 100% をカバーすることはありません。 信頼区間は、期待値の確⽴性であり、結果が期待値と完全に⼀致する訳ではありません。 例 例 1: 前のダウンロード数に基づいて、今後のダウンロード数を予測します。 index=download | timechart span=1d count(file) as count | predict count 162 例 2: foo に周期性があるかどうかに応じて、LL または LLP を使って foo の値を予測します。 ... | timechart span="1m" count AS foo | predict foo 例 3: 信頼区間の上限と下限を⼀致させる必要はありません ... | timechart span="1m" count AS foo | predict foo as fubar algorithm=LL upper90=high lower97=low future_timespan=10 holdback=20 例 4: LLB アルゴリズムを表しています。foo2 フィールドは、それを foo1 フィールドと相関させて予測されて います。 ... | timechart span="1m" count(x) AS foo1 count(y) AS foo2 | predict foo2 as fubar algorithm=LLB correlate=foo1 holdback=100 関連項⽬ trendline、x11 Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、predict コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 rangemap rangemap コマンドにより、詳細名を使⽤して数値フィールドの値範囲を分類することができます。 概要 選択されたフィールドに定義されている数値範囲に応じて設定された、range フィールドを作成します。 構⽂ rangemap field=<string> (<attribute_name>=<numeric_range>)...[default=<string>] 必要な引数 field 構⽂: field=<string> 説明: ⼊⼒フィールド名。このフィールドは数値でなければなりません。 オプション引数 attribute_name 構⽂: <string>=<numeric_range> 説明: 指定された数値範囲に対して、範囲フィールドに出⼒する名前。 default 構⽂: default=<string> 説明: ⼊⼒フィールドが範囲と⼀致しない場合、これを使ってデフォルト値を定義します。値を定義しない 場合、デフォルトは「None」 (なし) です。 attribute_name のパラメータ <numeric_range> 構⽂: <start>-<end> 説明: attribute_name パラメータの属性となる範囲の、開始整数値と終了数値を定義します。最初の値は 2 番⽬の値未満でなければなりません。値は整数または浮動⼩数点数になります。負の値を指定することが できます。例:Dislike=-5--1, DontCare=0-0, Like=1-5。 説明 163 フィールドに、⼊⼒ field の値が範囲内の任意の 合、range には default の値が設定されます。 range attribute_name の名前を設定します。⼀致する範囲がない場 設定する範囲は重複しても構いません。オーバーラップする値がある場合、range フィールドは適合するすべての 値を含む複数値フィールドとして作成されます。たとえば、low=1-10, elevated=5-15 で⼊⼒フィールドの値が 10 の場合は、range=low および code=elevated になります。 例 例 1: date_second が 1〜30 の場合は range に「green」を、31〜39の場合は「blue」を、40〜59の場合は 「red」を、範囲が⼀致しない (例:date_second=0) 場合は「gray」を設定します。 ... | 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 単⼀値パネルでの rangemap の使⽤ 単⼀値ダッシュボードパネルで rangemap の値を使⽤するように設定することができます。たとえば、Splunk には 「低」、「上昇」、「重⼤」の⾊を定義する CSS が⽤意されています。CSS をカスタマイズして、これらの値に 別の⾊を適⽤することができます。また、range の値と⾊を関連付けるためには、ビューの XML を編集する必要 があります。以下の⼿順に従ってください。 1. [管理] >> [ユーザーインターフェイス] >> [ビュー] に移動して、編集するビューを選択します。 2. rangemap サーチを使⽤する単⼀値パネルに対して、<title /> タグの下に以下の⾏を追加します。 <option name="classField">range</option> たとえば、「Example」ビューがあり、サーチ名が「Count of events」の場合、XML は以下のようになりま す。 <?xml version='1.0' encoding='utf-8'?> <dashboard> <label>Example</label> <row> <single> <searchName>Count of events</searchName> <title>Count of events</title> <option name="classField">range</option> </single> </row> </dashboard> 関連項⽬ eval Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、rangemap コマンドの 使⽤⽅法に関する質問と回答をご覧いただけます。 rare 概要 フィールドの⼀番少ない値を表⽰します。 構⽂ rare <top-opt>* <field-list> [<by-clause>] 必要な引数 <field-list> 構⽂: <string>,... 説明: カンマ区切り形式のフィールド名。 <top-opt> 164 構⽂: countfield=<string> | limit=<int> | percentfield=<string> | showcount=<bool> | showperc=<bool> 説明: rare のオプション (top と同じ)。 オプション引数 <by-clause> 構⽂: by <field-list> 説明: グループ化する 1 つ以上のフィールド名。 Top のオプション countfield 構⽂: countfield=<string> 説明: count の値を書き込む新規フィールド名。デフォルトは「count」です。 limit 構⽂: limit=<int> 説明: 返すタプル数を指定します。「0」の場合、maxresultrows までのすべての値を返します (「制限事 項」を参照)。maxresultrows よりも⼤きな値を選択すると、エラーになります。デフォルトは 10 です。 percentfield 構⽂: percentfield=<string> 説明: パーセントの値を書き込む新規フィールド名。デフォルトは「percent」です。 showcount 構⽂: showcount=<bool> 説明: count フィールド (countfield オプションを参照)およびその組のカウントを作成するかどうかを指定 します。デフォルトは真 (True) です。 showperc 構⽂: showperc=<bool> 説明: percent フィールド (percentfield オプションを参照) およびその組の相対普及度を作成するかどう かを指定します。デフォルトは真 (True) です。 説明 フィールドリスト内のすべてのフィールドの値の組の中で、⼀番頻度が少ない組を探します。オプションの byclause 句を指定した場合、group-by フィールドの各⼀意の値の組の中で、希な組を返します。 top コマンドと同じように動作しますが、最頻値ではなくもっとも頻度が少ない値が検索されます。 制限事項 rare により返される結果数には制限があります。デフォルトでこの制限値は 10 ですが、limit オプションを使っ て limits.conf の [rare] スタンザにある maxresultrows の指定されている制限の値まで、他の値を選択すること ができます。デフォルトで上限は 50,000 です。この値で、rare が使⽤するメモリー量の上限を効果的に保持で きます。 例 例 1: url フィールドの、⼀番頻度が少ない値を表⽰します。 ... | rare url 例 2: 「host」に対して、⼀番少ない「user」値を探します。 ... | rare user by host 関連項⽬ top、stats、sirare Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、rare コマンドの使⽤⽅ 法に関する質問と回答をご覧いただけます。 regex 概要 指定した正規表現に⼀致する結果を削除または保持します。 構⽂ regex (<field>=<regex-expression> | <field>!=<regex-expression> | <regex-expression>) 必要な引数 165 <regex-expression> 構⽂: "<string>" 説明: PCRE ライブラリがサポートする、Perl 互換の正規表現。引⽤符が必要です。 オプション引数 <field> 構⽂: <field> 説明: 正規表現に対して値を照合するフィールド名を指定します。フィールドが指定されていない場合は、 「_raw」に対して照合されます。 説明 regex コマンドは、指定した正規表現に⼀致しない結果を削除します。正規表現を指定して、それに⼀致する結果 (field=regex-expression) または⼀致しない結果 (field!=regex-expression) のみを保持できます。 注意: 正規表現の引数に OR (「|」) コマンドを使⽤する場合は、正規表現全体を引⽤符で囲む必要があります (例:...|regex "| パイプ付き正規表現")。 注意: Splunk サーチ⾔語は、サーチ⾔語をエスケープ⽂字として使⽤する正規表現に加えて、バックスラッシュ (円記号) をエスケープ⽂字として使⽤します。たとえば、リテラル・バックスラッシュ (円記号) を照合する必要 がある場合、regex の引⽤符で囲んだ引数に、4 つの連続したバックスラッシュ (円記号) を指定する必要があり ます。例: |regex _raw="\\\\" 例 例 1: _raw フィールドに、ルーティング不可能クラス A (10.0.0.0/8) IP アドレスが含まれているサーチ結果の みを保持します。 ... | regex _raw="(?=!\d)10\.\d{1,3}\.\d{1,3}\.\d{1,3}(?!\d)" 例 2: 使⽤例 ... | regex _raw="complicated|regex(?=expression)" 関連項⽬ rex、search Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、regex コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 relevancy 概要 イベントとクエリーの⼀致度を計算します。 構⽂ relevancy 説明 イベントの _raw フィールドとサーチ (search) のキーワードの⼀致度に基づいて、関連性 (relevancy) フィール ドを計算します。デフォルトの時間順ではなく、⼀致度の⾼いイベント/ドキュメントを取得する場合に役⽴ちま す。イベントに希少なサーチキーワードがある、頻度が⾼い、単語が少ない、などの場合にイベントの関連性スコ アが⾼くなります。たとえば、「disk error」をサーチした場合、「disk」 (希少単語) が多数、そして「error」 が 1 つ存在している短いイベント/ドキュメントの⽅が、「disk」が 1 つ、「error」が多数存在しているとても ⼤きなイベントよりも関連性が⾼くなります。 注意 :現在、relevancy コマンドは機能しません。 http://docs.splunk.com/Documentation/Splunk/latest/ReleaseNotes/KnownIssues にある既知の問題 (Known issues) ページの SPL-93039 を参照してください。 例 例 1: サーチの関連性を計算して、結果を降順に並べ替えます。 disk error | relevancy | sort -relevancy 関連項⽬ abstract、highlight、sort 166 Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、relevancy コマンドの 使⽤⽅法に関する質問と回答をご覧いただけます。 reltime 概要 相対時間フィールド「reltime」を作成し、「now」と「_time」の差異の値を、ユーザーが理解できる形で reltime フィールドに設定します。 構⽂ reltime 説明 「now」と「_time」の差異の値を、ユーザーが理解できる形で reltime フィールドに設定します。ユーザーが理 解できる形の値の例としては、「5 ⽇前」、「1 分前」、「2 年前」などが挙げられます。 例 例 1: サーチから返されたイベントに reltime フィールドを返します。 ... | reltime 関連項⽬ convert Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、reltime コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 rename コマンドを使ってフィールド名を変更します。このコマンドは、「pid」の代わりに「製品 ID」を使⽤する など、より分かりやすい名前をフィールドに指定する場合に役⽴ちます。複数のフィールド名を変更する場合は、 ワイルドカードを使⽤できます。 rename 概要 指定フィールドまたは複数のフィールドの名前を変更します。 構⽂ rename (wc-field AS wc-field)... 必要な引数 wc-field 構⽂: <⽂字列> 説明: フィールド名と変更する名前。ワイルドカードを使⽤できます。 説明 フィールド名をフレーズに変更するには、引⽤符を使⽤します。 ... | rename SESSIONID AS sessionID 複数のフィールド名を変更するには、ワイルドカードを使⽤します。 ... | rename *ip AS *IPaddress ソースフィールドと宛先フィールドの両⽅に同じ数のワイルドカードを持つワイルドカード式が指定されている場 合、ワイルドカード部の名前の変更処理は宛先ワイルドカード式に持ち越されます。以下の「例 2」を参照してく ださい。 注意: 1 つのフィールドを複数の名前に変更することはできません。たとえば、フィールド A を ⼀度に「A as B, A as C」と指定することはできません。 ... | stats first(host) AS site, first(host) AS report 167 注意: このコマンドを使って、複数のフィールドを結合して 1 つのフィールドにすることはできません。値とと もに NULL (存在しない) フィールドがあるためです。たとえば、product_id または pid フィールドを持つイベン トがある場合、... | rename pid AS product_id は pid の値を product_id フィールドには結合しません。イベントに 対する pid が存在しない場合、product_id は NULL 値で上書きされます。代わりに eval コマンドと coalesce() 関数を参照してください。 例 例 1: _ip フィールドの名前を「IPAddress」に変更します。 ... | rename _ip as IPAddress 例 2: 「foo」で始まるフィールドの名前を「bar」で始まる名前に変更します。 ... | rename foo* as bar* 例 3: count フィールドの名前を変更します。 ... | rename count as "CountofEvents" 関連項⽬ fields、table Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、rename コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 replace 概要 指定フィールドの値を、指定値に置換します。 構⽂ replace (<wc-str> with <wc-str>)+ [in <field-list>] 必要な引数 wc-string 構⽂: <⽂字列> 説明: 1 つまたは複数のフィールド値とその置換値を指定します。ワイルドカードを使って、1 つまたは複 数の⽤語を照合することができます。 オプション引数 field-list 構⽂: <string> [<string>...] 説明: フィールド値の置換を⾏う、フィールド名のカンマ区切りリストを指定します。_internal フィールド の代⽤品、「in <fieldname>」が必要です。 説明 指定フィールドで、最初の⽂字列単体を、2 番⽬の⽂字列で置換します (何も指定しない場合はすべてのフィール ド)。後でワイルドカードを使⽤しない置換を指定した場合、それ以前に指定した置換よりも優先されます。ワイ ルドカード置換の場合、完全⼀致が部分⼀致に優先します。優先関係を間違えないように、置換を 2 つの個別の 呼び出しに分離することをお勧めします。ワイルドカード置換を使⽤する場合、結果には同数のワイルドカードが 存在するか、またはワイルドカードが 0 でなければなりません。ワイルドカード (*) を利⽤すれば、置換する多数 の値を指定できます。 例 例 1: 「localhost」で終わるホスト (host) 値を「localhost」に変更します。 ... | replace *localhost with localhost in host 例 2: 「localhost」が他の⽂字列に優先するように、host 値の⽂字列の順序を変更します。 ... | replace "* localhost" with "localhost *" in host 例 3: 2 つのフィールドの値を変更します。 ... | replace aug with August in start_month end_month 例 5: IP アドレスをより詳細な名前に変更します。 168 ... | replace 127.0.0.1 with localhost in host 例 6: フィールドの値をより詳細な名前に置換します。 ... | replace 0 with Critical, 1 with Error in msg_level 例 7: エラーメッセージをサーチして、空の⽂字列を空⽩⽂字に置換します。注意: この例は、実際の空⽂字列 (値がない) がない限り機能しません。 "Error exporting to XYZ :" | rex "Error exporting to XYZ:(?.*)" | replace "" with " " in errmsg 例 8: 内部フィールド _time の値を置換します。 sourcetype=* | head 5 | eval _time="XYZ" | stats count by _time | replace *XYZ* with *ALL* in _time 関連項⽬ fillnull、rename Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、replace コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 rest rest コマンドは、Splunk Enterprise REST API エンドポイントと連携します。 詳細は『REST API ユーザー・マニュアル』および『REST API リファレンス・マニュアル』を参照してくださ い。 概要 Splunk Enterprise REST API エンドポイントを読み込んで、サーチ結果としてリソース・データを返します。 構⽂ rest <rest-uri> [count=<int>] [splunk_server=<string>] [timeout=<int>] (<get-arg-name>=<get-argvalue>)... 必要な引数 rest-uri 構⽂: <uri> 説明: Splunk REST API エンドポイントへの URI パス。 get-arg-name 構⽂: <⽂字列> 説明: REST 引数名。 get-arg-value 構⽂: <⽂字列> 説明: REST 引数値。 オプション引数 count 構⽂: count=<int> 説明: 返される結果数を制限します。デフォルトは 0 (無制限) です。 splunk_server 構⽂: splunk_server=<string> 説明: 結果を 1 台の特定のサーバーに制限します。サーチヘッドを参照するには、「local」を使⽤しま す。 timeout 構⽂: timeout=<int> 説明: REST エンドポイントの応答待機時の、タイムアウト (秒) を指定します。デフォルトは 60 秒です。 例 例 1: 保存済みサーチジョブにアクセスします。 | rest /services/search/jobs count=0 splunk_server=local | search isSaved=1 例 2: 現在のサーチユーザーをすべてのイベントに追加します (ログインしているユーザーに関連するイベントの みを表⽰するレポートの作成に役⽴ちます)。 * | head 10 | join [ | rest splunk_server=local /services/authentication/current-context | rename username as 169 auth_user_id | fields auth_user_id ] Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、rest コマンドの使⽤⽅ 法に関する質問と回答をご覧いただけます。 return 概要 サブサーチから値を返します。 構⽂ return [<count>] [<alias>=<field>] [<field>] [$<field>] 引数 <count> 構⽂: <int> 説明: ⾏数を指定します。デフォルトは 1 で、この場合結果の最初の⾏がコマンドに渡されます。 <alias> 構⽂: <alias>=<field> 説明: 返すフィールドのエイリアスと値を指定します。 <field> 構⽂: <field> 説明: 返すフィールドを指定します。 <$field> 構⽂: <$field> 説明: 返すフィールド値を指定します。 説明 コマンドは、サブサーチからの値を渡すことを⽬的にしています。到着したイベントを、1 つのイベント、 1 つの属性「search」で置換します。 パフォーマンスを向上するために、return コマンドは到着する結果を head で、そして結果フィールドを fields で⾃動的に制限します。 return このコマンドでは、フィールド=値の「return source」、エイリアス=値の「return 「return $srcip」の簡単な出⼒も利⽤できます。 ip=srcip」、および値の コマンドのデフォルトでは、渡された結果の最初の⾏のみを⼊⼒として使⽤します。return 2 ip のように、 count で複数の⾏を指定することができます。また、各⾏の間には 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 たいていの場合、サブサーチの最後に が不要になります。 return コマンドを使⽤すると、head、fields、rename、format、および dedup 例 例 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 Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、return コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 170 reverse 概要 結果の並び順を逆にします。注意:reverse コマンドは、サーチにより返されるイベントには影響しません。表⽰ 順序にのみ影響を与えます。CLI の場合、任意のデフォルト設定または明⽰的な maxout 設定が含まれます。 構⽂ reverse 説明 注意 :⾮常に⼤きな結果セット (数百万件以上の結果) に対して reverse を実⾏するには、⼤量の⼀時ストレー ジ、I/O、および時間を必要とします。 例 例 1: 結果セットの順序を逆にします。 ... | reverse 関連項⽬ head、sort、tail Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、reverse コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 rex サーチ時 フィールド抽出 または⽂字列値間と⽂字代⼊には、rex コマンド を使⽤します。Splunk Enterprise は Perl 互換の正規表現 (PCRE) を使⽤します。Splunk Enterprise 正規表現の詳細は、『ナレッジ管理マニュア ル』を参照してください。 概要 フィールドを抽出するための正規表現名前付きグループ、またはフィールド内の⽂字列を置換または代⼊するため の sed 式を指定します。 構⽂ rex [field=<field>] (<regex-expression> [max_match=<int>] [offset_field=<string>] | mode=sed <sedexpression>) 必要な引数 field 構⽂: field=<field> 説明: 情報を抽出するフィールド。デフォルトは _raw です。 mode 構⽂: mode=sed 説明: sed 式を使⽤していることを⽰す場合に指定します。 regex-expression 構⽂: "<string>" 説明: 指定フィールドから照合、抽出する情報を定義する、PCRE 正規表現。引⽤符が必要です。 sed-expression 構⽂: "<string>" 説明: mode=sed の場合に、正規表現に⼀致する項⽬の⽂字列を置換するか、または⽂字を代⼊するかを指 定します。他の sed コマンドは実装されていません。引⽤符が必要です。Sed モードはグローバル (g) およ び N 番⽬登場 (N) のフラグをサポートしています。ここで、N は⽂字列内の⽂字の位置を表す数値です。 オプション引数 max_match 構⽂: max_match=<int> 説明: 正規表現と照合する回数を指定します。1 より⼤きな値を指定した場合、結果となるフィールドは複 数値フィールドになります。デフォルトは 1 です。0 を指定すると、無制限になります。 offset_field 構⽂: offset_field=<string> 説明: 指定した場合、<string> で指定された名前でフィールドが作成されます。このフィールドの値は照合 171 対象フィールドに、0 オフセット⽂字の観点で⼀致するエンドポイントになります。たとえば、正規表現が "(?<tenchars>.{10})" の場合、それはフィールドの最初の 10 ⽂字に⼀致して、offset_field の内容は "0-9" になります。デフォルトでは設定されていません。 sed 式 rex コマンドを sed モードで使⽤する場合、置換 (s) または⽂字代⼊ (y) オプションを使⽤できます。 sed を使ったデータ内のテキスト置換 (s) を使⽤するための構⽂を以下に⽰します。 "s/<regex>/<replacement>/<flags>" <regex> は PCRE 正規表現で、捕捉グループを含めることができます。 <replacement> は、正規表現に⼀致した項⽬と置換する⽂字列です。前⽅参照には、\n を使⽤します。こ こで「n」は 1 桁の整数を⽰します。 <flags> に「g」を指定すると、すべての⼀致項⽬が置換されます。また、数字を指定すると、指定された⼀ 致項⽬が置換されます。 sed を使った⽂字代⼊の構⽂を以下に⽰します。 "y/<string1>/<string2/>" これは、<string1> に⼀致する⽂字を <string2> の⽂字に置き換えます。 説明 コマンドは、指定フィールドの値を⾮アンカー正規表現と照合し、名前付きグループを対応する名前のフィー ルドに抽出します。フィールドが指定されていない場合、_raw フィールドに正規表現が適⽤されます。rex を _raw フィールドに対して実⾏すると、パフォーマンスに影響を与える可能性があることに注意してください。 rex mode=sed の場合、選ばれたフィールド (フィールドが指定されていない場合は _raw)の値に sed の式 (⽂字を置 換または代⼊する) が適⽤されます。sed 構⽂は、インデックス時 に機密データをマスクするためにも使⽤され ます。詳細は、『データの取り込み』マニュアルの sed を使ったデータの匿名化に関する項⽬を参照してくださ い。 例 例 1: 正規表現を使って from および to フィールドを抽出します。raw イベントに「From: Susan To: Bob」が 含まれている場合、「from=Susan」および「to=Bob」になります。 ... | rex field=_raw "From: (?<from>.*) To: (?<to>.*)" 例 2: 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+)" 例 3: 正規表現を⼀連の数値と照合し、それらを匿名化⽂字列と置換するには、sed 構⽂を使⽤します。 ... | rex field=ccnumber mode=sed "s/(\d{4}-){3}/XXXX-XXXX-XXXX-/g" 例 4: 潜在的な攻撃者の IP アドレスとポートを表⽰します。 sourcetype=linux_secure port "failed password" | rex "\s+(?<ports>port \d+)" | top src_ip ports showperc=0 このサーチは rex を使って port フィールドと値を抽出します。次に、潜在的な攻撃者を⽰す、サーチで返された 上位のソース IP アドレス (src_ip) とポートのテーブルを表⽰します。 関連項⽬ extract、kvform、multikv、regex、spath、xmlkv rtorder 概要 リアルタイムサーチからイベントをバッファに格納して、可能な時にそれらを時間の昇順に⽣成します 構⽂ rtorder [discard=<bool>] [buffer_span=<span-length>] [max_buffer_size=<int>] オプション引数 buffer_span 構⽂: buffer_span=<span-length> 説明: バッファの⻑さを指定します。デフォルトは、10 秒です。 discard 構⽂: discard=<bool> 172 説明: 異常なイベントを常に破棄するかどうかを指定します。デフォルトは偽 (False) です。 max_buffer_size 構⽂: max_buffer_size=<int> 説明: バッファの最⼤サイズを指定します。デフォルトは 50000、または limits.conf の [search]スタンザ の max_result_rows 設定になります。 説明 rtorder コマンドは、⼊⼒イベントを取得してバッファに時間の昇順に格納し、イベントのタイムスタンプの時間 から、buffer_span で⽰される期間以上経過した場合にのみ、格納されている順序でバッファからイベントを送信 する、ストリーミングイベントバッファを作成します。 バッファの最⼤サイズを超えた場合にも、バッファからイベントが⽣成されます。 すでに送信されたイベントよりも前の時刻のイベントを⼊⼒として受信した場合、この順序違いのイベントは即座 に送信されます (discard オプションに真 (True) が設定されている場合を除く))。discard に真 (True) を設定し た場合、順序違いイベントは常に破棄されるため、時間の昇順での出⼒が厳格に保証されます。 例 例 1: 過去 5 分間のイベントをバッファに保管し、5 分以上経過したらそれを時間の昇順に送信します。新たに 受信したイベントが 5 分以上前の時刻を持つ場合、その時刻以降のイベントをすでに送信しているならば、当該 イベントを破棄します。 ... | rtorder discard=t buffer_span=5m 関連項⽬ sort Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、rtorder コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 run script を参照してください。 savedsearch 概要 保存済みサーチのサーチ結果を返します。 構⽂ savedsearch <savedsearch name> [<savedsearch-opt>]* 必要な引数 savedsearch name 構⽂: <⽂字列> 説明: 実⾏する保存済みサーチの名前。 Savedsearch のオプション savedsearch-opt 構⽂: <macro>|<replacement> 説明: savedsearch オプションを使って、代⼊なしまたはマクロの置換に使⽤するキー/値のペアを指定す ることができます。 macro 構⽂: nosubstitution=<bool> 説明: 真 (True) の場合、マクロの置換は⾏われません。デフォルトは偽 (false) です。 replacement 構⽂: <field>=<string> 説明: マクロ置換に使⽤するキーと値のペア。 説明 保存済みサーチ (ディスクにキャッシュされている場合もある) を実⾏します。また、マクロ置換を実⾏します。 例 173 例 1: 保存済みサーチ「mysecurityquery」を実⾏します。 | savedsearch mysecurityquery 関連項⽬ search Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、savedsearch コマンド の使⽤⽅法に関する質問と回答をご覧いただけます。 script 概要 呼び出しを外部 Perl または Python プログラムにします。 構⽂ script (perl|python) <script-name> [<script-arg>]* [maxinputs=<int>] 必要な引数 script-name 構⽂: <⽂字列> 説明: 実⾏するスクリプト名からパスとファイル拡張⼦を除いたもの。 オプション引数 maxinputs 構⽂: maxinputs=<int> 説明: スクリプトに渡す上位の結果数を指定します。デフォルトは 100 です。 script-arg 構⽂: <⽂字列> 説明: スクリプトに渡す 1 つまたは複数の引数。複数の引数を渡す場合は、それぞれをスペースで区切って ください。 説明 サーチ結果を変更または⽣成する、外部 python または perl プログラムを呼び出します。スクリプトは $SPLUNK_HOME$/etc/searchscripts に保管されており、任意のユーザーが実⾏できなければなりません。script がカス タムサーチコマンドの場合、$SPLUNK_HOME/etc/apps/<app_name>/bin/ に配置する必要があります。スクリプトを起動 するには: python の場合、splunk_home/bin/python を使⽤します。 Perl の場合、/usr/bin/perl を使⽤します。 例 例 1: Python スクリプト「myscript」に引数 myarg1 および myarg2 を指定して実⾏し、結果をメールで送信 します。 ... | script python myscript myarg1 myarg2 | sendemail [email protected] Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、script コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 scrub 概要 特段に指定されていない限り、$SPLUNK_HOME/etc/anonymizer にある辞書および設定ファイルを使⽤して、サーチ結 果を匿名化します。 構⽂ scrub [public-terms=<filename>] [private-terms=<filename>] [name-terms=<filename>] [dictionary=<filename>] [timeconfig=<filename>] 174 オプション引数 public-terms 構⽂: public-terms=<filename> 説明: 匿名化する公開⽤語を含むファイル名を指定します。 private-terms 構⽂: private-terms=<filename> 説明: 匿名化する秘密⽤語を含むファイル名を指定します。 name-terms 構⽂: name-terms=<filename> 説明: 匿名化する名前を含むファイル名を指定します。 dictionary 構⽂: dictionary=<filename> 説明: 匿名化する⽤語の辞書を含むファイル名を指定します。 timeconfig 構⽂: timeconfig=<filename> 説明: 匿名化する時間設定を含むファイル名を指定します。 説明 ユーザー名、ip アドレス、ドメイン名などの ID データを同じ⻑さの仮想値に置き換えて、サーチ結果を匿名化 します。たとえば、⽂字列 [email protected] を [email protected] に変換します。こう することによって、機密情報や個⼈情報を暴露することなく、ログデータを共有することができます。デフォルト では、$SPLUNK_HOME/etc/anonymizer にある辞書ファイルと設定ファイルが使⽤されます。これらの設定を 変更するには、scrub コマンドに引数を指定します。引数はスタンドアロンの CLI anonymize コマンドに厳密に対 応しています。説明については、そちらを参照してください。 _ (_raw を除く) または date_ で始まる属性、また はeventtype、linecount、punct、sourcetype、timeendpos、timestartpos 属性を除いて、すべての属性を匿名化 します。 例 例 1: 現在のサーチ結果を匿名化します。 ... | scrub Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、scrub コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 search キーワード、引⽤符で囲んだフレーズ、ワイルドカード、キー/値の式を使ってインデックスからイベントを取得 するには、search コマンドを使⽤します。サーチの先頭には、常に暗黙の search コマンドが仮定されています (パイプラインの先頭)。パイプラインの先頭以外で使⽤する場合、前のコマンドの結果をフィルタリングするため に⽤いられます。 イベントを取得したら、それにコマンドを適⽤して変換、フィルタリング、レポート作成などの操作を⾏えます。 取得したイベントにコマンドを適⽤するには、垂直バー「|」またはパイプ記号を使⽤します: 概要 インデックスからイベントを取得、またはパイプライン内の前のコマンドの結果をフィルタリングします。 構⽂ search <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> 説明: フィールドをリテラル値または他のフィールド値と⽐較します。 175 <index-expression> 構⽂: "<string>" | <term> | <search-modifier> 説明: リテラル⽂字列およびサーチ修飾⼦を使って、インデックスから取得するイベントを指定します。 <time-opts> 構⽂: [<timeformat>] (<time-modifier>)* 説明: サーチの開始時刻 (starttime) と終了時刻 (endtime) のフォーマットを指定します。 ⽐較式 <cmp> 構⽂: = | != | < | <= | > | >= 説明: ⽐較演算⼦。フィールド/値のペアをサーチする際に、⽐較式を使⽤できます。「=」および「!=」を 使った⽐較式は、すべてのフィールド/値のペアに利⽤できます。< > <= >= を使った⽐較式は、数値を持 つフィールドに対してのみ使⽤できます。 <field> 構⽂: <string> 説明: フィールド名。 <lit-value> 構⽂: <string> | <num> 説明: フィールドのリテラル値。⽐較式に⽤いられます。 <値> 構⽂: <lit-value> | <field> 説明: ⽐較式内で、フィールドのリテラル (数値または⽂字列) 値または他のフィールド名。 インデックス式 <⽂字列> 構⽂: "<string>" 説明: 照合するキーワードまたは引⽤符で囲んだフレーズを指定します。⽂字列や引⽤符で囲まれた⽂字列 (またはサーチ修飾⼦以外の任意の語句) をサーチする場合、Splunk は _raw フィールドと照合して、⼀致す るイベントや結果を探します。 <search-modifier> 構⽂: <sourcetype-specifier> | <host-specifier> | <hosttag-specifier> | <source-specifier> | <savedsplunk-specifier> | <eventtype-specifier> | <eventtypetag-specifier> | <splunk_serverspecifier> 説明: 指定したフィールドまたはフィールドタグからイベントをサーチします。たとえば、ホスト、ソー ス、ソースタイプなどを組み合わせたサーチ、保存済みサーチ、イベントタイプを使ったサーチなどを⾏え ます。また、次のフォーマットでフィールドタグをサーチします:tag=<field>::<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」を使⽤します。 時間オプション Splunk では、時間に基づくサーチを⾏うための、さまざまなオプションが⽤意されています。時間修飾⼦の⼀覧 については、「サーチの時間修飾⼦」を参照してください。 <timeformat> 構⽂: timeformat=<string> 176 説明: 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 コマンドにより、キーワード、フレーズ、フィールド、論理演算式、⽐較式を使って、Splunk インデッ クスから取得するイベントを正確に指定することができます。 ⽤語のサーチ例を以下に⽰します。 キーワード: error login 引⽤符で囲んだ⽂字列: "database error" 論理演算⼦: login NOT (error OR fail) ワイルドカード: fail* フィールド値: status=404, status!=404, or status>200 詳細は、『サーチマニュアル』の「サーチコマンドを使ったイベントの取得」を参照してください。 引⽤符とエスケープ⽂字 ⼀般的に、空⽩⽂字、カンマ、パイプ、引⽤符、⾓括弧を含むフレーズやフィールド値は、引⽤符で囲む必 要があります。 引⽤符の数は偶数でなければなりません。⽂字列の最初に引⽤符を指定したら、その⽂字列の終 了を表す引⽤符も指定する必要があります。例: のようなサーチは、⽂字列「error」を含むイベント数を検索します。 のようなサーチは、error、1 つのパイプ、stats、および count がその順 番で含まれている raw イベントを返します。 error | stats count ... | search "error | stats count" また、論理演算⼦やフィールド/値のペアなどが、サーチ時に元の意味で解釈されないように、そのようなキー ワードやフレーズを引⽤符で囲むことも可能です。例: キーワード AND を論理演算⼦として解釈せずにサーチする場合: error "AND" フィールド/値のペアをフレーズとしてサーチする場合: error "startswith=foo" 円記号 (\) は、引⽤符、パイプ、および円記号⾃⾝をエスケープ処理する場合に使⽤します。 円記号による エスケープシーケンスは、引⽤府内でも展開されます。例: サーチ内に「\|」と指定すると、このパイプ⽂字は 2 つのコマンドの区切り⽂字ではなく、処理対象のパイ プ⽂字としてコマンドに渡されます。 「\"」と指定すると引⽤符がそのまま⽂字としてコマンドに渡されます。たとえば、⽂字通りの引⽤符を検 索したり、rex を使ってフィールド内に引⽤符を挿⼊したりする場合に使⽤します。 「\\」と指定すると、⽂字通りの円記号がコマンドに渡されます。 認識されない円記号のシーケンスは変更されません。 たとえば、サーチ⽂字列内に「\s」とある場合、これは既知のエスケープ・シーケンスではないため「\s」 としてコマンドに渡されます。 しかし、「\\s」と指定した場合、「\\」は既知のエスケープシーケンスで「\」に変換されるため、「\s」 としてコマンドに渡されます。 TERM() を使ったサーチ TERM() ディレクティブを使って、括弧内に指定した任意の項⽬をインデックス内の 1 つの⽤語としてサーチす ることができます。TERM は、⽂字列にピリオドやカンマなどのマイナー区切り⽂字が含まれており、それがス ペースやカンマなどのメジャー区切り⽂字で区切られているような場合に特に役⽴ちます。実際に TERM は、メ ジャー区切り⽂字で区切られている⽂字列には機能しません。 CASE() を使ったサーチ CASE() ディレクティブを使って、⼤⽂字と⼩⽂字を区別した、⽤語やフィールド値のサーチを⾏えます。 例 コマンドの使⽤例を以下に⽰します。これはほんの⼀例に過ぎません。『サーチチュートリアル』の「サー チの開始」には、さまざまな例が記載されています。 search 177 例 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 例 3: この例では、ワイルドカードを使ってキー/値のペアを照合します。HTTP クライアントまたはサーバーエ ラーステータスを持つ、すべての Web サーバーからのイベントをサーチします。 host=webserver* (status=4* OR status=5*) 例 4: この例では、パイプラインの後半に search を使⽤して、サーチ結果のフィルタリングを⾏っています。こ のサーチは、transaction コマンドを使って Web セッションを定義し、3 件以上のイベントを含むユーザーセッ ションを探しています。 eventtype=web-traffic | transaction clientip startswith="login" endswith="logout" | search eventcount>3 Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、search コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 searchtxn 概要 指定したサーチ制約内のトランザクションイベントを検索します。 構⽂ searchtxn <transaction-name> [max_terms=<int>] [use_disjunct=<bool>] [eventsonly=<bool>] <searchstring> 必要な引数 <transaction-name> 構⽂: <transactiontype> 説明: transactiontypes.conf に定義されている transactiontype スタンザ名。 <search-string> 構⽂: <⽂字列> 説明: トランザクションイベント内をサーチする⽂字列。 オプション引数 eventsonly 構⽂: eventsonly=<bool> 説明: 真 (True) の場合、関連するイベントのみを取得しますが、「| transaction」コマンドは実⾏しませ ん。デフォルトは偽 (false) です。 max_terms 構⽂: maxterms=<int> 説明: 1〜1000 の整数で、すべてのフィールドが使⽤できる⼀意のフィールド値の数を指定します。⼩さ な値を使⽤するとサーチが⾼速化し、より最近の値が取得されます。デフォルトは 1000 です。 use_disjunct 構⽂: use_disjunct=<bool> 説明: 初期サーチ時にサーチ⽂字列 (SEARCH-STRING) 内の各単語間に OR を仮定するかどうかを⽰しま す。デフォルトは真 (True) です。 説明 トランザクションタイプ transaction-name を、search-string の初期イベント制約により発⾒されたイベントと照合 して、⼀致するイベントを取得します。 たとえば、「fields="qid pid"」およびサーチ属性「sourcetype="sendmail_syslog"」を持つ「email」トランザ クションタイプ、および search-string に「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' 178 例 例 1: David Smith から root へのすべての電⼦メールトランザクションを探します | searchtxn email to=root from="David Smith" 関連項⽬ transaction Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、searchtxn コマンドの 使⽤⽅法に関する質問と回答をご覧いただけます。 selfjoin 概要 結果を⾃⾝と結合します。 構⽂ selfjoin [<selfjoin-options>]* <field-list> 必要な引数 <field-list> 構⽂: <field>... 説明: 結合するフィールドまたはフィールドのリストを指定します。 <selfjoin-options> 構⽂: overwrite=<bool> | max=<int> | keepsingle=<bool> 説明: selfjoin コマンドのオプション。3 つのオプションを組み合わせて使⽤できます。 Selfjoin のオプション keepsingle 構⽂: keepsingle=<bool> 説明: 結合フィールドに⼀意の値を持つ結果 (結合する他の結果が存在しない) を保持するかどうかを指定 します。デフォルトは偽 (false) です。 max 構⽂: max=<int> 説明: 各主結果が結合できる「その他の」結果の最⼤数を⽰します。0 の場合、制限はありません。デフォ ルトは 1 です。 overwrite 構⽂: overwrite=<bool> 説明: 「その他の」結果からのフィールドを、結合の基盤として使⽤した結果のフィールドで上書きするか どうかを⽰します。デフォルトは真 (True) です。 説明 指定されたフィールドまたはフィールドのリストに基づいて、結果を⾃⾝と結合します。selfjoin のオプション overwrite、max、および keepsingle は、selfjoin の結果を制御します。 例 例 1: 結果の「id」フィールドを⾃⾝と結合します。 ... | selfjoin id 関連項⽬ join Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、selfjoin コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 set 概要 179 サブサーチ で set 操作を実⾏します。 構⽂ set (union|diff|intersect) subsearch subsearch 必要な引数 subsearch 構⽂: <⽂字列> 説明: サブサーチを指定します。サブサーチの構⽂の詳細は、『サーチマニュアル』の「サブサーチについ て」を参照してください。 説明 2 つのサブサーチを実⾏し、次に 2 つのサーチ結果に対して、指定された set 操作を実⾏します。 union 操作 の結果は、どちらかのサブサーチの結果から得られたイベントです。 diff 操作 の結果は、両⽅のサブサーチに共通ではない結果から得られたイベントです。 intersect 操作 の結果は、両⽅のサブサーチに共通の結果です。 重要: set コマンドは、1 万件未満の結果に対して使⽤できます。 例 例 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、join、diff Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、set コマンドの使⽤⽅ 法に関する質問と回答をご覧いただけます。 setfields 概要 すべての結果のフィールド値を共通値に設定します。 構⽂ setfields <setfields-arg>, ... 必要な引数 <setfields-arg> 構⽂: string="<string>" 説明: 引⽤符で値を囲んだキーと値のペア。標準のキークリーニングが実⾏されます。英数字以外の⽂字は すべて「_」に置換され、先頭の「_」は削除されます。 説明 特定フィールドに、結果セット内の各イベントの指定値を設定します。複数の定義はカンマで区切ります。フィー ルドがない場合は追加され、存在しているフィールドは上書きされます。 フィールド値を変更または定義する必要がある場合は、より汎⽤⽬的の eval コマンドを使⽤することができま す。例 1 の eval 式 を使ったフィールド値の設定⽅法を参照してください。 例 例 1: ip および foo フィールドの値を指定します。 180 ... | setfields ip="10.10.10.10", foo="foo bar" このためには、eval コマンドを使⽤します。 ... | eval ip="10.10.10.10" | eval foo="foo bar" 関連項⽬ eval、fillnull、rename Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、setfields コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 sendemail メール通知を⽣成するには、sendemail コマンドを使⽤します。 概要 サーチ結果を指定したメールアドレスに送信します。 構⽂ sendemail to=<email_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>] [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 構⽂: to=<email_list> 説明: サーチ結果の送信先メールアドレスのリスト。 オプション引数 bcc 構⽂: bcc=<email_list> 説明: ⾮表⽰の CC ⾏。有効なメールアドレスをカンマで区切って引⽤符で囲んで指定します。 cc 構⽂: cc=<email_list> 説明: CC ⾏。有効なメールアドレスをカンマで区切って引⽤符で囲んで指定します。 format 構⽂: format= csv | table | raw 説明: インライン結果のフォーマット⽅法を指定します。デフォルトは table です。 footer 構⽂: footer=<string> 説明: 代わりのメールフッターを指定します。デフォルトは、「このメールが誤って配信されたと思われる 場合は、Splunk 管理者にお問い合わせください。\r\n\r\nsplunk > マシンデータ⽤のエンジン」です。 開始 構⽂: from=<email_list> 説明: メールアドレスの差出⼈⾏。デフォルトは、「splunk@<ホスト名>」になります。 inline 構⽂: inline= true | false 説明: 結果をメッセージ本⽂に記載するか、または添付ファイルとして送信するかを指定します。添付ファ イルは CSV 形式で提供されます。デフォルトは真 (True) です。 graceful 構⽂: graceful= true | false 説明: 真 (True) を設定すると、メールの送信に失敗した場合にエラーは表⽰されず、sendemail が指定さ れていないものとして、そのままパイプラインの処理が続⾏されます。デフォルトは偽 (false) です。 maxinputs 構⽂: maxinputs = <integer> 説明: アラート経由で送信するサーチ結果の最⼤数を設定します。デフォルトは 50000 です。 maxtime 構⽂: maxtime = <integer>m | s | h | d 説明: アクションの実⾏を許可する最⼤時間。この時間が経過すると、アクションは中断されます。デフォ ルトは無制限です。 181 message 構⽂: message=<string> 説明: メールで送信するメッセージを指定します。sendresults=true の場合、デフォルトのメッセージは 「サーチ完了」になります。sendresults=true、inline=true で、 sendpdf=false または sendcsv=false のどちらかが該当する場合、メッセージのデフォルトは「サーチ結果」になります。sendpdf=true または sendcsv=true の場合、メッセージのデフォルトは「サーチ結果が添付されています」になります。 paperorientation 構⽂: paperorientation = portrait | landscape 説明: ⽤紙の向き。portrait (縦) または landscape (横) になります。デフォルトは portrait です。 papersize 構⽂: papersize = letter | legal | ledger | a2 | a3 | a4 | a5 説明: PDF のデフォルトの⽤紙サイズ。letter、legal、ledger、a2、a3、a4、a5 を指定できます。デフォ ルトは「letter」です。 pdfview 構⽂: pdfview=<string> 説明: PDF として送信するビューの名前。 priority 構⽂: priority=highest | high | normal | low | lowest 説明: メールクライアントに表⽰される、メールの優先度を設定します。最低は Lowest または 5、低は low または 4、⾼は high または 2、最⾼は highest または 1 です。デフォルトは normal (または 1) で す。 sendcsv 構⽂: sendcsv=true | false 説明: 結果を CSV 形式の添付ファイルで送信するかどうかを⽰します。デフォルトは偽 (false) です。 sendpdf 構⽂: sendpdf=true | false 説明: 結果を PDF 形式の添付ファイルで送信するかどうかを⽰します。Splunk の統合 PDF ⽣成機能の使 ⽤⽅法の詳細は、『レポートマニュアル』の「レポートやダッシュボードの PDF の⽣成」を参照してくだ さい。デフォルトは偽 (false) です。 sendresults 構⽂: sendresults=true | false 説明: 結果をメールに含めるかどうかを指定します。デフォルトは偽 (false) です。 server 構⽂: server=<string> 説明: ローカルの SMTP サーバーではない場合に、これを使って SMTP サーバーを指定します。デフォル トは localhost です。 subject 構⽂: subject=<string> 説明: 件名⾏を指定します。デフォルトは「Splunk 結果」になります。 use_ssl 構⽂: use_ssl=true | false 説明: SMTP サーバーとの通信時に SSL を使⽤するかどうか。1 (true) を設定した場合、サーバー名また は IP アドレスと TCP ポートの両⽅を「mailserver」属性に指定する必要があります。デフォルトは 0 (false) です。 use_tls 構⽂: use_tls=true | false 説明: SMTP サーバーとの通信時に、TLS (トランスポート層セキュリティ) を使⽤するかどうかを指定し ます (starttls)。デフォルトは 0 (false) です。 width_sort_columns 構⽂: width_sort_columns=true | false 説明: これは平⽂メールに対してのみ有効になります。列をその幅でソートするかどうかを指定します。デ フォルトは真 (True) です。 例 例 1: サーチ結果を、件名「myresults」のテーブル形式メールで送信します。 ... | sendemail to="[email protected],[email protected]" format=raw subject=myresults server=mail.splunk.com sendresults=true 例 2: サーチ結果を指定メールで送信します。デフォルトで、結果は raw としてフォーマットされます。 ... | sendemail to="[email protected]" sendresults=true 例 3: PDF を添付し、メッセージとインライン結果を記載したメール通知を送信します。 index=_internal | head 5 | sendemail [email protected] 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 Answers 182 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、sendemail コマンドの 使⽤⽅法に関する質問と回答をご覧いただけます。 sichart サマリーインデックス は、レポートコマンドの前に⾮ストリーミング コマンドが使われているサーチなどの、レ ポート⾼速化に適さない、処理に時間がかかるサーチの⾼速化に利⽤できます。詳細は、『ナレッジ管理』マニュ アルの「レポート⾼速化とサマリーインデックスについて」および「サマリーインデックスを使ったレポート効率 の向上」を参照してください。 はサマリーインデックス版の chart コマンドで、グラフ (縦棒、折れ線、⾯、円グラフなど) としての視覚 化をサポートする、データ構造で結果を返します。sichart コマンドは、サマリーインデックスにグラフ視覚エ フェクトの⽣成に必要な統計情報を設定します。サマリーインデックスを設定したら、通常の chart コマンド と、sichart コマンドと完全に⼀致するサーチ⽂字列を使⽤して、そのレポートを⽣成します。 sichart 概要 サマリーインデックス版の chart コマンド。 構⽂ sichart [sep=<string>] [format=<string>] [cont=<bool>] [limit=<int>] [agg=<stats-agg-term>] ( <statsagg-term> | <sparkline-agg-term> | <eval-expression>...) [ by <field> (<bucketing-option> )...[<splitby-clause>] ] | [ over <field> (<bucketing-option>)...(by <split-by-clause>] ] 「chart コマンドの構⽂」および「chart の関数」を参照してください。 例 例 1: サマリーインデックスの結果に対して「chart avg(foo) by bar」を実⾏するために必要な情報を算出しま す。 ... | sichart avg(foo) by bar 関連項⽬ chart、collect、overlap、sirare、sistats、sitimechart、sitop Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、sichart コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 sirare サマリーインデックス は、レポートコマンドの前に⾮ストリーミング コマンドが使われているサーチなどの、レ ポート⾼速化に適さない、処理に時間がかかるサーチの⾼速化に利⽤できます。詳細は、『ナレッジ管理』マニュ アルの「レポート⾼速化とサマリーインデックスについて」および「サマリーインデックスを使ったレポート効率 の向上」を参照してください。 は、rare コマンドのサマリーインデックス版で、フィールドまたはフィールドの組み合わせのもっとも共通 していない値を返します。sirare コマンドは、サマリーインデックスに rare レポートの⽣成に必要な統計情報を 設定します。サマリーインデックスを設定したら、通常の rare コマンドと、rare コマンドサーチと完全に⼀致す るサーチ⽂字列を使⽤して、そのレポートを⽣成します。 sirare 概要 サマリーインデックス版の rare コマンド。 構⽂ sirare <top-opt>* <field-list> [<by-clause>] 必要な引数 <field-list> 構⽂: <string>,... 説明: カンマ区切り形式のフィールド名。 <top-opt> 構⽂: countfield=<string> | limit=<int> | percentfield=<string> | showcount=<bool> | showperc=<bool> 説明: rare のオプション (top と同じ)。 オプション引数 <by-clause> 183 <by-clause> 構⽂: by <field-list> 説明: グループ化する 1 つ以上のフィールド名。 Top のオプション countfield 構⽂: countfield=<string> 説明: count の値を書き込む新規フィールド名。デフォルトは「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 関連項⽬ collect、overlap、sichart、sistats、sitimechart、sitop Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、sirare コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 sistats サマリーインデックス は、レポートコマンドの前に⾮ストリーミング コマンドが使われているサーチなどの、レ ポート⾼速化に適さない、処理に時間がかかるサーチの⾼速化に利⽤できます。詳細は、『ナレッジ管理』マニュ アルの「レポート⾼速化とサマリーインデックスについて」および「サマリーインデックスを使ったレポート効率 の向上」を参照してください。 はサマリーインデックス版の stats コマンドで、データセットの集計統計情報を算出します。sistats コマ ンドは、サマリーインデックスに stats レポートの⽣成に必要な統計情報を設定します。サマリーインデックスを 設定したら、通常の stats コマンドと、sistats コマンドと完全に⼀致するサーチ⽂字列を使⽤して、そのレポー トを⽣成します。 sistats 概要 サマリーインデックス版の stats コマンド。 構⽂ sistats [allnum=<bool>] [delim=<string>] ( <stats-agg-term> | <sparkline-agg-term> ) [<by clause>] 「stats コマンドの構⽂」および「stats の関数」を参照してください。 例 例 1: サマリーインデックスの結果に対して「stats avg(foo) by bar」を実⾏するために必要な情報を算出しま す。 ... | sistats avg(foo) by bar 関連項⽬ collect、overlap、sichart、sirare、sitop、sitimechart Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、sistats コマンドの使⽤ 184 ⽅法に関する質問と回答をご覧いただけます。 sitimechart サマリーインデックス は、レポートコマンドの前に⾮ストリーミング コマンドが使われているサーチなどの、レ ポート⾼速化に適さない、処理に時間がかかるサーチの⾼速化に利⽤できます。詳細は、『ナレッジ管理』マニュ アルの「レポート⾼速化とサマリーインデックスについて」および「サマリーインデックスを使ったレポート効率 の向上」を参照してください。 は、サマリーインデックス版の timechart コマンドで、対応する統計情報テーブルから時系列グラフ視 覚エフェクトを作成します。sitimechart コマンドは、サマリーインデックスに timechart レポートの⽣成に必要 な統計情報を設定します。サマリーインデックスを設定したら、通常の timechart コマンドと、sitimechart コマン ドと完全に⼀致するサーチ⽂字列を使⽤して、そのレポートを⽣成します。 sitimechart 概要 サマリーインデックス版の timechart コマンド。 構⽂ sitimechart [sep=<string>] [partial=<bool>] [cont=<t|f>] [limit=<int>] [agg=<stats-agg-term>] [<bucketingoption> ]* (<single-agg> [by <split-by-clause>] ) | ( (<eval-expression>) by <split-by-clause> ) 「timechart コマンドの構⽂」および「timechart の関数」を参照してください。 例 例 1: サマリーインデックスの結果に対して「timechart avg(foo) by bar」を実⾏するために必要な情報を算出 します。 ... | sitimechart avg(foo) by bar 関連項⽬ collect、overlap、sichart、sirare、sistats、sitop Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、sitimechart コマンドの 使⽤⽅法に関する質問と回答をご覧いただけます。 sitop サマリーインデックス は、レポートコマンドの前に⾮ストリーミング コマンドが使われているサーチなどの、レ ポート⾼速化に適さない、処理に時間がかかるサーチの⾼速化に利⽤できます。詳細は、『ナレッジ管理』マニュ アルの「レポート⾼速化とサマリーインデックスについて」および「サマリーインデックスを使ったレポート効率 の向上」を参照してください。 は、top コマンドのサマリーインデックス版で、フィールドまたはフィールドの組み合わせの最頻値を返し ます。sitop コマンドは、サマリーインデックスに top レポートの⽣成に必要な統計情報を設定します。サマリー インデックスを設定したら、通常の top コマンドと、sitop コマンドサーチと完全に⼀致するサーチ⽂字列を使⽤ して、そのレポートを⽣成します。 sitop 概要 サマリーインデックス版の top コマンド。 構⽂ sitop <top-opt>* <field-list> [<by-clause>] 注意: この構⽂は top コマンドと完全に同⼀です。 必要な引数 <field-list> 構⽂: <field>, ... 説明: カンマ区切り形式のフィールド名。 <top-opt> 構⽂: countfield=<string> | limit=<int> | otherstr=<string> | percentfield=<string> | showcount=<bool> | showperc=<bool> | useother=<bool> 説明: top のオプション。 オプション引数 <by-clause> 185 <by-clause> 構⽂: by <field-list> 説明: グループ化する 1 つ以上のフィールド名。 Top のオプション countfield 構⽂: countfield=<string> 説明: count の値を書き込む新規フィールド名。デフォルトは「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 例 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 Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、sitop コマンドの使⽤⽅ 法に関する質問と回答をご覧いただけます。 sort 概要 サーチ結果を指定フィールドで並べ替えます。 構⽂ sort [<count>] (<sort-by-clause>)+ [desc] 必要な引数 <count> 構⽂: <int> 186 説明: ソートする結果数を指定します。値を指定しない場合、デフォルトの 10000 件が使⽤されます。0 を指定した場合は、すべての結果が返されます。 <sort-by-clause> 構⽂: ( - | + ) <sort-field> 説明: 並べ替えるフィールドのリストと、その並べ替え順序 (昇順 ( - ) または降順 ( + )) オプション引数 desc 構⽂: d | desc 説明: 結果を逆順にする、最後に付ける⽂字列。 sort-field のオプション <sort-field> 構⽂: <field> | auto(<field>) | str(<field>) | ip(<field>) | num(<field>) 説明: sort-field ⽤のオプション。 <field> 構⽂: <⽂字列> 説明: ソートするフィールド名。 auto 構⽂: auto(<field>) 説明: フィールドの値の⾃動ソート⽅法を指定します。 ip 構⽂: ip(<field>) 説明: フィールドの値を IP アドレスとして解釈します。 num 構⽂: num(<field>) 説明: フィールドの値を数字として処理します。 str 構⽂: str(<field>) 説明: フィールド値を辞書的順序で並べます。 説明 コマンドは、指定されたフィールドのリストで結果をソートします。指定フィールドが存在していない結果に 対しては、当該フィールドで可能な最⼤値または最⼩値 (値の並び順が降順か昇順かによる) を持つフィールドを 仮定して処理が⾏われます。 sort コマンドの最初の引数が数値の場合、最⾼でその値までの結果が順番に返されます。数字を指定しない場合、 デフォルトでは上限 10000 件が仮定されます。0 を指定した場合は、すべての結果が返されます。 sort デフォルトで sort は、何をソートしているのかを⾃動的に判断します。フィールドが数値を取る場合、照合順序 は数値順になります。フィールドが IP アドレスを取る場合、照合順序は IP 順になります。それ以外の場合は、 照合順序は辞書式順序になります。以下に例を⽰します。 アルファベット⽂字列は辞書的順序にソートされます。 句読点⽂字列は辞書的順序にソートされます。 数値データは数字順に、指定されたソート順序 (昇順または降順) でソートされます。 英数字⽂字列は、最初の⽂字のデータタイプに基づいてソートされます。数字で始まっている場合は、その 数字のみに基づいて数値的にソートされます。それ以外の場合は、辞書的順序でソートされます。 英数字と句読点の組み合わせとなる⽂字列は、英数字⽂字列と同様にソートされます。 デフォルトの⾃動モードでは、各値のペアが⽐較されてソート順序が決定されます。この場合、⼀部の値のペアは 辞書的に、別のペアは数値的にソートされる可能性があります。たとえば、降順にソートする場合に 10.1 > 9.1 と判断されますが、10.1.a < 9.1.a と判断されます。 例 例 1: 結果を ip 値の昇順、次に url 値の降順に並べ替えます。 ... | sort num(ip), -str(url) 例 2: 結果を _time フィールドの昇順、次に host 値の降順に並べ替えます。 ... | sort 100 -num(size), +str(source) 例 3: 結果を _time フィールドの昇順、次に host 値の降順に並べ替えます。 ... | sort _time, -host 例 4: イベントの時間のフォーマットを変更し、その結果を新たな時間の降順にソートします。 ... | bucket _time span=60m | eval Time=strftime(_time, "%m/%d %H:%M %Z") | stats avg(time_taken) AS AverageResponseTime BY Time | sort - Time 187 (この例を提供した Ayn さんに感謝の意を表明します。) 例 5: 結果テーブルを、曜⽇や⽉など辞書的または数値的ではない特定の順序でソートします。たとえば、以下 のテーブルを⽣成するサーチを考えてみましょう。 Day Total Friday 120 Monday 93 Tuesday 124 Thursday 356 Weekend 1022 Wednesday 248 曜⽇フィールド (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 を削除しています。 (この例を提供した Ant1D および Ziegfried さんに感謝の意を表明します。) 例 6: 最新のイベントを返します。 ... | sort 1 -_time 関連項⽬ reverse Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、sort コマンドの使⽤⽅ 法に関する質問と回答をご覧いただけます。 spath コマンドの「s」は Splunk (または構造化 (structured)) を意味しています。このコマンドは、XML や JSON などの構造化データフォーマットから情報を抽出する⼿段を提供しています。また、表⽰されたイベントリ スト内の構⽂を強調表⽰します。 spath また、eval コマンドで ださい。 spath() 関数を使⽤することもできます。詳細は、「eval と where の関数」を参照してく 概要 構造化データ (XML または JSON) から値を抽出し、それを単⼀または複数のフィールドに保管します。 構⽂ spath [input=<field>] [output=<field>] [path=<datapath> | <datapath>] オプション引数 input 構⽂: input=<field> 説明: 読み込んで値を抽出するフィールド。デフォルトは _raw です。 output 構⽂: output=<field> 説明: 指定した場合、パスから抽出された値は、このフィールド名で書き込まれます。 path 構⽂: path=<datapath> | <datapath> 説明: 抽出する値の場所を⽰すパス。path 引数を使⽤しない場合、最初のラベルがない引数がパスとして使 ⽤されます。場所を⽰すパスは、1 つまたは複数のステップをピリオドで区切って指定します (例: foo.bar.baz)。場所ステップは、フィールド名とオプションの中括弧で囲んだインデックスから成り⽴ってい ます。配列内の位置 (JSON と XML では異なります) を表すために、インデックスに数字を使⽤できます。 また、⽂字列を使⽤する場合は XML 属性を指定できます。インデックスに XML 属性を指定する場合は、 @ 記号を付けて属性名を指定します。出⼒引数を指定しない場合は、このパスが抽出した値のフィールド名 となります。 188 説明 path 引数を指定せずに呼び出した場合、spath は⾃動抽出モードで動作し、⼊⼒ (⼊⼒ソースが指定されていない 場合はデフォルトの _raw) の最初の 5000 ⽂字からすべてのフィールドを抽出します。パスを指定した場合、その パスの値がパス名のフィールドまたは output 引数に指定されたフィールドに抽出されます。 場所を⽰すパスは、1 つまたは複数の場所ステップを含み、それぞれのステップにはその前の場所ステップ が指定したコンテキストがあります。 トップレベルの場所ステップのコンテキストは、暗黙的に XML または JSON ドキュメント全体のトップレベルノードとなります。 場所ステップは、フィールド名および中括弧で囲んだ整数または⽂字列で表される配列インデックス (オプ ション) から成り⽴っています。 XML と JSON では、配列インデックスの意味が異なります。たとえば JSON で foo.bar{3} は、foo エレメントの⼦の bar の 3 番⽬のエレメントを表します。XML では、同じパスが foo の⼦ の 3 番⽬の bar を表しています。 コマンドではワイルドカードを使⽤して、JSON 内の配列インデックスの位置を取ることができま す。 entities.hashtags{0}.text や entities.hashtags{1}.text などと指定する代わりに、場所パス entities.hashtags{}.text を使って、すべての hashtags のテキストを取得できます。ここで参照パス entities.hashtags は、これの 1 つの配列を参照する必要があります (そうしないと、通常の配列インデックスの場 合と同様にエラーが発⽣します)。 spath XML でも同じ⽅法を利⽤でき、たとえば の book が取得されます)。 catalog.book と catalog.book{} は同等です (両⽅ともカタログ内のすべて 例 例 1:GitHub 多数の⼤きな git リポジトリの管理者として、私は以下のことを実現したいと考えています。 誰がどのリポジトリに対して多数の変更をコミットしているかを確認する。 各ユーザーが送信したコミットのリストを作成する。 そこで Splunk がすべての post-commit JSON 情報を追跡するように設定し、spath を使って commit_author お よび commit_id フィールドを抽出しました。 ... | spath output=repository path=repository.url ... | 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 属性および エレメントからの値の抽出⽅法を表しています。 <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) を抽出するには、以下のように指定します。 189 ... | 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, }} まず、JSON からフィールドを抽出して、その名前を変更するサーチを⾏います。 sourcetype=json | spath | rename widget.text.size AS size, widget.text.data AS data | table _time,size,data _time size data --------------------------- ---- ----------2012-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 --------------------------- ----------- ----- -------------2012-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 --------------------------- ---------- ---2012-10-18 14:45:46.000 BST Click here 36 2012-10-18 14:45:46.000 BST Learn more 37 2012-10-18 14:45:46.000 BST Help 38 (この例を提供した G. Zaimi さんに感謝の意を表明します。) その他の例 例 1: ... | spath output=myfield path=foo.bar ... | spath output=myfield path=foo{1} ... | spath output=myfield path=foo.bar{7}.baz 例 2: ... | spath output=author path=book{@author} 関連項⽬ extract、kvform、multikv、regex、rex、xmlkv、xpath Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、spath コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 190 stats 概要 統計情報を提供します。必要に応じてフィールド別にグループ化します。 構⽂ シンプル: stats (stats-function(field) [as field])+ [by field-list] 完全: stats [partitions=<num>] [allnum=<bool>] [delim=<string>] ( <stats-agg-term> | <sparkline-aggterm> ) [<by clause>] 必要な引数 stats-agg-term 構⽂: <stats-func>( <evaled-field> | <wc-field> ) [AS <wc-field>] 説明: 必要に応じて新しいフィールド名に変更される統計指定⼦。指定⼦には、フィールドに aggregation 関数を適⽤、または⼀連のフィールドセット、または任意の eval 式に aggregation 関数を適⽤したものを 利⽤できます。 sparkline-agg-term 構⽂: <sparkline-agg> [AS <wc-field>] 説明: 必要に応じて新しいフィールドに変更される、スパークライン指定⼦。 オプション引数 allnum 構⽂: allnum=<bool> 説明: 真 (True) の場合、当該フィールドのすべての値が数値の場合にのみ、各フィールドの数値統計を算 出します。(デフォルトは偽 (False)) delim 構⽂: delim=<string> 説明: list() または values() 集合内の値の区切り⽅を指定します。(デフォルトは 1 つのスペースです。) by clause 構⽂: by <field-list> 説明: グループ化する 1 つ以上のフィールド名。 partitions 構⽂: partitions=<num> 説明: 指定した場合、マルチスレッド削減のための split-by フィールドに基づいて、⼊⼒データをパーティ ション分割します。デフォルトは、1 です。 Stats 関数のオプション stats-function 構⽂: avg() | c() | count() | dc() | distinct_count() | earliest() | estdc() | estdc_error() | exactperc<int>() | first() | last() | latest() | list() | max() | median() | min() | mode() | p<in>() | perc<int>() | range() | stdev() | stdevp() | sum() | sumsq() | upperperc<int>() | values() | var() | varp() 説明: stats コマンドと⼀緒に利⽤される関数。stats コマンドの起動時に、複数の関数を使⽤できます が、by clause は 1 つのみ利⽤できます。説明と例が記載された stats 関数の⼀覧については、「stats、 chart、および timechart の関数」を参照してください。 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() 説明: スパークラインの値の⽣成に⽤いられる集計関数。各スパークラインの値は、特定の時間バケツに該 当するイベントにこの集計を適⽤することにより⽣成されます。 説明 SQL の aggregation と同様に、データセットの総統計を算出します。by clause なしで呼び出すと、1 つの⾏が⽣ 成されます。この⾏は、到着した結果セット全体の集計を表します。by 句 (by-clause) を指定して呼び出すと、 191 by 句が指す各⼀意の値に対してそれぞれ 1 つの⾏が⽣成されます。 例 例 1 この例では、サーチチュートリアルのサンプルデータセットを使⽤していますが、Apache Web アクセスログ 形式の任意のデータを利⽤できます。「Splunk へのチュートリアルデータの取り込み 」からデータセット をダウンロードして、説明に従って作業を⾏ってください。次に、時間範囲に [その他] > [昨⽇] を指定して サーチを実⾏します。 ホストと HTTP ステータスコード値の組み合わせに対して、イベント数の頻度をカウントします。 sourcetype=access_* | chart count by status, host これによって、以下のテーブルが作成されます。 例 2 この例では、サーチチュートリアルのサンプルデータセットを使⽤していますが、Apache Web アクセスログ 形式の任意のデータを利⽤できます。「Splunk へのチュートリアル・データの取り込み 」からデータセッ トをダウンロードして、説明に従って作業を⾏ってください。次に、時間範囲に [その他] > [昨⽇] を指定し てサーチを実⾏します。 各 Web サーバーに対して⾏われた要求の種類別に数をカウントします。 sourcetype=access_* | stats count(eval(method="GET")) as GET, count(eval(method="POST")) as POST by host この例では、eval 式を使って stats コマンドのカウント対象となるフィールド値を指定しています。サーチは、2 種類のリクエストメソッド GET または POST にのみ注⽬しています。最初の句は、method=GET フィールド値を持 ち、Web アクセスイベント数をカウントし、結果「GET」を取得することを指定しています。次に 2 番⽬の句で は、method=POST イベントに対して同様の処理を⾏います。次に by 句 by host で、host 値に対応する各要求数を区 別します。 これによって、以下のテーブルが返されます。 例 3 これらのサーチは、USGS Earthquakes Web サイトからダウンロードした最近の地震データを使⽤していま す。データはカンマ区切り形式の ASCII テキストファイルで、記録されている各地震のマグニチュード (mag)、座標 (latitude、longitude)、地域 (place) が含まれています。 最新の CSV ファイルを USGS Earthquake Feeds からダウンロードして、それを Splunk への⼊⼒として 追加できます。 3a. それぞれのマグニチュード範囲で発⽣した地震数をカウントします。(このデータセットは、期間が 30 ⽇間の イベントで成り⽴っています。) 192 source=usgs | chart count AS "Number of Earthquakes" by mag span=1 | rename mag AS "Magnitude Range" このサーチは span=1 を使って、各範囲のマグニチュードフィールド (mag) を定義しています。次に rename コマ ンドを使って、フィールド名を「Magnitude Range」に変更しています。 3b. カリフォルニア周辺の地震をサーチして、記録されている地震数をカウントします。次に、これらの地震のマ グニチュードの最低値、最⼤値、範囲 (最⼩値と最⼤値の差)、および平均値を算出して、マグニチュードタイプ別 に記載します。 source=usgs place=*California* | stats count, max(mag), min(mag), range(mag), avg(mag) by magType 次の計算には、stats 関数 が返されます。 count(), max(), min(), range(), and avg() を使⽤します。これによって、以下のテーブル 3c. また、これらの最近の地震のマグニチュードの平均、標準偏差、分散を算出することもできます。 source=usgs place=*California* | stats count mean(mag), stdev(mag), var(mag) by magType 次の計算には、stats 関数 す。 mean mean(), stdev(), and var() を使⽤します。これによって、以下のテーブルが返されま の値は、avg() を使って算出された値と完全に⼀致しています。 例 4 この例では、『サーチチュートリアル』のサンプルデータセットとフィールドのルックアップを使⽤して、イ ベントデータにさまざまな情報を追加します。 「データの追加 」チュートリアルからデータセットをダウンロードして、それを Splunk に取り込んで ください。 「フィールドルックアップの使⽤ 」チュートリアルから CSV をダウンロードした後、ルックアップ定 義の設定の説明に従ってイベントに price と productName を追加します。 フィールドルックアップを設定したら、時間範囲 [全時間] でサーチを実⾏します。 Buttercup Games オンラインストアで販売された商品を ID 、種類、および名前別に表⽰するテーブルを作成し 193 ます。また、各商品の収益も算出します。 sourcetype=access_* status=200 action=purchase | stats values(categoryId) AS Type, values(productName) AS Name, sum(price) AS "Revenue" by productId | rename productId AS "Product ID" | eval Revenue="$ ".tostring(Revenue,"commas") この例は、values() 関数を使って、各 productId に対応する categoryId と sum() 関数を使って、price フィールドの値の合計を算出しています。 productName 値を表⽰しています。次に また、分かりやすくするために各種フィールド名も変更します。stats 関数では、AS 句を使って名前を変更する ことができます。構⽂により split-by フィールドの名前を変更できないため、product_id フィールドの名前を変更 するために rename コマンドを使⽤しています。 最後に、結果を eval 式に渡して、ドル記号とカンマを追加し、通貨として表⽰されるように、Revenue フィールド 値の書式を再設定して、 これによって、以下のテーブルが返されます。 例 5 この例は、⽣成されたメールデータ (sourcetype=cisco_esa) を使⽤しています。この例の sourcetype=cisco_esa を ご⾃分のデータの sourcetype 値に、そして mailfrom フィールドをご⾃分のメールアドレスフィールド名 (例:To, From, or Cc) に変更すれば、任意のメールデータに対して利⽤できます。 メールが com/net/org ドメインから来ているのか、または他のトップレベルドメインから来ているのかを判断し ます。 sourcetype="cisco_esa" mailfrom=* | eval accountname=split(mailfrom,"@") | eval 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 次に結果を stats コマンドに渡します。eval 式の結果数のカウントには、count() 関数を使⽤しています。ここ で、eval は match() 関数を使って、from_domain とドメインのサフィックスを識別する正規表現を⽐較していま す。from_domain の値が正規表現と⼀致する場合、各 サフィックス (.com, .net, and .org) の count が更新されま す。その他のドメインサフィックス数は、other としてカウントされます。 これによって、以下の結果テーブルが作成されます。 例 6 この例では、サーチチュートリアルのサンプルデータセットを使⽤していますが、Apache Web アクセスログ 形式の任意のデータを利⽤できます。[this topic in the tutorial] からデータ セットをダウンロードした 後、指⽰に従って Splunk にアップロードしてください。次に、時間範囲に [その他] > [昨⽇] を指定して サーチを実⾏します。 Web アクセスログをサーチして、上位 10 件の参照ドメインのヒット数合計を返します。(top コマンドは、カウ 194 ントと各 referer の割合 (パーセント) を返します。) sourcetype=access_* | top limit=10 referer | stats sum(count) AS total このサーチでは、top コマンドを使って参照数が上位 10 件の参照ドメイン (referer フィールドの値) を検索して います。(これは、referer_domain として表⽰されることもあります。)top コマンドの結果は、stats コマンドに渡 されます。この例では、sum() 関数を使って各 referer による Web サイトへのアクセス回数を追加しています。こ の合計は、total フィールドに保存されます。これにより、単⼀の数値が⽣成されます。 その他の例 例 1: アクセスログをサーチして、「referer_domain」の上位 100 件の値から合計ヒット数を返します。(top コ マンドは、カウントと各 referer_domain の割合 (パーセント) を返します。) sourcetype=access_combined | top limit=100 referer_domain | stats sum(count) AS total 例 2: ⽂字列「lay」で終わる (例:delay、xdelay、relay など) 任意の⼀意のフィールドに対して、各時間の平 均を返します。 ... | stats avg(*lay) BY date_hour 例 3: 同じ「host」値を持つ結果の重複項⽬を削除して、残り結果の合計カウントを返します。 ... | stats dc(host) 例 4: 各ホストの平均転送レートを返します。 sourcetype=access* | stats avg(kbps) by host 関連項⽬ eventstats、rare、sistats、streamstats、top Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、stats コマンドの使⽤⽅ 法に関する質問と回答をご覧いただけます。 strcat 概要 ⽂字列値を連結します。 構⽂ strcat [allrequired=<bool>] <srcfields>* <destfield> 必要な引数 <destfield> 構⽂: <⽂字列> 説明: srcfields が定義している連結⽂字列値を保存する宛先フィールド。destfield は常に、⼀連の srcfields の最後に指定します。 <srcfields> 構⽂: (<field>|<quoted-str>) 説明: キー名または引⽤符で囲んだリテラルを指定します。 quoted-str 構⽂: "<string>" 説明: 引⽤符で囲んだリテラル。 オプション引数 allrequired 構⽂: allrequired=<bool> 説明: 値を宛先フィールドに書き込むために、各イベント内にすべてのソースフィールドが存在している必 195 要があるかどうかを⽰します。デフォルトの「allrequired=f」の場合、宛先フィールドは常に書き込まれ、 存在しないソースフィールドは空⽂字列として処理されます。allrequired=t の場合は、すべてのソース フィールドが存在している場合にのみ、宛先フィールドに値が書き込まれます。 説明 フィールドや⽂字列を結合して新しいフィールドを作成します。引⽤符で囲んだトークンはリテラルおよび残り フィールド名とみなされます。宛先フィールド名は、常に最後になります。 例 例 1: ソース IP と宛先 IP アドレスをスラッシュで区切った、comboIP フィールドを追加します。 ... | strcat sourceIP "/" destIP comboIP 例 2: comboIP フィールドを追加して、次にフィールド値の発⽣回数をグラフに表⽰します。 host="mailserver" | strcat sourceIP "/" destIP comboIP | chart count by comboIP 例 3: ホストおよびポートの値を組み合わせた address フィールドを「<ホスト>::<ポート>」の形式で追加しま す。 ... | strcat host "::" port address 関連項⽬ eval Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、strcat コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 streamstats コマンドは stats コマンドのように、サーチ結果のサマリー統計を計算します。stats とは違い (結果 全体をまとめて処理する)、streamstats はイベントの登場時に各イベントの統計を計算します。 streamstats 概要 ストリーミングを利⽤して、サマリー統計情報をすべてのサーチ結果に追加します。 構⽂ streamstats [current=<bool>] [window=<int>] [global=<bool>] [allnum=<bool>] <stats-agg-term>* [<by clause>] 必要な引数 stats-agg-term 構⽂: <stats-func>( <evaled-field> | <wc-field> ) [AS <wc-field>] 説明: 必要に応じて新しいフィールド名に変更される統計指定⼦。指定⼦には、フィールドに aggregation 関数を適⽤、または⼀連のフィールドセット、または任意の eval 式に aggregation 関数を適⽤したものを 利⽤できます。 オプション引数 current 構⽂: current=<bool> 説明: 真 (True) の場合、与えられた (現在の) イベントをサマリー計算に含めます。偽 (False) の場合、前 のイベントからのフィールド値が使⽤されます。デフォルトは真 (True) です。 window 構⽂: window=<int> 説明: 「window」オプションは、統計を計算する際に使⽤するイベント数を⽰します。デフォルトは 0 で、この場合は前のすべてのイベント (と現在のイベント) が使⽤されます。 global 構⽂: global=<bool> 説明: global オプションに偽 (False) を指定し、window に 0 以外の値を設定すると、group by フィール ドの各グループ値に対して別個のウィンドウが使⽤されます。デフォルトは真 (True) です。 allnum 構⽂: allnum=<bool> 説明: 真 (True) の場合、当該フィールドのすべての値が数値の場合にのみ、各フィールドの数値統計を算 出します。デフォルトは偽 (false) です。 by clause 構⽂: by <field-list> 196 説明: グループ化する 1 つ以上のフィールド名。 Stats 関数のオプション stats-function 構⽂: avg() | c() | count() | dc() | distinct_count() | first() | last() | list() | max() | median() | min() | mode() | p<in>() | perc<int>() | per_day() | per_hour() | per_minute() | per_second() | range() | stdev() | stdevp() | sum() | sumsq() | values() | var() | varp() 説明: stats コマンドと⼀緒に利⽤される関数。stats コマンドの起動時に、複数の関数を使⽤できます が、by clause は 1 つのみ利⽤できます。説明と例が記載された stats 関数の⼀覧については、「stats、 chart、および timechart の関数」を参照してください。 説明 コマンドは eventstats コマンドと似ていますが、与えられたイベントの前のイベントを使⽤して各イ ベントに適⽤する総統計を算出する点が異なっています。当該イベントを計算に含める場合は、current=true (デ フォルト) を使⽤します。 streamstats 例 例 1 あなたは毎⽇⼀意のユーザー数を追跡しており、⼀意のユーザーの累積カウントを追跡したいと考えています。こ の例では、⼀意のユーザー数の現時点での合計の推移を計算します。 eventtype="download" | bin _time span=1d as day | stats values(clientip) as ips dc(clientip) by day | streamstats dc(ips) as "Cumulative total" コマンドは、時間を⽇数に分割します。stats コマンドは、⼀意のユーザー数 (clientip) と⽇当たりのユー ザーカウントを計算します。streamstats コマンドは、その時点までの⼀意のユーザーカウントを検索します。 bin このサーチは、次のフィールドを含むテーブルを返します:day、ips、dc(clientip)、および Cumulative total。 例 2 この例では、streamstats を使って category 値の時間ごとの累積合計を⽣成しています。 ... | timechart span=1h sum(value) as total by category | streamstats global=f sum(total) as accu_total コマンドは、イベントを 1 時間のスパンに区分して、各カテゴリの合計値をカウントしています。ま た、timechart コマンドは、⽋損値がないように NULL 値も記⼊します。次に streamstats コマンドを使って、累 積合計を算出しています。 timechart 例 3 この例は 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 プログを参照してください。 その他の例 例 1: バーの値を持つ 5 件のイベント (ウィンドウサイズで指定) のみを含めて、各バーの値に対して、foo の平 均値を算出します。 ... | streamstats avg(foo) by bar window=5 global=f 例 2: 各イベントに対して、過去 5 件のイベントに対する foo フィールドの平均を算出します (現在のイベント を含む)。trendline sma5(foo) を実⾏するのと同じです。 ... | streamstats avg(foo) window=5 例 3: この例では、現在までに発⾒されているイベント数 (当該イベントも含む) を表す count フィールドを各イ ベントに追加します。たとえば、最初のイベントには 1 が、2 番⽬のイベントには 2 が追加されます。 ... | streamstats count 現在のイベントを含めない場合は、以下のように指定します。 197 ... | streamstats count current=f 関連項⽬ accum、autoregress、delta、fillnull、eventstats、stats、streamstats、trendline Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、streamstats コマンド の使⽤⽅法に関する質問と回答をご覧いただけます。 table コマンドは、結果に保持するフィールドを指定できるという点で、fields コマンドと似ています。データを 純粋にテーブルとして保持したい場合に、table コマンドを使⽤します。 table コマンドは、データの離散値間の関係の傾向を表す、散布図の作成に利⽤できます。それ以外の場合は、こ れをグラフ (chart や timechart など) には使⽤しないでください。グラフを⽣成表⽰するためには内部フィールド (アンダースコア「_」で始まるフィールド*) が必要ですが、table コマンドのデフォルトでは、これらのフィール ドが結果から削除されます。代わりに、すべての内部フィールドを常に保持する fields コマンドを使⽤してくだ さい。 table 概要 指定されたフィールド名のみを使ってテーブルを作成します。 構⽂ table <wc-field-list> 引数 <wc-field-list> 構⽂: <wc-field> <wc-field> ... 説明: フィールド名のリスト。ワイルドカードを使⽤できます。 説明 コマンドは、引数に指定されたフィールドのみで作成されたテーブルを返します。列は、フィールドの指定 順序と同じ順番で表⽰されます。列の⾒出しはフィールド名になります。⾏はフィールドの値になります。各⾏が イベントを表しています。 table フィールドの名前変更。 table コマンドではフィールド名を変更できません。テーブルに表⽰したいフィールド のみを指定してください。フィールド名を変更したい場合は、結果を table に渡す前に⾏ってください。 結果の切り詰め。 table コマンドは、limits.conf [search] パラメータの truncate_report が 1 の場合に、返される 結果数を切り詰めます。結果数は [search] max_count の制限で制御されます。truncate_report が 0 の場合、この max_count は適⽤されません。 例 例 1 この例では、USGS Earthquakes Web サイトからダウンロードした最近の地震データを使⽤しています。 データはカンマ区切り形式の ASCII テキストファイルで、記録されている各地震のマグニチュード (mag)、座 標 (latitude、longitude)、地域 (place) が含まれています。 最新の CSV ファイルを USGS Earthquake Feeds からダウンロードして、それを Splunk への⼊⼒として 追加できます。 カリフォルニア周辺の最近の地震データをサーチして、地震の発⽣時刻 (Datetime)、発⽣場所 (Region)、マグニ チュード (Magnitude)、および深度 (Depth) のみを表⽰します。 index=usgs_* source=usgs place=*California | table time, place, mag, depth これは、単純にイベントを表形式のテーブルに変換して、引数として指定したフィールドのみを表⽰します。 198 例 2 この例では、USGS Earthquakes Web サイトからダウンロードした最近の地震データを使⽤しています。 データはカンマ区切り形式の ASCII テキストファイルで、記録されている各地震のマグニチュード (mag)、座 標 (latitude、longitude)、地域 (place) が含まれています。 最新の CSV ファイルを USGS Earthquake Feeds からダウンロードして、それを 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* と を、time で⽇時を指定します。 lon* で緯度/経度の両⽅のフィールドを、mag でマグニチュード この例は、table コマンドの構⽂では、ワイルドカード * を使った複数のフィールドの指定⽅法を表しています。 例 3 この例では、チュートリアルのサンプルデータセットを使⽤していますが、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 にな ります。 199 次に結果が れます。 table コマンドに渡されて、⼀意の IP アドレス (clientip) とネットワーク分類 (network) のみが表⽰さ その他の例 例 1: フィールド foo、bar および「baz」から始まるすべてのフィールドを表⽰するテーブルを作成します。 ... | table foo bar baz* 関連項⽬ fields Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、table コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 tags 概要 サーチ結果の指定フィールドに、タグを使って注釈を付けます。 構⽂ tags [outputfield=<field>] [inclname=<bool>] [inclvalue=<bool>] <field-list> 必要な引数 <field-list> 構⽂: <field> <field> ... 説明: タグで注釈を付けるフィールドを指定します。 オプション引数 outputfield 構⽂: outputfield=<field> 説明: 指定した場合、すべてのフィールドのタグがこのフィールドに書き込まれます。そうでない場合は、 各フィールドのタグは「tag::<field>」と⾔う名前のフィールドに書き込まれます。 inclname 構⽂: inclname=T|F 説明: outputfield を指定した場合に、出⼒フィールドにフィールド名を追加するかどうかを指定します。 デフォルトは F です。 inclvalue 構⽂: inclvalue=T|F 説明: outputfield を指定した場合に、出⼒フィールドにフィールド値を追加するかどうかを指定します。 デフォルトは F です。 説明 サーチ結果にタグを使って注釈を付けます。フィールドが指定されている場合は、それらのフィールドに対しての みタグで注釈を付けます。そうでない場合は、すべてのフィールドに対してタグを探します。outputfield を指定 した場合、すべてのフィールドのタグがこのフィールドに書き込まれます。outputfield を指定した場合、 inclname および inclvalue で、出⼒フィールドにフィールド名およびフィールド値を追加するかどうかを制御し ます。デフォルトでは、タグ ((<フィールド>::)?(<値>::)?tag) のみが outputfield に書き込まれます。 例 例 1: host および eventtype フィールドのタグを、tag::host および tag::eventtype に書き込みます 200 ... | tags host eventtype 例 2: 新しい test フィールドに、すべてのフィールドのタグを書き込みます ... | tags outputfield=test 例 3: host および sourcetype のタグを、test フィールドに「host::<タグ>」または「sourcetype::<タグ>」の 形式で書き込みます。 ... | tags outputfield=test inclname=t host sourcetype 関連項⽬ eval Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、tags コマンドの使⽤⽅ 法に関する質問と回答をご覧いただけます。 tail 概要 指定した結果の最後の n 件を返します。 構⽂ tail [<N>] 必要な引数 <N> 構⽂: <int> 説明: 返す結果数。指定しない場合は、デフォルトの 10 が使⽤されます。 説明 最後の n 件の結果を返します。整数値が指定されていない場合は、10 件を返します。イベントは、結果セットの 最後から逆順で返されます。 例 例 1: 最後の 20 件の結果を返します (逆順で)。 ... | tail 20 関連項⽬ head、reverse Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、tail コマンドの使⽤⽅ 法に関する質問と回答をご覧いただけます。 timechart 概要 対応する統計情報テーブルで、タイムライングラフを作成します。 構⽂ timechart [sep=<string>] [format=<string>] [partial=<bool>] [cont=<t|f>] [limit=<int>] [agg=<stats-aggterm>] [<bucketing-option> ]* ( (<single-agg> [by <split-by-clause>] ) | (<eval-expression>) by <split-byclause> ) 必要な引数 timechart 引数を指定する場合は、single-agg または eval-expression が必要になります。 eval-expression 構⽂: <math-exp> | <concat-exp> | <compare-exp> | bool-exp> | <function-call> 説明: 宛先フィールドの値を表す、リテラル、フィールド、演算⼦、および関数の組み合わせ。eval を使っ て実⾏できる基本的な操作を以下に⽰します。これらの評価が正常に機能するためには、操作の種類に応じ 201 て有効な値を使⽤する必要があります。たとえば、追加の例外処理では、値が数値でないと算術操作で有効 な結果を得ることはできません。また、Splunk では 2 つのオペランドが両⽅とも⽂字列の場合、それを連 結することができます。「.」が存在する値を連結する場合は、実際の種類に関係なく両⽅の値が⽂字列とし て処理されます。 single-agg 構⽂: count|<stats-func>(<field>) 説明: 単⼀の集計を単⼀のフィールドに適⽤します (評価したフィールドも可能)。ワイルドカードは使⽤で きません。イベントにまとめて適⽤する特別集計⼦「count」を使⽤する場合を除き、フィールドを指定す る必要があります。 split-by-clause 構⽂: <field> (<tc-option>)* [<where-clause>] 説明: 分割対象フィールドを指定します。フィールドが数値の場合、デフォルトの離散化が適⽤されます。 離散化は、tc-option で定義されます。 オプション引数 agg 構⽂: <stats-agg-term> 説明: 下の Stats 関数のセクションを参照してください。説明と例が記載された stats 関数の⼀覧について は、「stats、chart、および timechart の関数」を参照してください。 bucketing-option 構⽂: bins | minspan | span | <start-end> 説明: 離散化オプション。このオプションを指定しないと、timechart のデフォルトの ます。bins は、最⼤ビン数を設定します。ターゲットビン数ではありません。 bins=100 が使⽤され cont 構⽂: cont=<bool> 説明: グラフが連続的かどうかを⽰します。真 (True) の場合、Splunk が時間のギャップを埋めます。デ フォルトは真 (True または T) です。 fixedrange 構⽂: fixedrange=<bool> 説明: (4.2 では無効) サーチのもっとも早い/もっとも遅い時刻を使⽤するかどうかを⽰します。偽 (False) を設定すると、時間グラフが有効なデータの時間範囲のみに制限されます。デフォルトは真 (True または T) です。 format 構⽂: format=<string> 説明: 複数のデータシリーズと split-by 句が⼀緒に使⽤されている場合に、出⼒フィールド名の構築に⽤い られます。formatは sep に優先し、stats 集計⼦および関数 ($AGG$) および split-by フィールドの値 ($VALUE$) を使って、パラメータ化した式を指定することができます。 limit 構⽂: limit=<int> 説明: シリーズフィルタリングの限度を指定します。limit=0 の場合、フィルタリングされません。デフォ ルトでは、limit=N を設定すると、各シリーズの合計に基づいて、上位 N 件の値がフィルタリングされま す。 partial 構⽂: partial=<bool> 説明: 部分時間バケツを保持するかどうかを⽰します。最初と最後のバケツのみが、部分バケツにできま す。デフォルトは True|T で、この場合バケツは保持されます。 sep 構⽂: sep=<string> 説明: 複数のデータシリーズと split-by 句が⼀緒に使⽤されている場合に、出⼒フィールド名の構築に⽤い られます。これは、format に $AGG$<sep>$VALUE$ を設定したのと同等の意味を持ちます。 Stats 関数 stats-agg-term 構⽂: <stats-func>( <evaled-field> | <wc-field> ) [AS <wc-field>] 説明: 必要に応じて新しいフィールド名に変更される統計指定⼦。指定⼦には、フィールドに aggregation 関数を適⽤、または⼀連のフィールドセット、または任意の eval 式に aggregation 関数を適⽤したものを 利⽤できます。 stats-function 構⽂: avg() | c() | count() | dc() | distinct_count() | earliest() | estdc() | estdc_error() | exactperc<int>() | first() | last() | latest() | list() | max() | median() | min() | mode() | p<in>() | perc<int>() | per_day() | per_hour() | per_minute() | per_second() |range() | stdev() | stdevp() | sum() | sumsq() | upperperc<int>() | values() | var() | varp() 説明: stats コマンドと⼀緒に利⽤される関数。stats コマンドの起動時に、複数の関数を使⽤できます が、by clause は 1 つのみ利⽤できます。説明と例が記載された stats 関数の⼀覧については、「stats、 chart、および timechart の関数」を参照してください。 Bucketing のオプション bins 構⽂: bins=<int> 説明: 離散化に使⽤するビンの最⼤数を設定します。ターゲットビン数を設定する訳ではありません。(100 202 以下の⼀意のバケツとなる、最⼩のバケツが探されます。100 または 300 を指定しても、結果となるバケ ツ数は⼤幅に低くなります。)デフォルトは 100 です。 minspan 構⽂: minspan=<span-length> 説明: データの時間範囲から期間を⾃動推測する、最⼩の期間粒度を指定します。 span 構⽂: span=<log-span> | span=<span-length> 説明: 時間または対数ベースの期間に基づく期間⻑を使って、各バケツのサイズを設定します。 <start-end> 構⽂: end=<num> | start=<num> 説明: 数値バケツの最⼩/最⼤範囲を設定します。[start, end] の範囲外のデータは破棄されます。 L og-sp a n 構⽂ <log-span> 構⽂: [<num>]log[<num>] 説明: 対数ベースのスパンを設定します。最初の数値は係数です。2 番⽬の数値が底です。最初の数値を指 定する場合は、実数 >= 1.0 および < 底でなければなりません。底を指定する場合、> 1.0 の実数でなけれ ばなりません (厳密に 1 より⼤きい)。 sp a n-length 構⽂ span-length 構⽂: <int>[<timescale>] 説明: 時間に基づく各ビンのスパン。タイムスケールを使⽤した場合、これは時間範囲として使⽤されま す。そうでない場合、これは絶対バケツ⻑になります。 <timescale> 構⽂: <sec> | <min> | <hr> | <day> | <week> | <month> | <subseconds> 説明: タイムスケールの単位。 <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)、1/100 秒 (cs)、または 1/10 秒 (ds) のタイムスケール tc オプション tc-option 構⽂: <bucketing-option> | usenull=<bool> | useother=<bool> | nullstr=<string> | otherstr=<string> 説明: フィールドによる分割処理を制御するオプションです。 usenull 構⽂: usenull=<bool> 説明: split-by フィールドが存在しないイベントに対して、シリーズを作成するかどうかを⽰します。 nullstr 構⽂: nullstr=<string> 説明: usenull が真 (True) の場合、このシリーズには nullstr オプションの値でラベルが付けられます。デ フォルトは NULL です。 useother 構⽂: useother=<bool> 説明: <where-clause> の基準を満たさないためグラフに含まれていないデータシリーズに対して、シリー ズを追加するかどうかを⽰します。デフォルトは真 (True) です。 otherstr 構⽂: otherstr=<string> 203 説明: useother が真 (True) の場合、このシリーズには otherstr オプションの値でラベルが付けられます。 デフォルトは OTHER です。 where 句 where 句 構⽂: <single-agg> <where-comp> 説明: tc-by-clause にフィールドが指定されている場合に、特定のデータシリーズを含めるかどうかの基準 を指定します。⼀般的にこのオプションは、シリーズ内の質量分布を選択するのではなく、スパイクを選択 するために⽤いられます。デフォルトでは、濃度曲線下⾯積別上位 10 件のシリーズを探します。sum を max に変更して、スパイクが⾼い上位 10 件のシリーズを探すこともできます。これに、where コマンドと の関係はありません。 <where-comp> 構⽂: <wherein-comp> | <wherethresh-comp> 説明: where 句の基準です。 <wherein-comp> 構⽂: (in|notin) (top | bottom)<int> 説明: 集計したシリーズ値を、上位/下位項⽬でグループ化するための基準です。 <wherethresh-comp> 構⽂: (<|>)( )?<num> 説明: 集計したシリーズ値が、⼀定の閾値より⼤きいまたは⼩さい必要があることを指定する基準です。 説明 時間を X 軸にしたフィールドに対して適⽤される、統計的集計のグラフを作成します。必要に応じて、この splitby フィールドの⼀意の各値がシリーズとなるように、データをフィールドで分割することができます。eval 式を 使⽤する場合は、split-by 句が必要です。limit および agg オプションにより、シリーズのフィルタリングを指定 できます。ただし、where-clause が明⽰的に指定されている場合は無視されます (limit=0 はシリーズのフィルタ リングなしを意味する)。 バケツのタイムスパンと per_* 関数 per_day()、per_hour()、per_minute()、および per_second() 関数は集計関数で、結果となるグラフのタイムスパンの 設定は⾏いません。これらの関数は、スパンが明⽰的に指定されていない場合に、データの⼀貫したスケールを取 得するために利⽤されます。結果となるスパンは、サーチの時間範囲によって異なります。 たとえば、per_hour() は時間当たりのレート、または sum()/<スパン内の時間数> となるようにフィールド値を変 換します。グラフの終了スパンが 30m の場合は、sum()*2 になります。 スパンを 1h にする場合は、サーチに引数 span=1h を指定する必要があります。 注意: 同じサーチ内で、あるフィールドに対して per_hour() を、別のフィールドに対して 意の関数の組み合わせ) を使⽤することができます。 per_minute() (または任 split-by フィールドに関する注意 または timechart を使⽤する場合、関数内に指定したフィールドを split-by フィールドとして使⽤すること はできません。たとえば、以下のコマンドを実⾏することはできません。 chart ... | chart sum(A) by A span=log2 ただし、eval 式を使ってこの問題に対処することができます。以下に例を⽰します。 ... | eval A1=A | chart sum(A) by A1 span=log2 例 例 1 この例では、『サーチチュートリアル』のサンプルデータセットとフィールドのルックアップを使⽤して、イ ベントデータにさまざまな情報を追加します。この例を実⾏する前に: サーチチュートリアルのこのトピック からデータ セットをダウンロードした後、指⽰に従って Splunk にアップロードしてください。 『サーチチュートリアル』のこのトピック から CSV ファイルをダウンロードした後、指⽰に従って フィールドルックアップを設定してください。 元のデータセットには、Buttercup Games オンラインストア で販売された商品のカタログ番号を表す productId フィールドが含まれています。フィールドルックアップにより、イベントに 2 種類の新規フィールド を追加します。product_name (商品の詳細を表す名前)、および price (商品のコストを表す) です。 昨⽇購⼊された各商品の収益をグラフ化します。 sourcetype=access_* action=purchase | timechart per_hour(price) by productName usenull=f useother=f 204 この例では、すべての購⼊イベント (action=purchase で定義) をサーチして、その結果を timechart コマンドに渡し ます。per_hour() 関数は、各項⽬ (product_name) の price フィールドの値を合計して、それをその⽇の各時間にバ ケツ化します。 これは、[統計] タブに次の結果テーブルを⽣成します。 [視覚エフェクト] タブでのレポートを表⽰、フォーマットします。ここでは、スタック縦棒グラフとしてフォー マットしています。 このグラフを作成したら、各セクション上にマウスカーソルを移動して、その時間帯に購⼊された商品のその他の 測定基準を表⽰することができます。グラフには、データが時間ごとのスパンでは表⽰されないことにお気づきで しょうか。スパンが指定されていないため (span=1hr など)、per_hour() 関数は値を、時間範囲 (ここでは 24 時 間) 内の時間当たりの合計となるように変換します。 例 2 この例では、『サーチチュートリアル』のサンプルデータセットとフィールドのルックアップを使⽤して、イ ベントデータにさまざまな情報を追加します。この例を実⾏する前に、サーチチュートリアルのこのトピック からデータ セットをダウンロードした後、指⽰に従って Splunk にアップロードしてください。 各商品タイプの⽇次購⼊数をグラフ化します。 sourcetype=access_* action=purchase | timechart span=1d count by categoryId usenull=f この例では、すべての購⼊イベント (action=purchase で定義) をサーチして、その結果を timechart コマンドに渡し ます。span=1day 引数は、その週の購⼊カウントを⽇単位にバケツ化します。usenull=f 引数により、categoryId に NULL 値を含む任意のイベントが無視されます。 これは、[統計] タブに次の結果テーブルを⽣成します。 [視覚エフェクト] タブでのレポートを表⽰、フォーマットします。ここでは、縦棒グラフとしてフォーマットして います。 205 各⽇およびその週の、異なる商品購⼊数を⽐較します。⽇単位で各商品の購⼊数はさほど変わらないようです。 例 3 この例では、『サーチチュートリアル』のサンプルデータセットとフィールドのルックアップを使⽤して、イ ベントデータにさまざまな情報を追加します。この例を実⾏する前に: サーチチュートリアルのこのトピック からデータ セットをダウンロードした後、指⽰に従って Splunk にアップロードしてください。 『サーチチュートリアル』のこのトピック から CSV ファイルをダウンロードした後、指⽰に従って フィールドルックアップを設定してください。 元のデータセットには、Buttercup Games オンラインストア で販売された商品のカタログ番号を表す productId フィールドが含まれています。フィールドルックアップにより、イベントに 2 種類の新規フィールド を追加します。product_name(商品の詳細を表す名前)、および price (商品のコストを表す) です。 週における、各商品販売に対して得られた合計収益をカウントします。ここでは、そのための 2 種類の⽅法を記 載しています。 1. 最初のサーチは span 引数を使って、サーチ結果を 1 ⽇の単位でバケツ化しています。次に て、各 product_name の price を追加します。 sum() 関数を使っ sourcetype=access_* action=purchase | timechart span=1d sum(price) by product_name usenull=f 2. 2 番⽬のサーチでは、per_day() 関数を使って各⽇の price 値の合計を計算しています。 sourcetype=access_* action=purchase | timechart per_day(price) by product_name usenull=f 両⽅のサーチが、[統計] タブに以下の結果テーブルを⽣成します。 [視覚エフェクト] タブでのレポートを表⽰、フォーマットします。ここでは、縦棒グラフとしてフォーマットして います。 206 これで、各⽇およびその週の、商品購⼊による収益合計を⽐較することができます。 例 4 この例は、サーチチュートリアルのサンプルデータセットを使⽤しています。サーチチュートリアルのこのト ピック からデータ セットをダウンロードした後、指⽰に従って Splunk にアップロードしてください。次 に、事前設定されている時間範囲の [昨⽇] または [過去 24 時間] を使って、このサーチを実⾏します。 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 に名前を変更します。 これは、[統計] タブに以下の結果テーブルを⽣成します。 [視覚エフェクト] タブでのレポートを表⽰、フォーマットします。ここでは、⾯グラフとして設定されています。 2 つの領域の差は、すべてのページ参照が購⼊につながっている訳ではないことを表しています。すべてのページ 参照が購⼊につながっていれば、両⽅の領域のオーバーレイが相互に完全に重なり 2 つの領域の差がなくなりま す。 where 句の使⽤ これらの例は、where 句を使って、時系列グラフに返されるシリーズ値の数を制御しています。 例 1: 最⼩カウント値に基づいて、5 つの希なシリーズを表⽰します。その他のシリーズ値には「other」 (その 他) のラベルを設定します。 207 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 その他の例 例 1: 各ホスト (host) に対して、毎分の平均「CPU」および平均「MEM」を算出します。 ... | timechart span=1m eval(avg(CPU) * avg(MEM)) by host 例 2: processor 別の cpu_seconds の平均を⼩数第 2 位で丸めた時間グラフを作成します。 ... | timechart eval(round(avg(cpu_seconds),2)) by processor 例 3: 各ホスト (host) に対して、CPU の毎分の平均値を算出します。 ... | timechart span=1m avg(CPU) by host 例 4: ホスト (host) 別の平均「cpu_seconds」の時間グラフを作成し、時間グラフの軸を歪める可能性がある データ (範囲外の値) を削除します。 ... | timechart avg(cpu_seconds) by host | outlier action=tf 例 5: ホストの平均スループット (thruput) の推移をグラフ化します。 ... | timechart span=5m avg(thruput) by host 例 6: 使⽤例 sshd failed OR failure | timechart span=1m count(eventtype) by source_ip usenull=f where count>10 関連項⽬ bucket、chart、sitimechart Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、timechart コマンドの 使⽤⽅法に関する質問と回答をご覧いただけます。 top 概要 フィールドで⼀番多い値を表⽰します。 構⽂ top <top-opt>* <field-list> [<by-clause>] 必要な引数 <field-list> 構⽂: <field>, ... 説明: カンマ区切り形式のフィールド名。 <top-opt> 208 構⽂: countfield=<string> | limit=<int> | otherstr=<string> | percentfield=<string> | showcount=<bool> | showperc=<bool> | useother=<bool> 説明: top のオプション。 オプション引数 <by-clause> 構⽂: by <field-list> 説明: グループ化する 1 つ以上のフィールド名。 Top のオプション countfield 構⽂: countfield=<string> 説明: count の値を書き込む新規フィールド名。デフォルトは「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) です。 説明 フィールドリスト内のすべてのフィールドの値の組から、もっとも頻繁に登場する組と、その数と割合を検索しま す。オプションの by-clause を指定すると、group-by フィールドの各⼀意の値の組に対して最頻値が検索されま す。 例 例 1: referer フィールドの、もっとも共通な値上位 20 件を返します。 sourcetype=access_* | top limit=20 referer 例 2: 各 referer_domain に対して、件数が上位の action 値を返します。 sourcetype=access_* | top action by referer_domain 制限が指定されているため、これは「action」と「referer_domain」のすべての値の組み合わせ、およびカウン トとパーセンテージを返します。 209 例 3: 各カテゴリで購⼊件数が上位の製品を返しますが、パーセント (percent) フィールドは表⽰しません。ま た、カウント (count) フィールドの名前を「total」に変更します。 sourcetype=access_* status=200 action=purchase | top 1 productName by categoryId showperc=f countfield=total 関連項⽬ rare、sitop、stats Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、top コマンドの使⽤⽅ 法に関する質問と回答をご覧いただけます。 transaction このコマンドは指定されたイベントを⼊⼒として、各種制約を満たすイベントに基づいてトランザクションを探し ます。トランザクションは、各メンバーの raw テキスト (_raw フィールド)、もっとも古いメンバーの時刻/⽇付 フィールド、および各メンバーのその他すべてのフィールドの集合で構成されています。 また、transaction コマンドは raw イベントに 2 つのフィールド duration および eventcount を⽣成しま す。duration の値は、トランザクション内の最初のイベントと最後のイベントのタイムスタンプの差で す。eventcount の値は、トランザクション内のイベント数です。 トランザクションの詳細は、『サーチマニュアル』を参照してください。 概要 イベントをトランザクションでグループ化します。 構⽂ transaction [<field-list>] [name=<transaction-name>] <txn_definition-opt>* <memcontrol-opt>* <renderingopt>* 引数 field-list 構⽂: <string>, ... 説明: 1 つのフィールドまたはフィールド名のリスト。イベントは、このフィールドの値に基づいてトラン ザクションにグループ化されます。引⽤符で囲んだフィールドのリストを指定すると、各フィールドの値が 同じ場合にグループ化されます。 memcontrol-opt 構⽂: <maxopentxn> | <maxopenevents> | <keepevicted> 説明: これらのオプションは、トランザクションのメモリー使⽤量を制御します。必須ではありませんが、 0 個以上のオプションを使ってトランザクションを定義することができます。 210 name 構⽂: name=<transaction-name> 説明: トランザクションのサーチに使⽤する、transactiontypes.conf に指定されているスタンザ名。他の設 定引数 (maxspan など) を指定すると、それらの指定値がトランザクション定義に指定されているパラメー タの値に優先されます。 rendering-opt 構⽂: <delim> | <mvlist> | <mvraw> | <nullstr> 説明: これらのオプションは、トランザクションの複数値表⽰を制御します。必須ではありませんが、0 個 以上のオプションを使ってトランザクションを定義することができます。 txn_definition-opt 構⽂: <maxspan> | <maxpause> | <maxevents> | <startswith> | <endswith> | <connected> | <unifyends> | <keeporphans> 説明: これらのオプションを使ってトランザクションを定義します。必須ではありませんが、0 個以上のオ プションを使ってトランザクションを定義することができます。 トランザクション定義オプション connected=<bool> 説明: フィールドまたはフィールドのリストが指定されている場合にのみ関係します。transaction が必要 とするフィールドをイベントが保有しているけれども、トランザクション内でこれらのフィールドがどれも インスタンス化されていない場合 (前のイベントで追加)、新しいトランザクションを開始 (connected=t) ま たはイベントをトランザクションに追加 (connected=f) します。 endswith=<filter-string> 説明: サーチまたは eval フィルタリング式。あるイベントがこの条件を満たすと、新しいトランザクショ ンの終了としてマークされます。 keeporphans=<bool> 説明: トランザクションの⼀部ではない結果を出⼒するかどうかを指定します。「孤⽴」として渡される結 果は、孤⽴結果に対して 1 の値を持つ _txn_orphan フィールドがあるトランザクションイベントとは区別さ れます。デフォルトは偽 (false) です。 maxspan=<int>[s|m|h|d] 説明: maxspan 制約は、トランザクションのイベントの期間を maxspan 未満に制限します。負の値を指 定した場合、maxspan 制約は無効になります。デフォルトは maxspan=-1 (無制限) です。 maxpause=<int>[s|m|h|d] 説明: maxpause 制約は、トランザクションの各イベント間の停⽌時間を maxpause 以下に制限します。 負の値を指定した場合、maxpause 制約は無効になります。デフォルトは maxpause=-1 (無制限) です。 maxevents=<int> 説明: 1 つのトランザクション内の最⼤イベント数。負の値を指定した場合、この制約は無効になります。 デフォルトは、maxevents=1000 です。 startswith=<filter-string> 説明: サーチまたは eval フィルタリング式。あるイベントがこの条件を満たすと、新しいトランザクショ ンの開始としてマークされます。 unifyends=<bool> 説明: startswith/endswith 制約に⼀致するイベントが、イベントをトランザクションにまとめるために⽤ いられるフィールドにも、1 つ以上⼀致しなければならないかどうかを指定します。デフォルトは、 unifyends=f です。 ⽂字列フィルタリングオプション <filter-string> 構⽂: <search-expression> | (<quoted-search-expression>) | eval(<eval-expression>) 説明: サーチまたは eval フィルタリング式。あるイベントがこの条件を満たすと、新しいトランザクショ ンの終了としてマークされます。 <search-expression> 説明: 引⽤符を含まない有効なサーチ式です。 <quoted-search-expression> 説明: 引⽤符を含む有効なサーチ式です。 <eval-expression> 説明: 論理演算式を評価する有効な eval 式です。 メモリー制約オプション keepevicted=<bool> 説明: 削除したトランザクションを出⼒するかどうかを指定します。closed_txn フィールドの値を確認す れば、削除されたトランザクションと削除されていないトランザクションを判別することができます。削除 された場合フィールドの値は 0 が、終了された場合は 1 が設定されます。maxevents、maxpause、 maxspan、startswith のいずれかの条件 (最後の条件については、トランザクションは時間の逆順にイベン トを⾒るため、開始条件を満たしたらトランザクションを終了します) を満たす場合、「closed_txn」には 1 が設定されます。これらの条件がどれも指定されていない場合は、すべてのトランザクションの 「closed_txn」に 0 が設定されている場合でも、すべてのトランザクションが出⼒されます。メモリー制限 に達すると、トランザクションを 1 つ削除することもできます。 211 maxopenevents=<int> 説明: LRU ポリシーを使って、トランザクションの削除を開始する前に、開かれているトランザクション の⼀部となるイベントの最⼤数を指定します。このフィールドのデフォルト値は、limits.conf の transactions スタンザから読み込まれます。 maxopentxn=<int> 説明: LRU ポリシーを使って、トランザクションの削除を開始する前に、開いているプール内に保持する 未終了トランザクションの最⼤数を指定します。このフィールドのデフォルト値は、limits.conf の transactions スタンザから読み込まれます。 複数値表⽰オプション delim=<string> 説明: 複数の値を区切る⽂字を指定します。mvraw=t と連携使⽤した場合、_raw の値を区切るために使わ れる⽂字列を表します。デフォルトは 1 つのスペース (" ") です。 mvlist=<bool> | <field-list> 説明: トランザクションの複数値フィールドを、元のイベントのリストの到着順に並べるか (mvlist=t)、ま たは⼀連の⼀意のフィールド値を辞書式に並べるか (mvlist=f) を指定します。フィールドのカンマ/スペー ス区切りリストを指定した場合、それらのフィールドのみをリストとして表⽰します。デフォルトは f で す。 mvraw=<bool> 説明: トランザクションのサーチ結果の フォルトは f です。 _raw フィールドが複数値フィールドかどうかを指定します。デ nullstr=<string> 説明: ⽋損フィールド値を、トランザクション内の複数値フィールドの⼀部として表⽰する際に使⽤する⽂ 字列値。このオプションは、リストとして表⽰されるフィールドにのみ適⽤されます。デフォルトは NULL です。 説明 Splunk は、定義されている複数のフィールドを論理積 (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 例 例 1 この例は、サーチチュートリアルのサンプルデータセットを使⽤しています。[this topic in the tutorial] からデータ セットをダウンロードした後、指⽰に従って Splunk にアップロードしてください。次に、時間範 囲に [その他] > [昨⽇] を指定してサーチを実⾏します。 同じ IP アドレスを共有する、Web アクセスイベントに基づくトランザクションを定義します。トランザクション 内の最初のイベントと最後のイベントの差は 30 秒以下でなければなりません。また、トランザクション内の各イ ベントの間隔は 5 秒以内でなければなりません。 sourcetype=access_* | transaction clientip maxspan=30s maxpause=5s これによって、以下のイベントリストが作成されます。 212 このサーチは、サーバーにアクセスした IP アドレスと時間制約に基づいて、イベントをグループ化します。host や source などの、サーチ結果の⼀部のフィールドは、複数値フィールドになることもあります。たとえば、同じ オフィス内から複数の⼈々が買い物した場合など、単⼀の IP からの要求が複数のホストから来る場合がありま す。詳細は、『ナレッジ管理マニュアル』の「トランザクションについて」を参照してください。 例 2 この例は、サーチチュートリアルのサンプルデータセットを使⽤しています。[this topic in the tutorial] からデータ セットをダウンロードした後、指⽰に従って Splunk にアップロードしてください。次に、時間範 囲に [その他] > [昨⽇] を指定してサーチを実⾏します。 と clientip の値の⼀意の組み合わせを持つ Web アクセス・イベントに基づいて、トランザクションを定義し ます。トランザクション内の最初のイベントと最後のイベントの差は 30 秒以下でなければなりません。また、ト ランザクション内の各イベントの間隔は 5 秒以内でなければなりません。 host sourcetype=access_* | transaction clientip host maxspan=30s maxpause=5s これによって、以下のイベントリストが作成されます。 例 1 のトランザクションとは対照的に、これらの各イベントは時間制約の制限内で、IP アドレス (clientip) と host 値の、⼀意の組み合わせを保有しています。そのため、単⼀トランザクションのイベント内に、異なる host または clientip アドレスの値は登場しないはずです。 例 3 この例は、サーチチュートリアルのサンプルデータセットを使⽤しています。[this topic in the tutorial] からデータ セットをダウンロードした後、指⽰に従って Splunk にアップロードしてください。次に、時間範 囲に [その他] > [昨⽇] を指定してサーチを実⾏します。 単⼀の IP アドレスからの 10 分間の期間内に発⽣した 3 件のイベントを、購⼊トランザクションとして定義しま す。 sourcetype=access_* action=purchase | transaction clientip maxspan=10m maxevents=3 このサーチは、action=purchase 値を持つ Web アクセスイベントに基づいて、購⼊イベントを定義します。これら の結果は transaction コマンドに渡されます。このサーチは、同じ clientip を共有するイベントに基づいて、トラ ンザクション (セッションが 10 分以内で 3 件以下のイベントを含む) を識別します。 これによって、以下のイベントリストが作成されます。 213 上記の結果では、異なるホストドメインから同じ IP アドレスが表⽰されています。 例 4 この例は、⽣成されたメールデータ (sourcetype=cisco_esa) を使⽤しています。この例のサーチ は、sourcetype=cisco_esa をご⾃分のデータの sourcetype 値に変更することで、任意のメールデータに対して実 ⾏できます。 (メッセージ ID)、icid (着信接続 ID)、および dcid (配信接続 ID) の値が同じである最⾼ 10 件までのイベン ト、および「Message done」⽂字列を含むトランザクション内の最後のイベントのグループとして、メールトラ ンザクションを定義します。 mid sourcetype="cisco_esa" | transaction mid dcid icid maxevents=10 endswith="Message done" これによって、以下のイベントリストが作成されます。 ここでは、各トランザクションには 10 件以下のイベントが存在していることが分かります。また、最後のイベン トのイベント⾏には⽂字列「Message done」が含まれています。 例 5 この例は、⽣成されたメールデータ (sourcetype=cisco_esa) を使⽤しています。この例のサーチ は、sourcetype=cisco_esa をご⾃分のデータの sourcetype 値に変更することで、任意のメールデータに対して実 ⾏できます。 (メッセージ ID)、icid (着信接続 ID)、および dcid (配信接続 ID) の値が同じな、最⾼ 10 件のイベントのグ ループを、メールトランザクションとして定義します。トランザクション内の最初のイベントと最後のイベントの 差は 5 秒以下でなければなりません。また、各トランザクション内のイベント数は 10 件以下でなければなりま せん。 mid 214 sourcetype="cisco_esa" | transaction mid dcid icid maxevents=10 maxspan=5s mvlist=t デフォルトで、サーチ結果内の複数値フィールドの値は抑制されています (mvlist=f)。このサーチで mvlist=t を指 定することにより、選択フィールドのすべての値を表⽰できます。これによって、以下のイベントリストが作成さ れます。 ここでは、期間が 5 秒未満のトランザクションを参照できます。また、フィールドに複数の値が存在する場合 は、それぞれの値が表⽰されます。 例 6 この例は、サーチチュートリアルのサンプルデータセットを使⽤しています。[this topic in the tutorial] からデータ セットをダウンロードした後、指⽰に従って Splunk にアップロードしてください。次に、時間範 囲に [全時間] を指定してこのサーチを実⾏します。 同じセッション ID (JSESSIONID)を持ち、同じ IP アドレス (clientip) からで、最初のイベントに⽂字列「signon」 が、最後のイベントに⽂字列「purchase」がある、⼀連のイベントグループをトランザクションとして定義しま す。 sourcetype=access_* | transaction JSESSIONID clientip startswith="*signon*" endswith="purchase" | where duration>0 このサーチは startswith="*signon*" 引数を使って、トランザクション内の最初のイベントを⽂字列「signon」を含 むイベントとして定義しています。endswith="purchase" 引数は、トランザクション内の最後のイベントに対して同 様の処理を⾏います。 次に、トランザクションは where コマンドに渡され、完了までに 1 秒未満しかかかっていないすべてのトランザク ションを、duration フィールドでフィルタリングしています。 トランザクションの処理に⻑時間がかかる理由を知りたい場合もあるでしょう。そのような場合にこれらのイベン トを確認すると、トラブルシューティングに役⽴ちます。このデータでは確認できませんが、ユーザーが購⼊を完 了するまでの間に商品の追加、更新、削除などの操作を⾏っているために、トランザクションの完了まで時間がか かっていることもあります。 その他の例 例 1: 30 秒の期間内に発⽣し、各イベントが 5 秒以内に発⽣している、同じホストと cookie 値を持つサーチ結 果をグループ化します。 ... | transaction host cookie maxspan=30s maxpause=5s 例 2: 同じ「from」値を持ち、最⼤期間が 30 秒で、イベント間の停⽌が5秒以下のサーチ結果をトランザクショ ンにグループ化します。 215 ... | transaction from maxspan=30s maxpause=5s Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、transaction コマンドの 使⽤⽅法に関する質問と回答をご覧いただけます。 transpose 概要 各サーチ⾏が列になるように、指定した⾏ (サーチ結果) 数を列 (フィールド値のリスト) として返します。 構⽂ transpose [int] 必要な引数 int 構⽂: <int> 説明: 転置する⾏数を制限します。デフォルトは、5 です。 例 例 1: 各列がイベントを、各⾏がフィールド値を表すように、最初の 5 件のサーチ結果を転置します。 ... | transpose 関連項⽬ fields、stats Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、transpose コマンドの 使⽤⽅法に関する質問と回答をご覧いただけます。 trendline 概要 フィールドの移動平均を算出します。 構⽂ trendline <trendtype><period>(<field>) [AS <newfield>] 必要な引数 trendtype 構⽂: syntax = sma|ema|wma 説明: 計算する傾向のタイプ。現在サポートされている傾向のタイプは、単純移動平均 (sma)、指数移動平 均 (ema)、および加重移動平均 (wma) です。 period 構⽂: <num> 説明: 整数で 2〜10000 の範囲の整数で表す、傾向を計算する期間。 <field> 構⽂: <field> 説明: 傾向を計算するフィールド名。 オプション引数 <newfield> 構⽂: <field> 説明: 出⼒の書き込み先フィールド名を指定します。デフォルトは <トレンドタイプ><期間>(<フィールド >) になります。 説明 フィールドの移動平均を算出します。単純移動平均 (sma)、指数移動平均 (ema)、および加重移動平均 (wma) を 使⽤できます。出⼒は指定した新規フィールドに書き込まれます。 例 216 例 1: foo フィールドの 5 件のイベントの単純移動平均を算出し、新しいフィールド「smoothed_foo」に書き込 みます。また、同じ⾏で bar フィールドの 10 件の指数移動平均を算出し、フィールド「ema10(bar)」に書き込 みます。 ... | trendline sma5(foo) as smoothed_foo ema10(bar) 関連項⽬ accum、autoregress、delta、streamstats Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、trendline コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 tscollect コマンドはインデックスフィールドを使って、指定した名前空間内に時系列インデックス (tsidx) ファイル を作成します。これらのファイルの結果テーブルは、すでにインデックスを作成したデータのサブセッ トになります。tstats コマンドを利⽤して、raw データの代わりにこれらの tsidx ファイルをサーチして、レポー トを作成することができます。インデックス全体のサブセットをサーチするため、サーチ処理を素早く完了するこ とができます。 tscollect では、同じ名前空間内に複数の tsidx ファイルを作成することができます。現在の tsidx ファイルが⼤き くなりすぎたと判断されたら、新しい tsidx ファイルの作成が開始されます。 tscollect 注意: Splunk Enterprise 5.x からアップグレードする際に、そのリリースで実験版の tscollect コマンドを使⽤ していた場合、Splunk Enterprise 6.x での tsidx ファイルのフォーマットは、前のバージョンと互換性がありま せん。 概要 後ほど tstats コマンド で使⽤するために、結果を tsidx ファイルに書き込みます。 重要: このコマンドを実⾏するには、「indexes_edit」機能が必要です。 構⽂ ...| tscollect namespace=<string> [squashcase=<bool>] [keepresults=<bool>] オプション引数 keepresults 構⽂: keepresults = true | false 説明: 真 (True) の場合、tscollect は⼊⼒として受け取った結果と同じ結果を出⼒します。偽 (False) の場 合、処理した結果数を返します (結果を保管する必要がないため効率的です)。デフォルトは偽 (false) で す。 namespace 構⽂: namespace=<string> 説明: tsidx ファイルの場所を定義します。namespace が指定されている場合、tsidx ファイルはメイン tsidxstats ディレクトリ ($SPLUNK_DB/tsidxstats) 下のその名前のディレクトリに書き込まれます。これらの名 前空間は、新たなデータを追加するために、複数回書き込めます。名前空間が指定されていない場合、ファ イルはそのサーチのジョブディレクトリ内に書き込まれ、ジョブと同じだけ持続します。名前空間の場所 は、indexes.conf の tsidxStatsHomePath 属性で設定することもできます。 squashcase 構⽂: squashcase = true | false 説明: field::value トークンを⽤語⽬録に配置する際に、⼤⽂字と⼩⽂字を区別するかどうかを指定しま す。インデックスフィールド tsidx ファイルを Splunk と同様に作成するには、結果をすべて⼩⽂字に変換 するように squashcase=true を設定します。デフォルトは偽 (false) です。 例 例 1: 結果テーブルを名前空間 foo の tsidx ファイルに書き込みます。 ... | tscollect namespace=foo 例 2: メインインデックスからイベントを取得して、foo フィールドの値を job ディレクトリの tsidx ファイルに 書き込みます。 index=main | fields foo | tscollect 関連項⽬ collect、stats、tstats 217 Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、tscollect コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 tstats tstats コマンドは、tsidx ファイル内のインデックス作成されたフィールドに対して、統計クエリを実⾏する場合 に使⽤します。これらのフィールドは、標準のインデックスデータ、tscollect データ、または⾼速化されたデー タモデルから取得される可能性があります。 概要 tsidx ファイル内のインデックス作成されたフィールドに対して、統計を実⾏します。 構⽂ tstats [prestats=<bool>] [local=<bool>] [append=<bool>] [summariesonly=<bool>] [allow_old_summaries=<bool>] [chunk_size=<unsigned int>] <stats-func> [ FROM ( <namespace> | sid=<tscollect-job-id> | datamodel=<datamodel-name> )] [WHERE <search-query>] [( by | GROUPBY ) <field-list> [span=<timespan>] ] 必要な引数 <stats-func> 構⽂: count(<field>) | ( avg | dc | earliest | estdc | exactperc | first | last | latest | median | max | min | mode | perc | p | range | stdev | stdevp | sum | sumsq | upperperc | values | var | varp )(<field>) [AS <string>] 説明: フィールドに対して基本的なカウント操作を⾏うか、または関数を実⾏します。実⾏する任意の数の 集計操作を指定できます。prestats モードではない限り、「AS」を使って結果名を変更することも可能で す。すべての関数の⼀覧と例については、「stats の関数」を参照してください。 namespace 構⽂: <⽂字列> 説明: $SPLUNK_DB/tsidxstats で、tsidx ファイルの場所を定義します。名前空間の場所は、indexes.conf の tsidxStatsHomePath 属性で設定することもできます。 sid 構⽂: sid=<tscollect-job-id> 説明: tscollect サーチ (tsidx ファイルを⽣成) のジョブ ID ⽂字列。 datamodel 構⽂: datamodel=<datamodel-name> 説明: ⾼速化データモデルの名前。 オプション引数 append 構⽂: append=<bool> 説明: prestats モード (prestats=t) の場合、prestats の結果を既存の結果に追加する (結果を⽣成するので はない) append=t を有効にします。 allow_old_summaries 構⽂: allow_old_summaries=true | false 説明: ⾼速化されたデータモデルから選択する場合にのみ適⽤されます。偽 (False) を設定した場合、要約 されたディレクトリが最新の場合、それらのディレクトリからの結果のみを提供します。つまり、データモ デル定義が変更された場合、tstats から出⼒を⽣成する際に、新しい定義よりも古いサマリーディレクトリ は使⽤されません。このデフォルト動作により、tstats からの出⼒は常に現在の設定を反映することになり ます。真 (True) を設定すると、tsats は現在のサマリーデータと、定義変更前に⽣成されたサマリーデータ の両⽅を使⽤します。基本的にこれは⾼度なパフォーマンス機能で、古いサマリーが「⼗分に良好」である ことが分かっている場合に使⽤します。デフォルトは偽 (false) です。 chunk_size 構⽂: chunk_size=<unsigned_int> 説明: 詳細オプション:この引数は、クエリーへの回答時に単⼀の TSIDX ファイルから 1 回に取得するイ ベント数を制御します。クエリーが⼤量のメモリーを消費している場合にのみ、この値を⼩さくすることを 検討してください。このような事態としては、⼤量の⼀意の値を持つ複数のフィールドをグループ化するな どの、過度の⾼濃度 split-by などが \\挙げられます。この値が⼩さすぎると、クエリーの総合的な実⾏時間 に悪影響を及ぼす可能性があります。デフォルトは 10000000 です。 local 構⽂: local=true | false 説明: 真 (True) の場合、サーチヘッドでのみプロセッサを実⾏するように強制します。デフォルトは偽 (false) です。 prestats 構⽂: prestats=true | false 説明: 回答を prestats 形式で出⼒する場合に使⽤します。これにより、prestats の出⼒を取る chart や timechart などの異なるタイプのプロセッサに、パイプを使って結果を渡すことができます。これはグラフ 視覚エフェクトを作成する場合にとても役⽴ちます。デフォルトは偽 (false) です。 218 summariesonly 構⽂: summariesonly=<bool> 説明: ⾼速化されたデータモデルから選択する場合にのみ適⽤されます。偽 (False) の場合、要約された データと要約されていないデータの両⽅から結果を⽣成します。TSIDX データとして要約されていないデー タの場合、オリジナルのインデックスデータに対して完全サーチ動作が使⽤されます。真 (True) を設定す ると、「tstats」は⾼速化により⾃動⽣成された TSIDX データからのみ結果を⽣成し、要約されていない データは提供されません。デフォルトは偽 (false) です。 <field-list> 構⽂: <field>, <field>, ... 説明: 結果をグループ化するフィールドのリストを指定します。 説明 は⽣成コマンドなので、append モード (append=t) の場合を除き、サーチパイプライン内の最初のコマンド でなければなりません。 tstats tsidx フィールド内のインデックスされたフィールドに対して統計クエリーを実⾏するには、tstats コマンドを使 ⽤します。さまざまな⽅法でデータから選択することができます。 1. 標準のインデックスデータ:FROM 句を指定しない場合 (名前空間、サーチジョブ ID、またはデータモデルを 指定する)、サーチと同じ⽅法でインデックスデータから選択されます。ロールで許可されているインデックスか らの選択に限定されており、WHERE 句で選択するインデックスを厳密に制御することができます。WHERE 句 サーチにインデックスが指定されていない場合は、デフォルトのインデックスが使⽤されます。デフォルトでは、 ロールベースのサーチフィルタが適⽤されますが、limits.conf でこれをオフにすることができます。 2. tscollect で⼿動収集されたデータ:FROM <namespace> で名前空間から選択します。tscollect に名前空間を指定し ない場合、データはそのジョブの dispatch ディレクトリに収集されます。この場合、FROM sid=<tscollect-job-id> を使ってそのデータから選択します。 3. ⾼速化データモデルのハイパフォーマンス分析ストア (.tsidx データサマリーの集合体):この⾼速化データモデ ルから、FROM datamodel=<datamodel-name> を使って選択します。 tsidx ファイルのサーチ時には、取得されたイベント内のカウントに不整合が⽣じることがあります。これは、 tsidx ファイル内のインデックスされたフィールドのトークンと raw トークンを区別することができないためで す。⼀⽅、⾼速化データモデルに対して、または tscollect から tstats を実⾏すると、フィールドと値のみが保管 されており、raw トークンがないため、より明確な結果が得られます。 where によるフィルタリング 実⾏する任意の数の集合 (aggregate-opt) を指定できます。また、WHERE キーワードを使ってクエリーをフィル タリングすることができます。このクエリーは、サーチプロセッサ内で使⽤する標準のクエリーと似ています。こ れは、search とすべて同⼀のサーチ引数をサポートしています (earliest=-1y など)。 _time によるグループ化 任意の数の GROUPBY フィールドを指定できます。_time でグループ化する場合は、時間バケツでグループ化す るための期間を span で指定する必要があります。この期間は、「span='1hr'」や「'3d'」のような、Splunk で通 常使⽤される期間と似ています。また、「auto」もサポートしています。 例 例 1: mydata 名前空間内のすべてのイベント数を取得します。 | tstats count FROM mydata 例 2: mydata 内の foo フィールドの平均を返します。bar は value2 で、baz の値は 6 以上になります。 | 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") 219 例 7: summariesonly と timechart を使⽤して、⾼速化されたデータモデル タのサマリーが作成されたかを表します。 mydm の、過去 1 時間にどのようなデー | tstats summariesonly=t prestats=t count from datamodel=mydm by _time span=1h | timechart span=1h count 関連項⽬ stats、tscollect Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、tstats コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 typeahead 概要 指定されたプレフィックスの先⾏⼊⼒を返します。 構⽂ typeahead prefix=<string> count=<int> [max_time=<int>] [<index-specifier>] [<starttimeu>] [<endtimeu>] [collapse] 必要な引数 prefix 構⽂: prefix=<string> 説明: 先⾏⼊⼒情報を返すための、完全サーチ⽂字列。 count 構⽂: count=<int> 説明: 返す最⼤結果数 オプション引数 index-specifier 構⽂: index=<string> 説明: デフォルトインデックスの代わりに指定したインデックスをサーチします max_time 構⽂: max_time=<int> 説明: 先⾏⼊⼒を実⾏できるようになるまでの最⼤秒数。max_time=0 の場合、制限はありません。 startimeu 構⽂: starttimeu=<int> 説明: 開始時刻をエポック (UNIX 時) から N 秒に設定します。デフォルトは 0 です。 endtimeu 構⽂: endtimeu=<int> 説明: 終了時刻をエポック (UNIX 時) から N 秒に設定します。デフォルトは now です。 collapse 構⽂: collapse=<bool> 説明: 他の単語のプレフィックスでイベントカウントが同じ単語を表⽰しないかどうかを指定しますデフォ ルトは真 (True) です。 説明 typeahead コマンドは、最⼤ きます。 count 件の結果を返します。インデックスを対象にでき、時間で制限することがで Typeahead および sourcetype の名前変更 props.conf で sourcetype の名前を変更したら、キャッシュデータへの反映まで約 5 分ほどかかります (実際の 時間は、サーバーのパフォーマンスによって多少異なります)。その間の先⾏⼊⼒サーチでは、引き続きキャッ シュされた sourcetype データが使⽤されます。これは想定されている動作です。 キャッシュされたデータを削除するために、以下のコマンドを実⾏することができます。 rm $SPLUNK_HOME/var/run/splunk/typeahead/*, then re-run the typeahead search. 先⾏⼊⼒サーチを再実⾏すると、変更された名前のソースタイプが表⽰されるはずです。 詳細は、『データの取り込み』マニュアルの「ソースタイプ名の変更」を参照してください。 例 220 例 例 1: インデックス「_internal」内のソースの先⾏⼊⼒情報を返します。 | typeahead prefix=source count=10 index=_internal Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、typeahead コマンドの 使⽤⽅法に関する質問と回答をご覧いただけます。 typelearner 概要 提案するイベントタイプを⽣成します。 構⽂ typelearner [grouping-field] [grouping-maxlen] オプション引数 grouping-field 構⽂: <field> 説明: 初期のイベントグループ化の際に、typelearner に対して使⽤する値を持つフィールド。デフォルトは punct で、この場合 _raw にある句読点が使⽤されます。 grouping-maxlen 構⽂: maxlen=<int> 説明: grouping-field 内で注⽬する⽂字数を指定します。負の値を設定すると、grouping-field の値全体が イベントのグループ化に使⽤されます。デフォルトは 15 です。 説明 前のサーチ結果を取り、イベントタイプとして使⽤できる可能性がある有望なサーチのリストを⽣成します。デ フォルトで typelearner コマンドは、まず grouping-field の値によりイベントをグループ化し、次に含まれている キーワードに基づいて、それらのグループをさらに結合していきます。 例 例 1: ⾃動的に (Splunk が) イベントタイプを探してサーチ結果に適⽤します ... | typelearner 関連項⽬ typer Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、typelearner コマンド の使⽤⽅法に関する質問と回答をご覧いただけます。 typer 概要 サーチ結果の eventtype を算出します 構⽂ typer 説明 サーチ結果の、既知の event-type に⼀致する eventtype フィールドを算出します。 例 例 1: 設定したイベントタイプの適⽤を Splunk に強制します (Splunk Web では、eventtype フィールドの参照 時に⾃動的にこの処理が⾏われます)。 ... | typer 関連項⽬ 221 typelearner Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、typer コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 uniq 概要 隣接する結果の繰り返しをフィルタリングします。 構⽂ uniq 説明 uniq コマンドは、渡すサーチ結果のフィルタとして機能します。前の結果と完全に重複している場合、そのサー チ結果を削除します。このコマンドは引数を取りません。 注意: ⼤きなデータセットに対してこのコマンドを実⾏することはお勧めいたしません。 例 例 1: 過去 1 時間のすべての Web トラフィックから⼀意の結果のみを保持します。 eventtype=webtraffic earliest=-1h@s | uniq 関連項⽬ dedup Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、uniq コマンドの使⽤⽅ 法に関する質問と回答をご覧いただけます。 untable 概要 結果を、表形式から統計情報出⼒に似た形式に変換します。xyseries と逆の処理を⾏います。 構⽂ untable <x-field> <y-name-field> <y-data-field> 必要な引数 <x-field> 構⽂: <field> 説明: X 軸として使⽤するフィールド <y-name-field> 構⽂: <field> 説明: データシリーズのラベルとして使⽤する値を含むフィールド <y-data-field> 構⽂: <field> 説明: グラフ化するデータを持つフィールド 例 例 1: サーチ結果を再フォーマットします。 ... | timechart avg(delay) by host | untable _time host avg_delay 関連項⽬ xyseries where 222 概要 結果をフィルタリングするために、eval 式を実⾏します。式の結果は論理値でなければなりません。 構⽂ where <eval-expression> 必要な引数 eval-expression 構⽂: <⽂字列> 説明: 宛先フィールドの値を表す、値、変数、演算⼦、および関数の組み合わせ。 サーチの実⾏前に eval 式の構⽂がチェックされ、無効な式の場合には例外が⽣成されます。 eval ステートメントの結果が、論理値になることは禁⽌されています。指定されたイベントに対して式を正 常に評価できなかった場合、結果フィールドの値は消去されます。 英数字以外の⽂字を含むフィールド名を式が参照する場合は、それを単⼀引⽤符 で囲む必要があります (例:new=count+'server-1')。 英数字以外の⽂字を含むリテラル⽂字列 を式が参照する場合は、それを⼆重引⽤符 で囲む必要があります (例:new="server-"+count)。 関数 where コマンドには、以下の関数が含まれています。abs, case, ceil, ceiling, cidrmatch, coalesce, commands, exact, exp, floor, if, ifnull, isbool, isint, isnotnull, isnull, isnum, isstr, len, like, ln, log, lower, ltrim, match, max, md5, min, mvappend, mvcount, mvindex, mvfilter, mvjoin, mvrange, mvzip, now, null, nullif, pi, pow, random, relative_time, replace, round, rtrim, searchmatch, sha1, sha256, sha512, sigfig, spath, split, sqrt, strftime, strptime, substr, time, tonumber, tostring, trim, typeof, upper, urldecode, validate.。 各関数の説明と例 については、「eval と where の関数」を参照してください。 説明 コマンドは、eval 式を使ってサーチ結果をフィルタリングしています。また、評価が成功した (論理演算が 真の) 評価のみを保持しています。 where コマンドは、eval と同じ式構⽂を使⽤します。また、両⽅のコマンドが、引⽤符で囲まれた⽂字列をリテラ ルと解釈します。引⽤符で囲まれていない⽂字列はフィールドとして取り扱われます。このため、where を使っ て、search ではできない 2 つの異なるフィールドを⽐較することができます。 where 例 例 1: IP が⼀致するか、または指定したサブネット内に存在する「CheckPoint」イベントを返します。 host="CheckPoint" | where like(src, "10.9.165.%") OR cidrmatch("10.9.165.0/25", dst) 例 2: 速度が 100 より⼤きい「physicjobs」イベントを返します。 sourcetype=physicsjobs | where distance/time > 100 関連項⽬ eval、search、regex Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、where コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 x11 コマンドは、時間ベースのデータシリーズのシーズン的パターンを調査し、それを除外して実際の傾向を確認 するために役⽴ちます。このコマンドの⽬的は、trendline コマンドと似ていますが、より洗練されて業界に普及 している X11 ⼿法を採⽤しています。 x11 時系列データのシーズンコンポーネントは、加法的または乗法的にすることができます。Splunk では、x11 で計 算を⾏うための 2 種類のシーズナリティとして定義されています。加法的な場合は、add() を、乗法的な場合は mult() を使⽤します。詳細は、『サーチマニュアル』の「Splunk による予測分析について」を参照してくださ い。 概要 フィールド内の季節的変動を削除します。 223 構⽂ x11 [<type>] [<period>=<int>] (<fieldname>) [as <newname>] 必要な引数 <fieldname> 構⽂: <field> 説明: シーズン的な傾向を計算するフィールド名。 オプション引数 <type> 構⽂: add() | mult() 説明: 計算する x11 のタイプを指定します (加法的または乗法的)。デフォルトは mult() です。 <period> 構⽂: <int> 説明: データポイント数と相対的なデータの期間で、5〜10000 の範囲の整数として表されます。period が 7 の場合、コマンドはデータの周期を 7 データポイントと想定します。指定しない場合は、⾃動的に周期 が算出されます。周期が 5 未満の場合このアルゴリズムは機能しません。また、10000 を超えると、処理 が極端に遅くなります。 <newname> 構⽂: <⽂字列> 説明: x11 出⼒のフィールド名を指定します。指定しない場合、デフォルトは「<タイプ><期間>(<フィー ルド名>)」になります。 例 例 1: ここでは、タイプにデフォルトの「mult」を、周期には 15 を使⽤します。 index=download | timechart span=1d count(file) as count | x11 mult15(count) 注意: ここでは span=1d なので、各データポイントが 1 ⽇を表します。そのため、この例で周期は 15 ⽇にな ります。 例 2: ここでは、タイプに「add」を、周期に 20 を指定します。 iindex=download | timechart span=1d count(file) as count | x11 add20(count) 関連項⽬ predict、trendline Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、x11 コマンドの使⽤⽅ 法に関する質問と回答をご覧いただけます。 xmlkv コマンドは、XML 形式のデータから⾃動的にフィールドを抽出します。JSON 形式データの場合、spath コ マンドを使⽤します。 xmlkv 224 概要 XML 形式のデータから、キーと値のペアを抽出します。 構⽂ xmlkv maxinputs=<int> 必要な引数 maxinputs 構⽂: maxinputs=<int> 説明: 最⼤⼊⼒数。 説明 コマンドは、XML タグ間の値を⾃動抽出します。たとえば、XML の ている場合、foo がキーで bar が値になります。 xmlkv _raw データに <foo>bar</foo> が含まれ 例 例 1: XML タグからフィールドを⾃動抽出します。 ... | xmlkv 例 2: 使⽤例 ... | xmlkv maxinputs=10000 関連項⽬ extract、kvform、multikv、rex、spath、xpath Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、xmlkv コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 xmlunescape 概要 xml ⽂字のエスケープを解除します。 構⽂ xmlunescape maxinputs=<int> 必要な引数 maxinputs 構⽂: maxinputs=<int> 説明: 説明 エンティティ参照 (例:&、<、および >) のエスケープを解除して、対応する元の⽂字 (例:& -> &) に戻 します。 xml 例 例 1: すべての XML ⽂字のエスケープを解除します。 ... | xmlunescape Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、xmlunescape コマンド の使⽤⽅法に関する質問と回答をご覧いただけます。 xpath 概要 225 から xpath の値を抽出して、outfield 属性を設定します。 field 構⽂ xpath [outfield=<field>] <string:xpath> [field=<field>] [default=<string>] 必要な引数 xpath 構⽂: <⽂字列> 説明: XPath 参照を指定します。 オプション引数 field 構⽂: field=<field> 説明: 参照する xpath 値を検索、抽出するフィールド。デフォルトは outfield 構⽂: outfield=<field> 説明: xpath 値を書き込むフィールド。デフォルトは xpath _raw です。 です。 default 構⽂: default=<string> 説明: xpath で参照されている属性が存在しない場合に、outfield に書き込む値を指定します。これが指定 されていない場合、デフォルト値はありません。 説明 outfield の値に、field に適⽤する xpath の値を設定します。 例 例 1: _raw XML イベントから name 値を抽出します。値の例を以下に⽰します。 <foo> <bar name="spock"> </bar> </foo> sourcetype="xml" | xpath outfield=name "//bar/@name" 例 2: _raw XML イベントから、identity_id と instrument_id を抽出します。 <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> <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" このサーチは次の 2 つの結果を返します:identity_id=3017669および identity_id=1037669。 ... | xpath outfield=instrument_id "//DataSet[sname=\"BARC\"]/instrument_id" sname="BARC" を指定しているため、このサーチは次の 1 件の結果を返します:instrument_id=912383KM1。 関連項⽬ extract、kvform、multikv、rex、spath、xmlkv Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、xpath コマンドの使⽤ 226 ⽅法に関する質問と回答をご覧いただけます。 xyseries 概要 結果をグラフ化に適した形式に変換します。 構⽂ xyseries [grouped=<bool>] <x-field> <y-name-field> <y-data-field>...[sep=<string>] [format=<string>] 必要な引数 <x-field> 構⽂: <field> 説明: X 軸として使⽤するフィールド <y-name-field> 構⽂: <field> 説明: データシリーズのラベルとして使⽤する値を含むフィールド <y-data-field> 構⽂: <field> | <field>, <field>, ... 説明: グラフ化するデータを持つフィールド。 オプション引数 format 構⽂: format=<string> 説明: 複数のデータシリーズと split-by 句が⼀緒に使⽤されている場合に、出⼒フィールド名の構築に⽤い られます。formatは sep に優先し、stats 集計⼦および関数 ($AGG$) および split-by フィールドの値 ($VALUE$) を使って、パラメータ化した式を指定することができます。 grouped 構⽂: grouped= true | false 説明: 真 (True) の場合、⼊⼒は <x-field> の値でソートされ、複数ファイル⼊⼒が可能です。デフォルト は偽 (false) です。 sep 構⽂: sep=<string> 説明: 複数のデータシリーズと split-by 句が⼀緒に使⽤されている場合に、出⼒フィールド名の構築に⽤い られます。これは、format に $AGG$<sep>$VALUE$ を設定したのと同等の意味を持ちます。 例 例 1: サーチ結果を再フォーマットします。 ... | xyseries delay host_type host 例 2: stats と eval を xyseries コマンドと組み合わせて、複数のデータシリーズのレポートを作成する⽅法に ついては、ここを参照してください。 関連項⽬ untable Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、xyseries コマンドの使 ⽤⽅法に関する質問と回答をご覧いただけます。 内部サーチコマンド 内部コマンドについて 内部サーチコマンドは、試験的なサーチコマンドです。今後のバージョンで削除されたり、更新されたり、別の機 能で再実装されたりする可能性があります。このようなコマンドは、サポート対象外となっています。 collapse collapse コマンドは実験的なコマンドで、Splunk はサポートしていません。 概要 複数ファイルの結果を、chunksize オプションで許可されているファイル数まで簡略化します。 227 構⽂ ...| collapse [chunksize=<num>] [force=<bool>] オプション引数 chunksize 構⽂: chunksize=<num> 説明: 結果ファイル数を制限します。デフォルトは、50000 です。 force 構⽂: force=<bool> 説明: force=true の場合、結果全体がメモリー内に残され、結果が適切なチャンクファイルに再分割されま す。デフォルトは偽 (False) です。 説明 collapse コマンドは、output* 演算⼦により⾃動的に起動されます。 例 例 1: 結果を簡略化します。 ... | collapse dispatch dispatch コマンドは不要になりました。すべての Splunk サーチがこのコマンドを使ったサーチとして実⾏され ます。詳細は、「search コマンド」を参照してください。 dump 概要 指定されたサーチクエリを実⾏し、イベントをローカルディスク上の⼀連のチャンクファイルにエクスポートしま す。 構⽂ dump basefilename=<string> [rollsize=<number>] [maxlocal=<number>] [compress=<number>] [format=<string>] [fields=<comma-delimited-string>] 必要な引数 basefilename 構⽂: basefilename=<string> 説明: エクスポートするファイル名のプリフィックス。 オプション引数 compress 構⽂: compress=<number> 説明: gzip 圧縮レベル。0〜9の値を指定します。0 は圧縮しないことを表しており、値を⼤きくするほど ⾼圧縮になりますが、書き込み速度は低下します。デフォルトは 2 です。 fields 構⽂: fields=<comma-delimited-string> 説明: データをエクスポートするためにエクスポートされた、Splunk イベントフィールドのリスト。無効 なフィールドは無視されます。 format 構⽂: format= raw | csv | tsv | json | xml 説明: 出⼒データフォーマット。 maxlocal 構⽂: maxlocal=<number> 説明: 許容できる最⼤ローカルディスク使⽤量 (MB)。この値に達すると、メモリー内データとローカル ファイルがフラッシュされ、HDFS にエクスポートされます。デフォルトは 1 GB です。 rollsize 構⽂: rollsize=<number> 説明: 最⼩ファイルサイズ (MB)。この値に達すると、ファイルにそれ以上のイベントは書き込まれず、 HDFS 転送の候補となります。デフォルトは 64MB です。 説明 228 このコマンドは指定したサーチクエリを実⾏し、サーチ結果をローカルディスク上の "$SPLUNK_HOME/var/run/splunk/dispatch/<sid>/dump" に 1 回エクスポートします。これは⼊⼒イベント 内の特別なフィールド _dstpath を認識します。このフィールドが設定されている場合、最終的な宛先パスを算出 するために、dst に追加するパスとしてそれが使⽤されます。 例 例 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 Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、dump コマンドの使⽤ ⽅法に関する質問と回答をご覧いただけます。 runshellscript runshellscript コマンドは、スクリプト化したアラートを実⾏する内部コマンドです。サーチコマンドとしてはサ ポートされていません。 概要 スクリプト化されたアラートを実⾏します。 構⽂ 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 結果が含まれています。 詳細は、Splunk Community Wiki のアラートスクリプトに関するトラブルシューティングの記事と、『アラート マニュアル』の「スクリプトアラートの設定」を参照してください。 関連項⽬ script Answers 何か質問がありますか?「Splunk Answers」では、Splunk コミュニティに寄せられた、runshellscript コマン ドの使⽤⽅法に関する質問と回答をご覧いただけます。 CLI でのサーチ 229 CLI でのサーチについて Splunk の CLI を使って、Splunk サーバー上でサーチをモニター、設定、実⾏することができます。ここでは、 CLI からのサーチ⽅法について説明していきます。 CLI へのアクセス⽅法とヘルプの参照⽅法については、『管理マニュアル』の「CLI について」を参照して ください。 サーチの CLI ヘルプ Splunk の CLI からは、履歴サーチとリアルタイムサーチの両⽅を実⾏できます。それぞれ、search または rtsearch コマンドを使⽤してください。役に⽴つサーチ関連の CLI ヘルプ項⽬を以下の表に⽰します。各項⽬の ヘルプを表⽰するには、CLI に以下のように⼊⼒します。 ./splunk help <object> オブジェクト 説明 rtsearch リアルタイムサーチのパラメータと構⽂が表⽰されます。 search 履歴サーチのパラメータと構⽂が表⽰されます。 searchcommands CLI で利⽤できるサーチコマンドのリストが表⽰されます。 search-fields デフォルトフィールドのリストが表⽰されます。 search-modifiers サーチ結果を絞り込むための、サーチおよび時間ベースの修飾⼦のリストが表⽰されま す。 CLI でのサーチ CLI での履歴サーチやリアルタイムサーチは、Splunk Web を使ったサーチと同様に機能しますが、サーチ結果 にタイムラインは表⽰されず、デフォルトの時間範囲もありません。その代わりサーチの種類に応じて、raw イベ ントのリストまたはテーブルとして表⽰されます。 詳細は、『サーチマニュアル』の「サーチの種類」を参照してください。 CLI サーチの構⽂は、Splunk Web から実⾏するサーチの構⽂と似ていますが、クエリー外からパラメータを渡 して、サーチの時間制限、サーチ実⾏対象サーバー、結果の表⽰⽅法などを指定することができます。 CLI サーチオプションの詳細は、この章の「CLI サーチ構⽂」を参照してください。 ローカルサーバーからの、リモート Splunk サーバーのサーチ⽅法については、『管理マニュアル』の「リ モートサーバーへのアクセスと CLI の利⽤」を参照してください。 CLI のサーチ構⽂ ここでは、CLI で search および 説明していきます。 rtsearch コマンドを使⽤する際の、構⽂と利⽤できるオプションについて簡単に CLI サーチの構⽂は、Splunk Web から実⾏するサーチの構⽂と似ていますが、サーチオブジェクト外からパラ メータを渡して、サーチの時間制限、サーチ実⾏対象サーバー、結果の表⽰⽅法などを指定することができます。 search | rtsearch [object][-parameter <value>] サーチオブジェクト サーチオブジェクトは単⼀引⽤符 (' ') で囲まれており、キーワード、式、または⼀連のサーチコマンドを使⽤でき ます。Windows の場合は、⼆重引⽤符 (" ") でサーチオブジェクトを囲んでください。 Splunk でのサーチについては、『サーチチュートリアル』の「サーチの開始」を参照してください。 すべてのサーチコマンドの⼀覧については、『サーチリファレンスマニュアル』の「すべてのサーチコマン ド」を参照してください。 サーチ⾔語とサーチコマンドのクイックリファレンスについては、『サーチリファレンスマニュアル』の 「サーチコマンドの早⾒表とサーチ⾔語クイックリファレンスカード」を参照してください。 サーチオブジェクトには、キーワードやサーチコマンドだけでなく、取得するイベントや⽣成する結果を指定する フィールドや修飾⼦も使⽤できます。 フィールドの詳細は、『サーチチュートリアル』の「フィールドを使⽤したサーチ」を参照してください。 デフォルトのフィールドとその使⽤⽅法については、『ナレッジ管理マニュアル』の「デフォルトフィール ドと内部フィールドの使⽤」を参照してください。 時間修飾⼦の詳細は、『サーチリファレンスマニュアル』の「サーチの時間修飾⼦」を参照してください。 サーチパラメータ サーチパラメータは、サーチの実⾏⽅法やサーチ結果の表⽰⽅法を⽰します。これらのパラメータは省略すること ができます。論理値を取るパラメータには、否定 (偽) として {0, false, f, no} を、肯定 (真) として {1, true, t, yes} を使⽤できます。 230 パラメータ デフォル ト 値 説明 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 <数値> 0 サーチジョブを終了するまで の、サーチジョブの実⾏時間 (秒)。0 を指定すると、無期限 になります。 maxout <数値> search の 場合 100 返すまたは stdout に出⼒する (イベントのエクスポート時) イ ベントの最⼤数。指定できる最 ⼤値は 10000 です。0 を指定 すると、イベント数の出⼒制限 はありません。 rtsearch の場合 0 output rawdata、table、csv、auto ⾮変換 ジョブの表⽰⽅法を⽰します。 サーチの 場合 rawdata。 変換サー チの場合 table。 preview <bool> T レポートサーチをプレビューす る必要があることを⽰します (計算された結果として出⼒)。 timeout <数値> 0 サーチ実⾏後の存続時間。0 を 指定すると、実⾏後すぐにジョ ブがキャンセルされます。 uri [http|https]://name_of_server:management_port サーバー名と管理⽤ポートを指 定します。name_of_server には、 Splunk サーバーの完全解決ド メイン名または IP アドレスを 使⽤することも可能です。 デフォルトの URI 値は、 Splunk サーバーの web.conf に 231 定義している になります。 mgmtHostPort の値 詳細は、『管理マニュアル』の リモート Splunk サーバーへの アクセスと CLI の使⽤に関する 記事を参照してください。 wrap <bool> T 端末幅よりも⻑い⾏を折り返す かどうかを指定します。 例 他にも、CLI ヘルプにはさまざまな例が記載されています。 例 1: root セッションに⼀致する昨⽇のイベントを取得します。 ./splunk search "session root daysago=1" 例 2: detach を指定して、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 hosts' -preview true ここで、-preview フラグは省略可能で、返された結果を表⽰するために使⽤されます。table コマンドは fields と違い、⼀般的に⾮プレビュー出⼒を⽣成する前に、すべての出⼒が必要になります。この場合、サーチ結果を表 ⽰するには、preview フラグを使⽤する必要があります。 例 5: 昨⽇の内部イベントを返します。 ./splunk search 'index=_internal' -index_earliest -1d@d -index_latest @d 232
© Copyright 2024 Paperzz