AppSignal で Ruby アプリのカスタム メトリクスとアラートをマスターする
ほとんどの場合、Ruby アプリには、AppSignal によって提供されるデフォルトのアプリケーション監視メトリクス、グラフ、および視覚化で十分です。ただし、あなたは、何を測定するか、どのように表示するか、アプリに関する重要な情報をどのように中継するかを少し制御したいタイプのユーザーかもしれません。
AppSignal を使用すると、アプリのメトリクスとダッシュボードを必要に応じてカスタマイズできます。このガイドでは、次のような AppSignal のカスタム メトリクスについてすべて学びます。
- カスタム指標とは
- 設定できるさまざまなタイプのカスタム指標
- グラフの視覚化をカスタマイズする方法
- 効果的なアラートを設定する方法
さらに!
ただし、本題に入る前に、いくつかのことを理解しておく必要があります。
前提条件
- AppSignal アカウント: お持ちでない場合は、30 日間の無料トライアルに登録してください。
- Ruby アプリケーション: このアプリは、Rails、Sinatra、または単なる Ruby など、サポートされている Ruby フレームワークに基づくことができます。さらに、実稼働アプリまたは開発アプリにすることもできます。独自のアプリを起動したくない場合は、このチュートリアルで使用するサンプル Sinatra アプリのコードのクローンを作成します。
注:このチュートリアルを進めるために独自のアプリを使用している場合は、最新の AppSignal Ruby gem を使用するようにアプリが構成されていることを確認してください。このチュートリアルで使用されている例では、これが当てはまっていると想定されています。
カスタム指標とは何ですか?
アプリのエラー率、スループット、パフォーマンスの測定以外に、独自のアプリ専用に調整されたカスタム データの測定にも興味があるかもしれません。たとえば、特定の期間にアプリにサインアップした訪問者の数や、アプリの WebSocket レイヤーのパフォーマンスなどに興味があるかもしれません。
このようなカスタマイズされたケースでは、AppSignal 内で標準の測定ツールを見つけるのが難しい場合があります。代わりに、カスタム メトリックを使用する必要があります。カスタム指標は、アプリの実行状況に関するより深いコンテキストを得るために、デフォルトの指標と並行して定義する追加の指標です。
次に、最初のカスタム指標を設定する方法を学びましょう。
カスタム指標の設定
アプリケーション内のほぼすべてのユースケースに対してカスタム メトリックを設定できます。すべてがどのように組み合わされるかを理解するために、簡単な例から始めましょう。
最初のステップは、AppSignal で追跡されるカスタム メトリクスを定義することです。利用可能なさまざまなメトリック タイプを使用して、カスタム メトリックを定義できます。
- ゲージ
- カウンター
- ディストリビューション
ゲージのカスタム指標
AppSignal のゲージ カスタム指標は、時間の経過とともに増加または減少する指標を測定するのに役立ちます。
シンプルなゲージのカスタム指標を設定して、サンプル Sinatra アプリの投稿の総数を測定しましょう。
上記のコードでは、Appsignal::Helpers::Metrics を使用します。 モジュールを開き、set_gauge を呼び出します。 このメソッドは 3 つの引数を受け取ります。
key:カスタムメトリクスの名前。この例では、これは all_posts になります。 .value- 測定される指標または「物」。上に示した例では、これは単に合計投稿数です。tags- カスタム メトリックに追加できる追加のオプションのメタデータ。測定対象のデータに必要に応じてラベルを付けるのに役立ちます。たとえば、posts_countに簡単にタグを付けることができます。 以下に示すように、環境を考慮した指標:
素晴らしいです。最初のカスタム ゲージ メトリックが追加されました。ただし、AppSignal に戻ると、新しいカスタム メトリクスは表示されません。代わりに、以下に示すデフォルトのダッシュボードが表示される可能性があります。

では、カスタム指標を表示するには何をする必要があるのでしょうか?ダッシュボードを追加する必要があります。新しいダッシュボードの作成から始めます。

次に、新しいダッシュボードにわかりやすいタイトルと説明を付けます。

カスタム ダッシュボードを追加したら、カスタム メトリックのグラフを追加する必要があります。

次に、新しいグラフを定義します。

