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?