備忘録/にわかエンジニアが好きなように書く

個人的にとりあえず仕組みを知りたいから勉強になる?ってことで、 (利便性無視で)触りたように好きに構築してみる 個人用の備忘録となるので内容の保証はないのでその点はご了承ください。 ※変な内容や間違いを書いているなどありましたらコメントやご指摘いただけると幸いです。

kibana vegaを使ってプロキシログ(応答時間)から散布図を作る

wo [:contents]

 

概要

squidのログで、応答時間のフィールドがあるので、散布図としてグラフ化して傾向を見る。

#標準のグラフ作成から散布図的なものの作り方が分からない。

 

Visualization作成 

Visualizationを選択し、画面下部の「Other」の「Vega」を選択すると、

f:id:pocket01:20180707231721p:plain

 

下みたいな画面になります。

f:id:pocket01:20180707232152p:plain

 

コード作成

赤枠内にコードを入力し、入力後は赤矢印の所のを押すと右側にグラフが描画されます。

f:id:pocket01:20180707232623p:plain

 

散布図用の簡単なコード

■index名:log-squid-2018.07

 - 対象のフィールド①:@timestamp  ※X軸

 - 対象のフィールド②:response_time ※Y軸

{
"$schema": "https://vega.github.io/schema/vega-lite/v2.json",
"mark": "point",
"width": 1000,
data: {
url: {
%context%: true
%timefield%: @timestamp

index: log-squid-2018.07
body: {
size: 10000
_source: ["@timestamp", "response_time" ]
}
}
format: { property: "hits.hits" }
}
transform: [
{
calculate: "toDate(datum._source['@timestamp'])"
as: "time"
}
]

encoding: {
x: {
field: time
type: temporal
"timeUnit": "monthdatehoursminutes"
axis: { title: false }
}
y:{
field: _source.response_time
type: quantitative
axis: { title: "respons time" }
}
"color": {"field": "Origin", "type": "nominal"}
}
}

適当なコードなので不要なパラメータも含まれるかも

描画

無事に描画ができた。

f:id:pocket01:20180707232842p:plain

 

f:id:pocket01:20180712011910p:plain

→一直線上になっている応答時間が複数あるように見えるが、自宅内の応答速度ではないし、インターネット上から自宅内?自宅内からインターネット上?のどちらかのはずだけど、何なんの通信が発生しているだろう。。

 

課題

応答時間の開きが大きく、ローカル環境とインターネット環境のログが分離できていないので、応答時間の傾向が分かりにくいことが分かった。

傾向が見えても、そこからの調査で掘り下げていく方法を見つける必要がある。

logstashで情報を分離したり、vegaで不要な情報を省くようなコードが書ける?とかで対応が必要かな。

 

参考サイト

vega.github.io

www.elastic.co

vega.github.io