Splunk ダミーデータ生成メモ【随時更新】
Splunk VisualizationやDashboardにパネルをおく際、とりあえず見た目を確認したりするために値を設定したいときがあると思います。
わざわざ生のログからデータを引っ張ってくるのも面倒な時は、ダミーデータを生成するのが手っ取り早いし、パネルに設定したい値も自由に決めれます。
本ポストは、そんなダミーデータを生成するSPLをまとめて書いておくメモページです。
任意の値を1つ
使途:Single Value panelなど。
| makeresults | eval num=100 | table num
複数の値
使途:Table panelなど。
事前に文字列を用意し、指定した区切り文字で区切りテーブルにするという方法。
| makeresults | eval data="a, b, c, d, e" | eval data=split(data,", ") | mvexpand data | table data
複数の値(連番)
こちらは連番を作るやり方。
| makeresults count=5 | streamstats count | table count
複数の値(ランダム)
1つ前のSPLに少し追加。「random()%数字」とすることで、0~(数字-1)の間でランダムな数字を生成できます。
| makeresults count=5 | streamstats count | eval count=random()%100 | table count
フィールド2つの値(連番+ランダム)
1つ前のSPLに、idとなるフィールドを追加。
| makeresults count=5 | streamstats count as id | eval count=random()%100 | table id,count
任意の値の表
append+サブサーチを利用することで、任意の値の行を追加できます。
| makeresults | append [ | makeresults | eval id="abc" | eval data="abc123" ] | append [ | makeresults | eval id="def" | eval data="456def" ] | append [ | makeresults | eval id="ghi" | eval data="ghi789" ] | search id=* | table id,data
フィールドソートするとき特定のアイテムは常時一番上にくるようにする
ソートオーダ用の列を追加し、ソートオーダ列→値列の優先度でソートを実行。
以下のSPLでは、aaaが常に一番上に表示されます。
| makeresults | eval name=split("aaa, bbb, ccc, ddd, eee", ", ") | mvexpand name | streamstats count | eval count=if(name=="aaa",1,2) | eval val=random()%100 | search name=* | sort count, -val | table name,val,count
SANS Sift Workstationのrip.plが実行できない問題の対応
フォレンジック解析を行う際は、必要なツールが最初から導入されており、かつ無料で利用できる「SIFT Workstation | SANS Institute」をよく利用しています。
ただ本日(2022/02/27)時点で公開されているOVAタイプのバージョンのものにインストールされているRegripper(rip.plコマンド)は、エラーが発生し正常に実行できません。
本ポストはその解決策のメモです。
導入したSift Workstationのバージョンは以下の通りです。
$ cat /etc/os-release NAME="Ubuntu" VERSION="20.04.2 LTS (Focal Fossa)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 20.04.2 LTS" VERSION_ID="20.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=focal UBUNTU_CODENAME=focal
rip.plを実行するとエラーが発生
解析するためのプラグインとレジストリファイルを指定し実行すると、以下のようなエラーが発生します。
$ rip.pl -p compname -r SYSTEM Global symbol "$plugindir" requires explicit package name (did you forget to declare "my $plugindir"?) at /usr/local/bin/rip.pl line 79. Global symbol "$plugindir" requires explicit package name (did you forget to declare "my $plugindir"?) at /usr/local/bin/rip.pl line 79. Global symbol "$plugindir" requires explicit package name (did you forget to declare "my $plugindir"?) at /usr/local/bin/rip.pl line 89. Global symbol "$plugindir" requires explicit package name (did you forget to declare "my $plugindir"?) at /usr/local/bin/rip.pl line 115. Global symbol "$plugindir" requires explicit package name (did you forget to declare "my $plugindir"?) at /usr/local/bin/rip.pl line 115. Global symbol "$plugindir" requires explicit package name (did you forget to declare "my $plugindir"?) at /usr/local/bin/rip.pl line 126. Global symbol "$plugindir" requires explicit package name (did you forget to declare "my $plugindir"?) at /usr/local/bin/rip.pl line 146. Global symbol "$plugindir" requires explicit package name (did you forget to declare "my $plugindir"?) at /usr/local/bin/rip.pl line 185. Global symbol "$plugindir" requires explicit package name (did you forget to declare "my $plugindir"?) at /usr/local/bin/rip.pl line 236. Global symbol "$plugindir" requires explicit package name (did you forget to declare "my $plugindir"?) at /usr/local/bin/rip.pl line 236. Global symbol "$plugindir" requires explicit package name (did you forget to declare "my $plugindir"?) at /usr/local/bin/rip.pl line 256. Global symbol "$plugindir" requires explicit package name (did you forget to declare "my $plugindir"?) at /usr/local/bin/rip.pl line 280. Global symbol "$plugindir" requires explicit package name (did you forget to declare "my $plugindir"?) at /usr/local/bin/rip.pl line 305. Global symbol "$plugindir" requires explicit package name (did you forget to declare "my $plugindir"?) at /usr/local/bin/rip.pl line 408. Execution of /usr/local/bin/rip.pl aborted due to compilation errors.
どうやら「$plugindir」という変数が定義されていない模様です。
解決策
スクリプトのバックアップを取ったうえで、以下のように修正します。
$ sudo cp /usr/share/regripper/rip.pl /usr/share/regripper/rip.pl.old $ sudo vi /usr/share/regripper/rip.pl $ diff -u /usr/share/regripper/rip.pl.old /usr/share/regripper/rip.pl --- /usr/share/regripper/rip.pl.old 2022-02-27 15:11:57.426179430 +0000 +++ /usr/share/regripper/rip.pl 2022-02-27 15:16:45.562746556 +0000 @@ -63,6 +63,9 @@ # Retrieves absolute path of parent directory my $scriptdir = File::Basename::dirname($scriptpath); +# Add: Define the variable plugindir +my $plugindir = File::Spec->catfile($scriptdir, "plugins"); + my $VERSION = "3\.0"; my @alerts = ();
具体的には、66行目に以下を追加します。
my $plugindir = File::Spec->catfile($scriptdir, "plugins");
動作確認
再度実行してみます。
$ rip.pl -p compname -r SYSTEM Launching compname v.20090727 compname v.20090727 (System) Gets ComputerName and Hostname values from System hive ComputerName = DESKTOP-******** TCP/IP Hostname = DESKTOP-********
正常に実行できるようになりました。
ネットワークスループットを調査するツール『iperf3』を使ってみる
Linux(Windowsビルドもあるようです)でネットワークスループットを調査するツールに「iperf3」というものがあります。
今回はこれを使ってみたメモです。
※実行環境はVMWare Workstation上に構築した、以下の仮想マシンで行います(同じものを2台用意)。
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.4 LTS Release: 20.04 Codename: focal $ cat /proc/meminfo |grep MemTotal MemTotal: 8105288 kB $ cat /proc/cpuinfo | grep cpu.cores cpu cores : 1 cpu cores : 1 cpu cores : 1 cpu cores : 1 $ ethtool ens160 | grep baseT Cannot get wake-on-lan settings: Operation not permitted Supported link modes: 1000baseT/Full 10000baseT/Full
※なおホストマシンは、CPU 6Core/12Thread、Memory 64GB という構成です。
1. 導入
aptコマンドでインストールします。ついでに、ネットワーク使用帯域情報を見るコマンド「iftop」もインストールします。
※サーバ側、クライアント側の両方にインストールします。
sudo apt install iperf3 sudo apt install iftop
2. サーバ側の実行方法
サーバ側(待ち受ける方)は以下のように実行します。
iperf3 -s
3. クライアント側
クライアント側(データを送信する方)は以下のように実行します。
iperf3 -c 192.168.213.130 -P 10 -t 60 -b 1G
オプションの内容は以下の通りです。
オプション | 意味 |
---|---|
-c | クライアントモードで実行。 |
192.168.213.130 | サーバ側のIPアドレスを指定。 |
-P 10 | 同時並列処理数。 |
-t 60 | 処理を続ける時間(秒)。 |
-b 1G | 1処理あたりにかける帯域。全体のトラフィックは、同時並列処理数との積になる。 |
4. iftopで帯域情報確認
iperf3を実行している横で、iftopコマンドを利用しどの程度の通信速度が出ているか確認します。
※実行には管理者権限が必要です。
sudo iftop
iperf3を前述のオプションで設定し実行した結果、処理中のあるタイミングでの帯域情報です。
iperf3でかけているネットワークの負荷は10Gbpsです。
またNICのリンクスピード(VMの設定値)が10Gbpsなので、8割~9割ほどの速度が出ていることになります。