na_taka
December 16, 2021, 6:13am
1
お世話になっております。
折れ線グラフにおいて、質問させていただきます。
サンプルログ
date dstaddr_i レコード数
11/19 10.1.2.1 1
11/19 10.2.1.1 1
11/19 172.16.2.1 2
11/19 192.168.2.1 2
11/19 11.1.2.1 2 グラフ表示対象
11/19 173.16.2.1 2 グラフ表示対象
11/19 193.168.2.1 2 グラフ表示対象
11/20~11/28 レコードなし
11/29 10.1.2.1 1
11/29 10.2.1.1 1
11/29 172.16.2.1 2
11/29 192.168.2.1 2
11/29 11.1.2.1 2 グラフ表示対象
11/29 173.16.2.1 2 グラフ表示対象
11/29 193.168.2.1 2 グラフ表示対象
・・・省略
質問
折れ線グラフにおいて、日付単位で集計時にレコードが無い日付において、
countを0で集計させることは出来ませんでしょうか。
11/20~11/28 をcount0として、折れ線を表示させることは出来ませんでしょうか。
設定
Data
Metrics
Y-axis
Aggregation Count
Custom lavel
Advanced
JSON input
Buckets
X-axis
Aggregation Date Histogram
Field timestamp_start
Minimum interval Day
Drop partial buckets OFF
Custom lavel
Advanced
Scale metric values (deprecated) OFF
JSON input
Split series
Sub aggregation Terms
Field dstaddr
Order by Metric: Count
Order Descending
Size 20
Group order valuesin separate buckets OFF
Show missing values OFF
Custom lavel
Advanced
Exclude
Include
JSON input
現設定の表示イメージ
Search条件
(NOT dstaddr_i:10.0.0.0/8) AND (NOT dstaddr_i:172.16.0.0/12) AND (NOT dstaddr_i:192.168.0.0/16)
お手数ですが、回答頂けますと幸いです。
Tomo_M
(Tomohiro Mitani)
December 20, 2021, 2:43pm
2
日ごとのカウント数を示すなら棒グラフの方が良い(ヒストグラムですし)と思うのですが、折れ線グラフを利用する理由はありますか?参考に教えてもらえると嬉しいです。
一応折れ線グラフとしてはLensではなく、Aggregation based > LineとしてX-axisはDate Histgram Aggregationとし、Advanced > JSON inputに{"min_doc_count": 0}
というパラメータを追加すると、挟まれた部分については0にできました。範囲の外は値が出ませんでした。
こんな感じ。
通常の棒グラフによるヒストグラムだとこうなります。こちらの方が良いような?
na_taka
December 21, 2021, 1:42am
3
ご回答ありがとうございます。
折れ線グラフの利用理由については、実際に運用する者でないため、定かではありませんが
アクセスのあった情報(複数のアドレスなど)の推移を1つのグラフの中で確認したく、
棒グラフではなく折れ線の方が見やすくなるのでこちらを採用していると想定しています。
ご回答いただいている設定では、「X-axisはDate Histgram」のみでの日付集計では、実現ができたのですが、
「Split series」で「Field」を指定し、設定した場合には実現することが出来ておりません。
現在の設定とグラフ表示は以下の通りとなります。
12/14を「Split series」で指定している「Field:src_user.keyword」の内容Aと内容Bを0件として
表示させたいのですが、実現方法をご教示頂けませんでしょうか。
内容A 12/13および12/15に2件 12/14は0件
内容B 12/13および12/15に1件 12/14は0件
Tomo_M
(Tomohiro Mitani)
December 21, 2021, 2:11am
4
sub aggregation側でもmin_doc_countを指定していますか?
tsgkdt
(tsgkdt)
December 21, 2021, 3:32am
5
extended_boundsを指定することで、データがないところに0を埋められるようです。
しかし、Kibanaの標準のLineChartだと出来そうにないのですが、
Vegaなら標準で可能になってます。こちらは検討できないでしょうか?
na_taka
December 21, 2021, 5:31am
6
ご回答ありがとうございます。
sub aggregation側のAdvanced > JSON inputに{"min_doc_count":0}を指定しても、期待通りの結果にはなりませんでした。
1 Like
na_taka
December 21, 2021, 5:37am
7
Vegaでどのように出来るかを試してみているのですが、「Field:src_user.keyword」の「Split series」ように「data部」記載してみたのですが、「encoding」の書き方が良くわからずエラーになってしまいます。記載について、ご教示頂けませんでしょうか。
{
$schema: https://vega.github.io/schema/vega-lite/v4.json
title: Event counts from all indexes
data: {
url: {
// Apply dashboard context filters when set
%context%: true
// Filter the time picker (upper right corner) with this field
%timefield%: @timestamp
index: index-test*
body: {
aggs: {
categories: {
terms: { field: "src_user.keyword" }
aggs: {
time_buckets: {
date_histogram: {
field: @timestamp
interval: {%autointerval%: true}
extended_bounds: {
min: {%timefilter%: "min"}
max: {%timefilter%: "max"}
}
min_doc_count: 0
}
}
}
}
}
}
size: 0
}
}
format: {property: "aggregations.time_buckets.buckets"}
}
mark: line
encoding: {
x: {
field: key
type: temporal
axis: {title: false} // Customize X axis format
}
y: {
field: doc_count
// field: src_user.keyword.count
type: quantitative
axis: {title: "Document count"}
}
}
}
実行の結果
Syntax error, found trailing characters at line 36,3 >>> mark: line
encod ...
Tomo_M
(Tomohiro Mitani)
December 21, 2021, 4:55pm
8
確かに複数並べる場合は折れ線グラフの方が見やすいかもしれないですね、ありがとうございます。histogramでは間のビンがmin_doc_count=0で補完されますが、termsではどのキーワードがあるか明らかでないためかmin_doc_count=0は機能しませんでした。失礼しました。結果、kibanaのLineChartだと厳しそうに思います。
vega-liteで少し触ってみました。inline dataとして入力するとグラフになるのですが、kibana上でqueryにするとうまく動きませんでした。ヒントとして使ってください。
na_taka
December 22, 2021, 1:45am
9
ご確認ありがとうございます。
展開頂きました情報を確認させて頂きます。
Tomo_M
(Tomohiro Mitani)
December 24, 2021, 4:08pm
10
Aggregation basedのTimelionを利用すると容易に実現できました。
.es(index=index-test*,
timefield=@timestamp,
split=src_user.keyword:10)
で実現されると思います。試してみてください。
na_taka
December 27, 2021, 12:26am
11
ご回答ありがとうございます。
>Aggregation basedのTimelionを利用すると容易に実現できました。
上記の設定を行うところが、どの箇所になるかが分かりませんでした。
「line chart」において、「X-axisでAggregation:Date Histogram」の「JSON input」に
記載するような形でしょうか。
大変申し訳ありません。どのような方法になるのかご教示頂けませんでしょうか。
よろしくお願いいたします。
Tomo_M
(Tomohiro Mitani)
December 27, 2021, 9:00am
12
これはDashboard上で利用できるLensではない他のタイプの可視化です。
Kibanaのバージョンによって少し違うかもしれませんが、7.16.2ではAll types>Aggregation based>Timelionから作成できます。"Timelion expression"に上の設定を入力します。
na_taka
December 28, 2021, 12:42am
13
ご回答ありがとうございます。
>これはDashboard上で利用できるLensではない他のタイプの可視化です。
承知しました。今回は、他にも色々と表示させるものがありDashboard上での実現となるのですが、
参考にさせて頂きます。ありがとうございます。
Tomo_M
(Tomohiro Mitani)
December 28, 2021, 7:29am
14
すみません、分かりづらい日本語でした。
「「Dashboard上で利用できるLens」ではない他のタイプの可視化」ではなく、
「Dashboard上で利用できる「Lensではない他のタイプ」の可視化」という意図でした。
Dashboardで使えます。
system
(system)
Closed
January 25, 2022, 7:30am
15
This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.