ITの窓辺から

三流IT技術者の日常

Splunkでグラフィカルな可視化をする

今日も今日とてSplunkです。バージョンは変わらず7.1.1です。

今回はSplunkの機能を使ってログの統計情報をグラフィカルに表示してみます。そのためにはいくつかの検索構文を予習する必要があります。ところで検索構文のことをSplunkではサーチコマンドというようです。

chart

ログの統計を取ります。chartの後ろにSplunkで用意されている関数を書くことで、その関数の出力結果を表形式にして数えることができます。さらにbyとoverという補助句が用意されています。byとoverを両方使用することで、それぞれ列、行に指定するものを設定できます。

とりあえず前回記事で使っていたSquidアクセスログの宛先URLのフィールド名として設定したSquid_HTTP_DstURLを使用して、どのURLに何回アクセスしたかを表示してみます。検索対象はSquid1号機として想定したSquid01.logです。

f:id:ReaLiZeZNSG:20180702231800p:plain

結果は下記のような表示になります。

f:id:ReaLiZeZNSG:20180702231939p:plain

これは検索結果の抜粋です。count関数を使用することで勝手にこのような表形式になります。ちなみにbyまたはoverを1個しか使用しない場合はbyでもoverでも結果は同じになるようです。

今度はホストごとのアクセス回数を表示します。先程同様、前回記事で使っていたSquid2号機として想定したSquid02.logをbyの後ろに付け加えます。それぞれのSquidはsourceの値が異なるので、sourceを列(by)、Squid_HTTP_DstURLを行(over)としてサーチコマンドを指定します。

f:id:ReaLiZeZNSG:20180702232719p:plain

実行結果の抜粋は以下のとおりです。

f:id:ReaLiZeZNSG:20180702232806p:plain

ちなみにsquid02.logはsquid01.logをコピーしただけなので内容は全く同じです。

これだけでも生ログをそのまま表記するだけと比べるとそこそこグラフィカルになっていると思います。今度はこの表をグラフにしてみます。Excelチックになってきましたね。

グラフ化

ログ一覧のすぐ上の「視覚エフェクト」をクリックします。

f:id:ReaLiZeZNSG:20180702233213p:plain

するとグラフが表示されます。

f:id:ReaLiZeZNSG:20180703000209p:plain

グラフにマウスオーバーするとその棒が示す要素が見られます。今回は横軸がSquid_HTTP_DstURLなので、それぞれの棒はURLを示しています。

グラフ形式はいくつかのプリセットから選べます。

f:id:ReaLiZeZNSG:20180703000356p:plain

円グラフを選んでみます。

f:id:ReaLiZeZNSG:20180703000448p:plain

大分それらしくなってきたのではないでしょうか。

サーチコマンドを駆使することでログから色々な情報の抽出ができます。検索するシーンを想定して予めフィールド名やイベントタイプ等を決めておく必要があるでしょう。この辺はSplunkで実行できるサーチコマンドにある程度馴染んでいかないと適切な設計ができないですね。サーチコマンドの紹介は今後少しずつやっていきます。

Splunkのイベントタイプとタグ

今回もSplunkです。バージョンは7.1.1です。

前回はSquidのHTTPアクセスログに対してフィールドを定義し、宛先URLと応答のあったHTTPステータスコードをSplunkに理解させました。

realizeznsg.hatenablog.com

おさらいですが、下記のような検索が可能になります。Bingにアクセスし、HTTP200番の応答(HTTPSプロキシなのでCONNECTメソッドですが)があったものをSquidアクセスログから検索する検索構文です。

f:id:ReaLiZeZNSG:20180701195905p:plain

しつこいですが、人間が検索する分にはキーワード検索を繋げてもほとんど同様の結果が得られます。Splunkにフィールドを理解させることで一種の変数として活用できるようになるところが最大のメリットです。

イベントタイプの作成

あなたは社内からのBingサイトトップページへの正常なアクセス数をこまめにカウントするように上司から指示されました。いじめのような指示ですがSplunkの使い方を勉強しろという隠れた教育メッセージがあるに違いありません。毎回検索構文をメモ帳からコピペするのも良いですが、今回は一連の検索構文を一つにまとめてみましょう。このまとめたものをイベントタイプと呼びます。

検索ボックスすぐ右の名前を付けて保存からイベントタイプを選択します。

f:id:ReaLiZeZNSG:20180701201636p:plain

名前をつければとりあえずイベントタイプ完成です。今回はSquid_AccessCheck_Bing_Correctという名前にしました。

f:id:ReaLiZeZNSG:20180701201520p:plain

タグについては後で書きます。色はSplunkで検索した時に該当するログに色が付きます。優先度はマニュアルによるとそのログが複数のイベントタイプに一致する際にどちらのイベントタイプとして表示するかの設定だそうです。

これでイベントタイプでの検索ができるようになります。

f:id:ReaLiZeZNSG:20180701202500p:plain

今回はHTTP200番のみが調査対象でしたが、400番代や500番代も一緒に調べるように指示が出るかもしれません。その時は同様にイベントタイプを作成し、OR検索をすることでそれぞれのイベントタイプにマッチするログの検索ができます。

イベントタイプを作ることで検索構文の短縮化と短縮した命令文をSplunkに覚えさせることができます。

タグの作成

タグもイベントタイプと同じく検索構文を短くするための機能です。同じ機能を持つが複数台数あるとか用途が違うとかある程度共通点のあるログを簡単に分類したい時に使うのが良さそうです。例えばロードバランサで2台のSquidトラフィックが振り分けられているような構成で、Squid1号機、2号機それぞれのアクセス状況を調べるような時にホスト名で分類するような場合に使用できます。

とりあえず手を抜いてSquidの別のアクセスログを用意し、squid02.logとしてSplunkに取り込みました。

f:id:ReaLiZeZNSG:20180701213600p:plain

sourceの値がログファイルにより異なります。

今回はsourceごとにタグを作るので、sourceが「C:/squid01.log」のログを選択し、アクションからタグの編集をクリックします。

f:id:ReaLiZeZNSG:20180701214035p:plain

タグ名をSquid01にします。

f:id:ReaLiZeZNSG:20180701214145p:plain

同様にSquid02のタグも作成します。

タグで検索できるようになります。

f:id:ReaLiZeZNSG:20180701214334p:plain

イベントタイプにタグをつけることもできるので、今回のように1要素の分類だけでなく複合的な要素に対してもタグ分類が可能になります。詳細は今後の記事で検索手法の紹介をしていく時にまた触れます。