6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

グラフ・ネットワークを Splunkで作る!

Last updated at Posted at 2020-01-19

概要

ネットワーク通信の可視化がしたい! こんな要望から色々と調べているうちに Splunkに Network Diagram Viz というアプリがあることがわかり触っているうちにこれが意外に面白い!

当初の目的のネットワーク通信の可視化から少し脱線して、こちらの Network Diagram Vizを深堀してみました。
もちろん Network可視化にも利用できます。

Update
こちらの続編(NetworkXを使った分析・可視化)もご覧ください

グラフ理論

この Network Diagram Viz のコンセプトは、おそらくですがグラフ理論に基づいて作られていると思います。

ノード(節点・頂点)の集合とエッジ(枝・辺)の集合で構成されるグラフに関する数学の理論である。(by wikipedia)
https://ja.wikipedia.org/wiki/%E3%82%B0%E3%83%A9%E3%83%95%E7%90%86%E8%AB%96

例えばSNSの世界だと、人が(ノード)となり、フォローが(エッジ)と考えた場合、グラフ理論を使って可視化すると、それぞれの繋がりを確認することができます。

image.png

これ以外にも、例えばこんなケースにも利用できます。
・ 物流の流れ
・ お金の流れ
・ Webサイトとリンク先の関係
・ ネットワークのフロー
・ 文献の引用先

基本的には from と to がわかれば、このグラフネットワークが利用出来るのです! 

それでは、前置きはこのくらいにして早速触ってみましょう。

Splunk Network Diagram Viz のインストール

Splunk Network Diagram Viz のダウンロード
https://splunkbase.splunk.com/app/4438/

こちらのアプリをダウンロードして、Splunkにインストールしてください。

image.png

Splunkの再起動をする。

使い方

アプリを開くと最初のページに使い方ガイドがあります。

image.png

注意するのは、フィールド名が予め決まっている点です。そのため可視化したいログのフィールド名を renameする必要があります。
可視化に必須なのは fromだけですが、toがないと線が引けないので、最低でも from / to は作ってください。

利用できるフィールド名
from (required): ソースノード名
to (optional): ターゲットノード名
value (optional): tool tipとして利用される名前。token名としても利用される
type (optional): Iconの種類 ( server-definition-lookup.csv に定義されている)
color (optional): カラー。 Iconとテキストに使われる
linktext (optional): リンク(エッジ)に表示されるテキスト名
linkcolor (optional): リンクのカラー - HTML colours または "red" / "yellow" / "green" / "blue". など
linkwidth (optional): リンクの太さ. The optimal size range is between 0 and 15.
x (optional): アプリの 'Create Layouts' で利用される、場所を固定するためのオプション (x軸)
y (optional): アプリの 'Create Layouts' で利用される、場所を固定するためのオプション (y軸)

早速使ってみよう

これだけわかれば利用できてしまいます。早速使ってみましょう!

ビットコイン取引の図

MLTKを入れていると、bitcoin_transaction.csv というサンプルデータセットがありましたので、そちらをまずは可視化してみます。
こんな感じで、取引の日時と、トランザクション番号、from / to そして、value(取引量) があります。

image.png

以下のように、対象のものに絞って、フィールド名を変更します。
今回はわかりやすいように、10件に絞ってみてみます。また取引サイズにしたがって線の色を変更してみます。

| inputlookup bitcoin_transactions.csv 
| head 10 
| eval linkcolor = case('value' < 10, "blue", value>=10 AND value<50,"green", value>=50, "red") 
| rename user_id_from as from user_id_to as to value as linktext 
| eval value = from
| table from value to linktext linkcolor

検索結果はこんな感じ
image.png

可視化のグラフに、Network Diagram Viz が登場します。
image.png

こんな感じで表示できます。表で確認するよりも、どこからどこにお金が流れているのか、またその量なども一目でわかりますね。
image.png

今回 Hierarchy を Top-Downにしているので、From から To にかけて上から下に流れて行きます。

image.png

Icon も自由に変えられます。 (いくつかエラーになる Iconもありましたが。。)
image.png

ちょっと残念なのが、ノード名表示が from にしか対応していない点です。(おそらく仕様の問題)
そのため、ちょっと工夫をして toも表示できるようにしました。

| inputlookup bitcoin_transactions.csv 
| head 10 
| eval linkcolor = case('value' < 10, "blue", value>=10 AND value<50,"green", value>=50, "red") 
| rename user_id_from as from user_id_to as to value as linktext 
| eval value = from
| append 
    [| inputlookup bitcoin_transactions.csv 
    | head 10 
    | rename user_id_to as to
    | dedup to 
    | eval value =  to
    | table to value
    | rename to as from] 
| table from value to linktext linkcolor

これで to まで表示できました。
image.png

残念ながら矢印(有向グラフ)は作成できませんでした。

ダッシュボード作成

ここまでくると、対象のノードやエッジをクリックしたら、詳細が表示できたりしたくなりますよね。

この Network Diagram Viz Appのいいところは、そこまで考えて設計されている点です。

「視覚エフェクト」の「フォーマット」を開くと、Tokens というタブがあります。すでに Node や Link を対象としてtokenが割り当てられておりますので、ダッシュボードを作成した際にこの Tokenを使ってドリルダウンできます。

image.png

それでは、先ほどのグラフと詳細がわかる表を追加してダッシュボードを作成します。
作成したダッシュボードはこちらです。(小さいですが、下に表があります)

image.png

ドリルダウン設定

ダッシュボードを編集モードにして、グラフの右上から「ドリルダウンを編集」をクリックします。
image.png

次に「このダッシュボード上のトークンの管理」に進みます。

今回は from のノード名を引数として渡したいと思います。
そのため、nd_node_tokens = $nd_node_token$ として入力します。

image.png

次に対象のグラフのサーチを編集します。
先ほどの node_from を対象の検索value の箇所に$マークを前後につけておきます。

image.png

完成です。

グラフの対象のノードをクリックすると、下の表に対象ノードの取引履歴が表示されました。

注意点

この Network Diagram Viz Appは大量のデータを可視化しようとするとスペック不足のせいかハングしました。
ノードが増えると計算する対象も累乗に増えてしまうので相当のリソースが必要になると思いますし、そもそも大量のデータを可視化しても見た目が細かくてみづらくなってしまいました。(ズームはできますが)

そのため、可視化する対象を最初にフィルターしてから表示するのがおすすめです。(上位50個とか)

6
2
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
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?