クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

数字でサービスの具合を知る

このレッスンのあとで: 数字を使って、サービスが元気かどうかを判断できる。

45分のレッスンコマンド4件可観測性のラボ:Prometheus と Grafana、アラートルールを書く

チケットサイトが重い

学園祭のチケットを売るサイトが、販売開始の五分後に「重い」と言われ始めました。調べるまで、運営の人は誰も気づいていませんでした。

先に気づくには、サイトの具合を数字で測り、いつも見ておく必要があります。

このレッスンのゴール

メモ

数字を使って、サービスが元気かどうかを判断できる。

重要な言葉

ことばいみれい
メトリクスサービスの具合を表す、時間とともに変わる数nginx_up
レート一秒あたりに起きた回数
パーセンタイル全体の何割がその値以下かを表す数
エラー率全部の要求のうち、失敗した割合
アラート決めた条件を超えたときに出る知らせ

学生が入力するセルは、このプレビューでは空白です。

メトリクスは時間とともに変わる数

サービスは、自分の具合を数にして見せられます。生きているか、これまでに受けた要求の数、失敗した数などです。

こうした数を決まった間隔で集めて、グラフにするのが監視です。一つの数だけでは分からない「変化」が見えます。

サーバーに話しかける

コマンド
curl -s http://app:8080/

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

生きているかの数を読む

コマンド
curl -s http://exporter:9113/metrics | grep '^nginx_up'

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

レートは差を時間で割る

受けた要求の合計は増える一方なので、合計だけを見ても忙しさは分かりません。ある時間の間に増えた分を、その秒数で割ります。

これがレートです。たとえば60秒で300増えたなら、一秒あたり5回です。

例:合計からレートを出す

時刻要求の合計増えた数レート
0秒1000
60秒13003005回 / 秒
120秒1360601回 / 秒

学生が入力するセルは、このプレビューでは空白です。

五回続けて話しかける

コマンド
curl -s "http://app:8080/?n=[1-5]"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

合計が増えたかを見る

コマンド
curl -s http://exporter:9113/metrics | grep '^nginx_http_requests_total'

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

平均より、遅い人を見る

十人の待ち時間が九人は0.1秒で、一人だけ2秒だったとします。平均は0.29秒で、一見よさそうです。でも、その一人は困っています。

そこでパーセンタイルを使います。「90パーセンタイル」は、全体の九割がその時間以内に終わった、という数です。

例:十個の待ち時間

並べた順待ち時間(ミリ秒)意味
1から5番目80、85、90、95、100速い人たち
6から9番目105、110、120、300やや遅い人たち
10番目2000一番遅い人
50パーセンタイル1005番目の値
90パーセンタイル3009番目の値

学生が入力するセルは、このプレビューでは空白です。

よくある間違い

注意

平均が小さければ、みんな快適だと思いがちです。平均は、一人の極端に遅い人を隠します。遅い側の様子を知るには、90や95のパーセンタイルを見ます。

条件を決めて、知らせてもらう

グラフを一日中見ているわけにはいきません。そこで、アラートの条件を決めておきます。条件を超えたら、機械が知らせます。

大事なのは、一瞬の揺れでは鳴らさないことです。「五分続いたら」のように、時間の長さを条件に含めます。

例:アラートの条件

項目例意味
名前ReplySlow知らせを見分ける名前
条件95パーセンタイルが500ミリ秒を超える何がおかしいか
続く時間5分一瞬の揺れでは鳴らさない
知らせる先当番の人誰が動くか

学生が入力するセルは、このプレビューでは空白です。

さらに挑戦:鳴りすぎる問題

アラートが毎日何十回も鳴ると、当番の人は慣れて、本物を見逃します。

続く時間を長くすると、鳴る回数はどう変わりますか。その代わりに何が遅れますか。二文で書きましょう。

このラボとソースについて: 可観測性のラボ:Prometheus と Grafana、アラートルールを書く

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。