新しいグラフを設定するフィールドの内訳は次のとおりです。
- a.タイトル - 新しいグラフのわかりやすいタイトルを入力します。
- b.説明 - これはオプションですが、新しいグラフの説明を入力できます。
- c.指標 - ここでは、新しいグラフで測定および表示されるメトリックを定義します。これはカスタム メトリックの名前、または
set_gaugeで定義された最初の引数です。 メソッド:all_posts。このセクションでは、タグを定義することもできます (たとえば、環境タグ) 示されているように、も含まれます)。 - d.グラフ表示 - ここで、新しいグラフのグラフ表示のタイプを選択します。
- e.レジェンドラベル - ここでグラフの凡例のラベルをカスタマイズできます。
- f.データ形式 ・ グラフ表示に使用するデータ型を定義します。数値、パーセンテージ、スループット (リクエスト/分または時間単位)、期間 (ミリ秒単位)、ファイル サイズ (バイト単位) など、さまざまな形式から選択できます。
新しいグラフのプロパティを適切に定義したら、カスタム メトリックのグラフを取得できるはずです。これは以下に示すものと似ています。

次に、次のカスタム指標タイプであるカウンタを見てみましょう。
カウンターのカスタム指標
カウンタ カスタム メトリックは、イベントが発生した回数を測定するのに最適です。サンプル アプリケーションを使用すると、ホーム (ルート) ページが訪問されるたびに測定するカウンタ メトリックを適用できます。
まず、ルート メソッドを編集して、以下に示すコードを含めます。
ここでは、AppSignal の increment_counter を使用します。 メソッドに visits_count を渡します 最初の引数として。増分ステップは整数 1 で、2 番目の引数として渡されます。 tags を追加することもできます。 hash を 3 番目の引数として指定しますが、そのままにしておきます (これについては前のセクションで説明したため)。
次に、ゲージ メトリック タイプについて説明した手順に従ってください。このカウンタ メトリックのカスタム グラフを追加すると、次のようなグラフが得られます。

分布カスタム指標に切り替えてみましょう。
分布カスタム指標
AppSignal ディストリビューション カスタム メトリクスは、単位時間あたりの何かを測定するのに役立ちます。たとえば、PDF レポートの生成に何秒かかるか、バックグラウンド ジョブの実行にどれくらい時間がかかるかなどです。
サンプル アプリケーションを使用して、メイン ファイルを変更して、オープン API エンドポイントへの呼び出しを含めてみましょう。次に、カスタムディストリビューションを使用して、API 呼び出しにかかる時間をミリ秒単位で測定します。
ここで、AppSignal に戻ると、カスタム分布をグラフとして表示できます。
ヒント:ゲージ セクションで説明されている手順に従って、カスタム グラフ ビジュアライゼーションを設定できます。

カスタム メトリクスとそれに伴うグラフの視覚化の作成方法を学習したので、アプリで何が起こっているかを確認するために AppSignal ダッシュボードに何度も戻るのはあまり便利ではないことに気づいたかもしれません。代わりに、カスタム メトリクスの通知を受け取ることができれば、非常に便利ですよね?
次に、カスタム指標の通知を設定する方法を学びましょう。
通知アラート
デフォルトでは、エラーまたはパフォーマンス イベントが発生するたびに、AppSignal はそのイベントのインシデントを開き、関連するセクションに配置します。たとえば、エラーの場合はエラー リストに表示され、パフォーマンス インシデントはパフォーマンス リストに表示されます。
さらに、AppSignal は電子メール (デフォルトの通知チャネル) 経由でインシデント通知を送信します。次のような他の通知チャネルを設定することもできます。
- 不和
- Google ハングアウト
- インターホン
- Microsoft Teams
- スラック
- ウェブフック
その他。
ただし、カスタム指標の 1 つに通知トリガーを設定する前に、利用できるさまざまな通知オプションを認識しておくことが重要です。
まず、次の通知を設定できます。
- 毎回 - ここでは、インシデントが発生するたびに通知が送信されます。
- 最初のデプロイ - これは、デプロイ後に初めてインシデントが発生したときに通知が送信されることを示します。
- 取引終了後の最初 - ここでは、前のインシデントがクローズされた後にインシデントが再発するたびに通知が送信されます。
- 通知しない - 名前が示すように、この場合、通知は送信されませんが、エラーまたはパフォーマンス インシデントは AppSignal で追跡されます。
- n 時間ごとまたは 1 日ごと - このオプションを使用すると、1 時間または 1 日以内に送信されるアラートの数を指定できます。このオプションは、重要なイベントの通知を受け取ることと、通知が多すぎる(あなたやあなたのチームが圧倒されてしまう可能性があります)との間のバランスを保つのに最適です。
これらのオプションの詳細については、AppSignal の通知設定ドキュメントを詳しく調べて確認することを強くお勧めします。
前に作成したカスタム指標の 1 つに対して通知を設定する方法を見てみましょう。これは簡単な例ですが、独自のユースケースで実行する必要がある手順を示します。
カスタム指標の通知アラートの設定
この例では、この投稿の前半で API 呼び出しの時間を測定した分散メトリックを使用します。平均継続時間が特定の数値 (ミリ秒単位) を超えるたびに電子メール アラートを受け取りたいとします。
これを設定する手順を以下に示します。

