LoginSignup
0
1

More than 3 years have passed since last update.

Splunkで手入力で複数件のモックデータを作る

Posted at

概要

  • この記事ではSplunk 7.xを使っています
  • 業務でも、Splunkをログに取り込んで分析することがあると思います
  • Splunkでクエリを書くときに、デバッグに役に立つテクニックを紹介します

背景

  • Splunkのmakeresultsコマンドを用いると、モックデータ(ダミーデータ)を生成することができます
    • モックデータを1つつくるには公式ドキュメント| makeresults | eval newfield="avalue"のようにします
  • 正規表現を使って集計しているクエリの動作確認するために、手動で複数件モックデータを作りたいときに、やり方が分からずつまったので、まとめておきます
    • 別途、ファイルをアップロードして、それをモックデータとして使うこともできますが、今回は手軽に数件のモックデータを作りたいときのやり方です

  • 動物の数をログに落としていて、それを種類ごとに集計するクエリを書きたいため、このようなモックデータが欲しい
message:num_dogs=1, num_cats=0, num_humans=2, num_unicorns=0
message:num_dogs=1, num_cats=1, num_humans=0, num_unicorns=0
  • そのためのクエリ
    • makeresultsは通常クエリの一番最初にかかないといけませんが、appendコマンドでつなげることができます -> 参考: 公式ドキュメント
| makeresults 
| eval message_field="message:num_dogs=1, num_cats=0, num_humans=2, num_unicorns=0" 
| append 
    [| makeresults 
    | eval message_field="message:num_dogs=1, num_cats=1, num_humans=0, num_unicorns=0"]
  • クエリ実行結果 スクリーンショット 2019-09-09 19.45.54.png

つくったモックデータを使って動物の数を集計してみる

  • クエリ
| makeresults 
| eval message_field="message:num_dogs=1, num_cats=0, num_humans=2, num_unicorns=0" 
| append 
    [| makeresults 
    | eval message_field="message:num_dogs=1, num_cats=1, num_humans=0, num_unicorns=0"] 
| rex field=message_field "num_dogs=(?<num_dogs>\d+)" 
| rex field=message_field "num_cats=(?<num_cats>\d+)" 
| rex field=message_field "num_humans=(?<num_humans>\d+)" 
| rex field=message_field "num_unicorns=(?<num_unicorns>\d+)" | bucket _time span=30m
|  stats sum(num_dogs) as tot_dogs, sum(num_cats) as tot_cats, sum(num_humans) as tot_humans, sum(num_unicorns) as tot_unicorns by _time
|  fields _time, tot_dogs, tot_cats, tot_humans, tot_unicorns
  • クエリ実行結果 -> 想定通りきちんと集計できていますね! スクリーンショット 2019-09-09 19.46.29.png
0
1
0

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
0
1