New Relic Advent Calendar9日目は、New Relicが発行するアラートを、New Relicが標準でサポートしていないシステムに登録する方法を説明します。非常に基本的な内容ではありますが、New Relicによる監視結果を自社のチケッティングシステムと連携させることは運用の効率化、開発チームとのコミュニケーションを円滑にしてDevOpsを実現するためには非常に重要なものになります。
まずはじめに、New Relicの提供するアラート機能をおさらいします。New Relicアラートは、APMやBrowser、Mobileなどの各種プロダクトが収集するイベントやメトリクスの値を監視し、あらかじめ指定した条件に合致した場合に通知する機能です。これにより問題発生をいち早く検知することができますし、画面の前に張り付いている必要もなくなります。
発行されたアラートは様々な方法でユーザに通知することができます。現時点では、EmailやSlack、PagerDutyなどがサポートされています。加えて、サポートされていないシステムに連携するための手段としてWebhookをサポートしています。Webhookは、アラート発行時に他システムに任意のPOSTリクエストを送るものです。
今回は、Webhookの例として、アラート発行を契機にRedmineのチケットを登録する設定をしてみます。
アラートポリシーの作成
New RelicのAlerts画面にて新しいアラートポリシーの作成を開始します。
適当な名前を入力した後、アラートポリシーを保存します。
当該アラートの発行の条件となるアラート条件を作成します。
今回は、APMが収集しているWebのレスポンスタイムをアラート条件に設定します。具体的には、5分間継続してレスポンスタイムの平均が3秒を超える場合にアラートを発行します。
通知チャネルの設定
続いて、ようやくRedmineに通知するための通知チャネルを設定します。メニューよりWebhookを選びます。
RedmineのURLやユーザ情報を入力します。これはWebhookがPOSTリクエストを送るために必要です。
今回はテスト用として必要最低限の情報をチケットとして登録します。チケットに登録する情報は、静的な値の他にNew Relicがアラートを作成する時点で変化しうる動的な情報を変数として指定することができます。詳細はWebのドキュメントを参照してください。
今回はお試しなので意図的にシステムに負荷をかけてレスポンスの遅延を発生させ、アラートを発行してみます。
グラフの右の赤い矩形がアラートが発行されたことを表しています。
同じタイミングでRedmineにもチケットが作成されています。New Relicで設定した値が無事にRedmineに登録されていることが確認できました。今回は簡単のため、チケット発行に必要な最低限の情報のみ登録しましたが、上で紹介した変数を使って発生したアラートやAPM等の製品の画面へのリンクを埋め込むことができ、担当者が発生した問題にたどり着くのを容易にできます。
以下はRedmine以外の例です。
Microsoft Teams (POSTリクエストのペイロード例は下記)
{
"title": "$CONDITION_NAME $EVENT_STATE in $ACCOUNT_NAME ($ACCOUNT_ID)",
"text": "[Incident #$INCIDENT_ID]($INCIDENT_URL) $EVENT_STATE \n$EVENT_DETAILS"
}
Chatwork (POSTリクエストのペイロード例は下記)
body=$CONDITION_NAME $EVENT_STATE in $ACCOUNT_NAME ($ACCOUNT_ID) Incident #$INCIDENT_ID $INCIDENT_URL $EVENT_STATE $EVENT_DETAILS
(HTTP HeaderにX-ChatZWorkTokenを指定)
以上が、New Relicで発行するアラートをチケッティングシステム等に登録する方法になります。今回ご紹介した方法以外にも、同様の方法でServiceNowなどのITSMツールや運用管理ツールと連携をすることもできます。(New RelicはSaaSなのでネットワークアクセスの考慮は必要です)
また、New Relicのアラート機能としては、今回ご紹介した例のように、監視するイベントやメトリクスの値に対してあらかじめ設定された閾値を超えた場合にアラートを上げる以外に、普段とは異なる外れ値を検出した場合にアラートを上げることもできるため、静的な閾値と合わせて使うことでより確実にシステムの変化を捕捉することができます。
ご紹介しきれなかった内容も多くありますので、無料トライアルで他の機能も是非お試しください。
The views expressed on this blog are those of the author and do not necessarily reflect the views of New Relic. Any solutions offered by the author are environment-specific and not part of the commercial solutions or support offered by New Relic. Please join us exclusively at the Explorers Hub (discuss.newrelic.com) for questions and support related to this blog post. This blog may contain links to content on third-party sites. By providing such links, New Relic does not adopt, guarantee, approve or endorse the information, views or products available on such sites.