4
6

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 5 years have passed since last update.

【Splunk】Splunkでapache解析のダッシュボードを作ってみた

Posted at

##はじめに
Apacheのログからオーバービューを作ることを目的にしています。
Splunkを勉強中で、なんとなくそれっぽいダッシュボードを作ってみたくなったので、作業記録をかねてやり方を書いてみます。
Splunkレベル:初級

##使った環境
マネージャ
 Splunk Enterprise 6.6.6
クライアント
 VMサーバ3台(Windows2012)
 Apache v2.4

##ダッシュボードの作成
ダッシュボードタブの「新しいダッシュボードの作成」をクリックすると新しいダッシュボードの作成ダイアログが出てくるので適当なタイトルを入力して「ダッシュボードの作成」ボタンをクリックします。
create_dashboard.png

ここでは「apache dashboard」にしています。
dashborad_title.png

##ステータス分布を作る
###やりたいこと
apacheログのレスポンスコード(404 not foundとか)の分布を円グラフで作成する。
レスポンスコード単位だと見づらそうなので400台:Client error,500台:Server errorのように集約する。
PDFレポートにしても見やすいようにカスタマイズする。
###パネルの追加
ダッシュボードの編集メニューで+パネルの追加をクリック
dashboard_hensyu.png

パネルの追加ダイアログから円グラフを選択
add_panel.png
###サーチ設定
サーチ文字列をいれて「ダッシュボードに追加」ボタンをクリック
new_pie_chart.png
サーチ文解説

sourcetype="apache:access" 
| bin span=100 status
| stats count by status

1行目:sourcetypeでapacheのアクセスログに絞る
2行目:binでstatusフィールドを100単位で集約する。HTTPのレスポンスコードが100単位でグループ化されているため200-300、300-400のような集約が可能。
3行目:2行目でグループ化したstatusのそれぞれ件数を数える。
###表示結果
結果としてレスポンスコードがグループ化されたグラフが表示されました。
pie_chart_default.png
###表示の改善
しかしこのままだとレポート化したときにわかりにくい。
マウスを当てれば下記のように件数やパーセンテージがみれるけどもPDF化したときには出力されない。
Status: 200-300っていうのも意味が分かりにくい。
pie_chart_select.png

改善点としてはStatusのグループ名表示と件数の表示が欲しい。
ということでサーチ文を変更

sourcetype="apache:access" 
| bin span=100 status
| top 5 status
| eval percent=round(percent, 2)
| eval status=status.", ".count.", ".percent."%"
| eval status=replace(status,"100-200","Info"), status=replace(status,"200-300","Success"),status=replace(status,"300-400","Redirection") ,status=replace(status,"400-500", "Client error"), status=replace(status,"500-600","Server error")

1,2行目は前回と同様
3行目:statusをグループ化して上位5件を取得。stats countだとpercentが取れないのでtopに変更
4行目:percentカラムの桁数を少数2位で丸める
5行目:statusに件数(count)と率(percent)を連結する
6行目:statusの文字列をレスポンスコードのグループ毎の名前に置換する

pie_chart_finish.png

これでステータス分布の円グラフは完成。

##エラー分析を作る
###やりたいこと
ステータス分布でClient errorとServer errorがあるのでどういったエラーがでているのかを分析したい。
###パネルの追加
ダッシュボードの編集メニューで+パネルの追加をクリック
dashboard_hensyu.png
パネルの追加ダイアログから統計テーブルを選択
add_panel_table.png
###サーチ設定
新規統計テーブルにサーチ文字列をいれてダッシュボードに追加をクリック
table_str.png
サーチ文解説

sourcetype="apache:access" status>=400
| top limit=10 status src_ip
| eval percent=round(percent, 2)

1行目:sourcetypeでapacheのアクセスログに絞る statusフィールドの値が400以上(エラー)を取得
2行目:status,ソースIPでグループ化して上位10件を取得
3行目:percentカラムの桁数を少数2位で丸める

###表示結果
table_finish.png

Top10にしていましたが3件だけでした。
エラー分析としては荒いですがダッシュボードなのでこれで良しとします。

##アクセス推移を作る
###やりたいこと
1時間単位のアクセス数の推移を折れ線グラフで表示する
表示範囲を動的に変更できるようにする
###パネルの追加
ダッシュボードの編集メニューで+パネルの追加をクリック
dashboard_hensyu.png

パネルの追加ダイアログから折れ線グラフを選択
add_linechart.png
###サーチ設定
linechart_str.png
サーチ文解説

sourcetype="apache:access"
| timechart span=1h count by host

2行目:timechartは時間単位の集計文。1時間単位でhost単位で集計して表示します。

表示結果
linechart_default.png

###入力の追加
ダッシュボードの編集メニューで+入力の追加をクリック
dashboard_hensyu.png
入力ダイアログから時間を選択
add_input.png
ダッシュボードにタイムピッカーのダイアログが出てくるので
アクセス推移のパネルにタイムピッカーをドラック&ドロップ
time_panel.png
入力パネルの枠線が表示されますがどこにドロップしても枠線のところに配置されます。
timepicker_drag.png
タイムピッカーの編集ボタン(鉛筆マーク)をクリックし、デフォルトの期間を過去7日間にします。
またトークンの名前を確認します。
timepicker_param.png
###グラフのサーチの編集
時間範囲のリストに共有タイムピッカー(field1)が追加されているのでこれを選択し適用
linechart_timepicher.png
###表示結果
過去7日分表示されています。
タイムピッカーの値を変更すれば連動してグラフも更新されます。
linechart_finish.png

##完成
パネルの位置を調整してダッシュボード完成です。
3つくらいパネルがあるとそれっぽく見えますね。
dashboard_finish.png

##できなかったこと
できるのかもしれませんがやり方がわからなかったこと

  1. 現在時刻、サーチの範囲時間の埋め込み
      PDF化する際にいつのデータか表示したいが日付を出す方法がわからなかった
  2. ステータス円グラフで色の固定
      ソースにoptionを埋め込めば色固定できそうでしたがうまく行かず。
      eval replaceで置換しているせいなのか不明

このあたりは調べてわかったら追記します。

##資料
Chart - Splunk Documentation
Chart configuration reference - Splunk Documentation

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?