Splunk マルチバリューを表にする。
https://attack.mitre.org/matrices/enterprise/
の表を作りたいらしい。
課題
active | formed | homeTown | members_age | members_name | members_powers | members_secretIdentity | secretBase | squadName |
---|---|---|---|---|---|---|---|---|
true | 2016 | Metro City | 29 39 1000000 |
Molecule Man Madame Uppercut Eternal Flame |
Radiation resistance Turning tiny Radiation blast Million tonne punch Damage resistance Superhuman reflexes Immortality Heat Immunity Inferno Teleportation Interdimensional travel |
Dan Jukes Jane Wilson Unknown |
Super tower | Super hero squad |
これを
active | formed | homeTown | members_age | members_name | members_powers | members_secretIdentity | secretBase | squadName |
---|---|---|---|---|---|---|---|---|
true | 2016 | Metro City | 29 | Molecule Man | Radiation resistance | Dan Jukes | Super tower | Super hero squad |
39 | Madame Uppercut | Turning tiny | Jane Wilson | |||||
1000000 | Eternal Flame | Radiation blast | Unknown | |||||
Million tonne punch | ||||||||
Damage resistance | ||||||||
Superhuman reflexes | ||||||||
Immortality | ||||||||
Heat Immunity | ||||||||
Inferno | ||||||||
Teleportation | ||||||||
Interdimensional travel |
spl
multivalue_to_table.spl
index=_internal | head 1 | fields _raw
| eval _raw="{\"squadName\":\"Super hero squad\",\"homeTown\":\"Metro City\",\"formed\":2016,\"secretBase\":\"Super tower\",\"active\":true,\"members\":[{\"name\":\"Molecule Man\",\"age\":29,\"secretIdentity\":\"Dan Jukes\",\"powers\":[\"Radiation resistance\",\"Turning tiny\",\"Radiation blast\"]},{\"name\":\"Madame Uppercut\",\"age\":39,\"secretIdentity\":\"Jane Wilson\",\"powers\":[\"Million tonne punch\",\"Damage resistance\",\"Superhuman reflexes\"]},{\"name\":\"Eternal Flame\",\"age\":1000000,\"secretIdentity\":\"Unknown\",\"powers\":[\"Immortality\",\"Heat Immunity\",\"Inferno\",\"Teleportation\",\"Interdimensional travel\"]}]}"
| spath
| fields - _*
| rename *{}.* as *_*
| rename *{} as *
| table *
``` this is sample data```
``` from here, the logic ```
| eval tmp="val"
| transpose 0 header_field=tmp
| streamstats window=1 count(val) as count
| eventstats max(count) as count
| appendpipe [ eval column="count", val=count]
| fields - count
| dedup column
| transpose 0 header_field=column
| fields - column
| eval count=mvrange(0,count)
| mvexpand count
| rename count as _count
| foreach * [ eval <<FIELD>> = mvindex(<<FIELD>>,_count)]
| fields - _count
解説
- 最初の
eval
とtranspose
でヘッダー名等を決めた上で縦横変換している
-
streamstats
とeventstats
で一番多いマルチバリューの数を数えている。
- もっと簡単にできるかもしれない
-
appendpipe
で縦横を元に戻した時に使うマルチバリューの値を格納したフィールドをくっつけている。
-
mvrange
で行分割する数の基準を決め、mvexpand
-
rename
からのながれはJSONとかでやっている一括抽出
まとめ
multivalue_to_table.spl
index=_internal | head 1 | fields _raw
| eval _raw="{\"squadName\":\"Super hero squad\",\"homeTown\":\"Metro City\",\"formed\":2016,\"secretBase\":\"Super tower\",\"active\":true,\"members\":[{\"name\":\"Molecule Man\",\"age\":29,\"secretIdentity\":\"Dan Jukes\",\"powers\":[\"Radiation resistance\",\"Turning tiny\",\"Radiation blast\"]},{\"name\":\"Madame Uppercut\",\"age\":39,\"secretIdentity\":\"Jane Wilson\",\"powers\":[\"Million tonne punch\",\"Damage resistance\",\"Superhuman reflexes\"]},{\"name\":\"Eternal Flame\",\"age\":1000000,\"secretIdentity\":\"Unknown\",\"powers\":[\"Immortality\",\"Heat Immunity\",\"Inferno\",\"Teleportation\",\"Interdimensional travel\"]}]}"
| spath
| fields - _*
| rename *{}.* as *_*
| rename *{} as *
| table *
``` this is sample data```
``` from here, the logic ```
| eval tmp="val"
| transpose 0 header_field=tmp
| streamstats window=1 count(val) as count
| eventstats max(count) as count
| appendpipe [ eval column="count", val=count]
| fields - count
| dedup column
| transpose 0 header_field=column
| fields - column
| eval count=mvrange(0,count)
| mvexpand count
| rename count as _count
| foreach * [ eval <<FIELD>> = mvindex(<<FIELD>>,_count)]
| fields - _count
- 最初の
eval
とtranspose
でヘッダー名等を決めた上で縦横変換している -
streamstats
とeventstats
で一番多いマルチバリューの数を数えている。- もっと簡単にできるかもしれない
-
appendpipe
で縦横を元に戻した時に使うマルチバリューの値を格納したフィールドをくっつけている。 -
mvrange
で行分割する数の基準を決め、mvexpand
-
rename
からのながれはJSONとかでやっている一括抽出
まとめ
appendpipe
からdedup
のところは、ちょっと新鮮だったと思います。
Splunkはログが好きに加工できるのがいいですね
Author And Source
この問題について(Splunk マルチバリューを表にする。), 我々は、より多くの情報をここで見つけました https://qiita.com/toshikawa/items/70c436048ef899e1d133著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .