LoginSignup
3
0

More than 3 years have passed since last update.

Splunkを間違った方向に全力で使ってみる

Last updated at Posted at 2019-12-23

ようこそディープな世界へ

SplunkのSPLを全力で間違った方向に使います。
実用性皆無の趣味全開な記事です。
普通のプログラミング言語のようにSPLを使ってみるという試みです。

解析対象

パケットデータやログなどのSplunkに取り込むデータ?
そんなもんは無い!
男は黙って無から有を作り出せ。

検証するSplunk

検証する場合はSplunkにデータを取り込んではいけません
データが取り込まれていた場合のケアを考えていません。
Splunkバージョンは8.0.0です。

こんにちわ、世界!!

プログラミングでは一番はじめに”Hello world!!”を表示するのが慣習なのでSPLでも同じことをやってみましょう。
今回の記事ではパイプ(命令)毎に改行を行います。そのほうが見やすいですからね。

| stats count 
| eval output="Hello world!!" 
| table output

1行ずつ説明しましょう。

| stats count

いきなり集計コマンドです。
間違いじゃないか?いえいえそんなことはないです。
なぜならこのコマンドは古代から続く無から有を作り出せる命令だからです。
たとえば以下のように何も結果がない状態から・・・
1.png
このように列を作ることができます。
2.png
昔話的なことを語るならば、makeresultsコマンドができる前はこれを使用して無から有を作り出していたという状況が一時的にありました。いまこの方法を取るのはあまりスマートとは言えないです。これで生成された列は_timeも空なのでイベントとして使おうとすると面倒です。

| eval output="Hello world!!"

これは前の命令で生成されたイベントにoutputカラムを追加して”Hello world!!”という文字列を入れます。
まあこれはSPL経験者ならすんなりわかるでしょう。
3.png

| table output

outputフィールドのみ出力するようにして完成です。
4.png

関数グラフ表示

さて、無事ハローワールドを表示できたところでSplunkの強力なグラフ化機能を使用して関数のグラフ化を行いたいと思います。
まずは、x=0~x=1000の間の数字の連続したテーブルを作成するサーチ分を組み立てます。
以下のようになります。

| makeresults
| eval key="Date",dateFrom = now(),dateEnd =now() + (2000) 
| untable key,"event","date"
| makecontinuous date span=1s
| eval start=-10 ,smpl=0.01
| eval x = date - now()
| table x

このようにすることで0~1000の連続した数字を生成することが可能です。

y=x

まずはy=xのグラフ化をしてみます。以下のようになりますね。

| makeresults
| eval key="Date",dateFrom = now(),dateEnd =now() + (2000) 
| untable key,"event","date"
| makecontinuous date span=1s
| eval start=-10 ,smpl=0.01
| eval x = date - now()
| eval y = x
| table x,y

結果は以下のようになります。

2019-12-24.png

3次関数

次に3次関数

| makeresults
| eval key="Date",dateFrom = now(),dateEnd =now() + (2000) 
| untable key,"event","date"
| makecontinuous date span=1s
| eval start=-10 ,smpl=0.1
| eval x = start + ((date - now()) * 0.01)
| eval y = (x * x * x) - (x * 50)
| table x,y

2019-12-24 (1).png

バグ発見

2次関数はないのかって?まあこれを見てほしい。
2019-12-24 (2).png

小数点以下が計算されてるところと計算されてないところがある!
まあ、特殊なサーチ文書くとこういう不具合当たりますよね。
検証用にサーチ文置いときますね。

| makeresults
| eval key="Date",dateFrom = now(),dateEnd =now() + (2000) 
| untable key,"event","date"
| makecontinuous date span=1s
| eval start=-10 ,smpl=0.01
| eval x = start + ((date - now()) * 0.01)
| eval y = x * x
| table x,y

次回へ

ホントはデータ保存と読み込みまで書きたかったのですが今日は時間切れなので25日の記事に書きたいと思います。

3
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0