まずトリガーを押します。 左側のメニューのリンクをクリックしてください。

トリガーに適切な名前を付けて、この通知の対象となる測定を選択します。この例では、fetch_books_duration を使用しています。 分布カスタムメトリック。必要に応じてタグを追加することもできます。
次に、比較演算子とチェックする値を定義します。たとえば、継続時間が 1600 ミリ秒を超えるたびにアラートを受信したいとします。この場合、比較演算子以上を選択します。 、その後、値は 1600 になります。

最後に、アラートのウォームアップとクールダウンの設定を定義する必要があります。アラートの説明、アラート メッセージに含めるダッシュボードへのリンク (必要な場合)、最後に通知方法 (デフォルトは電子メール) を入力します。

これを完了すると、ここで入力した設定と一致するインシデントが発生するたびに通知を受け取るようになります。
以上です!
まとめ
この記事では、AppSignal 上のダッシュボードとグラフ ビジュアライゼーションを使用して、Ruby アプリケーションのカスタム メトリクスを設定する方法を学びました。
AppSignal が提供するカスタム メトリクス機能は、非常に強力なアプリケーション向けに微調整できます。 AppSignal のカスタム メトリクスのドキュメントを詳しく調べて、さらなる可能性を発見してください。
次回まで、コーディングを楽しんでください!
追記Ruby Magic の投稿を報道後すぐに読みたい場合は、Ruby Magic ニュースレターを購読して、投稿を 1 つも見逃さないようにしてください。
-
ハッシュテーブルの仕組みを徹底解説!ハッシュ関数・バケット・衝突処理の基礎
私が特に好きなデータ構造のひとつがハッシュテーブルです。シンプルでありながら非常に強力だからです。 キーと値のペアを効率的に保存できる手段として、あなたもすでに使ったことがあるかもしれません。 実は、ハッシュテーブルの実装には学ぶ価値のある興味深いコンピュータサイエンスの概念がたくさん詰まっています。この記事では、その仕組みを一緒に掘り下げていきましょう! バケットとハッシュ関数 ハッシュテーブルの基本的な考え方は、キーでインデックス付けされたデータに対して、O(1) の計算量で効率的にアクセスできるようにすることです。 おさらいとして、Ruby でハッシュテーブルを使うと次のような見た目にな
-
Ruby 3.4リリースハイライト:注目すべき新機能とアップデートまとめ
Rubyの恒例行事として、コアチームは2024年12月25日のクリスマスにRuby 3.4をリリースしました!Rubyが好きな開発者なら、Ruby 3.4で何が変わったのか気になるところでしょう。今回のリリースには大きな破壊的変更はありませんが、知っておくと得をする魅力的な機能がいくつか含まれています。 まずは、言語仕様の変更点から見ていきましょう。 言語仕様の変更点 言語仕様の変更は、ほとんどのRuby開発者にとって最も影響が大きい部分です。それぞれの変更点を順番に確認していきます。 文字列リテラルのデフォルト凍結(frozen string literals) Rubyを少しでも書いたこ