やあ、みんな だよ
いつもの作者は「記事の内容がよくわからない」と言われて凹んだので、僕が呼ばれたよ
よろしくね。
今回は「CSVを読み込んで、出力するのがよくわからない」というリクエストを受けたので説明するよ。
Macosxで動かしているので、WindowsやLinuxの人はディレクトリやフォルダを読み替えてね。
SplunkでCSVを扱うコマンドについて
SplunkでCSVを扱うコマンドは何個かあるよ
最初の2つが読み込みで、あとの2つが出力するコマンドになるよ。リンク先にいくとSplunk>Docsになっているから暇があったら読んでね。
今回使うもの


時間:
過去24時間
やモード:スマートモード
は変更しないでね
単純にCSVを扱う
まず最初はCSVを作って、そのCSVを入力してみよう.
使うコマンドはoutputcsv
とinputcsv
outputcsvを使ってCSVを出力する
まずは、CSVがないと始まらないので、作ってみよう
| tstats count where index=_internal by _time span=1h sourcetype
| timechart count by sourcetype where sum in top5
| outputcsv result.csv
に注目。
Splunkからお知らせがあるみたいだよ。クリックして開いてみよう。
Results written to file `/Application/Splunk/var/run/splunk/csv/result.csv`
結果を_/Application/Splunk/var/run/splunk/csv/result.csv_に出力した
とでているね。
Splunkがファイルを作ったりした時は、このようにジョブに表示をしてくれるので、確かめよう
inputcsvを使ってCSVを読み込む
それじゃ先ほど作ったCSVを読み込んでみよう。
いったんSPLを全部消してね。
| inputcsv result.csv
読み込めたけど、列の順番がバラバラだ。Splunkの列の順番はアルファベット順になってしまうよ
table
コマンドで並び替えてね。
少しまとめ
outputcsv
とinputcsv
を使ってCSVを出力して読み込んでみたよ。
でも、入出力する先が固定ということと、単純にCSVを扱うだけのコマンドなので、あんまり使い勝手がよくないよね。
検索した結果と合わせてみる。
やっぱりCSVを検索した結果と比較とかしてみたいよね。
そうなるとlookup
コマンドが使いたいからinputlookup
やoutputlookup
の出番だね。
outputlookupを使ってCSVを作る
今回は検索したフィールドと比較とかするのでこんなCSVを作ってみたよ
index=_internal
| top 5 sourcetype
| fields sourcetype
| streamstats current=f count
| eval text=mvindex(split("Oh,Yeah,Good,Bad,even",","),count)
| table sourcetype text
| outputlookup soucetype_output.csv
が光っているね。確かめてみよう。
今回の場所はどこだったかな?
Results written to file `/Application/Splunk/etc/apps/search/lookups/sourcetype_output.csv`
outputlookup
を使うと、Appの下のlookups
ディレクトリに出力されるんだ
だから、Appを作って別にしてあげると、管理とかが楽になるよ。試してみてね。
Appの作り方はクラスメソッドの江口さんの記事か本をみてね。
inputlookupを使ってCSVを確認する
| inputlookup soucetype_output.csv
r
を抜かしているのに気づいたけど、そのままいくね。
sourcetype | text |
---|---|
splunkd | Oh |
splunkd_ui_access | Yeah |
splunkd_access | Good |
splunk_web_service | Bad |
splunk_web_access | even |
![]() |
inputlookupを使って、CSVの中のフィールドを出力する。
| tstats count as Counts where index=_internal by sourcetype
| inputlookup append=t soucetype_output.csv
| selfjoin sourcetype
今回もSplunkからお知らせがあるみたいだよ。クリックして開いてみようね。
今回の結果は
sourcetype | Counts | text |
---|---|---|
splunk_web_access | 53 | even |
splunk_web_service | 70 | Bad |
splunkd | 426106 | Oh |
splunkd_access | 1268 | Good |
splunkd_ui_access | 11007 | Yeah |
CSVの
text
フィールドに値がある_sourcetype_だけが残ったね。
いったん消してもらったあと
| tstats count as Counts where index=_internal by sourcetype
| inputlookup append=t soucetype_output.csv
の結果と比べて欲しいな。
outlookupを使って、結果を更新する。
先ほどの
Counts
のある結果を出力してみよう。
| tstats count as Counts where index=_internal by sourcetype
| inputlookup append=t soucetype_output.csv
| selfjoin sourcetype
| outputlookup soucetype_output.csv
今回もSplunkからお知らせがあるみたいだよ。クリックして開いてみようね。
じゃ、確かめてみよう
| inputlookup soucetype_output.csv
Counts | sourcetype | text |
---|---|---|
53 | splunk_web_access | even |
70 | splunk_web_service | Bad |
428656 | splunkd | Oh |
1294 | splunkd_access | Good |
11511 | splunkd_ui_access | Yeah |
![]() |
outputlookupを使って追記する
ファイルを作った後、追記していきたいこともあるよね。
|inputlookup soucetype_output.csv
|outputlookup append=t soucetype_output.csv
outputlookup append=t
で追記に変わるよ。
結果を確認してみると
| inputlookup soucetype_output.csv
Counts | sourcetype | text |
---|---|---|
53 | splunk_web_access | even |
70 | splunk_web_service | Bad |
428656 | splunkd | Oh |
1294 | splunkd_access | Good |
11511 | splunkd_ui_access | Yeah |
53 | splunk_web_access | even |
70 | splunk_web_service | Bad |
428656 | splunkd | Oh |
1294 | splunkd_access | Good |
11511 | splunkd_ui_access | Yeah |
![]() |
まとめ
今回はCSVを扱う4つのコマンドを使ってみて、どんなコマンドなのか説明してきたよ。
みんなわかったかな?
lookupについては触れなかったけど、大体CSVと一緒なのでやってみてね。
じゃ、リクエスト待ってます。 またね〜
こんな感じでいいでしょうか?
https://docs.splunk.com/Documentation/Splunk/latest/Knowledge/ConfigureCSVlookups
ここら辺に触れられなかった