第2回 マシンデータの検索からヒントを可視化する方法:実践 Splunk道場(4/5 ページ)
前回はマシンデータを活用することのメリットを紹介しました。今回はSplunkを通じて多種多様なマシンデータから知見を得ていくための操作を解説します。
レポートを作成してみる
サンプルデータを利用したレポートを作成してみよう。今回のサンプルデータではWebのショッピングカートアクセス履歴と認証ログが存在している。そのため、概要と詳細を把握できるように、以下のレポートを個々に作成してみる。
1「Webショッピング状況の把握」
1.1:国別のアクセス履歴
1.2:日別ショッピングカートの状況
1.3:曜日別購買製品状況
1.4:売上金額
2「セキュリティ状況の把握」
2.1:認証エラー状況
2.2:認証エラーユーザー名
順を追って作成するので、以下の6つのレポートを別々のレポートとして保存していただきたい。
1.1:国別アクセス履歴
どの国からアクセスしているのかを、IPアドレスごとに表示し、地図上へマッピングする。Webのアクセスログを指定しchartコマンドで件数を割り出し、地図上にマッピングする。これを画面上部から、「名前をつけて保存」→「レポート」として保存し、レポートタイトルは任意で設定する。
sourcetype=access_* | chart count by clientip | iplocation clientip | geostats count by Country
1.2:日別ショッピンカードの状況
ショッピングカートは、このログでは「action」というフィールドが、どのようなアクションを起こしたのかを記録している。timechartコマンドを利用して日別状況からactionを指定し、時系列グラフを保存する。
sourcetype=access_* | timechart count by action usenull=f
1.3:曜日別購買製品状況
chartコマンドのX軸を製品名、Y軸を日付とするためにoverとbyを利用し、縦棒グラフを保存。
sourcetype=access_* | chart count(productId) over productId by date_wday
1.4:売り上げ状況
統計のstatsコマンドで製品の価格と購買数を製品名ごとに抽出し、製品単価と売上数の掛け合わせから合計金額を算出する。それをフォーマット変換して金額順にソートし、レポートとして保存。
sourcetype=access_* status=200 | stats count AS views avg(price) as price count(eval(action="purchase")) AS purchases by productId | eval TotalRevenue=(price*purchases) | fieldformat TotalRevenue="$"+tostring(TotalRevenue,"commas") | table productId views price purchases TotalRevenue | sort - TotalRevenue
ログデータ内には、productIdはあっても製品価格や製品名情報は存在しない。そのためデータをより潤沢にするため、ProductIdに紐づく実際の製品名(productName)を表記することも、下記のようなlookup参照テーブルを登録することで可能だ。詳しくは、より詳細なチュートリアル(PDF)を参照いただきたい。
生データ | lookup参照テーブル | ||||
---|---|---|---|---|---|
productId | clientip | status | method | productId | productName |
111 | 192.168.10.1 | 200 | GET | 111 | USBメモリ |
222 | 192.168.10.2 | 404 | GET | 222 | 電源TAP |
333 | 192.168.10.3 | 503 | GET | 333 | SDカード |
444 | 192.168.10.4 | 404 | GET | 444 | マウス |
Copyright © ITmedia, Inc. All Rights Reserved.