1. chartとtimechartの違い
第3章では、時系列のグラフを作るtimechartに軽く触れました。
ここではあらためて、集計して可視化するための代表的な変換コマンドである
chartとtimechartを、もう一歩踏み込んで整理します。
両者の最大の違いは横軸(X軸)に何を置くかです。
| コマンド | 横軸(X軸) | 主な用途 |
|---|---|---|
timechart |
常に時間(_time) |
時間の推移を見る折れ線・エリアグラフ |
chart |
任意のフィールド | フィールド同士のクロス集計や棒グラフ |
timechartは「時間とともにどう変化したか」を、
chartは「カテゴリごとにどう分布しているか」を見るのに向いています。
2. timechartで時間推移を見る
timechartは横軸が必ず_timeになり、
指定した集計間隔(span)ごとにイベントをまとめます。
span=1hなら1時間ごと、span=1dなら1日ごとの集計です。
index=web | timechart span=1h count
by句を加えると、値ごとに系列(線)を分割できます。
たとえばステータスコードごとの推移を1枚のグラフに重ねられます。
index=web | timechart span=1h count by status
byで系列が増えすぎると見づらくなります。
limitで表示する系列数を絞り、あふれた分をuseother=tで
「OTHER」としてまとめられます(既定では上位10系列)。
3. chartでクロス集計を作る
chartはoverとbyを組み合わせ、2次元の表(縦横のクロス集計)を作れます。
overで指定したフィールドが横軸(行の見出し)、
byで指定したフィールドが系列(列)になります。
index=web | chart count over host by status
これで「どのホストで、どのステータスが何件出たか」を一覧できます。
overだけを指定すれば、単純な棒グラフ向けの集計になります。
4. よく使う集計関数
chart/timechartのどちらでも、次のような集計関数が使えます。
| 関数 | 意味 |
|---|---|
count |
イベント件数 |
sum(field) |
数値の合計 |
avg(field) |
平均値 |
dc(field) |
値の種類数(distinct count) |
values(field) |
出現した値の一覧 |
index=web | timechart span=1h avg(response_time) count
集計結果は、可視化タブで折れ線・棒・エリアグラフなどに切り替えられます。 時間推移は折れ線やエリア、カテゴリ比較は棒グラフが見やすい、と覚えておきましょう。
5. まとめ
timechartは横軸が必ず時間で、spanで集計間隔、byで系列分割chartはoverとbyで2次元のクロス集計を作れる- 集計関数は
count/sum/avg/dc/valuesなどが基本 - 系列が多いときは
limitとuseotherで整理する