組み込みの関数、percentile
がinfluxdbに存在するので簡単に計算することができます。
適当なデータを積んで、計算してみます。 あるサーバーへのRTTを測定していることを想定し、以下のようなデータを適当に作りました。
insert testdb,server=target1,addr=v4,proto=tcp measured=98.4236389454876 insert testdb,server=target1,addr=v4,proto=tcp measured=49.02986276817023 insert testdb,server=target1,addr=v4,proto=tcp measured=73.68319133987919 insert testdb,server=target1,addr=v4,proto=udp measured=14.515447132468166 insert testdb,server=target1,addr=v4,proto=udp measured=10.153058203214846 insert testdb,server=target1,addr=v4,proto=udp measured=13.858574248282208 insert testdb,server=target1,addr=v6,proto=tcp measured=37.193169776622106 insert testdb,server=target1,addr=v6,proto=tcp measured=75.22886073245671 insert testdb,server=target1,addr=v6,proto=tcp measured=6.350597491749054 insert testdb,server=target1,addr=v6,proto=udp measured=9.58538941785223 insert testdb,server=target1,addr=v6,proto=udp measured=14.100650500638428 insert testdb,server=target1,addr=v6,proto=udp measured=15.64195452574981
20パーセンタイルと50パーセンタイルを計算してみます。
> select percentile(measured, 20) from testdb group by proto name: testdb tags: proto=tcp time percentile ---- ---------- 1577766044022027112 6.350597491749054 name: testdb tags: proto=udp time percentile ---- ---------- 1577766044050092539 9.58538941785223 > select percentile(measured, 50) from testdb group by proto name: testdb tags: proto=tcp time percentile ---- ---------- 1577766043809580444 49.02986276817023 name: testdb tags: proto=udp time percentile ---- ---------- 1577766043931028528 13.858574248282208
10パーセンタイルで計算して結果をgnuplotで図示してみます。横軸はlogスケールで示しています。